【技术分享】当人身安全遇到IoT漏洞时,会碰撞出怎样的火花?

http://p4.qhimg.com/t0186a54c59620876f8.png

译者:WisFree

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


介绍

物联网已经形成了一种势不可挡的发展趋势,各种各样的物理设备不仅正逐步变得更加地数字化,其连接方式也更加多样化了,而这些物联网设备正在形成各种各样的新型生态系统。根据Gartner提供的统计数据,到2020年接入互联网的物联网设备数量将达到2080万台,无论你在家里还是在车里,无论何时何地,你都可以随时使用这些设备,这就是物联网的作用。

随着科技的发展以及物联网市场的扩张,相应网络威胁的数量种类也随之增加。每一种物联网设备几乎都会存在安全问题,而这些问题将会导致设备受到物理损坏或泄露用户的隐私信息。大量研究表明,安全性和隐私性已经成为了很多用户在将物联网设备引入他们的生活、工作和家庭之前首要考虑的问题。

iSmartAlarm中的多个安全漏洞就是一个很好的例子,而对于攻击者来说,这款几乎可以算是毫无安全性可言的设备已经成为了一个非常容易攻击的目标。一旦攻击者入侵了家庭或企业网络之后发现了一台这样的设备,他们就可以完全控制这台设备,并对物理安全系统(例如报警系统)带来潜在的危害。

http://p0.qhimg.com/t014c9a66d687e11257.png

本文将给大家介绍iSmartAlarm中存在的安全漏洞细节以及它们所带来的影响。


概述

iSmartAlarm中存在大量的安全漏洞,这些漏洞将允许攻击者完全接管设备。未经身份验证的攻击者可以通过多种方法来获取iSmartAlarm的永久访问权,并导致设备失去其原有的功能性、完整性和可靠性。比如说,一名攻击者在入侵了目标用户的iSmartAlarm之后,不仅可以获取到目标用户的个人隐私数据和家庭住址,而且还可以解除其家中的警报。

相关漏洞CVE总结:

http://p3.qhimg.com/t01720dc02c17ff8b64.png

作为一名网络安全研究人员,我个人确实对联网的警报系统非常感兴趣,也很想测试这类系统的安全性。在我的研究过程中,一家名叫iSmartAlarm的公司成功引起了我的注意,很多研究人员都对这家公司的产品进行了安全审查,而且该公司所占的市场份额非常大,感兴趣的同学可以点击【这里】了解详情。

iSmartAlarm是一家在智能报警系统领域中处于领先地位的物联网设备制造企业,它可以给用户提供一整套配备了报警器、智能摄像头和智能锁的完整报警系统。iSmartAlarm是一个可以进行自我监控、自我控制的DIY智能家庭安全系统。任何报警系统该有的功能这套系统都有,但作为一款物联网报警系统,该系统用户可以通过手机应用程序来控制,目前支持iOS和Android平台,它可以在警报被触发之后向你的智能手机发送警告信息,无论你身处何处,你都可以通过手机来远程控制整套系统。

iSmartAlarm的实时监控日志信息可以帮助用户监控家中的环境是否安全,并且用户也可以通过对该系统的定制满足他们的需求,例如制定应用程序提醒所有家庭成员,通过电话、短信、或者邮件的方式推送信息等等。当iSmartAlarm检测到没有经过允许闯入家中的活动,用户也可以在第一时间得知,而日志可以帮助警方进行取证调查。

由于iSmartAlarm所具有的这一系列性质,使得它成为了一个绝佳的研究对象。

在配置好了我的实验环境之后,我将iSmartAlarm接入了互联网,然后我迅速发现了第一个漏洞:一个SSL证书验证漏洞

当我第一次开启这个报警系统之后,iSmartAlarm会通过端口8443来与iSmartAlarm的后台服务器进行通信。但是在初始SSL握手时,iSmartAlarm并不会对服务器端提供的SSL证书进行有效性验证。因此,我们就可以通过伪造一个自签名的证书来查看并控制iSmartAlarm与后台服务器的所有交互数据了。


SSRF漏洞

iSmartAlarm的其中一个应用程序编程接口(API)包含一条重定向链接,而我准备尝试从这条链接入手看看能不能找到其他的漏洞。

http://p8.qhimg.com/t018b2476232b2b901f.png

