0.前言
Defcon China的最后一天终于有空来到现场,让我感兴趣的是由上海交通大学密码与计算机安全实验室(LoCCS)软件安全小组(GoSSIP) 的李昶蔚同学和蔡洤朴同学带来的议题——“空中的WiFi密码:SmartCfg无线配网方案安全分析(Passwords in the Air: Harvesting Wi-Fi Credentials from SmartCfg Provisioning)”。 该议题介绍了被大量智能设备使用的SmartConfig配网方案(一种利用手机给智能设备配网的技术)可能导致WiFi密码泄漏。本文为大家做个简单的解读。
1.智能设备的无线配网方案
在过去,我们的无线设备如手机、笔记本等都可以通过交互界面配置无线密码来加入网络,或者通过WPS 、NFC等快速配网技术来建立连接,先简单介绍下它们。
1.1 WPS(Wi-Fi Protected Setup)
WPS由WiFi联盟在2006年引入,目前是为解决用户输入长密码的烦恼。这个标准要求只需实现两种模式:Push mode和PIN mode。 在按钮模式中,首先在客户端(比如手机)上打开虚拟的WPS按钮,接着按下路由器上的物理WPS按钮,就会自动配置加密设置并建立连接。 而PIN模式呢,在路由器上可以找到这串数字,在客户端上使用PIN码同样可以连入网络。 不过在2011年,WPS PIN mode被发现存在严重的安全隐患。PIN码的格式如下图。 AP在检验PIN码时会先检查前4位是否正确,之后才检验后四位,而最后一位还是个校验码,这导致一共只有10^4+ 10^3 = 11000种可能,黑客就可以通过爆破的方式在数小时内恢复出密码。大部分较新的路由器通过限制单位时间的错误数量来抵御这种攻击,而老一点的路由器大部分都存在该缺陷。
1.2 通过NFC实现蓝牙快速连接
正常的蓝牙连接需要先搜索附近蓝牙设备,选择后进行连接。而通过NFC可直接获取目标设备的设备信息,从而节省了搜索和选择的过程,实现了快速连接。不过目前这项技术应用得并不多,比如大部分千元机都不支持NFC。
1.3 物联网设备
到如今,智能家居的场景中出现了更多智能设备,如智能音响、智能插座、智能窗帘等。出于成本、外观、安全性、使用场景或其他方面的考虑,它们没有使用以往的这些快速配网技术。同时,由于这些设备普遍缺乏输入模块、显示模块,连原有的“麻烦”方式也不行,这自然就增加新的配网技术需求。 常见的智能设备配网方式由两种:
- 智能设备处于AP模式,用户手机连入该热点向智能设备发送家庭网络名称及密码。随后智能设备再作为客户端连接目标网络。
- 智能设备处于监听模式,手机上的APP将家庭网络名称及密码编码后对外持续性发送。智能设备监听到该特殊无线帧,解码后连入家庭网络。随后通过广播包等方式通知APP配网成功。
SmartConfig便是第二种方式的一种解决方案。
2.SmartConfig配网方案
Smart Config是2012年由德州仪器(TI)推出的一种新型的配网技术,该技术是一步式 Wi-Fi 设置过程,允许多个家用设备快速高效地连接到 Wi-Fi 网络。考虑到应用通常没有用于输入 Wi-Fi 网络名称和密码的显示屏或键盘,SmartConfig 技术为最终用户提供了将设备轻松连接到接入点的能力。 由于原理并不复杂,各个芯片厂商都有不同的实现及名称,如下图:
2.1数据编码原理
我们知道,当我们把无线网卡设为monitor模式时,可以捕获到周边所有的802.11数据帧。 802.11数据帧中的数据字段由于加密的原因可能为密文,但此外的其他头部信息是可直接阅读的,这些就可以利用来传输我们编码后的网络配置数据。 根据我检索到资料,一般会利用到Destination Address(DA)和Length来承载数据。在智能设备和APP中都对应一个编码表,通过长度和DA字段来映射具体含义,包括了起始符、结束符、数据符(ASCII)等;还可以配合使用两个字段,由DA表示Index,由Length表示具体数据。
3. SmartConfig安全问题
以上实际是我在前一晚做的预习功课,让我们回到议题所关注的SmartConfig安全问题。 根据SmartConfig实现原理,配网信息编码后由APP通过802.11数据帧传递出去的,除了目标智能设备外,还可能会被周围的攻击者所捕获。如果攻击者能得到对应的编码表就能还原出WiFi密码,而该议题就为我们展现了这一点。有两个关键问题需要解决:如何确定一个智能设备所使用的具体方案;如何还原编码后的配网信息。 演讲者提到他们选择从APP SDK入手,因为可以很方便的从芯片厂商网站下载SDK和文档,同时市面上已经有成熟的APP逆向分析工具。他们从应用市场收集了大量智能设备应用,检测是否包含相应的SDK来确定其具体的SmartConfig方案。 他们发现,当前市场上广泛使用的各类SmartCfg配网方案(来自于八家主流无线芯片商)中,多数方案均会导致Wi-Fi密码被攻击者解密获取,而针对市面上常见的超过60款智能家居设备的实际调查更是证实了这种危害的广泛存在:超过三分之二的设备确确实实受到此问题影响!在议题中,列举了几个例子。 有的以明文形式发送,这种方式下攻击者可以很容易拿到数据。 有的虽然采用了AES的加密方式,但使用预共享的密钥被硬编码在APK中,可通过逆向分析后导出。 还有通过等差数列进行编码的方式,使用差分分析法就可还原出WiFi密码。 演示视频如下: 议题的最后,他们表示已通过官方途径对涉及到的厂商及其协议中存在的问题进行了通报。同时提出了一套合理的安全设计来防止类似的窃听攻击。
4.点评
如果大家有看到我的上一篇文章“Ghost Tunnel攻击隔离网络的WiFi隐蔽传输通道”,会发现SmartConfig传递配网信息的方式与GhostTunnel非常接近,都是类似于侧信道的传输方式。GhostTunnel利用了Probe帧,而SmartConfig利用了Data帧,两者都可以在不中断现有网络的情况下,利用帧头部区域对外传递信息。 厂商可能出于成本的考虑,在实现SmartConfig方案时所有设备都以同一套静态编码方案传输凭证,同时由于APK未做加固可被攻击者轻易获取具体编码方案,引入了较大的密码泄漏威胁。 在会场,我听到有厂商的朋友提问该攻击场景是否太过困难,攻击者如何能刚好在用户配网时处于监听状态,为解决这“小概率”风险所消耗的成本是否不值得? 不要小看任何的“鸡肋漏洞”,在特殊的场景或漏洞组合下很有可能变成一个利器。况且这些SmartConfig的实现缺陷在我看来并不鸡肋,我能想象出很多的利用场景。我举个例子,在过去无线路由器初始化时后台采用默认账号及密码(如admin:admin),有这样的攻击思路:通过Deauth攻击让对方路由器长时间无法工作,当对方采取重置操作时快速连入无线通过默认密码进入后台获取WPS PIN码。随后不论对方修改任何WiFi密码都能通过PIN码进行还原。 希望广大厂商能重视安全缺陷,尽可能的将威胁排除在生产源头。
参考链接
- wifi一键配网smartconfig原理及应用 https://blog.csdn.net/flyingcys/article/details/49283273
- Smart Config 技术原理 https://cjey.me/posts/smartconfig/
- 上海交通大学软件安全小组: https://zhuanlan.zhihu.com/p/35664962
- 原版PPT(目前还没公布,厚着脸找演讲者要来的)