欢迎关注我们的微信公众号:EnsecTeam
智能家居身份和劫持危害
先通过一张简图来了解一下应用,智能设备和云端三者交互时携带的身份标识,如图所示:
智能家居设备交互时携带的身份标识
智能家居设备交互时携带的身份标识
从上图了解到,智能家居身份标识通常是以下几种情况:
1. 账号cookie相关,如身份Token;
2. 用户id:userid
3. 设备id:deviceid
4. 认证或加密的key
一旦用户或设备的身份被劫持,那么至少存在如下几方面危害:
1.个人信息,聊天内容等以隐私敏感信息泄露
2.智能设备被任意控制
3.财产损失
4.随时被监控
以智能音箱和智能插座等设备为例,至少有两个环节设计“身份”相关:
1.账号同步
2.设备交互操作
下面将分别介绍如何在这两个环节进行身份劫持。
账号同步
账号同步是指,在智能设备在初次激活使用(或更改绑定用户时),用户将自己的身份信息同步给设备,并绑定设备。
一个简化的账号同步流程,如图所示:
账号同步
账号同步
账号同步通常会存在如下两类问题:
1. 如何验证设备是否合法:验证设备id还是设备key?id和key都很容易泄露伪造。
2. 账号Token如何安全传输:设备此时为入网,通过蓝牙、AP,还是其他何种方式传输账号信息。
账号同步时身份劫持,以厂商A音箱的配网和身份账号同步为例,其账号同步分为两种方式:
1. 直接通过UDP广播255.255.255.255:50000,发送userid、token和wifi的ssid和wifi密码。
2. 将userid、token、ssid和wifi密码等转化成语音播放,音箱进行语音信息识别即可。
关于两种模式的选择:由本地sharedPreferences文件(tg_app_env.xml)中的app_connect_mode属性值决定,其账号同步代码如图所示:
厂商A音箱的账号同步
厂商A音箱的账号同步
厂商A的音箱将身份信息,通过固定“协议”的格式,在UDP255.255.255.255:50000端口进行身份信息发送,攻击者可以监听UDP50000端口,从而获取用户的userid和token,窃取身份凭据;语音发送也是按照同一套固定的“协议”格式发送。协议格式通过破解后如图所示:
厂商A音箱的账号信息同步格式
厂商A音箱的账号信息同步格式
设备交互
设备交互是指应用,设备和云端的三者交互访问;交互操作大体分为两种方式:
1.只支持广域网:厂商A为代表;
2.支持广域网和局域网:厂商B和C为代表。
广域网交互中应用与设备交互,设备与设备的交互方式如图:
应用设备网广域交互
设备与设备广域网交互
应用设备网广域交互
设备与设备广域网交互
厂商A的智能家居接入方式:以开灯为例
第一步:厂商一的音箱 – >音箱server
url:https://***.com/***
Payload: { Uderid, Deviceid, Accesstoken, 打开灯的语音}
第二步:厂商A的音箱sever–>第三方server
用户需要在第三方产品server注册并通过Oauth授权给厂商A的Server,消息格式如下:
{
”header”:{
“namespace”:”***Genie.Iot.Device.Control”,
”name”:”TurnOn”,
”messageId”:”1bd5d003-31b9-476f-ad03-71d471922820″,
”payLoadVersion”:1
},
”payload”:{
”accessToken”:”access token”,
”deviceId”:”34234″,
”deviceType”:”XXX”,
”attribute”:”powerstate”,
”value”:”on”,
”extensions”:{
”extension1″:”",
”extension2″:”"
}
}
}
第三步:第三方server–>设备
#p#分页标题#e#
Payload:{command: turn-on, currentValue:0 }
厂商A音箱的身份劫持
厂商A的音箱每次交互时,都会携带: token、userid、deviceid、action来进行,并且server会依据userid来进行身份判断:
1. 有了userid就可以身份劫持——远程设备任意操作;