使用智能机器人的时候,需要对机器人进行Wi-Fi配置,使机器人接入网络,从而使手机对设备进行控制。
可以通过配置将智能机器人通过Wi-Fi接入互联网,配置成功后就可以使用手机APP反向控制我们的智能机器人,达到无论用户身在何地都可以对我们的智能机器人进行远程控制的目的。
在对机器人上线配置及使用的过程中,可以对机器人的控制流程有一个大致了解。
(1)注册一个用户(通常为手机号)。
(2)登录,验证方式为XMPP登录验证。
(3)绑定设备,且设备和注册账号是唯一绑定关系,即手机号一但绑定成功,该设备将不能被其他手机号绑定。
(4)手机APP下发控制指令到云端。
(5)云端接受手机APP的控制指令,并转发给智能机器人。
(6)智能机器人接受控制指令,并检测指令合法性,执行该控制指令。执行成功后将结果返回给云端。
(7)云端将智能机器人返回的结果发送给手机APP,反馈给用户。
(8)控制指令执行成功。
在分析的过程中发现,该智能机器人在和云端通信的时候用了HTTP和XMPP两种协议。通信方式如图,此次将攻防重点放在手机APP和云端通信的过程中。
首先,将智能机器人进行网络配置,将其接入互联网,并使用手机APP对其下发控制指令,同时对手机APP和云端的通信进行抓包监听分析。在分析过程中发现,无论是XMPP协议还是HTTP协议,都没有进行通信加密,都是以明文的方式传输。
智能机器人登录及部分操作是通过XMPP协议实现会话的控制和长连接保持在线的,XMPP一般用来实现聊天工具的一个框架协议。因为智能硬件需要保持长时间会话在线并且要接收消息,所以部分会话控制是通过HTTP协议实现的。在分析过程中发现通过HTTP协议实现的会话控制,只有控制指令,并没有进行身份认证,攻击者可获取任意用户的一些信息如MAC地址、设备SN号,并可对任意机器人下发部分控制指令,如解除绑定指令。
控制请求内容
越权控制请求
解除绑定请求
可更改用户问答,修改机器人回答语音。
案例
用户:你好。
机器人:我被黑客入侵了。
发送这样的请求包之后,当用户跟机器人对话说你好时,机器人会回答我被黑客入侵了。
在对APP程序进行逆向分析时发现,该智能机器人摄像功能用的是第三方视频平台,利用第三方软件虽然可以降低代码成本,但是在某种意义上也增加了安全风险。
结合XMPP的流量分析,发现有两种登录第三方云平台的账号和密码登录的方式。
(1)CID号,固定账号admin,固定密码123456。
(2)CID号,固定账号和固定密码(账号为base64编码MAC地址,密码为base64编码MAC地址+时间戳)。
在APP中硬编码了第三方视频平台的企业ID、企业Key和App ID。
结合所发现的问题,可以写出一个利用程序作为验证。由于智能机器人和视频连接平台建立连接的标识是使用MAC地址来验证的,并且登录ID和密码都有一定规律可循,所以可以结合发现的问题批量登录查看任意一台设备的视频内容。
对智能机器人的XMPP通信安全分析
我们已经提到手机APP到云端的通信完全明文没有进行加密处理。此外,在对流量进行分析的过程中发现,该智能机器人登录XMPP服务器的账号和密码都是固定的。
知道这些可以写一个很简单的脚本进行验证。
由于平台XMPP协议只允许一部设备在线,所以当我们在别处登录设备时,XMPP账号就会强制令机器人掉线失去控制。
智能机器人安全建议
(1)设备之间通信一定要加密传输,如利用HTTPS协议,对XMPP进行TLS加密。
(2)用户一定要有固定的用户标示,用户间的数据互相不能访问,避免造成越权控制问题。
(3)敏感数据严禁硬编码到APP中。
(4)如无必要,关闭设备调试接口。
本文选自《智能硬件安全》一书,想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。