Home Pentesting Android P.3 - ADB
Post
Cancel

Pentesting Android P.3 - ADB

Pentesting Android

INTRODUÇÃO

Dando continuidade aos artigos sobre pentesting mobile, este provavelmente será um dos menores posts da série, pois será introdutório para temas abordados mais adiante.

Como já vimos sobre elementos que fazem parte deste universo, agora vamos entender um pouco sobre uma das ferramentas mais úteis durante o processo de pentest Android, o Android Debug Bridge.
Esta ferramenta nos permite não só interagir com o dispositivo ou AVD, como também fazer leitura de logs, que será muito importante em algumas fases.

ANDROID DEBUG BRIDGE - ADB

ADB

O ADB conforme descrito em sua documentação, é uma ferramenta de linha de comando que permite a comunicação com dispositivos.
Para que a comunicação funcione, ele precisa de trrês elementos:

  • Um client: que envia comandos. Este cliente é executado na máquina de desenvolvimento através de linha de comando;
  • Um daemon (adbd): que executa comandos no dispositivo. Este daemon roda em background;
  • Um server: que administra a comunicação entre o client e o daemon. O server roda em background na máquina de desenvolvimento.

A comunicação entre client e daemon pode ocorrer via conexão TCP ou serial através do USB.

Os dispositivos Android, por padrão possuem o daemon ADB instalado. Quando um dispositivo emulado, seja por Android Studio, Genymotion ou qualquer outro é chamado pelo ADB, normalmente a conexão é feita via TCP na porta 5555 do dispositivo, quando um dispositivo físico é espetado via USB, a conexão ocorre via USB.

A imagem abaixo, mostra a saída do comando adb devices que mostra os devices conectados, no caso abaixo, vemos um dispositivo emulado.

Dispositivos

Comandos ADB

A partir daqui, veremos alguns comandos úteis do ADB para a interação com o dispositivo.

adb shell

Talvez um dos comandos mais utilizados do ADB, o adb shell nos permite obter um shell interativo com o Sistema Operacional Android conectado via ADB.

Shell ADB

Conforme podemos ver na imagem acima, temos um shell interativo com o dispositivo, onde o comando su nos permite executar comandos com privilégios de root, quando o SO permite, assim como em um Linux.

adb install

O ADB também nos permite a instalação e desisntalação de aplicativos por linha de comando, para instalação utilizamos adb install "path do apk" conforme mostrado abaixo.

Instalando APK

O aplicativo instalado faz parte do EVABS (Extremaly Vulnerable Android Labs). No dispositivo, é possível encontrá-lo instalado, conforme mostrado abaixo.

Aplicativo instalado

adb shell pm list packages

Assim como instalar, o ADB nos permite listar todos os pacotes instalados em um dispositivo com o comando pm (Package Manager). Este comando pode ser executado tanto dentro do dispositivo, quando passado como argumento para o adb shell conforme mostrado na imagem abaixo.

Listando pacotes

A opção -f no comando também mostra o path de instalação do aplicativo, conforme mostrado abaixo.

Listando pacotes com path

adb shell logcat

Mais um dos comandos muito utilizados durante um teste, é o logcat. Este comando nos permite ler os logs do sistema Android em tempo de execução.

Logcat

Podemos filtrar este log para vermos somente informações sobre um aplicativo em específico. Na imagem abaixo, filtramos pelo EVABS que instalamos.

Filtrando logcat

adb push/pull

Muitas vezes durante um teste, é preciso transferir arquivos tanto da máquina pro dispositivo ou vice-versa. Para enviarmos um arquivo para o dispositivo, podemos utilizar a sintaxe adb push "arquivo origem local" "path destino dispositivo". Na imagem abaixo, transferimos o arquivo “evil-mobile.txt” para dentro do diretório “/sdcard/Download” do dispositivo.

Enviando arquivos

Já a sintaxe adb pull "arquivo origem dispositivo" "path destino local" nos permite transferir um arquivo do dispositivo para nossa máquina. A imagem abaixo mostra a transferência do arquivo “/sdcard/Download/evil-mobile2.txt” para nossa máquina.

Capturando arquivos

adb reverse

O comando adb reverse nos permite abrir um túnel entre uma porta do dispositivo e uma porta local. Muito útil quando se tem um proxy em execução na máquina e é preciso passar todo o tráfego do dispositivo por esta proxy. Sua síntaxe é adb reverse tcp:"porta do dispositivo" tcp:"porta local". A imagem abaixo, mostra a porta TCP 8080 do dispositivo sendo direcionada para a porta TCP 8081 da máquina.

Tunelando portas

Existem outros inúmeros comandos do ADB que serão explorados futuramente, porém estes são os mais básicos para iniciar os trabalhos.

CONCLUSÃO

Neste artigo, foi possível conhecer um pouco sobre o ADB e seus comandos mais básicos que formam o alicerce de técnicas mais complexas que serão abordadas futuramente. No próximo artigo, veremos algumas técnicas de engenharia reversa de aplicativos.

This post is licensed under CC BY 4.0 by the author.