HackPwn:TCL智能洗衣机破解细节分析
上周结束的Hackpwn上,黑客们脑洞大开,破解了比亚迪汽车、小米手环、乐小宝、长虹电视、TCL洗衣机和九阳豆浆机等一系列最新的智能硬件,据黑客介绍,TCL是一家把家门“砌死”的企业,由于得到了将要被现场破解的消息,在HackPwn前一天,TCL就已经关闭了云服务器,在黑客童鞋以消费者身份苦苦哀求了一晚上以后,终于恢复服务,但是在Hackpwn当天又关闭了,又关闭了……
TCL的洗衣机在云端可以相互识别。但正常来说,一台洗衣机是无法给另一台洗衣机下命令的。不过,黑客团队发现了一招制敌妙计,那就是:把命令中禁止发送的字符换成小写字母,换成小写字母,换成小写字母。(重要的事情说三遍)
没错,绕过系统控制就是这么简单。通过此种方法可以通过模仿云端的控制器“京东微联”向任何一台洗衣机下达指令,指令可以精确到温度和转速。
所以,当你回家发现洗衣机已经以90度的设定温度,以1200转每分钟的转速转了一天的时候,请不要太惊讶哦,你的洗衣机只不过是“认贼作父”了。
通过京东微联手机APP,我们可以查看洗衣机的状态,可以选择多种洗衣模式,调整洗衣机的转速、洗衣的温度等参数。可以实现在任何地点只要洗衣机能接入互联网都可以控制。
对于洗衣机的攻击点分析
使用TCP智能洗衣机时需要对洗衣机进行配置,才能够接入网络,从而使用手机客户端进行远程控制。TCL洗衣机使用的是”京东微联”物联网平台,京东微联是京东旗下针对智能硬件产品专门推出的一项云服务,致力于打造一个多方共赢的智能硬件生态链。

我们可以通过简单的配置将设备通过wifi接入互联网,配置成功后就可以使用京东微联手机客户端来反向控制洗衣机,达到洗衣机设备能够通过手机远程控制的功能,这也就是为什么说这个型号的洗衣机是”智能洗衣机”的原因了。

通过对洗衣机上线流程的配置过程中,可以了解到手机下发控制指令的整个流程如下图:

.手机首先使用京东账号进行认证。 .认证成功后添加了设备和账号的绑定关系。 .手机下发设备控制指令给京东智能云。 .京东智能云在把控制指令转发给第三方平台。 .第三方平台将指令转发到设备,由设备来执行。 .设备执行成功后将状态返回给第三方平台,第三方平台在转发至京东智能云,反馈到手机APP中。

通过分析验证,在京东智能云和手机之间。都具备高强度的加密传输和身份认证的方案,在进行分析过程中,可以发现京东智能云在安全方面还是考虑的比较多的。在短时间要攻破京东智能云平台比较难。所以我把攻击点定位在第三方平台和设备之间。
模糊测试
首先使用360wifi将洗衣机接入到网络中,使用“京东微联”手机APP触发对洗衣机的控制,同时对无线网卡进行抓包分析如下:

洗衣机和第三方平台之间使用的是XMPP协议实现会话的控制和长连接保持在线的。XMPP一般是用来实现聊天工具的一个框架协议。因为智能硬件需要保持长时间在线的会话并且要接收消息,所以一些厂商会改用一些聊天工具来实现。图中标记的数据内容是洗衣机作为客户端登陆成功的状态。使用的登陆数据是用base64进行编码的。


将登陆数据进行解码后发现第一个字段是设备的ID,第二个字段是密码。也就是说洗衣机使用的是这段用户名和密码,登陆云服务器。然后等待京东云平台下发控制指令的。

通过分析数据包可以发现洗衣机主要使用TCP、UDP、XMPP/XML三种协议,通过对数据包内容观察,发现第三方平台到洗衣机之间的数据包没有进行传输加密,可以清晰的看到控制指令的格式和内容。
登陆测试
为了更直观的测试漏洞,选用了一款带有XMPP协议聊天功能的软件。来模拟洗衣机登陆。

