17

物联网时代,智能门锁安全吗?

 3 years ago
source link: https://www.freebuf.com/vuls/247902.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一、国家对互联网软件安全管理

目前国家对互联网客户端软件安全管理已越来越规范和严格,以下是近几年国家有关部门陆续出台的管理要求。2016年11月7日国家发布《中华人民共和国网络安全法》;2019年3月13日市场监管总局、中央网信办发布《移动互联网应用程序(App)安全认证实施规则》;2019年10月18日中国人民银行发布《加强移动金融客户端应用软件安全管理的通知》的237号文;2019年11月28日四部委(工信部、网信办、公安部、市场总局)发布《App违法违规收集使用个人信息行为认定方法》。这种种的法律、规范、管理规则都在说明国家对网络安全的重视程度,今天我们一起研究下现阶段物联网智能门锁的安全情况。

二、 智能门锁攻击

智能门锁是物联网时代的产物,由于它带来的方便性人民越来越多的使用智能门锁用于防盗门上,是守护家庭人身安全和财产安全的第一道也是最重要的防线。介于此我们对常见品牌的智能门锁开展了调研和研究,并尝试对选定的一款智能门锁进行攻击,以下是我们对选定的一款智能门锁(本文全篇都不会透露此款攻击对象的品牌和型号)的攻击思路和攻击结果。

1. 攻击对象(智能门锁)选型

首先搜集了市面上常见智能门锁品牌和下载对应APP,并对门锁的APP手机软件进行初步分析(反编译、抓包、重发等),筛选出安全性相对不高的产品做为攻击候选对象,再根据品牌影响力(熟知的品牌)和安全等级(相对好攻击)两个因素挑选出一款智能门锁做为此次的主要攻击对象。

2. 攻击方案概述

经过多款智能门锁开门方式分析,大部分都有生成临时密码开锁,并且生成的临时密码一般会在一定时间内失效,此次我们的攻击的主要目的就是通过截取取临时密码来正常开锁,在此次攻击中我们也成功的截取到了用户的用户名和密码,这也就意味着成功完成一次攻击后,我们可以在任意手机下载的官方智能门锁APP软件上使用用户名和密码成功登录,并随时生成临时密码进行正常开门。

此次攻击的设计需要我们完成三个部分的搭建。门锁劫持客户端软件、云平台服务器搭建、简易短信发送硬件设备。大概的流程是首先有一台root环境手机并能正常访问网络,在手机上去应用商店下载安装官方的智能锁APP软件;用户在我们的root环境手机上正常登录和获取开锁临时密码操作,此时门锁劫持客户端软件(自制的Hook插件)会把劫持到的用户名、密码、临时密码等操作人重要信息数据发送给云平台服务器;云平台服务器发送开锁临时密码数据通过网络发给短信发送硬件设备;短信发送硬件设备把临时开锁密码已短信形式发送给指定手机,整体流程见图1。 1598363501.png!small

图1

3. 门锁劫持客户端软件(Hook插件)

首先,需要对官方下载的智能门锁客户端进行技术分析(如脱壳、反编译等技术手段),观察客户端程序代码中生成临时密码时的操作流程,通过分析和多次的尝试找到源码中生成临时密码的函数模块,见图2。

1598363537.png!small

图2

然后,根据找到的临时密码的函数模块位置和参数,使用Android Studio开发门锁劫持客户端软件(hook程序)代码,见图3。

1598363570.png!small

图3

再然后,在有Xposed框架的环境下运行官方的智能门锁APP软件,正常登录操作APP,获得开锁临时密码,此时可以通过开发的门锁劫持客户端软件截获登录账号、登录密码和临时密码等重要信息,见图4。 1598363758.png!small

图4

最后,门锁劫持客户端软件把截取到的开锁临时密码通过网络上传至云平台服务器,代码见图5。

1598363805.png!small

图5

4. 云平台搭建

基于Linux服务器进行云平台搭建,主要实现两类功能服务接口与数据库存储服务的搭建,打通门锁劫持客户端软件与短信发送硬件设备之间的数据链路,实现数据收集、数据管理和数据监控功能,成为智能门锁攻击的纽带与中枢。

​ 服务接口基于RESTful API接口规范开发:

​ 一类是云平台服务器与手机门锁劫持客户端软件的数据交互功能接口,手机客户端通过Http协议调用云平台服务器API接口实现与其数据交互,见图6。 1598363848.png!small

图6

另一类接口是云平台服务器与短信发送硬件设备的数据交互功能接口,使用Netty框架建立基于TCP协议的Socket server服务,与短信发送硬件设备进行数据交互,见图7。

1598363926.png!small

图7

一个数据库存储,基于Hibernate框架把账号、密码和日志等重要资源数据写入MySql数据库,见图8。

1598363944.png!small

图8

5. 简易短信发送硬件设备

此硬件设备是由STM32单片机做为主MCU,外围扩展添加WIFI模块和4G模块,WIFI模块用于连接路由与外网云平台服务器连接进行数据交互,4G模块用于与指定手机发送带开锁临时密码的短信,硬件原理图惨见图9。 1598364190.png!small

图9

根据以上原理图飞线搭建硬件设备,某宝购买MCU最小系统、WIFI模块和4G模块,4G模块的手机卡使用正常三大运营商手机卡,完成搭建后的硬件实物见图10。

1598364211.png!small

图10

使用keil开发工具编写MCU单片机代码,主要包括两部分,一是控制WIFI模块连接路由与外网云平台服务器建立长连接并进行数据交互,部分代码见图11;二是单片机得到云平台服务器发送来的开锁临时密码后,通过4G模块把劫持的开锁临时密码发送给指定手机号,部分代码见图11。 1598364252.png!small

图11

三、 总结

我们攻击的物联网门锁客户端软件是在root的手机环境下进行的,这是安全技术人员检测安全问题的一种常见手段,大家平时使用中并不会处于这种环境,但根据第一章节中提到的国家对互联网软件安全的标准中要求,此款攻击对象客户端软件的安全漏洞肯定是不符合要求的。我们仅是以学习和研究为目的,并不是针对某个品牌和产品,目的是希望物联网厂家能够对产品的安全提起重视,特别像智能门锁这样涉及家人人身安全和个人财产的产品,更应该把安全放在第一位,为百姓做出安全稳定的好产品。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK