Skip to main content
QUICK REVIEW

[论文解读] NexMon: A Cookbook for Firmware Modifications on Smartphones to Enable Monitor Mode

Matthias Schulz, Daniel Wegemer|arXiv (Cornell University)|Dec 24, 2015
Wireless Networks and Protocols参考文献 1被引用 3
一句话总结

本文提出 NexMon,一种基于 C 语言的固件扩展框架,用于修改智能手机上 BCM4339 芯片的 Wi-Fi 固件,以在该设备上启用监控模式。通过逆向分析固件并扩展 wlc_bmac_recv 函数以绕过帧过滤,作者成功实现了带有 radiotap 头的原始帧接收,该成果通过在 Nexus 5 上运行 airodump-ng 得到验证。

ABSTRACT

Full control over a Wi-Fi chip for research purposes is often limited by its firmware, which makes it hard to evolve communication protocols and test schemes in practical environments. Monitor mode, which allows eavesdropping on all frames on a wireless communication channel, is a first step to lower this barrier. Use cases include, but are not limited to, network packet analyses, security research and testing of new medium access control layer protocols. Monitor mode is generally offered by SoftMAC drivers that implement the media access control sublayer management entity (MLME) in the driver rather than in the Wi-Fi chip. On smartphones, however, mostly FullMAC chips are used to reduce power consumption, as MLME tasks do not need to wake up the main processor. Even though, monitor mode is also possible in FullMAC scenarios, it is generally not implemented in today's Wi-Fi firmwares used in smartphones. This work focuses on bringing monitor mode to Nexus 5 smartphones to enhance the interoperability between applications that require monitor mode and BCM4339 Wi-Fi chips. The implementation is based on our new C-based programming framework to extend existing Wi-Fi firmwares.

研究动机与目标

  • 在消费级智能手机中的 FullMAC Wi-Fi 芯片上启用监控模式,这类设备通常不具备此功能。
  • 克服固件限制,使研究人员能够访问原始 Wi-Fi 帧以进行网络分析与协议测试。
  • 开发一种可重用的、基于 C 语言的固件扩展框架,用于 ARM 架构的 Wi-Fi 芯片固件,以支持底层修改。
  • 证明在像 Nexus 5 这类广泛可用设备上启用监控模式的可行性,其使用 BCM4339 芯片。
  • 为研究人员提供一个可引导的镜像,使其能够在不永久修改设备的情况下测试监控模式。

提出的方法

  • 使用 IDA Pro 和 Hex-Rays 反汇编器逆向分析 BCM4339 固件,以理解寄存器映射、内存布局和控制流。
  • 设计一种基于 C 语言的固件扩展框架,安全地将代码注入现有固件中,而不修改原始二进制结构。
  • 修改 wlc_bmac_recv 函数,通过 DMA 将接收到的帧直接转发给 BCMDHD 驱动程序,绕过帧过滤逻辑。
  • 设置关键的 D11 核心寄存器(maccontrol),以启用混杂模式,包括 MCTL_PROMISC、MCTL_KEEPCONTROL 和 MCTL_BCNS_PROMISC。
  • 在每次帧接收时重新应用寄存器设置,以抵消固件重置导致的监控模式失效。
  • 提供一个自定义的 boot.img,包含修改后的内核和 BCMDHD 驱动模块,使监控模式在不修改原始系统的情况下启用。

实验结果

研究问题

  • RQ1能否在消费级智能手机(如 Nexus 5)中的 FullMAC Wi-Fi 芯片上成功启用监控模式?
  • RQ2如何设计一种基于 C 语言的固件扩展框架,以安全地修改 Wi-Fi 固件而不破坏核心功能?
  • RQ3在 BCM4339 芯片上,为绕过帧过滤并实现原始帧接收,需要进行哪些关键的固件级修改?
  • RQ4修改后的固件能否保持稳定并与现有的 Android 网络栈组件互操作?
  • RQ5现有工具(如 airodump-ng 和 tcpdump)在智能手机上验证监控模式功能时,其适用程度如何?

主要发现

  • 通过修改 wlc_bmac_recv 函数,将所有帧转发给主机驱动程序,成功在 Nexus 5 的 BCM4339 Wi-Fi 芯片上启用了监控模式。
  • 该框架成功设置并重新应用 maccontrol 寄存器位(如 MCTL_PROMISC、MCTL_KEEPCONTROL 等),在固件重置后仍能维持混杂接收状态。
  • 修改后的固件使 airodump-ng 能够检测并显示 Wi-Fi 接入点及其相关帧,证实了监控模式功能正常。
  • 接收到的帧中添加了 radiotap 头,确保与标准监控模式工具的兼容性。
  • 系统稳定到足以支持研究用途,尽管在未知条件下仍会发生固件崩溃,需手动重启接口。
  • 帧注入尚未实现,但未来工作将扩展该框架以支持任意 Wi-Fi 帧的发送。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。