物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探

  • 时间:
  • 浏览:0
  • 来源:5分6合APP下载_5分6合APP官方

这个产品感觉逻辑也简单,所以网络远程发送震动指令到手机,手机在通过BLE链接设备进行你懂、我懂、他也懂的事情,羞~

GATT负责4个多BLE设备间通信的数据交互,是对功能数据最为重要的每段,这篇文章的核心也在这里。

操作句柄,还时要简单理解为 Characteristic 的基址,真正的通信地址

通过抓包分析得知操控灯泡颜色的handle是0x0012,我读了下他的uuid为fff1,私有的。用char-write-cmd命令直接写入他们儿分析好的协议,灯泡变色,或者再读取之,数据其实成功写入。

0x31100100 = 100 0x100 = 0 从 4bytes 结束英文,所以该灯泡的亮度每段,100最亮,0越来越亮度,也所以关。

0x03 BLE嗅探

出理 了认证的问题图片图片,接下来所以压轴大戏,如保对用户以及产品口碑造成真正的影响。震动?改步数?LED跑马灯?都前会 ,我选者在茫茫人群中,我能 写入恶意的闹铃,名曰 半夜三更三更凶“铃”。试想下,背着我那台无线Hack设备,天天在早高峰蹭北京城铁13号线,自动搜索身边小米手环,或者链接过认证写入闹铃,他们儿猜4个多月后我时要“感染”十2个 手环?我相信前会多久,小米手环论坛就会有用户闹翻天了…光说不练耍流氓,实现它。选者设备后抓包,客户端设置十2个 闹铃,倘若一次我能 解开私有协议格式了:

似乎是个第三方SDK,目前大慨前会去逆向Android APP了开心,说实话这个我还真不擅长。通过这个SDK我找到了具体认证流程的代码:

0x01 前言

或者呢?duang~

PS:以上前会 书本知识,具体还时要参照蓝牙4.2官方文档内对BLE安全的解说每段,注意前会 跟蓝牙混淆。

所以你向UUID为 0x2A06 的 Characteristic 写入1的后后,小米手环会变会震动。其实你还能输入2,这个快感比1更酸爽~哦呦、别、别停…… 这是4个多简单的GATT例子,不知各位是是否是明白,现在我能 安装个LightBlue链接你身边的BLE设备,看看还时要发现有些问题图片图片了呢?

其次是Security Mode 2,这个模式主要负责“签名”,它含4个多多安全等级:

   GAP-通用访问规范

0x06 结语

看后差异了么?

0x04 伪造BLE通信

   BLE 协议栈总览

这个跳蛋有这个模式:预定义节奏的震动、随着音乐翩翩起舞的震动还4个多多体位交互震动,肯能前4个多没啥难度,基本抓到操作重放出来就OK了,最后这个模式比较卡哇伊,玩玩它咯。

小米手环是明星产品,对他的分析也充满了趣味与困难,肯能从一结束英文我能 遇到了4个多认证机制,肯能蓝牙链接后不写入一段特殊格式的数据,那你只有读血块信息只有对手环进行操作。我通过抓包分析GATT中的write操作,过程省略2万字,最终定位了4个多向 Handle 0x0019 进行的write操作,该Characteristic返回了个Notify,或者手环就还时要随意写指令了(如私有协议中的震动、LED颜色变化、开启实时步数监控等)。

看后了这个 Characteristic 的UUID 2A06,或者他们儿去蓝牙官网定义的列表 Characteristics 搜索 2A06,进入Characteristic的详情页面。

如图,GATT中的4个多每段Profile、Service、Characteristic以及他们儿的层级关系,值得注意的是,Profile其实是SIG蓝牙技术联盟给有些同范畴内的Service打包后的集合,比如电池、心率、血压等,还时要参照官方 Profiles Overview 所以Profile对他们儿的分析并无大用,前会装入 心上。

BLE在蓝牙中前会 很小的一每段,在物联网汪洋大海中更是一叶扁舟,学海无涯希望路上在等你。

2. 小爱爱智能跳蛋(这个真前会 我的,某个小伙伴借给我研究的)

操作:Read、Write还是Notify(写操作所以一定前会 write request 还有 write command,区别自己搜)

剑走偏锋,通过BlueZ得到了小米手环4个多完整篇 的私有协议UUID,或者去Github搜索,希望找到官方的代码(其实这每段通过逆向Android app相信就能得到,不过说好的剑走偏锋么)

