如何黑掉Z-Way控制下的智能家居

  1. 云栖社区>
  2. 博客>
  3. 正文

如何黑掉Z-Way控制下的智能家居

云栖大讲堂 2017-09-01 16:13:00 浏览1247
展开阅读全文

Z-Wave是一种新兴的智能家居技术,里面使用了Z-Way通信协议,这种无线组网规格在欧美已经非常成熟。最近我购置了一块RaZberry板子,开始了我的家具智能化研究之旅。

如何黑掉Z-Way控制下的智能家居

什么是Z-Way

我之所以选择RaZberry板子,而不是传统的Z-Wave控制器,主要是因为它拥有对树莓派的兼容特性,让我可以通过程式化访问Z-Wave协议和通用输入输出(GPIO)设备,这对于研究我家里面的报警传感器非常有帮助。顺便提一句,Z-Way会提取Z-Wave的特性来设计REST(Representational State Transfer)API,使得该API更加易用。Z-Way项目甚至拥有基础的web界面,包括网关管理界面。

如何黑掉Z-Way控制下的智能家居

测试过程

在给RaZberry板子安装软件,并连上部分设备后,我开始观察管理设备时产生的web请求包。Z-Way使用了Angular的JS框架开发了一个API,可以应对来自web和安卓app的访问。

以下是一个我开灯的请求:

下面是响应包:

但此时,我发现了一个严重的问题,Angular的API并不需要认证。我在官网找了找,发现有用户提出了这么一个问题(FAQ):

问:HTTP/JSON的API有经过HTTP认证麽?

答:当然没有,你的内网被厂商假定为绝对安全的,自身有着第三方防火墙和密码的保护,不会有外界侵入。如果你想要用密码保护Z-Way,你可以使用ngnix或者其他反向代理服务器做额外的设置。

看来厂商早发现了这个问题,但并没有去亲自解决它。但这也说的过去,使用这些硬件的大多数都是技术极客,普通用户占少数。不过,鄙人仍然觉得这里面潜伏着危机,因为毕竟它给用户带来的是未知的恐惧。

用户的局域网可能会比较安全,但这并不意味着来自远程攻击是不可能实现的。我开始思考从局域网外攻击API接口的方法。突然,我想起了上面的应答包。注意, Z-Way的web服务器默认的CORS(跨域资源共享)头部允许任何origin来源,它会响应一个Access-Control-Allow-Origin: *,即允许所有origin来源,这显而易见将导致跨域攻击。

下面的POC将向你展示,黑客如何用恶意JS代码扫描内网主机,从而实现对Z-Wave的操作。由于这些请求是异步的,受害者并不能意识到正在发生着什么。

首先,脚本循环尝试局域网主机,向API发送POST请求。接着,它会找出返回状态码不为0的主机,确定其存活。如果受害者的控制器设备号小于99,脚本会遍历设备ID号,上限为15,尝试打开灯。这种漏洞的影响,更多地体现在解开门锁、开启车库、以及处理其他敏感设备上。

下面的测试模拟了某主机被黑的场景,返回的响应码为200时就是成功了:

如何黑掉Z-Way控制下的智能家居

攻击者可以尝试探测更多的默认内网网段,如果受害人的浏览器支持WebRTC,攻击者可以得到更多的信息。在这种情况里,我们可以发出STUN请求,确定受害人的内网IP,从而估算内网范围。

厂商要通过认证加强Razberry的安全不太容易,但用户通过其他设置做到这一点可能并不算难。此外厂商可以做出的另一个改进,则是在CORS策略中需要指定允许的origin,而非来者不拒。Z-Way请求包的这个漏洞很有意思,它揭示了自由CORS实现的风险,并展示了如何攻击他们。


作者:dawner


来源:51CTO

网友评论

登录后评论
0/500
评论
云栖大讲堂
+ 关注