使用从数据包分析出来的用户名和密码,登陆第三方云服务器。发现成功的用洗衣机账号登陆成功。

获取控制指令
模拟洗衣机账号登陆成功后,模拟在线的洗衣机接收控制指令。这时使用京东微联手机APP给在线的洗衣机发送一些控制指令。

smartjd@openfire-server:<msg:msgid="SetMessage"type="Control"seq="null"><SetMessage><TurnOn>on</TurnOn></SetMessage></msg>
目前已经成功的伪造洗衣机接收到了,京东智能云发送的开启洗衣机的控制指令。由于目前不知道洗衣机给京东微联响应的什么样的数据包,所以这时将聊天软件关闭,让洗衣机上线,发送启动指令。然后在手机APP客户端中可以进入下发控制指令的界面。然后在断开洗衣机连接,使用聊天软件继续获取其它的控制指令。

伪造洗衣机控制目标洗衣机
在知道了控制指令、登陆的ID和密码的情况下。一开始是想使用smartjd这个账号进行登陆,但是这个账号只有京东智能云里面会保存。所以无奈的情况下发现了一个意外惊喜。登陆洗衣机的ID是一设备的MAC地址+DEVICE为标识的。只要修改一下MAC就可以登录到另外一台洗衣机设备。给目标洗衣机设备发送控制指令。

使用修改后的ID和默认的口令。成功的登陆了另外的一台洗衣机。这时尝试给设备发送控制指令,发现目标设备没有任何响应。
绕过控制指令限制
通过了无数次横向测试,对比测试,各种无厘头的测试之后。怀疑是服务器对发送指令进行了过滤,在对标签和参数进行枚举的过程中发现服务器过滤了”Control”参数。然后机智的把”Control”改为”control”重新发送,奇迹出现了。

成功的使用另外一个洗衣机的账号,给目标洗衣机发送了控制指令。那么就说明目前已经对洗衣机有完全的控制权限。

再使用前面获得的控制指令,控制洗衣机以800的转速开始甩干。
为了验证影响范围,这里写了一个python脚本去遍历MAC地址的在线状态,可以发现很多在线洗衣机的MAC地址。

利用场景

