基于深度学习的物联网恶意软件家族细粒度分类研究

2020-05-22 17:19:25 浏览数 (1)

网络流量分类研究已经持续了二十年,广泛应用于防火墙和入侵检测系统中。但由于互联网流量特征的急剧变化,特别是加密流量的增多,过去流行的基于端口、深度包检测和经典的机器学习方法的分类准确性不断下降。近年来随着深度学习的不断发展和其在图像识别、语音识别、自然语言处理等领域所表现出的巨大优势,科研人员开始使用深度学习的方法对网络流量的识别和分类进行研究。本文也使用该方法对物联网恶意软件家族的细粒度分类进行了一些探索。

一、背景

近年来,互联网逐渐深入地融入到人们学习、工作和生活的方方面面,在给人们带来极大便利的同时,也存在着诸多安全隐患,如网络钓鱼、特洛伊木马、中间人攻击等。其中恶意软件对网络空间安全构成了严重的危害,黑客通常通过恶意软件发动各种攻击,破坏计算机系统的安全性,可以在未经授权的情况下达到不正当的目的,给人们造成极大的损失。

与此同时,为了规避恶意代码的检测,攻击者利用各种变形技术和恶意代码自动生成工具生成了大量新的恶意代码变体。虽然恶意软件及其变体层出不穷,但是同一恶意软件家族在恶意代码执行过程中都表现出一定的相似性,所以除了检测通信流量是否是由恶意软件产生之外,检测出恶意软件家族的类别也变得至关重要。本文将关注点放在物联网领域,从恶意软件产生的流量出发,针对物联网恶意软件家族进行细粒度分类研究。

二、网络流量分类技术

近年来,出现了许多网络流量分类的方法,按照使用技术的不同,一般的网络流量分类方法包括以下四类:

(1)基于端口识别的分类方法。这种方法最简单,但是一些随机端口策略或者网络地址转换技术对网络流量的分类提出了额外的挑战,同时降低了分类的准确性。因此基于端口识别的方法现在经常作为网络流量分类的辅助方法。

(2)基于深度包检测的分类方法。目前工业界涉及网络流量分类的场景主要是以基于深度包检测的方法为主。这种方法依赖于有效载荷或数据包的检测,主要使用人工制定的字符串等固定规则进行匹配以判定流量所属的类别。这种方法比端口识别更可靠,但缺点也很明显。首先,这种逐字节匹配的方法计算复杂度较高;其次流量指纹的获取比较困难,维护和更新庞大的指纹库也是一个挑战;最后,也是最重要的一点,这种方法无法处理加密流量。然而现在越来越多的恶意流量使用加密的方式进行伪装以逃避检测,因此基于深度包检测的方法的局限性越来越明显。

(3)基于机器学习的方法。目前基于机器学习的方法更多的出现在学术界。这种方法依赖于统计或时间序列特征,其特点是根据人工选择的特征从历史数据中拟合模型用于分类。因为不需要逐字节检查数据包载荷,所以相比于基于深度包检测的方法,机器学习方法不仅计算复杂度低,而且能够处理加密通信流量。当然,特征的设计问题是机器学习方法的一个普遍问题,除了要去选择模型以及配置模型参数之外,流量数据特征的提取同样也对分类准确性有着重要的影响。如果特征选择不当,网络流量分类的准确性将大打折扣。

(4)深度学习的方法。这种端到端的方法可以通过训练自动学习输入的原始数据和对应输出之间的复杂非线性关系,避免了领域专家手工设计和提取特征的需要,能够克服经典的机器学习方法中特征设计的难题,也比传统的机器学习方法具有更强的学习能力,已经在图像识别、语音识别、自然语言处理等领域得到了充分验证,所以成为网络流量分类的一种非常理想的方法。

三、物联网恶意软件家族识别

本文将深度学习的方法应用于物联网恶意软件家族分类,该方法不需要手动提取特征,直接将原始流量数据看做二维图片,使用适合图像分类任务的卷积神经网络进行分类,验证方法的可行性。

1数据集

目前物联网恶意软件家族分类较多,首先调研当前流行的物联网恶意软件家族,然后在内部平台上查询并下载样本,共下载到12种恶意家族的样本,最后通过沙箱返回相应的pcap数据包。下载到的样本数量和沙箱返回的pcap包数量如表2.1所示。

表2.1 样本数和pcap包数量统计列表

2数据预处理

开源USTC-TK2016工具集可以将原始pcap格式的流量经过一系列流程转换为CNN的标准输入数据格式,具体分为流量切分、流量清洗、图片生成和IDX转换四个步骤。流程全过程如图2.1所示。