PS:以上的内容我自己认为并前会 漏洞,毕竟还得10米的攻击范围内,所以直接当做技术分享吧。

这是BLE设备建立链接前主设备发给从设备的 CHANNEL_MAP_REQ 信息,用来告知BLE这40个信道什么肯能被占用,什么还时要使用。从中他们儿还时要看后BLE频率起始为2402MHz,结束英文为24100MHz,信道间距2MHz,有六个不可使用的广播信道37、38、39(频段的起始、结尾与中心各设置4个多广播频道,合理),所以与书本知识吻合。

最后,简单的看下Bluez协议栈自带的gatttool工具的使用法律方式

设备间传输的数据真身。有了这十2个 信息,他们儿就还时要调用BlueZ给设备发送修改后的信号了。

   1.YeeLight 2 代蓝牙灯泡

无处遁形。

GitHub - miband-sdk-android

0x05 分析BLE私有数据协议(灯泡、跳蛋、小米手环)

北欧(Nordic)的NRF51822,串口输出到计算机后,通过pipe法律方式使用Wireshark分析

Demo:

今天的内容是我在乌云内控 做的技术分享,也是我后后对低功耗蓝牙技术的有些接触,分发后决定对社区签署。一来还时要让社区对神秘的蓝牙技术破冰;二来也是抛砖引玉,希望能看后更多有趣的案例;三来比起什么华丽丽的show,我更喜欢分享有些实际的内容。

德州仪器(TI)的CC254x系列,配有官方的Sniffer程序,非常强大

在这里,他们儿用Bluez自带的hcitool扫描下没开启广播的BLE设备,比如小米手环

1. YeeLight 2 代蓝牙灯泡

BLE设备的链接与加密、签名协议的协商在这个层,比如BLE的这个安全模式,首先是Security Mode 1,这个模式主要负责“加密”,它含4个多多安全等级:

3. 小米手环

GATT-通用属性协议

BLE USB Dongle,蓝牙芯片厂商为了方便开发者才能方便的调试蓝牙产品通信,就将什么蓝牙芯片集成为USB模块,可进行方便的蓝牙透传测试。而我能 烧入Sniffer固件,就还时要利用这个设备分析俯近的蓝牙通信,或者将数据通过USB串口输出到计算机上。

   GATT-通用属性协议

写好测试程序,搜索并链接手环通过那个“认证”获取操作权限,再用手环LED玩个跑马灯,最后华丽丽的写入闹铃释放链接。结果手机客户端连上去发现闹!铃!没!开!启!还是默认的关闭状况,不放弃继续分析,我是越挫越勇的……

或者他们儿选者4个多BLE设备的MAC地址进行Sniffer,注意一定要在设备连接前就指定mac监听。监听后随便发起什么通过蓝牙信号的操作,他们儿就抓取到了第4个多BLE数据包

很激动有木有?现在抓取BLE通信就犹如抓取网络通信一样便捷了,连冗杂的跳频都先前会去考虑了撒。接下来再看最下面 Bluetooth Attribute Protocol 所以关键的 BLE 操作通信内容,那个value是该产品的私有通信协议。其实现在看不懂意思,但不倘若加密所致,肯能我前面有提到,我手里的设备安全链路前会 Security Mode 1 默认的Level 1这个级别…那私有协议如保分析?别急,上方的实战每段我会介绍我的思路。

2015年8月18~19日,蓝牙技术联盟(Bluetooth Special Interest Group,简称SIG)在上海举办2015蓝牙亚洲大会。蓝牙技术联盟执行总监Mark Powell在会上指出,目前蓝牙肯能成为全球使用量最大的无线技术。目前,蓝设备的年出货量在过去15年内增加了100倍,肯能达到了100亿的水平,在未来的4~5年内还将增加到100亿。

我自己喜欢后者,肯能我其实这个数字对于我来说很吉利…吉利?…好吧,我能 索性放弃Ubertooth One这款神器,给他们儿看看USB Dongle的有些玩法:)另外注意,NRF51822是一块单模(Bluetooth Smart)芯片,只支持BLE。具体参考官方文档:nRF Sniffer User Guide v1.1

该 Characteristic 操作定义非常明确了:

与灯泡不同的是,进入体位模式后,Master会给Slave发送4个多状况开启这个模式。所以你盲目的发送抓到的震动操作这个蛋是不震的,肯能我时要先让她进入状况。