1.通过MAC地址+DEVIVE和默认的密码登陆任意一台洗衣机。
2.通过事先抓取好的控制指令,来制定目标洗衣机的工作内容。
3.通过XMPP软件给目标洗衣机发送控制指令。
问题总结
1.洗衣机终端和第三方云平台之间使用的XMPP协议传输内容未进行加密。
2.使用base64编码洗衣机的ID和密码。
3.洗衣机与第三方平台认证时使用的是MAC+deivce字段作为用户名进行认证标识,这样容易能够通过枚举MAC地址遍历出更多的洗衣机。
4.使用相同的密钥进行洗衣机终端端的认证。
5.洗衣机终端与洗衣机终端通信未进行隔离。
6.未对京东智能云平台下发的控制会话内容为进行过滤,导致任意洗衣机都可以发送控制指令。
TCL智能洗衣机最主要的问题时能够绕过”京东微联”平台的统一管控,再利用传输未加密、使用单一因素作为身份鉴权标识,还有XMPP会话登陆机制等特性,最终实现可以通过任意账号横向控制TCL所有的智能洗衣机。在国内主流的一些智能家居设备,接入到大的IOT平台中也有可能存在同样的问题。
安全建议
1.使用具备一定强度的加密方式加密对XMPP协议传输的内容。
2.身份认证过程当中使用随机数或者无规律的串号进行验证,要求每个洗衣机有独立且不相同的密码。
3.对洗衣机和洗衣机直接的通信进行隔离。
4.使用访问控制过滤京东微联的控制会话请求,只允许京东微联账户发送控制指令。
HackPwn:TCL智能洗衣机破解细节分析的更多相关文章
- 萤石A1互联网报警盒子破解细节分析
攻击点分析: 萤石A1互联网报警盒子使用“全无线解决方案”,传感器的报警通过433.92MHz射频信号发送给报警主机,报警主机可以通过Wi-Fi联网,将报警上传萤石云端,云端会将信息推送到手机端的“ ...
- (转)Android 系统 root 破解原理分析
现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Lin ...
- rip路由协议 细节分析及实例配置【完整版】
rip路由协议 细节分析及实例配置[完整版] RIP呢,这是一个比较重要的知识点,所以它的知识覆盖面很广泛:但是呢,我将会对碰到的问题进行一些分析解刨(主要是为了帮助自己理清思维):也希望能够从中发现 ...
- Ext.create细节分析
var win1 = Ext.create('Ext.window.Window', { //实例化方法四 : 使用 完整的 Extjs 类名 width: 800, title: 'define t ...
- Android 系统 root 破解原理分析 (续)
上文<Android系统root破解原理分析>介绍了Android系统root破解之后,应用程序获得root权限的原理.有一些网友提出对于root破解过程比较感兴趣,也提出了疑问.本文将会 ...
- uboot 顶层makefile细节分析
uboot的源文件众多,学习庞然大物首先找到脊椎--顶层的makfile,逐一破解.但是,uboot的makefile同样是一个庞然大物,所以也要找到它的主线.倘若过分专注部分细节,很难做到把握全局, ...
- Android系统root破解原理分析
http://dengzhangtao.iteye.com/blog/1543494 root破解过程的终极目标是替换掉系统中的su程序.但是要想替换掉系统中su程序本身就是需要root权限的,怎样在 ...
- Android 系统 root 破解原理分析
现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Lin ...
- 获取root权限及破解原理分析
2012-03-18 17:58:45| 分类: android |字号 订阅 如今Android系统的root破解基本上成为大家的必备技能!网上也有非常多中一键破解的软件,使root破解越来越ea ...
随机推荐
- PTA第一次作业
5-5 #include <cstdio> #include <iostream> #include <cstdlib> using namespace std; ...
- jquery 封装插件
如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...
- 【Python】【上下文管理器】
"""#[备注]#1⃣️try :仅当try块中没有异常抛出时才运行else块.#2⃣️for:仅当for循环运行完毕(即for循环没有被break语句终止)才运行els ...
- Jmeter性能测试 对服务器使用资源进行监控之ServerAgent插件使用
百度云盘友情赞助地址如下: 链接:https://pan.baidu.com/s/1cpAeOcfFX8kss1eo79UD9g 密码:b8o7 在windows上或者linux上打开服务 用Jmet ...
- Java-Java语言
2017-10-03 21:25:38 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.J ...
- Hibernate实例
Hibernate实例 一.Hibernate简介 Hibernate是简化项目中连接数据库的一个框架工具 Hibernate是Java领域类技术成熟稳定的ORM框架 * ORM是对象关系映射 * 使 ...
- 20170708xlVBA添加新产品修改公式
Sub ControlInsertProduct() Dim Wb As Workbook Dim OneSht As Worksheet Dim Arr As Variant Dim i As Lo ...
- spoj Fast Multiplication
题意:乘法 要用nlogn的fft乘法. //#pragma comment(linker,"/STACK:1024000000,1024000000") #include< ...
- ViewPagerIndicator+viewpager的简单使用,不需要导入Library包
ViewPagerIndicator作为一款分页指标小部件兼容ViewPager,封装上做得非常不错,目前已为众多知名应用所使用. ViewPagerIndicator+viewpager实现如下效果 ...
- 关于controller中调用多个service方法的问题
一般service方法是有事务的,把所有操作封装在一个service方法中是比较安全的. 如果在controller中调用多个service方法,只有查询的情况下是可以这样的.