物联网(The Internet of Things,简称IOT)是指通过 各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、 连接、互动的物体或过程,采集其声、光、热、电、力学、化 学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。
关于IoT安全测试的方法,网上也有一些资料,但感觉有用的分享并不多,且杂。关于IoT要学的东西也还有很多,肯定不是本文这些内容就能说完的,本文就个人已知的知识部分结合经验简单总结一下IoT如何进行安全测试。
IoT体系结构
作为安全人员,需要对测试目标进行充分了解后才能去思考目标可能会存在的问题,也是本质上的从信息收集开始做起。
首先需要清楚当前测试的目标的体系结构,此处引用前人总结过的分类
执行器:通过物理过程控制事物,如空调机组,门锁,窗帘
网关:用于收集传感器信息和控制中心
传感器:用于检测环境,例如光,运动,温度,湿度,水/电量
云:Web界面或API托管用于收集数据的云端web应用和大型数据集分析。一般来说,就是用来做信息与其他方资源共享
移动(app):移动设备大多使用的,在设备上的应用程序,以实现手机端控制IoT环境来进行互动
IoT攻击面及测试思路
综合上文,笔者认为可以进行安全测试的攻击面有如下部分:
(没写的就是不会,会我就写了
( ̄□ ̄||)
)
1、协议
IoT目前所用到的协议有很多种,本文列举本人遇到的过的较为常见的几种,包括HTTP、TLS/SSL、S7Comm-plus、websocket、MQTT
HTTP
HTTP协议大概是安全人员最熟悉的协议之一了,在IoT情景中,简单分为两种情况,有web应用和没有web应用的。
先对有web应用的情景进行分析,常见的IoT设备有路由设备(TP-Link、D-Link等)、视频监控(海康威视、各种DVR等)、门禁考勤系统(Linear eMerge E3-Series)、智能网关(GPON Home Gateway)等。
这种其实不需要多作赘述,基本都是常规的web渗透一把梭,常见的问题有默认密码、弱口令、越权、RCE等。
对没有web应用的情景进行分析,这类设备就太多了,离生活较近的有打印机、智能烤箱和电饭煲、智能咖啡机、智能语音助手等。这一类设备大部分功能其实还是使用其他协议完成,但是总要一部分功能会需要用到HTTP协议,举个栗子,笔者家里有个智能电烤箱,能绑定后通过某语音助手来进行命令下发(开关机和设定烤箱温度时间等),需要扫描产品上方的二维码进行绑定,类似下图
而二维码其实解析出来是一段URLhttp://target.com/xx/?sid=xxx
经过测试sid为烤箱编号,能够进行遍历修改,也可以对烤箱进行解绑操作,不过自己家用的那款利用起来比较麻烦,绑定过程需要输入附近的WIFI密码使烤箱联网,因此并未达到直接绑定操作任意其他烤箱,但可以引为思路。
以上其实还是偏向于web安全测试,但是也有部分IoT设备能提供特别的环境,局域网。比如某智能音箱,通过wireshark等软件的抓包可以发现音乐点歌的功能是使用了HTTP请求的,那么这一点就存在三个可测试方案,一个是中间人攻击,在非安全的网络环境中,通过中间人的方式替换请求就能使音箱播放指定歌曲,比如无论用户点什么歌,最后播放的都是《今天是个好日子》,可能会对用户造成精神污染最后导致退货和投诉,对厂商还是有一定危害和影响的;再一个就是如果某些特定操作是通过HTTP请求来进行实现,例如智能咖啡机的咖啡制作功能(当然,大部分咖啡机都没有使用HTTP,此处只是举例)是通过一条HTTP请求完成,那么通过抓取数据包后进行重放攻击,就能不断获取新的咖啡,一杯给领导,一杯给女神,还有一杯自己喝;最后再举一个栗子,智能门禁系统,如果使用HTTP协议,将用户刷卡信息上传到服务器中,我们在内网可以通过嗅探等方式捕获这些数据,导致敏感信息泄露的问题。
简单总结下这一段,对没有web应用的设备进行安全测试,需要尽量找到设备的HTTP请求,在该请求的基础上,尝试中间人攻击、重放攻击、敏感数据获取。(除此之外其实也可以按照web渗透的方法进行测试,权限绕过、SQL注入等,毕竟各种IoT环境实在太多,本段只是举了三个个人认为比较通用一点的面。)
TLS/SSL
加密后的流量虽然可以被抓包工具捕获,但是一般都无法获取有效信息,因此针对使用了TLS协议的设备,首先需要将流量解密,关于解密方法,一种是通过该协议本身的漏洞进行解密,但这一块本人没有太多的研究,不进行深入,另一种是通过对设备固件进行分析,获取解密方法,这一块涉及逆向和二进制等方面,也无法进行过多深入。当然流量解密后,测试方法就参考上文所写HTTP协议部分即可。
S7Comm-plus
了解的不多,但是貌似用的不少,可以参考另一篇文章
西门子S7comm-plus通信过程及重放攻击分析
Websocket
websocket用的最多的地方还是即时通信,通常在工业互联网中用的毕竟多,比如需要实时监控某些信息的设备。
一般通过抓包可以看到
测试方法并不局限,就本人测试过的而言,主要问题是没有鉴权,很多时候直接请求接口就完事了,服 务器正常接收并执行,这一点还是很危险的,不过使用websocket大部分还是用于实时数据传输,但是通过未鉴权的接口,我们除了能越权进行某些操作之外,其实还容易导致大量的敏感信息泄露。因此,对于websocket,测试接口鉴权和是否存在信息泄露。
MQTT
MQTT是一种机器对机器(M2M)的协议,它被广泛地用于IoT 。其在1999年由IBM发明,当时是为了创建一个协议,用于通过卫星连接连接石油管道的最小电池损耗和最小带宽。因为它的耗能非常低,所以被IoT生态系统广泛采用。目前几乎所有的IoT 云平台都支持通过MQTT 与几种不同实现的IoT 智能设备发送接收数据。
对此协议的测试其实还是感谢上一段在某车企的工作经历,因为车机中会使用较多的MQTT协议,而其实MQTT在物联网设备的应用场景十分之广
智能家居
温度湿度传感器
血压测量仪