物联网监控摄像头漏洞检测方法综述及自动化
2019-12-24路伟饶黄金鸽张子欣邢汇芸
◆路伟饶 赵 旻 黄金鸽 张子欣 邢汇芸
物联网监控摄像头漏洞检测方法综述及自动化
◆路伟饶 赵 旻 黄金鸽 张子欣 邢汇芸
(中国民航大学计算机科学与技术学院 天津 300300)
监控摄像头是用于家庭或企业中的专业摄像头设备。近年来,随着通信技术和物联网技术快速发展,各大安防厂商将物联网技术应用到了监控摄像头领域,这类包含相机和网络模块的监控摄像头称为物联网监控摄像头,而这类设备的广泛使用,给网络安全界提出了新的挑战。本文从物联网技术的角度,探讨了针对物联网监控摄像头的自动化漏洞检测方法,说明了在漏洞检测中用到的网络安全技术,以及实现漏洞自动化检测软件的思路。这种软件对提高物联网安全研究人员的漏洞检测效率有一定帮助。
物联网;监控摄像头;网络安全;漏洞检测
1 物联网监控摄像头系统模型
物联网监控摄像头系统模型由设备、客户端和云端组成。其中设备是物联网监控摄像头本身,设备运行的操作系统软件称为固件,固件基于Linux或Android操作系统构建,承载了直播观看、录像观看、监控预警等业务;客户端是为了使用者和设备交互而设计,面向Windows、Android、iOS等平台,是运行在这些平台上的应用程序;云端是为了使用者能通过互联网远程访问设备而设计,是一种位于互联网上的特殊服务器,由服务器软件和中间件组成。几乎所有面向家庭的产品都存在这一部分,也部分存在于面向企业的产品中。这三部分通过计算机网络相连接,可以实现使用者和摄像机产品的交互。本文将基于这样的三元系统模型进行讨论。
2 物联网监控摄像头安全风险
对设备而言,需承载视频传输、视频存储、监控报警等业务,设备固件会使用第三方库和自己编写的代码来实现这些业务。所以其安全风险有:第三方库已知漏洞、命令注入、逻辑漏洞、溢出、释放后使用等。同时对于操作系统本身,还可能包含旧版本操作系统中的已知漏洞。
对客户端而言,需承载用户界面、设备绑定、直播观看、录像观看等业务,客户端基于各系统平台的SDK进行开发,也会引入一些第三方库。所以,其安全风险有:平台使用不当、代码未受保护、命令注入、逻辑漏洞、溢出、第三方库已知漏洞等。
对云端而言,其保存了所有使用者和设备的关联信息,还需通过互联网转发客户端请求给设备,返回设备数据给客户端,云端大多会基于中间件进行开发。所以其安全风险有:注入、逻辑漏洞、拒绝服务、远程代码执行等。
对于实现三个部分之间通信的协议,通常使用HTTP、MQTT等公开协议或私有协议来实现。所以其安全风险有:明文或弱加密协议、证书弱校验、密钥硬编码、私有协议缺陷等。
3 物联网监控摄像头漏洞检测方法
针对设备的安全风险,欲进行漏洞检测,首先需获取到设备的固件,主要方法有厂商网站下载、升级流量捕获、调试接口获取和拆解Flash芯片获取。然后需要使用固件分析工具对得到固件文件进行分析和提取,最终得到设备操作系统的整个文件系统。这样就可以应用Linux或Android安全研究的手段,对具体的第三方库、自己编写的二进制程序和脚本进行分析。例如可以获取第三方库的版本,由于在物联网产品中往往不会使用最新的版本,所以可以前往开发者的网站查看每次更新中修复的漏洞、以及漏洞库中公开的漏洞,以确定当前版本的第三方库中有哪些已知的漏洞,将其作为安全风险输出。还可以对二进制程序和动态链接库进行静态逆向分析,了解其功能和通信的实现方式,找出其中的代码安全风险和协议安全风险。最后还可以使用虚拟化技术,将固件放入ARM或MIPS的虚拟机中运行,同时使用调试器进行动态代码检测或进行模糊测试,以发现更深层次的漏洞。
针对客户端的安全风险,首先要先获取到其应用安装包,然后再根据其面向的平台,应用该平台应用程序的安全研究方法进行漏洞检测。这里以Android平台为例,首先可以通过应用商店取到APK文件,然后对其中的Java代码和NDK动态链接库进行分析。首先可以确定该应用程序向系统请求了哪些权限、使用了哪些系统组件,以确定是否正确使用了这些平台功能。然后可以分析应用程序的代码,了解其功能和通信的实现方式,找出其中的代码安全风险和协议安全风险。最后可以对应用程序进行动态调试或模糊测试,以发现更深层次的漏洞。
针对云端的安全风险,首先要确定云端服务器的类型和使用的中间件技术,对于Web服务器,可以按照Web渗透测试的流程进行,但是因物联网监控摄像头服务器是双机交互,并非人机交互,所以渗透测试的侧重点也有所不同。对于传统的TCP服务器,则需分析其私有协议,如果没有服务器代码而进行黑盒测试,是较为困难的,这时就要结合客户端和设备中的代码进行分析。
针对协议方面的安全风险,则多使用流量捕获的方式进行分析,并和客户端、设备代码分析相结合进行。
4 物联网监控摄像头自动化漏洞检测思路
漏洞自动化检测系统分为固件漏洞检测、客户端漏洞检测、云端漏洞检测和流量分析四个模块。固件漏洞检测模块接受固件文件输入,首先匹配固件类型并进行提取,然后分为几种主要的操作系统类型进行分析,根据数据库中预定义的风险模型进行匹配,最后输出安全风险列表;客户端漏洞检测和传统客户端自动化漏洞检测类似,输入应用程序软件包,然后对其进行静态分析和基于沙盒技术的动态分析,同时模拟用户不同的输入对应用程序进行模糊测试,根据数据库中预定义的风险模型进行匹配,最后输出安全风险列表;云端漏洞检测模块和传统Web漏洞检测模块类似,通过Web渗透测试的方式,根据数据库中预定义的风险模型进行匹配,最后输出安全风险列表;流量分析模块主要应用模糊测试技术,对系统正常使用的流量以及模糊测试时的流量进行流量捕获分析,分析其中传输的内容,根据数据库中预定义的风险模型进行匹配,最后输出安全风险列表;最后将各模块的输出进行整合,输出最终的安全风险报告。
5 结束语
在三元系统模型中,虽然设备、客户端和云端这三个部分各具特点,但其仍为一个完整系统,三部分之间有千丝万缕的联系。所以在单独应用各类安全技术手段进行漏洞检测的同时,也不可将其割裂开完全独立地分析,而必须分析各部分的关联,才能保证漏洞检测的全面性。同时因为物联网监控摄像头系统中各部分这样的联系,所以自动化检测的程度以及检测水平都有限,仍需大量依赖人的经验进行分析,这是其不足之处。不过我们可以肯定地说,随着网络安全技术的发展和研发人员安全意识的增强,物联网监控摄像头和其他的物联网产品一定会蓬勃发展,把数字世界带入每个人、每个家庭、每个组织,构建一个万物互联的智能世界。
[1]吴翰清.白帽子讲Web安全[M].电子工业出版社,2014.
[2]段钢.加密与解密[M].电子工业出版社,2018.
[3]周圣韬. Android安全技术揭秘与防范[M].人民邮电出版社,2015.
[4]Yogeesh Seralathan, Tae (Tom) Oh等. IoT Security Vulnerability: A Case Study of a Web Camera [R]. ICACT, 2018.
[5]腾讯科恩实验室.2018年IoT安全白皮书[EB/OL]. 2019.
[6]华为技术有限公司.物联网安全技术白皮书2018 [EB/OL]. 2018.