Montando um Laboratório para Pentest Android

Introdução

Eaí, Bão ou Não? Meu nome é Luca Regne, e nesse artigo vou descrever como eu configuro um ambiente para fazer pentest em aplicativos Android.

Como existemn muitas ferramentas e metodologias, quero reforçar que os passos são baseados no meu gosto pessoal e não na melhor configuração. Leiam outras fontes e testem vocês mesmos até encontrar o setup que mais lhe agrada.

Genymotion

Para executar a aplicação é necessário ter um sistema Android, e para isso podemos virtualizar um smartphone através do Genymotion. Abaixo está a documentação oficial contendo: primeiros passos com a ferramenta, instalação, pré-requisitos e configuração inicial.

Após efetuar a instalação do Genymotion com Virtual Box , se não ocorrer nenhum erro, teremos a seguinte tela:

Genymotion

Outra opção comumente utilizada são os AVD(Android Virtual Devices) do Android Studio. Porém esses dispositivos não vem com o binário do su não permitindo executar o sistema com usuário root, sendo necessário algumas configurações adicionais.

Uma recomendação para aqueles que desejam utilizar um dispositivo físico, usem o scrcpy(screen copy) do Genymobile, assim você pode espelhar a tela do seu smartphone para o computador e manipulá-lo mais facilmente.

Adicionando utilitários nas variáveis de ambiente

Para interagir diretamente com o nosso ambiente virtualizado através da máquina hospedeira deve ser utilizado o utiliátio de linha de comando Android Debug Bridge (adb), que já vem incluído por padrão nas pastas do Genymotion.

Genymotion tools

Adicionando esse caminho ao PATH, nas variáveis de ambiente, podemos acessar o utilitátio de linha de comando como um comando nativo. Para fazer isso no Windows podemos usar o lindo e maravilhoso PowerShell ❤️.

$env:Path += $env:Path + ";C:\Program Files\Genymobile\Genymotion\tools"

E no bash a instalação pode estar em sua home ou na pasta /opt, então o comando ficaria assim:

export PATH=$PATH:$HOME/genymotion/tools
# or
export PATH=$PATH:/opt/genymotion/tools

Configuração do Android

Nas imagens a seguir está documentado o passo a passo para configurar o Android virtualizado. Na instalação usaremos um Android customizado, mas caso seja necessário pode ser utilizado algum modelo de dispositivo como template.

Virtual Labs

Recomenda-se utilizar no mínimo o Android Oreo (8.1), para evitar problemas de incompatibilidade com a aplicação; 2G de RAM ou 2048 MB, para evitar travamentos e lentidão.

VM Hardware setup

VM Android Pronta

Adicionando a Play Store

Com o dispositivo iniciado devemos adicionar a App Store para poder baixar os aplicativos diretamente pela loja de aplicativos da Google. Para isso, no menu lateral, clique em Open GAPPS.

Open GApps

Após a instalação e o restart do device o aplicativos da Play Store irá aparecer.

Proxy - Burp Suite

Para interceptar as requisições realizadas pelo aplicativo é necessário um proxy, para isso podemos usar o famoso Burp Suite.

Após instalar o proxy, é necessário adicionar a interface do ambiente virtualizado.

Para isso basta acessar Proxy->Options->Proxy Listeners, clicar em Add e faze-lo escutar em todas as interfaces em uma porta de sua escolha, conforme a imagem a seguir.

Configuração Burp

Python e Frida

A próxima ferramenta que iremos instalar se chama Frida que serve para instrumentação das aplicações. Podemos utilizar para efetuar o bypass de SSL Pinning, antiroot, antiemulador, entre outras opções. Existe mais de uma forma de efetuar a instalação do utilitário de linha de comando, porém nesse guia iremos demonstrar o download utilizando o pip, gerenciado de pacotes do Python.

## frida-tools (frida, frida-trace, frida-apk, frida-create, frida-discover, frida-join, etc)   
pip install frida-tools
## Frida (apenas o frida, útil quando se deseja instalar uma versão específica em um ambiente à parte)
pip3 install frida==14.1.0

Ferramentas para Engenharia Reversa

A engenharia reversa diz respeito ao processo de, através do APK, obter um código fonte similar ou idêntico ao original. Existem uma séria de ferramentas que podem auxiliar nesse processo.

  • ApkTool: o mais clássico de todos.
  • ByteCode Viewer: Além da interface gráfica, traz diversos decompilers juntos, podendo comparar o código extraído de diversas ferramentas.
  • (JD-GUI)[http://java-decompiler.github.io/]/]: Decompilador java.
  • ILSpy: Melhor ferramenta para engenharia reversa de .Net.
  • LsSpy: Também para engenharia reversa de .Net(mas o projeto aparentemente foi descontinuado).
  • DootPeek: Decompilador .Net da JetBrains.

Eu particularmente gosto do MobSF pela grande quantidade de funcionalidades que ele trás além da engenharia reversa. Sua instalação é bem fácil e pode ser feita no powershell ou no linux(confira os pré-requisitos):

git clone https://github.com/MobSF/Mobile-Security-Framework-MobSF
cd Mobile-Security-Framework-MobSF

# Windows
./setup.bat
# Linux
./setup.sh

Essa é o tipo de ferramenta que não basta só executar e ser feliz, tem que ler a documentação se quiser fazer um uso adequado e extrair tudo que ela permite.

Conclusão

Eu basicamente utilizo esse passo a passo para configurar um ambiente básico, configure o seu também que nos próximos artigos trarei conteudos mais especificos, explicando como fazer uma reversing em um app de determinada tecnologia ou como realizar algum bypass de SSL Pinning que não seja possível apenas com o frida. E lembre-se "Hack the planet!"

Referências

AndroidMobilePentest Lab