无论从网络安全的攻击或是防护视角,信息的采集和甄别都至关重要,其中主机的系统类型是关键出发点。在以往经验中,根据操作系统类型往往能够大致判断其存在的风险点及风险类型,因此,识别主机操作系统类型对系统网络安全防护具有极其重要的意义。
操作系统识别方法
识别方法概述
目前最广泛的操作系统识别方法是基于规则匹配,例如操作系统识别工具Nmap、P0f、Xprobe2等。Nmap对操作系统的识别主要依靠其维护的操作系统指纹库nmap-os-db,Xprobe2等其他工具同样基于自身构建的指纹库进行操作系统类型的识别。
基于规则的匹配方法主要是通过获取网络中传输和接收的数据包信息来与已创建的规则进行特征匹配,具有识别速度快的优势。但是,由于网络安全设备(防火墙、IDS等)和防护策略等原因,部分场景下收集到的数据包中没有足够的操作系统指纹信息,操作系统类型识别准确率较低,甚至无法识别。指纹数据库冗余度高,对于某一测试的操作系统指纹可能出现两个或者多个匹配项,从而无法确定该指纹属于哪一类操作系统;对于未出现在指纹数据库中的操作系统类型则无法进行匹配识别。
基于深度学习的识别方法
为了克服现有“基于规则匹配方法”的弊端,提升主机操作系统识别的准确率,我们尝试了一种基于深度学习的主机操作系统识别方法。通过主动向操作系统发送探测包,分析从目标主机返回的数据包信息,并提取其响应特征,建模学习得到识别模型,进一步利用模型识别操作系统类型。
特征提取
通过主动向目标主机发送多个“精心构造”的数据包,包括TCP/IP数据包,ICMP数据包,UDP数据包等,执行五种不同的测试,目标主机对每个数据包做出响应。五种测试包括:序列生成,ICMP回显,TCP显式拥塞通知,TCP测试和UDP测试。每种测试会得到不同数量的响应行数据,共计13个响应行。其中,序列生成测试通过发送TCP数据包生成4个响应行;ICMP回显测试通过发送ICMP请求报文到目标主机,生成1个响应行,TCP显式拥塞通知测试发送一个TCPSYN数据包,生成一个响应行;TCP测试会发送6个具有特定设置的TCP数据包生成6个响应行;UDP测试发送特殊构造的UDP数据包到已知关闭的端口,根据返回的响应信息,生成一个响应行。分析每个响应行的信息并提取其特征,生成该主机操作系统的形如[13,36]的二维指纹特征向量。
建模
基于深度学习的操作系统本质为将二维特征向量经过非线性变换映射到操作系统类型空间中。其网络结构如下:
Attention层对响应行中的特征进行权重的分配,赋予对结果识别结果有较大影响的特征更大的权重:
实验结果
从网络上随机收集操作系统数据作为测试数据,基于该测试数据,我们的模型评估指标Acc为0.95。同时,我们增加了对比实验,在相同的测试数据上,对比卷积神经网络(CNN)、循环神经网络(RNN)、循环卷积神经网络(RCNN)、卷积神经网络-注意力机制(AttentionConvNet)的检测结果,对比结果如下:
总结
网络空间发展日新月异,复杂繁多的网络安全问题也层出不穷。日益增长的网络安全需求促使着相关研究人员将机器学习、深度学习算法应用于更多更广的网络安全领域。近年来,基于AI的网络安全研究成果不断出现在各类文献和报道中,很多研究成果成功落地并取得了良好效果。目前,利用人工智能(AI)技术解决网络安全问题已成为必然的发展趋势,基于AI的网络安全技术是一项创新且富有挑战性的工作,我们也将与更多先行者同行,不断创造突破性技术,专注人工智能在网络攻防安全领域的应用研究,让网络攻防更智能。