😇
牛牛的安全 Odin
  • 个人介绍
  • 数据安全
  • 工控安全
    • 工控概念
  • 车联网安全合规
    • R155
    • CSMS\VTA
    • GDPR认证
  • 车联网安全
    • 漏洞订阅
    • 汽车攻击时间轴
    • 汽车信息安全研究
      • 车厂安全需求 Custom Requirement
      • 安全威胁
      • 参考文章
      • Who’s Behind the Wheel?
      • 安全研究基础
      • 智能网联汽车安全渗透指标
      • 智能网联汽车软件安全测试关键技术研究
      • 基于硬件在环的整车控制器功能安全测试技术研究
      • 智能网联汽车信息安全解决方案
      • 自动驾驶汽车的安全性-识别挑战
    • ECU逆向案例
      • 特斯拉攻击链
      • 汽车动力系统ECU固件逆向工程初探
  • 物联网安全
    • IoT 技术和协议
    • 智能设备常规测试思路总结
    • 各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别
    • QEMU 系统仿真
      • 如何“用 QEMU 模拟它”
      • 处理加密的路由器固件
    • 自动分析Automated Approach
    • IOT渗透测试(一)
    • 物联网安全目录
  • 固件分析案例
    • 智能门锁、手环
      • MCU固件反汇编
      • 云丁鹿客门锁中bootloader和FreeRTOS的分析
      • 云丁鹿客门锁BLE通信的分析(下)
      • 云丁鹿客门锁BLE通信的分析(中)
      • 云丁鹿客门锁BLE通信的分析(上)
      • 华为智联旗下小豚AI摄像头的完整分析(下)
      • 华为智联旗下小豚AI摄像头的完整分析(上)
      • 海康萤石智能门锁的网关分析(4)
      • 海康萤石智能门锁的网关分析(3)
      • 海康萤石智能门锁的网关分析(2)
      • 海康萤石智能门锁的网关分析(1)
      • idapython编写和调试
      • 果加智能门锁的全面分析(下)
      • 果加智能门锁的全面分析(中)
      • 果加智能门锁的全面分析(上)
      • BLE智能手环
      • 耶鲁智能门锁的简单测试(下)
      • 耶鲁智能门锁的简单测试(上)
      • 耶鲁门锁漏洞
      • 对一款BLE灯泡的分析
      • BLE协议栈与Android BLE接口简介
    • 在IoT设备中查找端口对应进程的四种方法
    • 路由器命令执行
    • 对基于Philips TriMedia CPU的网络摄像机进行逆向工程
    • 从Microsoft Band以及 Hello Sense 设备中提取自己的历史数据
    • CVE-2021-22909- 深入研究 UBIQUITI 固件更新错误
    • 复现|摄像头固件重打包
    • Dlink_DWR-932B路由器固件分析
    • 针对小米九号平衡车的无接触式攻击
    • 记一次智能印章设备的漏洞挖掘
  • APP 逆向
    • Go二进制文件逆向分析从基础到进阶——综述
    • Switch APP逆向分析
  • 传统静态代码分析
    • 静态分析案例
      • ELF恶意软件的静态分析原理和方法(上)
      • ELF恶意软件的静态分析原理和方法(下)
    • 静态代码分析工具清单
    • 企业级静态代码分析工具清单
  • 应用安全测试
    • DAST、SAST、IAST
    • IAST 工具初探
  • 芯片架构
    • ARM指令集概念
    • ARM指令集
    • 冯·诺伊曼结构
    • 指令集
    • 处理器架构、指令集和汇编语言,三者有何关系?
  • 病毒分析
    • 熊猫烧香
  • 编程知识
    • REST API 教程
  • 流量分析工具
    • 卡巴斯基开源的智能手机流量劫持工具
    • 利用 Burp Suite 劫持 Android App 的流量(二)
    • 利用 Burp Suite 劫持 Android App 的流量(一)
  • 区块链安全
    • 安全多方计算
    • Chainalysis 团队从区块链的角度分析发现 2020 年最大的 4 起勒索软件攻击实现存在关联
  • 攻击案例
    • 特斯拉Powerwall网关可能受到黑客攻击
  • 移动应用
    • Mac上使用Charles抓包
    • 手机抓包工具汇总
    • APP渗透测试流程和技巧大全
    • 加壳和脱壳
    • 浅谈 Android Dex 文件
    • 移动应用漏洞分析样例分享
    • 移动应用常见漏洞分析
    • 移动应用漏洞分析工具介绍
    • 渗透测试流程详解 及 移动APP安全测试要点
    • Frida Android hook
  • 安全设计
    • 【软件安全设计】安全开发生命周期(SDL)
Powered by GitBook
On this page
  • 简介
  • 分析过程
  • 2.1 获取BLE通信内容的方法
  • 2.2 app日志分析
  • 结果实现
  • 3.1 nRF Connect介绍
  • 3.2 控制灯泡亮度
  • 4. 总结
  1. 固件分析案例
  2. 智能门锁、手环

对一款BLE灯泡的分析

Previous耶鲁门锁漏洞NextBLE协议栈与Android BLE接口简介

Last updated 3 years ago

简介

以一款智能灯泡为例,对BLE设备的分析方法进行简单介绍,同时对上一篇文章中的BLE基础知识做一个回顾。

本篇选用LifeSmart智能灯泡为研究目标。LifeSmart公司有一款app可以对旗下的各种智能设备进行控制,本篇选用的BLE智能灯泡同样可以用该app调节灯泡的亮度和颜色等。备注:LifeSmart公司的各种产品可以在淘宝直接买到,其app也有公开的下载链接。

