在 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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
概述
大多数现代 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)
- 下载适合您设备/固件的 ZIP(示例:
nexmon-s10.zip
)。 - 打开 Magisk -> 模块 -> 从存储安装 -> 选择 ZIP 并重启。
该模块将
libnexmon.so
复制到/data/adb/modules/<module>/lib*/
并确保 SELinux 标签正确。 - 验证安装:
ls -lZ $(find / -name libnexmon.so 2>/dev/null)
sha1sum $(which nexutil)
配置 Hijacker
Hijacker 可以在运行 airodump
、wifite
等之前自动切换监控模式。在 设置 -> 高级 中添加以下条目(如果您的模块不同,请编辑库路径):
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 在启动时显示错误,请在共享存储上创建所需的目录并重新打开应用程序:
mkdir -p /storage/emulated/0/Hijacker
那些 nexutil
标志是什么意思?
-s0x613
写入固件变量 0x613 (FCAP_FRAME_INJECTION) →1
(启用任意帧的 TX)。-i
将接口置于监控模式(radiotap 头将被添加)。-v2
设置详细级别;2
打印确认和固件版本。-m0
恢复管理模式(在 disable 命令中使用)。
运行 Enable monitor mode 后,您应该看到接口处于监控状态,并能够使用以下命令捕获原始帧:
airodump-ng --band abg wlan0
手动一行代码(不使用 Hijacker)
# 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
强制它们使用:
- 将预构建的共享对象复制到 chroot 中:
cp /sdcard/Download/kalilibnexmon.so <chroot>/lib/
- 从 Android 主机 启用监控模式(上面的命令或通过 Hijacker)。
- 在 Kali 中启动任何无线工具并进行预加载:
sudo su
export LD_PRELOAD=/lib/kalilibnexmon.so
wifite -i wlan0 # 或 aircrack-ng, mdk4 …
- 完成后,像往常一样在 Android 上禁用监控模式。
因为固件已经处理了 radiotap 注入,用户空间工具的行为就像在外部 Atheros 适配器上一样。
可能的典型攻击
一旦监控 + TX 激活,您可以:
- 使用
wifite
、hcxdumptool
、airodump-ng
捕获 WPA(2/3-SAE) 握手或 PMKID。 - 注入去认证/断开连接帧以强制客户端重新连接。
- 使用
mdk4
、aireplay-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
。
参考
- Hijacker on the Samsung Galaxy S10 with wireless injection
- NexMon – firmware patching framework
- Hijacker (aircrack-ng GUI for Android)
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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。