K-means聚类攻击类型

研究背景

随着信息革命的不断推进,互联网以惊人的速度渗透到科技、文化、经济等领域。网络技术的高速发展一方面推动了社会经济的迅速发展,另一方面也给人类社会带来了前所未有的挑战。不断发生的网络中的攻击行为,不仅造成了经济方面的巨大损失,甚至对国家的安全和社会的稳定发展造成了威胁。因此,抵御网络上的恶意攻击、维护网络安全成为亟需解决的问题。 在本次研究中,我们实现了一个可以对网络攻击类型进行有效分类的算法。通过对受到的网络攻击进行分类,防御者够在有限的资源中,更好地对网络攻击进行针对性防御。

算法详解

K-means聚类攻击类型_第1张图片
聚类分析:将物理或抽象对象的集合分组为由类似的对象组成的多个类的分析过程,分类的后的类别称为簇。每个簇内有很大的相似性,而不同簇之间有很大的相异性。
无监督学习,在学习的过程不依赖于预先定义的类或带类标记的训练实例。
K-means聚类攻击类型_第2张图片
轮廓系数:用于评价聚类效果好坏的一种指标,可被理解为描述聚类后各个类别的轮廓清晰度的指标。
K-means聚类攻击类型_第3张图片
K-means聚类攻击类型_第4张图片K-means聚类攻击类型_第5张图片
与K-means结合:将K值设定为具体的多个数值(范围可以人为规定),每个K值下进行聚类,计算聚类结果的轮廓系数。将轮廓系数最大的K值作为最终的K值。

实践结果分析

数据集:KDDCUP99

K-means聚类攻击类型_第6张图片
KDD是数据挖掘与知识发现(Data Mining and Knowledge Discovery)的简称。”KDD CUP 99 dataset ”就是KDD竞赛在1999年举行时采用的数据集。
1998年美国国防部高级规划署(DARPA)在MIT林肯实验室进行了一项入侵检测评估项目。林肯实验室建立了模拟美国空军局域网的一个网络环境,收集了9周时间的 TCPdump(*) 网络连接和系统审计数据,仿真各种用户类型、各种不同的网络流量和攻击手段,使它就像一个真实的网络环境。这些TCPdump采集的原始数据被分为两个部分:7周时间的训练数据 (**) 大概包含5,000,000多个网络连接记录,剩下的2周时间的测试数据大概包含2,000,000个网络连接记录。   一个网络连接定义为在某个时间内从开始到结束的TCP数据包序列,并且在这段时间内,数据在预定义的协议下(如TCP、UDP)从源IP地址到目的IP地址的传递。每个网络连接被标记为正常(normal)或异常(attack),异常类型被细分为4大类共39种攻击类型,其中22种攻击类型出现在训练集中,另有17种未知攻击类型出现在测试集中。
KDD99数据集的样本类别分布表如下0 NORMAL 正常记录 97278 60593
1 PROBE 监视和其他探测活动 4107 4166ipsweep 1247 306mscan / 1053nmap 231 84portsweep 1040 354saint / 736satan 1589 1633
2 DOS 拒绝服务攻击 391458 229853apache2 / 794back 2203 1098land 21 9mailbomb / 5000neptune 107201 58001pod 264 87processtable / 759smurf 280790 164091teardrop 979 12udpstorm / 2
3 U2R普通用户对本地超级用户特权的非法访问 52 228buffer_overflow 30 22httptunnel / 158loadmodule 9 2perl 3 2ps / 16rootkit 10 13sqlattack / 2xterm / 13
4 R2L 来自远程机器的非法访问 1126 16189ftp_write 8 3guess_passwd 53 4367imap 12 1multihop 7 18named / 17phf 4 2sendmail / 17snmpgetattack / 7741snmpguess / 2406spy 2 /warezclient 1020 /warezmaster 20 1602worm / 2xlock / 9xsnoop / 4

实验内容

本次实验在KDDCUP99上数据集进行测试,实验先指定聚类数量,然后画出轮廓图。通过轮廓图,我们能够看出样本的簇数以及判断样本中是否包含异常值。更改目标的分类簇数,通过评价轮廓系数评价聚类模型的性能(图中红色线),选择最适当的簇数进行聚类。
轮廓系数是一个衡量一个结点与它属聚类相较于其它聚类的相似程度。取值范围-1到1,值越大表明这个结点更匹配其属聚类而不与相邻的聚类匹配。
当b>>a时,轮廓系数近似取到1,此时模型的性能最佳。如果大多数结点都有很高的轮廓系数,那么聚类适当。若许多点都有低或者负的值,说明分类过多或者过少。
纵轴是类聚编号
横轴是silhouette value
无监督
K-means聚类攻击类型_第7张图片
从上图可以看到, “轮廓系数”远非1,轮廓的宽度相差很大。因此,将群集数设置为2似乎不合适
K-means聚类攻击类型_第8张图片
Cluster2,cluster3的“轮廓系数”接近1,而cluste1远远没达到。而且,轮廓的宽度仍然有很大差异。因此,将群集数设置为3似乎不合适。
K-means聚类攻击类型_第9张图片它已经变得相当不错。但是,由于cluster2的轮廓宽度较大,因此似乎可以做更多的聚类
K-means聚类攻击类型_第10张图片
看到4个簇的“轮廓系数”接近1,轮廓的宽度几乎均匀。显示目前最好的形状。因此,将群集数设置为5似乎是合适的
K-means聚类攻击类型_第11张图片
“ 轮廓系数”的变化很小,另外我们看到cluster5和cluster6的轮廓宽度非常小,因此似乎过度地将它们划分为簇。所以,将群集数设置为6是不合适的,那么至此,我们就可以确定k-means聚类数为5是比较合适的。

执行正式聚类代码
K-means聚类攻击类型_第12张图片
从上图中可以看到已经聚成5类,并且每个类中包含的数据的组成部分都以彩色显示接着我们通过逐个查看每个类的组成来看看每个类代表什么cluster0:在这一类可以看到“ wrong_fragment”(错误片段的数量)大于其他类。
鉴于有许多“wrong_fragement”,我们有理由推测它是“teardrop”攻击的类Cluster1: 可以看到,“ dst_host_serror_rate”(SYN错误率)和
“dst_host_same_src_port_rate”(到同一端口的连接率)的组成比率大于其他类。
基于“高SYN错误率”和“到同一端口的更多连接”等功能,
我们可以推测是这是“Nmap扫描”或”SYN Flood “攻击的类Cluster2:相对于其他聚类来说,可以看到每种颜色的组成比率都是差不多的,
这应该是正常的网络通信cluster3:可以看到,dst_host_rerror_rate(出现REJ错误的连接所占的百分比)和num_failed_logins(失败的登录尝试次数)的组成比率大于其他类。基于高REJ错误率和大量失败登录尝试等功能,我们猜测这是一个“爆破密码”攻击的类Cluster4:可以看到,“ root_shell”(紫色,表示取得root shell)和“ duration”(蓝色,表示与主机的连接时间)的组成比率都比其他类的大。基于“与主机的连接时间长”和“在许多情况下具有root特权”的功能,我们推测这是一个“缓冲区溢出”攻击的类这样,通过K-means方法分析“`kddcup.data_small.csv”的结果是,可能存在4种攻击类型(缓冲区溢出,Nmap 扫描/ SYN Flood,密码暴力破解,Teardrop)。那么通过分析得出的结果,防守者就可以识别出攻击手段被采取专门的防护措施进行防御。

你可能感兴趣的:(信息安全,1024程序员节)