LIFX智能灯泡漏洞泄露WIFI密码
最近有安全研究人员报告LIFX灯泡存在漏洞,黑客可以在距离灯泡30米内获取灯泡连接的WIFI密码。LIFX灯泡使用aes加密wifi密码,其加密密钥是固定的,通过特殊方式获得密钥之后就可以解密wifi的密码。目前LIFX已经发布安全升级公告。
LIFX灯泡是可以由Wi-Fi控制的智能多色LED灯泡,售价99美元。LIFX曾创下Kickstarter众筹平台有史以来最成功的融资活动,在最初目标仅为10万美元的情况下,于短短六天内筹集到了130万美元。上周,该公司宣布在A轮融资中募集了1,200万美元。
LIFX灯泡会连接wifi网络,这样才可以通过手机APP控制。当有多个灯泡的时候,只有一个灯泡会连接到网络。这个控制灯泡会接受手机发来的指令,然后通过802.15.4 6LoWPAN协议广播给其他的灯泡。
当控制灯泡关闭或者掉线的时候,剩余的灯泡会选举一个新的控制灯泡连接wifi,等待接受手机端发来的命令。这样的设计保证同时只有一只灯泡连接wifi,不用说,这种设计是有很多优点的。也引起我们的研究兴趣。
分析攻击面
在灯泡的网络中主要有3个核心的通信部分:
1,智能手机到灯泡的通信。
2,灯泡WIFI的通信。
3,灯泡mesh网络的通信。我们决定先从灯泡的 802.15.4 6LoWPAN的无线mesh网络下手,分析一下灯泡之间是如何分享 wifi 认证密码的。
协议分析
通过监控和注入LIFX的mesh网络,我们发现大部分通信都是未加密的。这样就可能轻易的分析出协议,从而构造消息控制灯泡或者重放控制指令。我们也发现了共享wifi密码的流程。当有新灯泡加入时,控制灯泡会广播消息,新灯泡回应控制灯泡,然后跟控制灯泡请求wifi的相关信息。控制灯泡会回应wifi的信息,加密之后发给新灯泡。然后新灯泡就出现在手机APP的控制列表里了。下图显示的是加密之后的wifi信息。
通过对数据的进一步分析,我们发现可以自己在灯泡的mesh网络中注入数据包来请求wifi的信息。这样就可以在没有新灯泡加入的情况下获得wifi信息,而且手机上不会有任何提示。到目前为止,还没有足够的信息来解密wifi信息,因此我们决定去分析灯泡使用的加密算法。
获得固件
理想的情况下,可以在设备官网下载到固件分析。这次由于LIFX是一家非常新兴的公司,他们还没有发布过固件。所以我们只好自己想办法提取固件。
通过对PCB的分析,我们获得了以下的信息:mesh网络使用的是德州仪器的CC2538,wifi网络使用的是意法半导体的STM32F205ZG (marked LIFX LWM-01-A)。处理器使用的ARM Cortex-M3 。而且芯片的jtag都是可以用的。我们使用开源硬件BusBlaster JTAG debugger,最后成功导出了固件。
逆向固件
现在我们有了两个二进制的文件。通过对字符串的识别,发现加密算法部分在LIFX LWM-01-A芯片中。使用IDA Pro加载固件,通过寻找一些加密常用的常量: S-Boxes, Forward和Reverse Tables和Initialization Constants,分析出LIFX采用了AES进行加密。AES是一种对称加密算法。也就是说加密和解密都需要同一个预共享的key。如果LIFX使用了固定的加密密钥的话,这就意味者我们从一个LIFX灯泡中获得了加密key,就可以使用这个key解密所有LIFX灯泡加密的wifi信息。下图是ids 反汇编的加密代码。结合对开源AES实现的分析,我们获得了aes加密使用的key,初始化向量,块模式等。
最后我们使用获得的信息解密了嗅探到的wifi信息证明了漏洞存在。由于这个攻击场景需要使用无线mesh网络,所以攻击者需要在网络覆盖的范围内进行攻击,大概是30米。目前lifx已经发布了新版固件修正这个漏洞。
相关文章
- 2条评论
- 辙弃朮生2022-06-01 04:44:34
- 。目前lifx已经发布了新版固件修正这个漏洞。
- 美咩一镜2022-06-01 10:41:07
- 用的常量: S-Boxes, Forward和Reverse Tables和Initialization Constants,分析出LIFX采用了AES进行加密。AES是一种对称加密算法。也就是说加密和解密都需要同一个预共享的key。如果LIFX使用了固