在 Android(Broadcom 芯片)上启用 NexMon 监控模式和数据包注入

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

概述

大多数现代 Android 手机都嵌入了一个 Broadcom/Cypress Wi-Fi 芯片组,该芯片组出厂时不支持 802.11 监控模式或帧注入功能。开源的 NexMon 框架修补了专有固件,以添加这些功能,并通过共享库 (libnexmon.so) 和 CLI 辅助工具 (nexutil) 公开它们。通过将该库预加载到标准 Wi-Fi 驱动程序中,已 root 的设备可以捕获原始 802.11 流量并注入任意帧,从而消除了对外部 USB 适配器的需求。

本页面记录了一个快速工作流程,以完全修补的三星 Galaxy S10(BCM4375B1)为例,使用:

  • 包含修补固件 + libnexmon.so 的 NexMon Magisk 模块
  • 自动化监控模式切换的 Hijacker Android 应用程序
  • 可选的 Kali NetHunter chroot,以直接针对内部接口运行经典无线工具(aircrack-ng, wifite, mdk4 等)

同样的技术适用于任何具有公开可用 NexMon 补丁的手机(Pixel 1, Nexus 6P, Galaxy S7/S8 等)。


先决条件

  • 支持的 Broadcom/Cypress 芯片组的 Android 手机(例如 BCM4358/59/43596/4375B1)
  • 使用 Magisk ≥ 24 的 root 权限
  • BusyBox(大多数 ROM/NetHunter 已经包含它)
  • 提供以下内容的 NexMon Magisk ZIP 或自编译补丁:
  • /system/lib*/libnexmon.so
  • /system/xbin/nexutil
  • Hijacker ≥ 1.7 (arm/arm64) – https://github.com/chrisk44/Hijacker
  • (可选)Kali NetHunter 或任何您打算运行无线工具的 Linux chroot

刷写 NexMon 补丁(Magisk)

  1. 下载适合您设备/固件的 ZIP(示例:nexmon-s10.zip)。
  2. 打开 Magisk -> 模块 -> 从存储安装 -> 选择 ZIP 并重启。 该模块将 libnexmon.so 复制到 /data/adb/modules/<module>/lib*/ 并确保 SELinux 标签正确。
  3. 验证安装:
bash
ls -lZ $(find / -name libnexmon.so 2>/dev/null)
sha1sum $(which nexutil)

配置 Hijacker

Hijacker 可以在运行 airodumpwifite 等之前自动切换监控模式。在 设置 -> 高级 中添加以下条目(如果您的模块不同,请编辑库路径):

Prefix:
LD_PRELOAD=/data/user/0/com.hijacker/files/lib/libnexmon.so

Enable monitor mode:
svc wifi disable; ifconfig wlan0 up; nexutil -s0x613 -i -v2

Disable monitor mode:
nexutil -m0; svc wifi enable

启用“在 airodump 启动时启动监视模式”,以便每次 Hijacker 扫描都在原生监视模式下进行(wlan0 而不是 wlan0mon)。

如果 Hijacker 在启动时显示错误,请在共享存储上创建所需的目录并重新打开应用程序:

bash
mkdir -p /storage/emulated/0/Hijacker

那些 nexutil 标志是什么意思?

  • -s0x613 写入固件变量 0x613 (FCAP_FRAME_INJECTION) → 1 (启用任意帧的 TX)。
  • -i 将接口置于监控模式(radiotap 头将被添加)。
  • -v2 设置详细级别; 2 打印确认和固件版本。
  • -m0 恢复管理模式(在 disable 命令中使用)。

运行 Enable monitor mode 后,您应该看到接口处于监控状态,并能够使用以下命令捕获原始帧:

bash
airodump-ng --band abg wlan0

手动一行代码(不使用 Hijacker)

bash
# Enable monitor + injection
svc wifi disable && ifconfig wlan0 up && nexutil -s0x613 -i -v2

# Disable and return to normal Wi-Fi
nexutil -m0 && svc wifi enable

如果您只需要被动嗅探,请省略 -s0x613 标志。


在 Kali NetHunter / chroot 中使用 libnexmon

Kali 中的标准用户空间工具不知道 NexMon,但您可以通过 LD_PRELOAD 强制它们使用:

  1. 将预构建的共享对象复制到 chroot 中:
bash
cp /sdcard/Download/kalilibnexmon.so <chroot>/lib/
  1. Android 主机 启用监控模式(上面的命令或通过 Hijacker)。
  2. 在 Kali 中启动任何无线工具并进行预加载:
bash
sudo su
export LD_PRELOAD=/lib/kalilibnexmon.so
wifite -i wlan0        # 或 aircrack-ng, mdk4 …
  1. 完成后,像往常一样在 Android 上禁用监控模式。

因为固件已经处理了 radiotap 注入,用户空间工具的行为就像在外部 Atheros 适配器上一样。


可能的典型攻击

一旦监控 + TX 激活,您可以:

  • 使用 wifitehcxdumptoolairodump-ng 捕获 WPA(2/3-SAE) 握手或 PMKID。
  • 注入去认证/断开连接帧以强制客户端重新连接。
  • 使用 mdk4aireplay-ng、Scapy 等构造任意管理/数据帧。
  • 从手机直接构建恶意 AP 或执行 KARMA/MANA 攻击。

Galaxy S10 的性能与外部 USB NIC 相当(~20 dBm TX,2-3 M pps RX)。


故障排除

  • Device or resource busy – 确保 Android Wi-Fi 服务已禁用 (svc wifi disable) 后再启用监控模式。
  • nexutil: ioctl(PRIV_MAGIC) failed – 库未预加载;仔细检查 LD_PRELOAD 路径。
  • 帧注入有效但未捕获数据包 – 一些 ROM 硬性阻止频道;尝试 nexutil -c <channel>iwconfig wlan0 channel <n>
  • SELinux 阻止库 – 将设备设置为 Permissive 或修复模块上下文:chcon u:object_r:system_lib_file:s0 libnexmon.so

参考

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