论文:Identifying infected users via network traffic
作者:Margaret Gratian a , Darshan Bhansali a , Michel Cukier a , Josiah Dykstra b
期刊:computers & security
时间:2018
来源:SCI
介绍
网络流量识别现状
利用网络流量来识别感染个体在研究与开发中都得到了广泛应用
大多数方法是基于IP地址,二进制以及硬件设备
许多实际网络流量识别的准确率已经能超过99%
如何去通过网络流量来分析用户个体以及用户行为已经成为热门
作者的思路
提供一个映射表,能将每条流量与用户关联起来
通过流量特征来识别用户是否为感染用户
文章涉及到的方法
主成分分析
无监督学习聚类
有监督学习建模
背景和相关工作
这一章节作者总结分析了前人的研究工作,这里不做重复阐述,而在相关工作方面作者提出了两大问题:
问题一
能否从网络流量中提取出能够最好地解释用户行为差异的特征?
以前的研究的特征能够做到区分恶意和良性的主机或IP地址,作者希望找到特征能够做到区分感染与非感染用户。
问题二
对感染与非感染用户的识别度有多高?
作者选择用无监督学习与有监督学习一起评估。
无监督学习评估方法:每个簇的纯度。
有监督学习评估方法:ROC曲线,AUC值,漏报率以及误报率。
数据
这一节讲解了如何获取数据集,数据的提纯以及处理。
数据集
数据来源:
1.数据由学校信息安全IT部门提供,从2017年10月26日——11月21日中随机抽取样本。
2.question:为什么要使用无线流量作为研究对象?
在大学里,65%的流量都是无线流量,基数大。
3.流量由老师,学生,职工,以及闲杂人等产生,每个要使用网络的人都需要认证,认证方法就是使用个人唯一标识ID,这个标识会被系统记录并附加到每一条流量记录上。
4.在使用这个数据集前,作者提了一下用户隐私保护问题,每个ID在给予他们做实验前都转换成了hash,这样就保证了匿名性。数据集一共包括了66,551,686条无线流量记录以及14,621条威胁记录。
流量记录:一个完整的对话流才会产生记录,每条流量记录拥有54个字段,包含了源用户ID,会话开始时间,源IP和目的IP,发送和接收的字节数,发送和接收的数据包数会话长度等等。
威胁记录:被系统检测到无线会话过程中出现的恶意威胁。因此每条威胁记录可以匹配到流量记录中的某几条数据。威胁记录包含了协议、威胁时间、威胁类型,威胁程度等等。数据集中只包含中等威胁及以上的数据。
数据验证与处理
作者提到,使用Python的Pandas库和Numpy库来进行这一步。
1.确定实际人数。在无线流量记录中,一共提取出53,165个用户;在威胁记录中,一共提取出1935个用户。进行一一关联时,作者发现者1935个用户中有12个用户从未出现在无线流量记录中。这12个用户属于异常数据,作者猜测是因为会话在一开始就被定义为威胁,然后被记录,然而还未产生完整的会话流就直接终止,所以并没有任何流量记录。所以最后作者去除这12个用户产生的威胁记录,只保留了1923个威胁用户。
2.关联流量记录和威胁记录。关联方法为先用用户ID来筛选流量记录,再用时间来确定。
3.调整数据集。原数据中一共有1923个感染用户和51,242个非感染用户,由于这个比例差距比较大,所以作者考虑缩小非感染用户样本数量来调节。作者一共设置了6个分组。其中3个分组感染用户和非感染用户的比例为1:1,另外3个分组中感染用户和非感染用户的比例为3:7。
特征
筛选字段
在上面提到,每条流量记录一共有54个字段,这些字段很明显不是每一条都有用的。所以作者经过了筛选,删除条件包括:有缺失值,总是记录相同值,信息量小。最后作者只保留了10个字段:Start Time, Elapsed Time, Source IP, Source Port, Destination IP, Destination Port, Bytes Sent, Bytes Received, Packets Sent, and Packets Received。
生成特征
这里作者做了2步工作,第一步将上面筛选出的10个字段数字化,第二步,从这10个字段中提取出36个特征。作者表示这些特征覆盖了多个方面(比如频率,数量,时间)。具体特征为下表:
主成分分析
作者使用主成分分析方法来降维,绘制了Screen plots图来对主成分的数量进行选择,最后将36个特征转换成了13个主成分(数目到达13开始平稳)。对于两类比例分组,方差解释率(评估主成分的原特征的转换成功率)在1:1的3个分组分别达到了90.01%,90.22%,98.09%,在3:7的3个分组分别达到了90.27%,90.39%,97.71%。
而原始36个特征对方差解释率的贡献如下:
分析:
1.先分析比例为1:1的数据集分组,平均方差解释率为92.77%,而有5个特征拥有最高的方差贡献:average session length, average number of bytes sent, num- ber of unique destination ports, number of unique source IP addresses, and average time difference between session start times。
2.作者然后用 “相关值(correlation value)” 来评价主成分和原特征之间的关系,并以此来增强对特征解释用户差异的理解。根据描述,当相关值阈值设置为0.4时,有17个特征满足条件;阈值设置为0.5时,有10个特征满足条件;阈值设置为0.6时,只剩6个;为0.7时为2个而0.8为1个。
3.作者主要观察了阈值为0.5时的十个特征,发现最高的5个特征就是那5个方差贡献值最高的5个特征。
4.作者接着分析了3:7的分组,过程和结果基本和1:1相同,这里不做复述。
5.作者在这里对之前提出的问题一做出解答,认为阈值为0.5时这10个特征能够做出解释。
无监督聚类
在无监督聚类这一步,作者选择的是K-mean方法,且作用对象为全部1:1和3:7的6个样本,特征选用全部36个特征以及13个主成分。经过测试,作者选择了K-mean方法的参数K=4。
作者的思想是这样的,由于做的无监督学习,算法是不知道标签的,只会根据数据的相似性来聚类,作者可以根据最终的聚类结果观察感染用户和非感染用户的聚集性。最终的实验结果如下:
分析一下上面的结果,对于36个特征以及比例1:1的聚类,一共出现了3个独自成群的情况,作者将其视为潜在的离群值。不管这些值,群的纯度范围从70.51%到89.09%。而对于36个特征以及比例3:7的聚类,依旧出现了3个离群实例,而群的纯度也显得更高。但是3:7的聚类出现了平分群的情况,即纯度接近50%。
分析一下上面的结果,对于13个主成分以及比例1:1的聚类,一共出现了3离群实例以及1个平分群的情况。除去这些,群的纯度范围从64.93%到94.12%。而对于13个主成分以及比例3:7的聚类,出现了2个离群实例和一个平分群情况,而群的纯度范围为60.07%到100%。
作者表示,虽然不知道算法究竟是怎么运转和做决定的,但其关注点在于不清楚具体标签的情况下,只根据特征和数据关联来聚类,最后的结果能否显示网络流量中存在用户感染状态的“信号”。作者认为无论是36个特征还是13个主成分都表现出了这种“信号”,因此有做长期研究的必要。但是由于也存在了平分群的情况,所以也要研究出现的原因。
有监督的学习
和无监督聚类一样,在有监督学习这一块作者对2种比例的6个样本,36个原特征以及13种主成分都进行了实验,并将测试集和训练集以2:8和3:7的比例进行划分。
根据作者描述,其一共使用了8种机器学习算法来进行实验比较:K-Nearest Neighbors (scikit-learn developers 2017 b), Logistic Regression (scikit-learn develop- ers 2017 c), Random Forest (scikit-learn developers 2017 d), Ad- aBoost (scikit-learn developers 2017 e), Gradient Boost (scikit- learn developers 2017 f), Extra Tree (scikit-learn developers 2017 g), Bagging scikit-learn developers 2017 h), Voting (Ma- jority Rule) (scikit-learn developers 2017 i).
作者使用调整参数和十折交叉验证的方式来把每个算法调整至最佳,并防止其出现过拟合。除了上诉这8种算法,作者还使用了神经网络算法进行实验,双层的记为Neural Network 1,四层的记为Neural Net- work 2。作者使用4个指标来综合评估模型的好坏:Accuracy(精确度), ROC AUC, false positive rate(误报率), false negative rate(漏报率)。具体结果如下图:
由于空间问题,作者只在每一项展示了最优秀的几个分类器,可以看到上图1:1比例中Accuracy的范围在71.0%——79.0%,ROC AUCs的范围在81.0%——86.0%,false positive rate的范围在17.2%——21.5%,而false negative rate的范围在21.2%——41.3%。
上图3:7的样本分类比例中,Accuracy的范围在77.0%——78.5%,ROC AUCs的范围在80.9%——85.3%,false positive rate的范围在16.8%——22.0%,而false negative rate的范围在21.7%——36.0%。
作者表示,上图的显示结果是将4种评估方法视为同等重要性而产生的,但在实际环境中并不是这样,可能有些系统的误报率需求远重要于漏报率等等。在实验中并没有找到哪个分类器4个指标都优于其他分类器的情况,所以只能找出单个指标最优的,比如在1:1的分类比例中:79.0% accuracy by Neural Network 2; 86.0% ROC AUC by Gradient Boost; 17.2% FPR by Extra Tree; and 21.2% FNR by Neural Network 2。
而对于3:7的比例分类:78.5% accuracy by Gradient Boost; 85.3% ROC AUC by Gradient Boost; 16.8% FPR by Extra Tree; and 21.7% FNR by Gradient Boost。
缺陷
作者在文末提到了自己研究的几个缺陷
1.选择完全相信系统的威胁记录,并不清楚系统的误报率和漏报率。
2.对“感染用户”的定义。作者选择将威胁等级中等以上视作感染用户,在全部的的感染用户中,中等威胁的用户有1858个,高威胁的用户只有41个,而严重威胁的用户优质11个。所以只考虑高威胁和严重威胁的用户为“感染用户”,那么实验结果可能更加合理,但是样本实在太小了。
3.无法保证流量记录的完整性。
WhiteRabbit评论:
文章做足了实验,但是整个文章读下来感觉到最大的问题在于作者对于自己每一个实验的结果似乎只是在做描述,并没有进行分析或者有层次感地深入。这就导致了我们看到了实验结果,但不知道这个实验结果到底意味着什么,又有什么意义,对我们又有什么启发。
文章作者:WhiteRabbit
来源:blog.whiterabbitxyj.com
转载请标注原文和作者。