一样简单,数据格式我画出来。第一位说明当前的操作是闹铃,第二位是闹铃的序号,第三位闹铃的开关,第四位结束英文所以闹铃时间,倒数第二位是智能唤醒(所以在你浅睡眠的后后把你叫起,或者我偏不,所以要在你深度睡眠时唤醒你,木哈哈),最后一位所以闹铃的循环日期,0x7F所以每天。

    番外篇:小米手环认证机制分析

这个数据与MAC地址最后两位FC进行异或为16byte数据,在转为2byte的hex签名结果。用户信息与手机端前会一致,倘若签名正确即可。这里感谢 @瘦蛟舞 的帮忙,用java程序我时要做了个接口,另4个多我能 能根据MAC地址任意生成有效的认证数据了

配置好环境后后就还时要对俯近的设备通信进行抓取了,我先来验证一下书本知识。

GAP-通用访问规范

肯能自己曾DIY过所谓的“智能硬件”,学习过程中除了接触各种芯片、传感器、电路知识外,也拆了不少设备分析其设计思想学以致用。再前会又接触了如:Wi-Fi、ZigBee、Bluetooth、NFC、IR、普通射频甚至音频等通信技术,才发现空气中什么形形色色的边界,才是整个物联安全的关键。

本次的研究目标是蓝牙4.0中的低功耗技术(Bluetooth Low Energy)简称“BLE”,时要注意有些技术规范容易与经典蓝牙搞混。

为什么会么会在么在说GATT有点痛 要?肯能理解了它,就肯还时要够分析或是“黑掉”有些BLE设备了。比如小米手环在国内某个硬件安全会议上被做过4个多攻击演示,使用Lightblue连接到手环后,倘若用给其中4个多Characteristic写入1,就还时要让手环震动起来,他们儿很惊讶但有不知所以然。我来用官方注册的Characteristic深度解释一下:

   3.小米手环

userInfo.getBytes 的设计在这里,做了简单注释

0x07 参考资料

这个分析很简单,肯能前会 些开关类的操作越来越前会 实际的含义,所以前会解开数据,直接重放就还时要,我做了个发送SOS急救信号的demo。

完整篇 代码所以放出了,毕竟还时要秒杀手环认证:)

重要的事情说三遍。小米手环的认证数据分析好了,型态如下

番外篇:小米手环认证机制分析

通过上方的分析发现,这个地方是小米手环客户端(大慨iOS客户端)的BUG,手环开发组GG认为手环的数据只有通过客户端进行开启修改,所以非客户端写入的数据前会自动同步!也就造成了恶意闹铃其实写入成功,但客户端看只有,认为闹铃越来越变化不去同步最新的状况,但这反让攻击变的更加隐蔽了,啧啧。

0x02 BLE概述

   2.小爱爱智能跳蛋(这个真前会 我的,某个小伙伴借给我研究的)

本文转自 K1two2 博客园博客,原文链接: http://www.cnblogs.com/k1two2/p/10018216.html ,如需转载请自行联系原作者

那个FEE7所以4个多私有Service的UUID,上方的0xFE**所以私有Characteristic的UUID,在往下面这个Immediate Alert 显示出了名称,代表其前会 小米私有的Service,所以官方公开定义的Service,他们儿点击进入这个 Characteristic

目前蓝牙的设备塞在一起所以酱紫了。

 这里本应该先讲解蓝牙与低功耗蓝牙的基础知识,但网上资料充足,所以各位还是从文章最后的参考资料中学习吧。乌云上前会 白帽做了每段科普 Bluetooth Low Energy 嗅探 感谢他的分享。所以我只讲基础知识中的关键内容,或者多放些他们儿喜闻乐见的实战案例。

代表性的芯片有:

这个协议栈非常冗杂,想基础化了解BLE协议基础的,就还时要参考最新蓝牙4.2的官方文档Bluetooth® Core Specification 4.2,我只简单的提取我理解的关键每段。

Demo:

有了上方的理论基础,要结束英文实战了。我手眼前 只有蓝牙灯泡和小米手环,前会4个多猥琐的他们儿借我个跳蛋希望帮忙分析…

正文结束英文前再看一段新闻报道吧,感受下蓝牙对当前以及未来在他们儿生活中的影响力:

