蓝牙LED面具的万圣节恶作剧:揭秘可穿戴设备安全漏洞

本文深入分析了市面上流行的BLE蓝牙LED面具普遍存在的安全漏洞。通过逆向工程,作者发现这些面具缺乏设备配对和认证机制,且通信加密密钥硬编码在APP中,使得攻击者可轻易劫持并篡改附近面具的显示图像。

Invasion of the Face Changers: Halloween Hijinks with Bluetooth LED Masks

By: Nathan Elendt, Senior Security Consultant

万圣节是我一年中最喜欢的节日之一,因为这意味着秋天正盛,玉米糖正当季,而且这是唯一一个晚上可以穿着斗篷出门而不显得怪异的社交场合。我的家人也喜欢万圣节,所以我们倾向于搭配主题服装。我们决定今年的主题是“任何会发光的东西”,因此,像任何负责任的书呆子一样,我潜入了LED装置的世界,打算用它作为服装的核心。我发现LED面具是一个流行的选择,并且具有各种巧妙的功能,我可以用在服装上,确保我在各个方面都脱颖而出,无论是比喻意义上还是字面意义上。我购买了一个支持蓝牙低能耗(BLE)的面具,它可以通过一个应用程序控制自定义面孔,我认为像Shy Guy那样的空白面孔既有意思又令人不安,非常适合在社区里意外地出现。下订单后,我开始为万圣节之夜组装一切。

图1:在黑暗中结交新朋友的完美装备。

初步印象

我的新面具开箱,并加载了官方的“Shining Mask”应用程序后,我发现控制面具和将自己制作的图像加载到面具上非常容易。

图2:你的标准日常BLE智能面具

事实上,这简单得令人震惊,而在我的工作领域,“简单得令人震惊”通常是在事情变得非常糟糕(或者非常顺利,取决于你的观点)之前使用的描述语。我发现该应用程序自动扫描、发现并控制了我的全新的、刚开箱的面具,甚至没有任何认证检查,这让我了解了这些面具的工作原理。

我对逆向工程物联网设备或其他智能设备并不陌生,我们首先检查的事情之一就是设备在通过经典蓝牙或BLE连接时是否(以及如何)使用安全通信。很明显,这里没有进行任何配对或身份验证检查,因此,理论上,任何BLE设备都可以在有无面具所有者许可的情况下控制任何面具。

就其本身而言,这个信息并不是特别有趣,因为它只意味着一家公司的某一种面具存在一个安全漏洞……但事实并非完全如此。事实证明,我得到的这个面具是白标做法的一个很好的例子,这是物联网设备和其他电子产品的常见做法。本质上,这意味着一个产品由一家公司设计和制造,然后卖给多家其他公司,这些公司再以自己的品牌转售。事实证明,尽管在线商店提供多个品牌的LED面具,但基本上每一个都是同一款产品,通常被称为Shining LED面具。

图3:不同品牌,同一设备

突然之间,这个问题不再只影响一个特定的面具,而是似乎影响了这种类型的许多支持BLE的面具,这种面具非常受欢迎且使用广泛,尤其是在万圣节这样的夜晚。掌握了这些知识后,我探索了这可能被利用的全部程度,因为我总是喜欢钻研一个技术上既有趣又巧妙的恶作剧。

投射黑客光环

幸运的是,之前已经有一些关于逆向工程这些面具使用的BLE协议的工作。根据现有的研究,Shining Mask与其关联应用程序之间似乎应用了一些保护措施。然而,这些保护措施是对蓝牙消息进行AES加密,使用的是可以通过简单反编译应用程序就能获取的已知密钥。像JADX这样的工具通常是我做这类工作的首选,但事实证明我们可以直接从GitHub上获取密钥。

图4:用于执行BLE消息AES-ECB加密的密钥和代码

这些知识,加上其他黑客的代码以及一两个晚上梳理蓝牙嗅探日志,使我获得了足够的协议信息,能够构建自己的面具控制器。这意味着我可以自动更改周围任何面具的面孔(当然,除了我自己的),而无需低头看手机或摆弄任何按钮,非常适合晚上外出讨糖。

使用一个Adafruit BLE Feather开发板,并以前人的工作为基础,我编写了一个CircuitPython脚本,用于搜索本地的Shining Masks,连接,上传一张新的狐狸图像,然后将面具的脸更改为新图像,最后断开连接。你可以在Bishop Fox的GitHub仓库中找到完整的代码和说明。

图5:使用我自己的控制器,无需动手即可改变所有人的面孔

范围仅限于“BLE本地”,因此你无法在全球范围内改变面孔,但你可以舒适地把它放在口袋里,在万圣节之夜走在街上,自动改变你看到的每个戴着相同LED面具的人的脸。

那么,如何修复呢?

简单的答案是“添加配对流程,这样只有经过批准的设备才能控制每个面具”。但现实情况要复杂一些。

这些面具已经上市多年(从之前的所有研究可以看出,在撰写本文时至少有四年历史了),而且显然工作得很好。因此,制造商没有太多动力去更新BLE控制协议,因为这需要对每个设备进行固件更新。

考虑到部署此类修复的难度以及BLE连接的实际范围,这里的实际影响可能仅限于“任何在短距离(10米或更短)内的人都可以将你的面具更改为他们想要的任何图像”,这介于“无害的恶作剧”和“轻微的烦恼”之间。即使被完全利用,纠正这些“被黑”面具的行动也只是简单地将其改回所需的图像,并可能开怀一笑。为了谨慎起见,我们在漏洞利用代码中硬编码了图像,只是为了帮助大家保持家庭友好。

无论如何,祝你度过一个安全(并尽可能安全)的万圣节之夜!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计