就在前几天,Windows又又又爆漏洞了!
一般的漏洞,咱这个公众号也不会拎出来说,拎出来说的想必都不简单!
这一次的漏洞编号是CVE-2024-30078,一个Windows WIFI驱动程序的漏洞。
具体可以在微软安全响应中心(Microsoft Security Response Center)中看到:
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-30078
根据官方的披露,这又是一个潜藏了很多年的陈年老洞,从Win7到最新的Win10无一幸免全部沦陷。最重要的是,这个漏洞利用条件并不苛刻,黑客可以轻易发起攻击。只要物理上接近带有WIFI功能的Windows系统,就可以直接远程攻击,直接RCE远程代码执行,把你的电脑变成肉鸡。
听上去是不是很可怕?
以上基本上就是互联网上关于这个漏洞的全部信息了。我翻遍全网,也没找到关于漏洞的更进一步细节分析,更别提POC了。
既然没有,那就自己动手来分析一波吧!
首先根据官网的提示,这是一个跟WIFI相关的驱动程序漏洞,所以在Windows的驱动目录下,寻找可能跟wifi相关的驱动,还真让我找到了,就是这个nwifi.sys。
C:\Windows\System32\drivers\nwifi.sys
接下来分析的思路就是:打上这次漏洞的补丁,对比这个nwifi.sys文件打补丁前后的区别。
首先把打补丁前的文件备份一下,然后开始打补丁,具体补丁可以在官网下载安装。
更新补丁打完之后,重启系统,再次打开系统的drivers目录,可以发现,这个nwifi.sys文件果然更新了!
修改日期:2024/6/12
接下来就要请出漏洞分析领域的神器:bindiff,从这个名字就可以看出,这是一个可以进行二进制级别比对的工具。
这个工具底层是需要依赖IDA的工作,然后进行函数级别的比较,可以非常清楚的看到两个文件之间的差异。
PS:下面图中实际比较的并不是上面备份的旧文件,而是另外找了一个距离更新后的版本4522最近的一个旧文件。
![](https://www.krjojo.com/wp-content/uploads/2024/06/1.avif)
通过上面的统计信息可以看到,打补丁前后的文件仅有很少的不同,绝大多数的函数都是原封不动的。只有一个Dot11Translate80211ToEthernetNdisPacket函数有变化。
继续使用bindiff,更进一步对比这个函数在两个文件中的区别:
![](https://www.krjojo.com/wp-content/uploads/2024/06/2.avif)
可以看到,右边新的文件多了两个代码块。
在IDA里面打开定位到这个函数,可以看到这是一个新增的检查:
![](https://www.krjojo.com/wp-content/uploads/2024/06/3.avif)
也就是上面红框中的内容,在旧版本文件中是不存在的。如果检查不通过,就会返回一个0xC001000F,经过搜索,这个数值代表的是一个宏:NDIS_STATUS_INVALID_PACKET
![](https://www.krjojo.com/wp-content/uploads/2024/06/4.avif)
从这个宏的名字可以看出意思:无效的数据包。也就是说:这里新增了一个数据包的检查工作,如果检查不通过,就返回一个数据包无效的错误码。
那这里到底是在检查什么呢?这需要知道这个函数的两个参数指向的到底是什么数据结构。
然而比较遗憾的是,目前我没能找寻到关于这方面的信息,因为这些都是微软内部的代码,并没有对外公开,想要深度逆向的话,可以结合内核级动态调试去跟踪里面的数据结构,这还需要花费不少的精力。当下只能基于现有的信息进行一下推测。
通过IDA可以绘制出这个函数的调用链条:
![](https://www.krjojo.com/wp-content/uploads/2024/06/5.avif)
这个函数是在接收到数据包之后调用触发的,然后注意函数名字Dot11Translate80211ToEthernetNdisPacket,从名字上来推测,这个函数是在把802.11格式的数据包转换为以太网格式的数据包。其中802.11是无线局域网的通信标准。
所以大胆猜测,这个攻击可能是这样的:构造一个畸形的802.11格式的数据包给无线网卡,然后这WIFI驱动程序在进行处理的时候,操作不当,导致RCE的出现。
更进一步的信息,后续有时间继续分析,大家感兴趣的话,也可以去分析一下。分析出原因,构造POC也就不难了。
微软虽然已经推出了这个漏洞的相关补丁,但研究这个漏洞的利用依然非常有价值。一方面很多人都还没有升级,另一方面,Win7也在中招之列,而且微软早已经对Win7停止服务了,所以并没有Win7的补丁,而国内用Win7的也不在少数。所以这个漏洞的价值依然非常大,但千万不要拿去干违法的事哦⚠️