现在还时要分析BLE通信了,接下来时要知道如保发送BLE信号,让对方设备执行他们儿期望的操作。其实要达成这个目标BLE USB Dongle或蓝牙开发版就还时要实现,但为了今后更多无线通信测试的便捷性,我还是准备打造一款软硬结合的平台。所以软件我使用Linux官方的蓝牙栈BlueZ(所以蓝牙攻击程序前会 基于该蓝牙栈),硬件我则选者了CSR厂的CSR8510芯片蓝牙适配器。平台我用2代树莓派搭建,未来会支持蓝牙、RTL-SDR、ZigBee等常见无线通信协议,比什么装个kali2就叫“无线渗透”的设备可玩性多了些嘿嘿。

Service和Characteristic是比较重要的,Service还时要理解为PHP中的“类”,功能对象的集合。Characteristic还时要理解为PHP的“函数”,是GATT中具体的功能对象,每个Service都还时要中有 4个多或多个Characteristic。

在上一节BLE抓包后,他们儿得到的 Bluetooth Attribute Protocol 中的信息,所以发出BLE信号的关键每段:

在遇到私有Service或Characteristic的后后,就要通过app逆向或嗅探蓝牙通信来分析了。说到蓝牙嗅探,他们儿第一想到的肯定是神器 Ubertooth One,精致的硬件+配套的软件变成了物联网黑客强大的帮手,缺点他们儿有所体会——昂贵。在自己做了有些简单的BLE设备研究后,了解到其实有更廉价的方案可供使用,这所以蓝牙芯片厂所提供的BLE USB Dongle。

内容越来越涉及任何经典/低功耗蓝牙的协议加解密、签名、配对儿认证等安全机制,毕竟是初探,不搞越来越冗杂高大上变成学术文章。所以我先分享有些接地气儿的产品和攻击场景,希望才能建立伙伴们对物联网安全的兴趣。

BLE 协议栈总览

看演示吧,POC代码不放,肯能细心动手的人还时要通过我的分析出理 一切问题图片图片,也出理 真的他们直接利用代码对小米用户进行攻击(因测试成功后忘记撤出 后后设置的半夜三更三更凶“铃”,所以我成了第4个多受害者,大半夜三更太酸爽了)。

同上道理

首先这个灯泡我在分析前就敢肯定他是不足图片图片的,肯能灯泡的操作逻辑前会过于冗杂,无非是一开一关、变色等等,所以我能 拿他来做“Hello world”

0x00 目录

这个签名是最重要的每段,前面的数据都还时要伪造,倘若签名过了,手环就会允许你后续的写指令,才能做到真正的PWN。那这个签名是咋算出来的?请看番外篇。

小知识:GATT中的UUID有16bit和128bit这个,官网看后什么前会 16bit的(其实真正的通信前会 128bit的,官方UUID在第一段数据中还时要识别)。官方认证过的UUID是要花银子的,但我能 免费使用,保证软硬件的相互理解。相反,私有UUID只在等你自己的软硬件才才能理解,要弄明白功能就得技术性分析,也所以上方要做的事情。

从这段代码中分析,最终写入Characteristic的内容,来自 userInfo.getBytes(device.getAddress()

猜你喜欢

圣经里面基督徒 结果子是什么意思

——很直接了,统统 善事。——传福音……约15章,红心百香果 树与果子,果子由于是约翰福音多次再次出现的“爱”。太21:43(1)统统我告诉我门歌词 ,神

2020-02-27

80后著名女作家有哪些

大学本科阶段结速英语 通俗文学的创作。春树3.戴漓力(女,武侠小说家,因出版长篇小说《铃儿响叮当》被保送至武汉大学,近期出版《胭脂红》,代表作《忘归箭》。)蒋离子,1985年

2020-02-27

4个字的外国名人的名字

可选中一俩个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个大问题。很重推荐 我来答大山乔丹杰克逊科比李连杰!换一换下载百度知道APP,抢鲜体验展开完整篇

2020-02-27

权志龙 that x x 歌词中文音译

肯得哦为了弄冷内可挖了内(why?kiCgi波呢内gi么特给么呀多特七为那呢噶及苏问呢够呀内噶恰莫普噶了够可得撒朗一完那浪给么啦就给够慢gi他够baby米噶就伴及了他够且把了有

2020-02-26

什么词语的意思是指事物本来的性质

基本含义:人与人沟通又分同层次沟通、跨层次沟通;单向交流、单对群交流;发展性交流、倾盖之交、利益之交;泛泛而谈,群起攻之;鸿儒之口、威逼利诱等更多。素质是指人的先天生理解剖特点

2020-02-26