2018年 KCon 议题解读 | 智能家居安全——身份劫持
字数 2096 2025-08-22 12:22:24
智能家居安全——身份劫持技术分析与防御
一、摘要
本文深入分析了智能家居设备身份劫持的安全问题,通过研究国内主流智能家居产品的身份验证机制和设备交互协议,揭示了身份凭证窃取的技术原理和实现方法。文章详细介绍了账号同步和设备交互两个关键环节的安全漏洞,并提供了具体厂商(厂商A、B、C)的实际案例分析,最后总结了智能家居身份劫持的常见漏洞类型和防御建议。
二、智能家居身份标识与劫持危害
2.1 身份标识类型
智能家居系统中常见的身份标识包括:
- 账号cookie相关:如身份Token
- 用户ID:userid
- 设备ID:deviceid
- 认证或加密密钥
2.2 身份劫持的危害
- 隐私泄露:个人信息、聊天内容等敏感信息被窃取
- 设备控制权丧失:智能设备可被攻击者任意控制
- 财产损失:通过设备进行支付等操作导致经济损失
- 监控风险:设备可能被用于持续监控用户活动
三、账号同步环节的身份劫持
3.1 账号同步流程
智能设备初次激活或更改绑定时,用户身份信息同步给设备的过程。
3.2 常见问题
- 设备合法性验证不足:仅验证设备ID或密钥,容易被伪造
- 账号Token传输不安全:通过不安全的通道(如蓝牙、AP)传输
3.3 厂商A音箱案例分析
账号同步方式:
- UDP广播方式:向255.255.255.255:50000发送userid、token和WiFi信息
- 语音传输方式:将身份信息转化为语音播放,音箱识别
漏洞利用:
- UDP广播方式:攻击者可监听50000端口获取userid和token
- 语音传输方式:协议格式固定,可被逆向破解
协议格式:
[协议头][userid长度][userid][token长度][token][ssid长度][ssid][密码长度][密码]
四、设备交互环节的身份劫持
4.1 广域网交互
厂商A案例分析
交互流程:
- 音箱→厂商服务器:携带userid、deviceid、accesstoken和控制指令
- 厂商服务器→第三方服务器:OAuth授权后的控制请求
- 第三方服务器→设备:发送控制指令
身份劫持漏洞:
- userid为顺序9位数字,可遍历猜测
- 服务器仅验证userid,不验证token与userid的绑定关系
- 设备"分享"功能设计缺陷:宿主无法主动取消分享
劫持危害:
- 查看用户聊天记录
- 自定义问答设置
- 设置闹钟、话费充值
- 智能家居设备控制
4.2 局域网交互
厂商B案例分析(基于miio协议)
交互流程:
- 广播握手包获取设备token、IP和ID
- 发送hello bytes获取设备消息结构体header
- 构造控制消息(包含token、ID等)实现设备控制
消息结构体:
typedef struct {
Header,
cmd,
checksum
} Msg;
劫持方法:
- 使用python-miio库发现设备:
mirobo discover --handshake 1 - 获取设备信息结构体
- 伪造控制消息结构体
厂商C案例分析(基于***Link协议)
协议特点:
- 带认证的ECDH密钥协商+对称密钥加密
- 防御中间人攻击机制
密钥协商流程:
- 设备预置Ecc-sPubkey
- 云端验证设备身份后下发accessKey
- 应用使用ECDH协商密钥加密传输accessKey
- 局域网通信使用localkey(即accessKey)加解密
消息结构体:
- 协议包头
- opt字段
- Payload(使用LocalKey加密)
五、通过应用实现身份劫持
5.1 Webview JS交互接口漏洞
漏洞类型:
- 通过@JavascriptInterface暴露敏感接口
- URL加载限制不严导致远程命令执行或信息泄露
利用方法:
- 调用WebViewActivity定义的交互接口获取账号信息
- 绕过URL检查逻辑(如仅检查是否包含特定字符串)
5.2 Webview file域远程信息泄露
漏洞条件:
- 开启
WebSettings.setAllowUniversalAccessFromFileURLs(true) - 对加载的URL无严格限制
利用方法:
- 通过伪协议加载恶意HTML
- 下载恶意HTML到本地
- 通过file协议加载本地HTML窃取私有目录信息
六、智能家居身份劫持漏洞总结
- 配网泄露:配网过程中身份凭证传输不安全
- 设备交互劫持:
- 广域网交互:身份凭证可预测或遍历(如厂商A的userid)
- 局域网交互:
- 厂商B:miio协议token泄露风险
- 厂商C:协议设计较为安全
- 应用漏洞:
- Webview JS接口远程命令执行
- Webview file域信息泄露
七、防御建议
-
强化身份验证:
- 使用多因素认证
- 确保userid、token和设备ID的绑定关系验证
- 避免使用可预测的身份标识
-
安全传输设计:
- 使用TLS加密传输身份凭证
- 实现完善的密钥协商机制(如厂商C的方案)
-
协议安全:
- 使用带认证的密钥交换协议
- 防止重放攻击
-
应用安全:
- 严格限制Webview的JS接口暴露
- 禁用不必要的Webview功能(如file域访问)
- 实现严格的URL检查机制
-
设备安全:
- 实现安全的设备配网流程
- 提供用户可管理的设备分享机制