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
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.
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.
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.
O aplicativo instalado faz parte do EVABS (Extremaly Vulnerable Android Labs). No dispositivo, é possível encontrá-lo instalado, conforme mostrado abaixo.
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.
A opção -f
no comando também mostra o path de instalação do aplicativo, conforme mostrado abaixo.
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.
Podemos filtrar este log para vermos somente informações sobre um aplicativo em específico. Na imagem abaixo, filtramos pelo EVABS que instalamos.
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.
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.
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.
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.