简介:
在近期Security Compass公司举办的黑客安全周发布的安全指南中,我们决定来研究研究这个智能锁设备并评估一下该智能锁的现状。在这次项目中,我们计划研究一下August智能锁。August智能锁是一款电子锁设备,它可以由远程的移动终端控制。它支持苹果设备和基于安卓平台的设备,它还允许使用者授权其他种类的智能手机,使这些设备无论在任何地方,只要能联网就可以对智能锁进行访问,接入方式可以是时间受限的临时性访问,也可以是永久性的。August智能锁可以加载在任何已安装防护设备的地方来代替现有的防护机制,剩下的工作智能锁会自动完成。在我们看来,这种加载机制对已拥有高安全性的智能锁用户来说是一种很好的解决方案,因为其他种类的智能锁需要将现有的防护措施全盘替换掉,而换上去的仅仅只是一个简单的设备锁。
最近已经有几篇文章报道了智能锁,包括Schuyler Towne经过深思熟虑过后的结论。无论如何,我们从未见过任何一篇报告提到过在此类设备上进行如此详尽的安全测试细节。这几天我们都在研究August智能锁,我们已经发现了该设备的一系列漏洞,攻击者可以通过这些漏洞将他们自己以访客的身份,并且访问他们所能触及到的任意一个智能锁设备,这些漏洞可以有效地使攻击者对他们遇到的智能锁进行解锁。
移动端应用程序:
为了评估August智能锁的移动端应用程序,我们对应用程序运行时产生的各种配置文件和使用日志进行了备份。当程序第一次安装时,程序的备份使用的是Chris John Riley的`ab unpacker.py`备份脚本,一旦应用程序对智能锁进行了配置,在运行了几段加锁解锁的命令之后,新增用户就会被添加到被测试的智能锁内。
对本地存储的文件进行了初步评估之后,我们发现设备上存储的配置记录文件是经过加密的,这表明这些日志文件可能含有一些潜在的敏感数据。在对软件源代码的分析中我们很容易就可以找到对本地数据进行加密的密钥硬编码加密代码:
图片1:AES硬编码密钥
在对加密步骤的解析中,我们发现程序使用的加密算法是AES和ECB,这个信息可以用来解密本地用户数据文件的内容。我们这些文件中含有用户的手机号,电子邮箱地址和智能锁的用户ID号等数据。我们已经从程序所创建的日志文件明文中发现了大量的此类数据。
API接口:
一旦我们已经掌握了此设备的移动端应用程序,我们就来研究一下该程序的编程接口,并且对应用程序与August智能锁的服务器端通信的数据进行了嗅探监听。应用程序使用了证书绑定,所以为了嗅探通讯数据,我们不得不将应用程序反编译为.smail类型,然后将证书验证模块移除,重新编译后安装修改过的应用程序。
尽管这次在程序大部分的编程接口并没有发现很多有意义的东西,但还是有一个终端节点没有很好地验证用户的的操作是否属于一个已注册的智能锁使用者。这个终端节点恰巧可以允许一个智能锁用户为他们的智能锁添加一位访客。同时我们还发现,一个攻击者可以伪造一个请求,从而通过他们获取到的用户锁ID号将他们自己作为一个访客的身份添加到任何一个智能锁设备中。
图片2:API终端节点的漏洞
为了进行这次攻击,我们必须知道攻击者的用户ID和目标智能锁的使用用户ID。攻击者的用户ID可以通过多种渠道获得,我们可以对攻击者移动端设备存储的本地数据进行解密,也可以拦截攻击者移动端设备中应用的API请求,或者直接查看存储在本地的程序日志文件。
目标智能锁的用户ID可以通过入侵August智能锁设备或使用扫描程序扫描一定范围内的智能锁设备来获取。移动端的应用将会把扫描到的用户ID数据输出到攻击者设备的本地日志文件中。结果就是,一个攻击者可以轻而易举地将他们自己作为一个访客的身份添加到任意一个August智能锁中,然后就可以直接使用应用程序进行解锁了。
揭露与修复:
我们在2015年1月30号将我们的发现公布给了August智能锁公司。该公司应该为他们对问题的关注度和做出的积极响应而收到赞扬。API的漏洞在公开后的24小时内就修复了。我们在2月2号重新对API接口进行了测试,确认了终端节点已经不存在漏洞了,现在也证实了对智能锁设备发送请求的用户被给与的是合适的权限。我们当时还得知,一个新版本的移动端应用将会在漏洞公布的几周内发布,目的是为了对公开的漏洞进行修复和处理。最近,一个新版的应用被发布,但是重新测试程序后发现,程序仍然会将智能锁的用户ID泄漏到本地日志文件中。鉴于API接口的漏洞已经被修复了,这次漏洞信息公布的严重性已经大大降低了,但是我们仍然希望这个问题可以在下一个版本的程序中得到更正和修复。
将来的工作:
我们的研究重点严格地集中在API接口和移动端应用上,因为我们只有几天的时间来进行我们的研究。今后,我们计划对智能锁的硬件实现和硬件设备进行研究,同样也会对其他厂商的智能锁产品进行分析研究。
关于作者:
Stephen Hall是Security Compass公司的一名安全顾问。他已经在许多会议上发表过演讲,包括DerbyCon, BSidesTO,和Hack3rcon等等。Stephen是Yasuo tool的合著者之一,他有自己的博客,推特账号为@Logicalsec。
Paul Lariviere也是Security Compass公司的一名安全顾问。他是开放标准化组织多伦多分会的成员之一,他有工业控制系统和嵌入式开发的工作背景,推特账号为@Dcept905。
(责任编辑:安博涛)