九阳 豆浆机
九阳DJ08B-D667SG豆浆机是一款智能豆浆机,可以通过配置WIFI连入互联网,用户可以通过“九阳云家电”手机app对豆浆机进行远程控制,实现远程开启、关闭豆浆机等功能。而在2015 HackPwn上,黑客们成功破解了此款豆浆机。
0×01分析工作流程
在对豆浆机初步使用和分析之后,我们推测其工作流程如下图所示:
当豆浆机和手机不在同一局域网环境内时,豆浆机和云端保持连接,手机通过app向云端发送控制指令,云端收到指令后会向豆浆机发送启动指令。当豆浆机和手机在同一局域网环境内时,手机直接向豆浆机发送指令。
分析攻击点
通过流程分析,发现设备一般处于无线路由器的内网中,想直接发送指令比较困难,而控制云端直接发送指令难度较大,所以要想对设备进行批量劫持,最快速有效的途径就是在移动设备到云端的通信中进行劫持攻击。
0×02漏洞挖掘
将设备和手机连入不同的wifi环境内,在app中点击启动快速豆浆,使用wireshark抓包分析。发现手机给云端发送的数据包并没有加密,通过对数据包尝试重放,发现豆浆机仍然可以启动,表明没有防重放机制。
通过分析发现,在远程启动豆浆机的过程中,手机向云端共推送了三个数据包,我们抓取了两台不同豆浆机的控制指令,分析其中的不同以及可能进行劫持的地方。
手机向云端发送的启动两台不同豆浆机的命令的16进制数据包格式如下:
豆浆机一:
bb00000100078bdcbfc30e4d47822cd7086159df8a0037010001eea00030078bdcbfc30e4d47822cd7086159df8a974d13172a5b4e6e9bf8da0c13a7cae900000000000000000000000000000000
cc00000100000b00000100b0000400020000
cc00000100000700000100b20000
豆浆机二:
bb000001001e386b143bcc45738d782eededcf0bcb0027010002ee0000201e386b143bcc45738d782eededcf0bcbb724f10d9b99490a927031b41aac4de100000000000000000000000000000000
cc00000100000b00000100b0000400020000
cc00000100000700000100b20000
通过分析发现,手机向云端发送的用于控制两个设备的数据包仅有两处不同(标红位置),并且是一模一样的32位字符串。那么这个32位的字符串是什么呢?
通过继续对数据包的搜索分析,发现在手机打开app时有如下的http请求:
在http请求返回包中的did参数中我们找到了这个字符串,根据参数的命名猜测,did这个参数的大意应该是deviceid,也就是设备id的意思。于是我们推测,在启动豆浆机的过程中,九阳没有做有效的身份认证,只需要知道设备的deviceid便可以直接启动豆浆机。
那么我们要如何获取别人的did呢?通过观察http请求时的参数,发现did是根据sessionkey获取的,请求如下:
http://xxx.joyoung.com/ia/appapi/userdev?param={"sessionkey":"bcaaef7a1b554039b741391946xxxxxx","op_action":"query"}
sessionkey是九阳分配给用户的身份认证信息,sessionkey一旦生成是不会改变的,拥有了用户的sessionkey我们不仅可以获取到用户的各种信息,还可以对用户的账户资料、头像等进行更改。
我们继续搜索数据包,发现sessionkey是这样获取的。
http://xxx.joyoung.com/ia/appapi/user?param={"op_action":"regTempUser","mob_data":{"mobile_id":"866251020xxxxxx"}}
发现是根据一个叫做mobile_id的参数来获取的sessionkey,那么这个mobile_id又是什么呢?通过逆向apk,我们从源代码中分析出,这个mobile_id其实就是手机的imei串号。
总结我们刚才的分析,我们整理出了这样的攻击思路:
通过imei串号获取用户sessionkey→通过sessionkey获取设备id→通过设备id直接控制设备。
0×03漏洞利用
编写一个python脚本遍历获取设备id:
经过一段时间后,我们通过遍历获得到了一批did。
当我们拿到了这一批设备id之后,可以直接向云端发包来批量启动和控制豆浆机。想想还有点小激动呢~
0×04总结
总结起来,九阳这款豆浆机还是暴露出了诸多当前智能硬件厂商普遍存在的安全问题:
1. 敏感数据在传输中没有进行任何加密,导致黑客可轻易获取控制指令、设备id等明文信息。
2. 对于设备控制没有做有效的身份认证,只是将设备id等单一因素作为身份鉴权标识,导致黑客可以通过伪造、遍历等手段轻易控制其他设备。
3. 云平台上存在传统的web方面的漏洞,导致攻击者可以越权获取到其他用户的设备信息。之前九阳的云平台还曝出过多个sql注入等高风险的web安全漏洞,这也是当前诸多智能硬件厂商普遍存在的安全问题。
* 作者:360安全卫士(企业账号),转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)
- 上一篇:SUCEFUL:将ATM变得“惟命是从”的新型恶意程序
- 下一篇:伽利略远程监控系统完全安装指南
0daybank
已有 45 条评论
这个剧情可以加到变形金刚5里
连衣个豆浆机都不放过,你们这帮禽兽
有什么用???
@ 来啊 当用户使用这样的豆浆机的时候,可以随意被中断,甚至关闭,想喝豆浆的时候,都没得喝,这设备就废了。
黄源小童鞋 九妹
豆浆机要疯了
前几天还有破解跳蛋的[doge]
请给我一台。
你们黑客给我们百姓一条活路行不行,连豆浆机都要种木马下病毒,以后的豆浆可怎么喝
哈哈哈
还以为RFC 2324 成功实现了呢
。。。。
天网啊[doge]
可以杀人…
而且生豆浆里面有含有大量皂素,不彻底加热就食用的话重者可以致命
强行加热应该有物理保险吧?豆浆机里有温度感应器,可以知道室内温度,北方冬天可以知道家里是否有人。还有豆浆制作记录暴露日程。强行加热可能可以引发火灾。 想不透
有什么深远的负面影响么?我在很严肃地想遥控这玩意干什么……
泥也是 撒得一手好娇[笑cry][笑cry][笑cry]
还好我的电器除了电视、机顶盒和桌面电脑以外其他都是纯硬件产品。
还是因为协议标准呀!!!
我觉得是智能家居实在没啥能想到有用而又能实现的功能才导致这些乱七八糟的出现。
能遥控的电视在研制的时候也有人提出跟右边类似的疑惑 我在很严肃地想遥控这玩意干什么……
感谢分享值得学习一切。
其实在想本文最有价值的是获得did的,其他分析啥用没有
你干的好事。哼
请看网络犯罪CSI:第一季第四集
Reply:恩,短期的推广肯定是,长期的看,当陌生人可以远程操控你家里的设施、或者行驶的车、更甚一切联网的东西的时候,安全就成为阻力了
脑洞开太大。。。
好棒啊!可以用来煮米饭了吗
黑掉豆浆机,降低加热温度。生大豆含有皂素,如果未完全煮熟可能造成食物中毒。
我想问是只要联网就能破解么
更加觉得技术宅太可怕。。我所知道最神奇的就是给计算机刷系统。。
hi
给别人家提前造豆浆[挖鼻]
应该是在一个网络下吧[微笑]
可以控制想喝的时候喝不上,不想喝的时候溢出来
确实是一个逻辑上很严重的漏洞,可是这跟豆浆机又有什么关系呢?远程关闭你?
这厂商也是蠢的可以,CTO在哪里?
最起码数据包加下密行不?
可以帮女神修好豆浆机呀[doge] 黑客们吃撑了吗…… 。。。。。黑客们一天到晚都在干啥?why要破解豆浆机……“我要让你回家之后喝不上豆浆!”吗…… ……上次那批人好歹是破解遥控别人的跳蛋……这豆浆机也太寂寞了
连豆浆机都特么智能了啊。。。。
也不是很高深的技术,关键是要分析利用这些漏洞能干嘛,不仅仅是内心激动一下下
一定是九阳豆浆机的竞争对手找你们干的
无智能,无隐患!
遍历DID的思路是怎么样的
这个有意思
。。。
[doge]。。。黑客们是有多无聊。。。