# 在 Android(Broadcom 芯片)上启用 NexMon 监控模式和数据包注入 {{#include ../../banners/hacktricks-training.md}} ## 概述 大多数现代 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](https://github.com/chrisk44/Hijacker) * (可选)Kali NetHunter 或任何您打算运行无线工具的 Linux chroot --- ## 刷写 NexMon 补丁(Magisk) 1. 下载适合您设备/固件的 ZIP(示例:`nexmon-s10.zip`)。 2. 打开 Magisk -> 模块 -> 从存储安装 -> 选择 ZIP 并重启。 该模块将 `libnexmon.so` 复制到 `/data/adb/modules//lib*/` 并确保 SELinux 标签正确。 3. 验证安装: ```bash 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 在启动时显示错误,请在共享存储上创建所需的目录并重新打开应用程序: ```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 /lib/ ``` 2. 从 **Android 主机** 启用监控模式(上面的命令或通过 Hijacker)。 3. 在 Kali 中启动任何无线工具并进行预加载: ```bash sudo su export LD_PRELOAD=/lib/kalilibnexmon.so wifite -i wlan0 # 或 aircrack-ng, mdk4 … ``` 4. 完成后,像往常一样在 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 ` 或 `iwconfig wlan0 channel `。 * SELinux 阻止库 – 将设备设置为 *Permissive* 或修复模块上下文:`chcon u:object_r:system_lib_file:s0 libnexmon.so`。 --- ## 参考 * [Hijacker on the Samsung Galaxy S10 with wireless injection](https://forums.kali.org/t/hijacker-on-the-samsung-galaxy-s10-with-wireless-injection/10305) * [NexMon – firmware patching framework](https://github.com/seemoo-lab/nexmon) * [Hijacker (aircrack-ng GUI for Android)](https://github.com/chrisk44/Hijacker) {{#include ../../banners/hacktricks-training.md}}