令我感到非常惊讶的是,这条重定向链接果然存在安全问题,这简直就是开门红啊!不过我还想实现更多:我还想控制任意用户的报警系统。在对iSmartAlarm的API进行进一步的分析和检测之后,我发现我可以通过某种方式获取到一个加密密钥。

http://p6.qhimg.com/t01c0701d8637f05c44.png

我不仅需要弄清楚手机端的App是如何与iSmartAlarm通信的,而且我还想知道我是否可以找到某些其他的工具来代替手机端App并远程控制整个报警系统。

iSmartAlarm App有两种工作模式,第一种模式是在手机和报警系统处于同一本地网络中时使用的,如果这两者处于不同的网络,则开启另一种模式。在对第一种模式进行分析的过程中,我能够嗅探到双方通过tcp端口12345发送的加密流量。

http://p8.qhimg.com/t01d1a1d7eb92c94c7a.png


拒绝服务(DoS)漏洞

由于iSmartAlarm和App之间的通信是直接通过局域网完成的,所以我就可以直接让iSmartAlarm停止运行:

http://p3.qhimg.com/t01e8f5d8b77f0ec50a.png

在对iSmartAlarm进行一次拒绝服务攻击的过程中,合法用户失去了对警报系统的控制,用户无论是在本地还是远程都无法控制iSmartAlarm。接下来我便对iSmartAlarm所使用的通信协议进行了逆向分析,不过这部分内容已经超出了本文所要讨论的范围,但最终的分析结果貌似是,App与iSmartAlarm之间首先会使用十分复杂的四路握手来完成双方的身份验证,大致情况如下所示:

App :    ISATx01x00*3x01x00*7

http://p9.qhimg.com/t01bd1866f69f1a7461.png

iSmartAlarm :   ISATx02x00*3x01x00*3x10x00*3 + "Cube generated Secret  Key"

http://p8.qhimg.com/t010c8dd5c7eb15d82b.png

加密算法:在获取到了“私钥”和IPU(加密密钥)之后,App可以解密出一个新的密钥。iSmartAlarm使用的是XXTEA加密算法,但由于该算法的实现存在安全问题,导致我们可以获取到加密密钥,这也就意味着我们可以对报警系统做任何我们想做的事情了。加密密钥的创建过程大致如下:

reverse(xxtea_encrypt(reversed("secret_key"), reversed("IPU_key")))

经过如上所示的计算之后生成的是一个新的密钥,这个密钥可以用来对发送至iSmartAlarm的控制命令进行签名。App会发送如下所示的命令来完成身份验证:

App :     ISATx03x00*3x01x00*3x10x00*3 + "new key"

http://p6.qhimg.com/t01433e6d2d6576daa3.png

iSmartAlarm:   ISATx04x00*3x01x00*3x01x00*3x01

这就导致了iSmartAlarm的另外两个安全漏洞出现:不正确的访问控制漏洞以及身份验证绕过漏洞。

在获取到了新生成的密钥之后,我们就可以向iSmartAlarm报警系统发送任意命令了。

DISARM   ISATPx00*3x01x00*3x03x00*3x01x002
ARM       ISATPx00*3x01x00*3x03x00*3x01x000
PANIC     ISATPx00*3x01x00*3x03x00*3x01x003

接下来,我对手机端App进行了深入分析,并希望能够在App的身上找到更多有意思的东西。幸运的是,我发现了下图所示的东西:

http://p0.qhimg.com/t017242b8e6d9e53424.png

看起来,这是一个能够登录到iSmartAlarm内部网站的类似令牌之类的东西。这就非常完美了,于是乎…

http://p1.qhimg.com/t0129d2f3e2ad424379.png

我竟然登录进来了!你找得到我的ticket吗?:D

http://p6.qhimg.com/t0128bec06cd025b1ad.png

http://p2.qhimg.com/t015e2d187ff4b1faa8.png

现在,我已经找到了一种完整的攻击方法了,接下来我们就得发挥自己的想象力了,真正的网络犯罪分子会利用这些漏洞来干什么坏事呢?


披露时间轴

2017年1月30日:第一次与厂商接触;

2017年2月1日:收到厂商的回复,要求我们提供更多细节信息;

2017年2月2日:将漏洞上报给厂商;

2017年4月12日:一直没有收到厂商的回复,我向CERT提交了漏洞;

2017年4月13日:收到了CERT的确认信息,并给漏洞分配了CVE编号;

2017年7月5日:漏洞公开披露;

(完)