图2.1 网络流量数据预处理流程图

(1)流量切分。基于机器学习的流量分类方法需要按照一定的粒度将连续流量切分为多个离散单元,所以将一份原始流量数据按照需求切分为多个流量数据,切分规则为按照会话或流的方式对数据进行切分,输入和输出数据的格式都是pcap。

(2)数据清洗。流量数据特有的ip地址和MAC地址等信息可能会影响分类特征的提取,为了消除这些因素的影响,需要对数据链路层的MAC地址和IP层的IP地址进行随机替换;为了保证CNN训练时不会造成数据偏差,还需要对数据进行去重。

(3)图片生成。首先将清洗后的数据长度统一为784字节,原因是会话或流的前面部分一般是建立连接和前面一部分数据包,这部分数据更能反映流量特征,如果数据长度大于784字节则截取,如果少于784字节则在数据后面补充0x00;然后将统一长度之后的数据按照二进制形式转换为灰度图片,每个字节都会对应一个灰度像素值,输出格式为png。

(4)IDX转换。将图片转换为IDX格式,也就是很多CNN输入文件的标准格式。

首先使用USTC-TK2016工具集对物联网恶意软件家族数据进行预处理,其中流量切分步骤按照会话即双向流的方式进行,图片生成步骤之前对数据量过大的类别只选取最大的60000个数据。然后将各个家族数据量总数的10%作为测试集,具体用于训练和测试的数据量统计结果如表2.2所示。

表2.2 训练集和测试集的数据量统计列表

图2.2为所有数据量较多类别的流量数据生成的图片,从每一类数据中随机选取一张图片。可以看出,大部分图片之间是比较有区分度的,只有少数几张图片如3、6和10类别具有相似性。

图2.2 不同类别数据之间的区分性

图2.3为同类流量数据的一致性情况,随机选取了两类数据,每一类数据中随机选取了9张图片。可以看出,1和7类别的数据的内部9张图片的纹理特征非常相似。

图2.3 同类别数据内部的一致性

3模型训练和测试

物联网恶意软件家族数据经过预处理之后和经典的MNIST手写体识别数据集的尺寸相同,所以采用和LeNet-5结构非常相似的CNN网络作为训练和测试的模型,其架构如图2.4所示。

图2.4 CNN模型架构示意图

CNN模型架构包括一个输入层、两个卷积层、两个池化层、两个全连接层和一个softmax层,并在两个全连接层之间使用dropout防止过拟合,其中两个卷积核的尺寸都是5*5,通道数分别为32和64,两个池化层都是2*2的最大池化,全连接层1的尺寸为1024,全连接层2的尺寸由输出类别数目决定,本实验为12分类。一些重要参数的设计如下:

mini_batch:50

lossfunction:cross_entropy

activationfunction:ReLU

optimizationfunction:GradientDescentOptimizer

learning_rate:1e-4

train_round:20000

将训练集输入模型中对模型进行训练,最后在测试集上的总体准确率为99.1%,各个家族的准确率和召回率如表2.3所示。

表2.3 各个家族在测试集上的准确率和召回率

可以看出,模型经过多轮次的训练,在大多数家族上都表现出较好的性能,但由于4、5、8、11家族数据量过少,导致测试性能表现不佳。数据量正常的10家族,其测试结果与预期的大相径庭,其原因查看预处理后的图片,如图2.2所示,10家族与其他如3、6家族的数据特征具有相似性,从视觉角度解释了最终的实验结果。

因为只是验证方法的可行性,本文并未深入研究数据集中各个类别的数据平衡问题和模型的优化调参等问题,后续可以通过过采样、欠采样、调整算法等方法解决数据平衡问题,也可以对模型的结构进一步优化并调整其参数以期获得更好的家族分类效果。当然,如何将领域内的专家知识和先验知识融入深度神经网络中也是一个值得研究的点。

四、小结

本文首先介绍了一般网络流量分类的几种方法和它们的优缺点,然后从物联网恶意软件产生的流量出发,使用卷积神经网络对物联网恶意软件家族进行了分类,实验结果证明在大多数家族上都表现出较好的性能,进而验证了深度学习用于物联网恶意软件家族细粒度分类的可行性。

参考链接:

[1].https://github.com/detuxsandbox/detux

[2].https://github.com/yungshenglu/USTC-TK2016

Wei Wang,Xuewen Zeng, Xiaozhou Ye, Yiqiang Sheng and Ming Zhu,"MalwareTraffic Classification Using Convolutional Neural Networks forRepresentation Learning," in the 31st International Conferenceon Information Networking (ICOIN 2017), pp. 712-717, 2017.

0 人点赞