随着物联网科技的飞速发展,各类IOT设备都通过使用无线技术BTLE; ZigBee;WIFI;6LoWPAN等来实现万物互联. 但随之而来的安全及个人用户隐私问题也越来越敏感. 所以将在这篇文章中分享一个低功耗蓝牙。智能锁的分析案例, 希望能对IOT安全研究起到抛砖引玉作用。
BTLE 俗称低功耗蓝牙,比传统的蓝牙更能控制功耗和成本。因此成为当下 IOT 产品中使用非常频繁的技术。比如小米智能手环; 飞利浦的HUE 智能灯,甚至还有羞羞的蛋蛋系列都是通过BTLE 来完成联接的。据说BTLE设备的年出货量在过去15年内增加了1000倍,已经达到了30亿的水平,在未来的4~5年内还将增加到50亿。
不过越是流行的东西。黑客对其也越是有兴趣,通过简单的搜索便可发现不少关于BTLE 设备安全隐患的文章,其中编号为 CVE-2013-4866 的硬编码PIN漏洞堪称一绝,因为它是第一个关于智能马桶的漏洞. 感兴趣的朋友可以自行了解相关信息。
有些朋友可能会觉得仅仅是家里的智能灯或者手环被黑了,并不会造成什么特别的影响。可是有一类蓝牙智能设备的安全问题可就没这么简单了,不过在进入主题之前大家先来了解一下BTLE 吧……
其实关于BTLE 的基础介绍网上已经有很多了,这里只是简单介绍下想要进行测试的必备知识。BTLE 设备运行在2.4ghz. 分为40 个频道,每个频道 2Mhz 带宽。其中频道 37;38; 39 为广播频道,剩余的37个频道为数据频道。
BTLE 定义使用了3 种匹配模式,JustWorks;6-digit PIN **和 **Out of band。其中JustWorks 默认使用000000作为PIN来完成匹配。这样的设计给本身不带输入方式的设备提供了便利。但同时让所有人都可以轻易以其匹配,我们的目标 DOG&BONE 智能锁使用的正是此方式。
在匹配成功后,我们便可以通过一个独特的UUID对 Characteristics 进行读写操作. 从而实现不同的功能, 比如开灯/关灯等. 在格式上UUID 又分为Bluetooth Special Interest Group (SIG) 规范的 16bit 公有UUID (e.g. 0000180F-0000-1000-8000-00805F9B34FB) 和 厂商自定义的 128 bit 私有UUID (e.g. 00001524-1212-EFDE-1523-785FEABCD123.
在与BTLE 交互的硬件方面可以说非常简单. 仅仅一个便宜的BTLE 蓝牙Dongle 即可. 同时大部分的手机比如IPHONE 自带BTLE功能. 如果想增加收发信号范围的话还可以通过外接天线的方式达到目的.
软件方面的选择也非常之多. 如果是IPHONE 用户的话, 个人推荐 LightBlue. 当然想要深入的话, 则必须使用Linux下的开源软件, 比如hcitool or Gatttool. 尤其是gatttool 提供了一个非常好的交互界面.
市面上具有BTLE功能的安防产品种类繁多, 其中又以智能锁为主. 但是作为一款安全产品的自身的安全性能又如何呢. 在DEFCON24上有安全研究员爆出数款蓝牙智能锁的安全漏洞. 而漏洞的类型五花八门. 从明文密码到重放攻击, 甚至还有一款门锁在Fuzzing 攻击下完全失效, 导致门户大开.
其实智能锁的架构非常简单. 通过手机APP 作为中转跟云服务器交互, 用户甚至可以从地球任何一个角落打开锁. 这是普通门锁无法比的.
今天的主角DOG&BONE 蓝牙智能锁正式登场了. DOG&BONE 智能锁是由一家位于英国的公司生产. 目前在市面上售价为100 $. 但在逆向了他们的手机APP后, 发现真正的开发者应该是一名华人. 就如大多数厂商那样, 他们也号称自家的智能锁安全性能极高. 适当的宣传是可以理解的, 但这家公司似乎有点过了头. 简单来说就是号称此锁拥有银行级别的安全性能, 甚至需要设计出苹果电脑的传奇硬件黑客Steve Wozniak 亲自出马才行. 但真实情况是不是真有那么安全呢? 让我们来一起测试下吧.
攻击准备
在攻击起始阶段最重要的就是情报收集, 掌握目标尽可能多的信息对随后的深入研究至关重要. 就DOG&BONE 锁而言, 我们可以使用LightBLUE 与其交互, 得到一些基本信息开始.
如图所示: 我们可以知道DOG&BONE的蓝牙地址; 使用了Nordic的蓝牙芯片. 且提供了何种services, 这些services 的UUID 又是哪些.
善用GOOGLE 搜索可以发现除了官方文档之外的许多信息. 这里我们发现网上已经有其他研究人员对其进行解剖. 方便我们了解了其内部结构信息. 从而更加确认了DOG&BONE 使用的是Nordic NRF51822 芯片.
如果觉的Ubertooth 价格过高的话, 我们也可以用基于CC2540 芯片的TI-SmartRF Sniffer. 和其自带的SmartRF 软件. 而且测试发现抓包效果要比Ubertooth 好些.
大家还记得DOG&BONE还有一个共享锁的功能么. 在共享给其他用户的同时, 还可以限制其使用的次数和时间. 那么这期间到底发生了什么, 是否可以绕过限制呢. 这里我们通过BurpSuit Pro 来一探究竟.
其实共享过程很简单, 当锁的主人决定共享给某个用户. 服务端会发送邀请token 给此用户
当此用户接受了邀请. 服务器便会将锁的ID 和共享类型等信息返回到用户的账号. 这里的共享类型包含了次数以及时间限制信息.
而当此用户想开锁时, 客户端便会发送请求到服务端. 如果一切顺利服务端会将当前的解锁密码返回. 从而达到开锁的目的.
但如果用户的次数用完了, 此时再发送开锁请求. 服务端返回错误信息.
但是因为整个过程都在我们的掌握之中, 所以我们可以将服务端的返回信息换成任意我们想要的信息. 比如提高共享次数等. 以下是绕过共享次数限制的视频演示.
Bypass DogBone lock sharing limits (视频地址)
http://v.qq.com/page/y/3/v/y05190ihb3v.html
以上我们通过逆向应用程序, 蓝牙数据包嗅探等方式搞定了Dog&Bone 智能锁的安全防御. 但事实上还有一个非常简单但又非常致命的方式可以打开锁. 那就是使用SHIM (铁片) 攻击, 事实证明往往最简单的攻击方式却是最行之有效的. 以下是演示视频, 在看过之后你还愿意花100 美金去买这个所谓的智能锁吗?
Bypass DogBone by SHIM (视频地址:)
http://v.qq.com/page/j/8/q/j0519sav98q.html