App的控制界面如图1.1所示

按照LifeSmart的使用逻辑,每个BLE灯泡都必须完成绑定之后,才能正常使用。我们本次的分析目的是,不经过绑定过程,而直接控制灯泡,如改变颜色或者亮度等。

分析过程

2.1 获取BLE通信内容的方法

要分析app如何对灯泡进行控制,最直观的方法就是观察一下手机app通过BLE给智能灯泡发送了什么数据。我们有三种常用方法用于获取这些BLE通信内容:

1)HCI Log。由Android系统提供,蓝牙的所有日志都包含内在,内容十分全面,但是需要完成一次蓝牙通信之后从手机中导出阅读。

2)app分析。通过逆向分析app,查看app打印的日志,或者Hook关键函数,也能够获取蓝牙通信的内容。

3)BLE嗅探。通过BLE嗅探工具,直接嗅探周围BLE通信的数据,但如果BLE通信有加密则无法嗅探有价值的内容。

在本篇的案例中,我们直接采用第二种方法,即app分析。因为该app并没有屏蔽日志输出,所以程序运行时会直接将日志打印出来,我们只要分析并阅读日志就可以完成绝大部分工作。

2.2 app日志分析

本篇的分析目标比较简单,其app日志直接打印出了每次BLE通信的内容,因此我们只要查看其日志,就可以分析手机与灯泡之间的通信内容。

App日志可以通过DDMS、ADB或其他工具查看,如AndroidKiller等,我们直接选择一种比较简单的方式,即通过AndroidKiller查看。AndroidKiller是一款免费的用于Android APK逆向分析的可视化工具,虽然已经很久不更新了,但依旧很好用。

调整灯泡亮度时,Android Killer打印出来的日志如图2.1所示

多次通过app调整灯泡亮度后,将相关的日志逐条挑出,然后并列放在一起做对比分析,如图2.2所示。

图2.2中,可以看到App打印出了以下信息:

灯泡地址:类似于网卡的MAC地址,每个灯泡都有一个独一无二的地址;

Service UUID和Characteristic UUID:正如本专题第一章所述,BLE通信实际上是对Service和Characteristic的读写,而Service和Characteristic用其相应的 UUID标识;

消息内容:二进制形式的BLE通信内容,多次调整亮度之后,通过对比每次通信内容,可以发现有一个字节数值的大小与亮度百分比成正比。

结果实现

有了第二章的分析结果,本章将尝试在任意未绑定BLE灯泡的手机上,通过发送BLE消息来控制灯泡亮度。

3.1 nRF Connect介绍

nRF Connect是一款由Nordic Semiconductor公司开发的用于调试BLE设备的免费app,分为iOS和Android两个版本。这里使用Android版本的nRF Connect进行后续工作。nRF Connect有三个常用功能:

A、扫描周围设备,并显示设备信息。如图3.1所示,

在Scanner界面下,点击右上角的SCAN按钮开始扫描。在本专题第一篇文章中,我们介绍了Master和Slave的各种状态,nRF Connect扫描时,Android手机作为Master,会接收周围各个Slave发出的广播包,这些广播包里包含了Slave的信息。点击扫描到的设备会展示nRF Connect从该设备的广播包里解析出来的信息,在详细信息页面中点击RAW按钮,会显示该设备广播包的原始二进制数据。

B、与BLE设备进行通信

在Scanner界面下,点击CONNECT按钮即可向设备发起连接,连接建立之后就可以进行通信了,如图3.2所示。

读取Characteristic即为手机接收BLE设备的消息,写入Characteristic则代表向BLE设备发送消息。

C、作为Advertiser发送广播包

此外,nRF Connect还可以作为Slave,进入Advertiser状态,向周围不断地发送广播,如图3.3所示。

在Advertiser状态下会持续发送广播包,广播包中包含了对于本设备的简单描述信息,nRF Connect可以模拟其中5个基本信息,如TX power、Manufacturer Data等。

3.2 控制灯泡亮度

结合日志的分析结果,可以使用nRF Connect完成灯泡亮度的控制,具体的操作步骤如下:

1)在nRF Connect中,通过设备的MAC地址,找到需要操作的灯泡,如图3.4所示;

2)与灯泡建立BLE连接,并找到需要写入的Service和Characteristic的UUID,如图3.5所示;

3)以hex形式,向Characteristic写入控制灯泡亮度的通信数据,如图3.6所示。

我们直接将灯泡亮度设置为0%,如图3.7所示,点击SEND之后,可以看到灯泡的亮度随之出现了变化

4. 总结

我们在这篇文章中,从app日志入手,分析了智能灯泡的BLE通信内容,随后使用nRF Connect直接与灯泡进行BLE通信,从而实现控制灯泡亮度的目的。上述分析表明,LifeSmart与BLE智能灯泡之间并没有严格的绑定关系,所谓的“绑定”步骤,仅仅是app本地登记一下需要控制的智能灯泡,方便了下次操作,但BLE智能灯泡本身并不知道自己被绑定给了谁。

图1.1 app控制界面
图2.1 调整亮度时的app日志
图2.2 app日志对比
图3.1 nRF Connect Scan界面
图3.2 与BLE设备进行通信
图3.3 模拟Advertiser状态
图3.4 在Scanner状态下找到灯泡
图3.5 与灯泡建立BLE连接
图3.6 向Characteristic写入数据
图3.7 调整灯泡亮度为0