阅读: 0
一、前言
随着物联网设备的普及和人工智能技术的发展,越来越多的物联网设备及服务暴露在互联网中,这也导致其安全问题备受关注。物联网资产识别是物联网安全中必要且关键的一环,如果能够对暴露在外的物联网资产进行归纳梳理并分析,对于发现物联网设备的安全问题是具有重要意义的。
然而物联网资产的识别具备一定的复杂性,首先暴露在互联网上的资产众多,对于大量数据的收集具备一定难度。此外,由于物联网资产的更新变化速度快,种类众多,导致物联网资产识别十分碎片化。对于已知类型的物联网资产往往通过专家知识进行指纹提取,此类方法的人工成本和时间成本都比较高。在探索物联网资产识别的道路上,我们通过研究应用聚类算法取得了不错的效果。
二、物联网资产识别
物联网资产识别的关键在于找到物联网指纹,往期文章中已经介绍过物联网资产的一些特征和识别方法。本文的研究依然是从探测全网资产的存活端口获取响应信息(也称Banner),利用Banner进行物联网资产识别的方式进行研究。
2.1 物联网资产指纹
物联网设备厂商开发出类别繁多的设备,不同的厂商的设备类型以及版本号类型编号等都具有一定差异。路由器仅按照应用类别区分就有无线路由器,商用路由器,工业路由器等多种类型。
某厂商物联网产品类型
通过发送网络协议通信请求的方式探测互联网上暴露的资产,通过请求返回的响应信息识别设备是否为物联网设备以及对应的指纹信息。由于物联网设备返回的报文信息中往往包含物联网设备所属的设备类型以及品牌等信息,因此一旦能够通过报文响应信息提取到物联网指纹,就可以利用指纹作为识别物联网资产的依据,甚至可以得到设备类型编号等详细信息。如下图所示,NETGEAR WGR614v10 作为HTTP报文响应头信息中的WWW字段内容,可以提取到该资产对应的品牌以及设备型号。
HTTP/1.0 401 Unauthorized WWW-Authenticate: Basic realm="NETGEAR WGR614v10" Content-type: text/html <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=utf-8'> <title>401未授权</title></head> <body><h1>401未授权</h1> <p>到本资源的访问被拒绝,您的客户端未提供正确的认证。</p></body> </html>
2.2 物联网资产指纹提取
物联网资产的指纹提取往往是很复杂的,首先指纹所在的位置是不固定的,而且指纹的提取需要具备一定的专家知识,在人力成本和时间成本方面都比较大。那么物联网资产的指纹如何更加有效的提取到呢?我们研究发现在收集到的大量的Banner响应信息中,相同指纹的物联网资产往往在报文的结构和报文的内容上具备很高的相似性。如果将大量的Banner响应信息中具备高相似度的Banner响应信息进行整合,对于专家提取物联网资产指纹是很有意义的,一定程度上甚至可以替代专家,实现自动化的对物联网资产进行指纹提取。
某物联网资产指纹
如上图,表示了两条具有相同指纹信息的Firewall设备的响应信息。在算法层面如果对相似Banner响应信息进行挖掘,无监督聚类方法是一个值得探索的方向。
三、聚类算法应用及实践
对物联网资产进行算法应用之前,首先需要对收集的报文信息进行向量化处理。通过对报文中必要的属性以及标签内容等有效信息进行提取,然后采用TF-IDF进行文本数据向量化,最后通过数据降维PCA技术将向量化的文本进行降维,降维之后的向量作为聚类算法模型的输入进行聚类,向量化过程如下。
资产数据向量化提取流程
聚类算法包括基于距离的K-Means聚类算法,基于层次划分的Hierarchical Agglomeration聚类算法,基于密度的EM聚类算法,以及DBSCAN等多种不同方式的聚类算法,近几年又发展出了FINCH等高效的聚类算法。我们在研究过程中发现使用KMeans算法和DBSCAN算法在时间开销以及聚类效果方面有一定优势。
KMeans算法是一种基于距离计算的朴素聚类思想,其过程如下。
- 选择若干个cluster center
- 对其他所有点进行分类,按照距离center的距离,划分给最近的cluster
- 更新center
- 重复23步骤直到收敛或者终止条件
DBSCAN算法是一种基于密度计算的聚类算法,其过程如下。
- 找到任意核心点,寻找从核心点出发的所有密度连接点
- 遍历邻域内所有核心点,寻找密度连接点。不停迭代直到无法寻找到连接点
- 重新寻找没被聚类的核心点,重复步骤12直到收敛
我们采用100万物联网资产数据进行两种聚类算法时间开销的评估发现基于距离计算的KMeans算法明显优于基于密度计算的DBSCAN算法,如表所示。
算法 | 时间(分钟) |
KMeans | 15 |
DBSCAN | >60 |
其原因在于KMeans算法在大型数据可以做到简单高效,时间复杂度比较低,但是对于噪声比较敏感。而DBSCAN数据对于噪声并不敏感,而且能发现任意数量性状的聚类情况,时间复杂度比KMeans算法高。
我们在两种不同聚类算法上进行聚类效果评估发现DBSCAN算法要优于KMeans算法。如表所示。
算法 | 聚类正确率 |
KMeans | 89.3% |
DBSCAN | 92.7% |
在资产服务文本聚类过程中我们采用两种聚类算法结合的形式对数据进行无监督聚类,分别利用不同算法的优势解决问题。
在海量信息中聚类得到的结果里往往一次聚类难以得到细分的物联网资产设备,因此先利用KMeans算法进行第一次聚类,由于资产数据量大,聚类算法速度不能太慢,所以KMeans算法可以简单高效的得到聚类结果。
然后利用DBSCAN算法对文本聚类的结果进行二次聚类,这样由于第一次聚类结果得到的每个聚类簇的大小相对原来的数据已经小了很多,而且DBSCAN再次进行聚类能够得到噪声更少的聚类效果。从而将聚类效果进行进一步细分提升,得到更好的聚类效果,其过程如图所示。
聚类算法应用流程
经过聚类之后的物联网资产中有大量的聚类簇满足资产特征,从而对后续的指纹提取以及专家验证提供了便捷的算法支持,加速了物联网资产的识别过程。
四、总结
本文介绍了聚类算法在物联网资产识别中的应用及实践,通过实践证明利用聚类算法将大量的物联网资产信息进行聚类能够提升专家对指纹的提取效率。当然现有采用聚类算法的方式还不够完美,一方面对于资产的识别效果严重依赖于算法聚类的效果,无法保证聚类结果中有效的物联网资产出现的数量;另一方面聚类算法本身的稳定程度比较有限,无论是评估效果还是保证算法稳定性都比较困难。对于物联网资产识别的研究未来依然存在很大的提升空间,对于物联网的安全研究而言是必不可少的。