hacktricks/src/generic-methodologies-and-resources/pentesting-wifi/enable-nexmon-monitor-and-injection-on-android.md

129 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 在 AndroidBroadcom 芯片)上启用 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 S10BCM4375B1为例使用
* 包含修补固件 + `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/<module>/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 <chroot>/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 TX2-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](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}}