KDD CUP 99 数据集解析、挖掘与下载

news/2025/3/28 10:35:38/

KDD CUP 99 数据集解析、挖掘与下载

数据特征描述

一个网络连接定义为在某个时间内从开始到结束的TCP数据包序列,并且在这段时间内,数据在预定义的协议下(如TCP、UDP)从源IP地址到目的IP地址的传递。每个网络连接被标记为正常(normal)或异常(attack),异常类型被细分为4大类共39种攻击类型,其中22种攻击类型出现在训练集中,另有17种未知攻击类型出现在测试集中。

4种异常类型分别是:

  1. DOS, denial-of-service. 拒绝服务攻击,例如ping-of-death, syn flood, smurf等;
  2. R2L, unauthorized access from a remote machine to a local machine. 来自远程主机的未授权访问,例如guessing password;
  3. U2R, unauthorized access to local superuser privileges by a local unpivileged user. 未授权的本地超级用户特权访问,例如buffer overflow attacks;
  4. PROBING, surveillance and probing, 端口监视或扫描,例如port-scan, ping-sweep等。

数据特征描述

KDD99数据集中每个连接(*)用41个特征来描述:

2, tcp, smtp, SF, 1684, 363, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 104, 66, 0.63, 0.03, 0.01, 0.00, 0.00, 0.00, 0.00, 0.00, normal.

0, tcp, private, REJ, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 1, 0.00, 0.00, 1.00, 1.00, 0.03, 0.55, 0.00, 208, 1, 0.00, 0.11, 0.18, 0.00, 0.01, 0.00, 0.42, 1.00, portsweep.

0, tcp, smtp, SF, 787, 329, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 76, 117, 0.49, 0.08, 0.01, 0.02, 0.00, 0.00, 0.00, 0.00, normal.

上面是数据集中的3条记录,以CSV格式写成,加上最后的标记(label),一共有42项,其中前41项特征分为4大类,下面按顺序解释各个特征的含义:

1.TCP连接的基本特征(1-9)

基本连接特征包含了一些连接的基本属性,如连续时间,协议类型,传送的字节数等。

(1)duration. 连接持续时间,以秒为单位,连续类型。范围是 [0, 58329] 。它的定义是从TCP连接以3次握手建立算起,到FIN/ACK连接结束为止的时间;若为UDP协议类型,则将每个UDP数据包作为一条连接。数据集中出现大量的duration = 0 的情况,是因为该条连接的持续时间不足1秒。

(2)protocol_type. 协议类型,离散类型,共有3种:TCP, UDP, ICMP。

(3)service. 目标主机的网络服务类型,离散类型,共有70种。’aol’, ‘auth’, ‘bgp’, ‘courier’, ‘csnet_ns’, ‘ctf’, ‘daytime’, ‘discard’, ‘domain’, ‘domain_u’, ‘echo’, ‘eco_i’, ‘ecr_i’, ‘efs’, ‘exec’, ‘finger’, ‘ftp’, ‘ftp_data’, ‘gopher’, ‘harvest’, ‘hostnames’, ‘http’, ‘http_2784′, ‘http_443′, ‘http_8001′, ‘imap4′, ‘IRC’, ‘iso_tsap’, ‘klogin’, ‘kshell’, ‘ldap’, ‘link’, ‘login’, ‘mtp’, ‘name’, ‘netbios_dgm’, ‘netbios_ns’, ‘netbios_ssn’, ‘netstat’, ‘nnsp’, ‘nntp’, ‘ntp_u’, ‘other’, ‘pm_dump’, ‘pop_2′, ‘pop_3′, ‘printer’, ‘private’, ‘red_i’, ‘remote_job’, ‘rje’, ‘shell’, ‘smtp’, ‘sql_net’, ‘ssh’, ‘sunrpc’, ‘supdup’, ‘systat’, ‘telnet’, ‘tftp_u’, ‘tim_i’, ‘time’, ‘urh_i’, ‘urp_i’, ‘uucp’, ‘uucp_path’, ‘vmnet’, ‘whois’, ‘X11′, ‘Z39_50′。

(4)flag. 连接正常或错误的状态,离散类型,共11种。’OTH’, ‘REJ’, ‘RSTO’, ‘RSTOS0′, ‘RSTR’, ‘S0′, ‘S1′, ‘S2′, ‘S3′, ‘SF’, ‘SH’。它表示该连接是否按照协议要求开始或完成。例如SF表示连接正常建立并终止;S0表示只接到了SYN请求数据包,而没有后面的SYN/ACK。其中SF表示正常,其他10种都是error。

(5)src_bytes. 从源主机到目标主机的数据的字节数,连续类型,范围是 [0, 1379963888]。

(6)dst_bytes. 从目标主机到源主机的数据的字节数,连续类型,范围是 [0. 1309937401]。

(7)land. 若连接来自/送达同一个主机/端口则为1,否则为0,离散类型,0或1。

(8)wrong_fragment. 错误分段的数量,连续类型,范围是 [0, 3]。

(9)urgent. 加急包的个数,连续类型,范围是[0, 14]。

2. TCP连接的内容特征(共13种)10-22

对于U2R和R2L之类的攻击,由于它们不像DoS攻击那样在数据记录中具有频繁序列模式,而一般都是嵌入在数据包的数据负载里面,单一的数据包和正常连接没有什么区别。为了检测这类攻击,Wenke Lee等从数据内容里面抽取了部分可能反映入侵行为的内容特征,如登录失败的次数等。

(10)hot. 访问系统敏感文件和目录的次数,连续,范围是 [0, 101]。例如访问系统目录,建立或执行程序等。

(11)num_failed_logins. 登录尝试失败的次数。连续,[0, 5]。

(12)logged_in. 成功登录则为1,否则为0,离散,0或1。

(13)num_compromised. compromised条件(**)出现的次数,连续,[0, 7479]。

(14)root_shell. 若获得root shell 则为1,否则为0,离散,0或1。root_shell是指获得超级用户权限。

(15)su_attempted. 若出现”su root” 命令则为1,否则为0,离散,0或1。

(16)num_root. root用户访问次数,连续,[0, 7468]。

(17)num_file_creations. 文件创建操作的次数,连续,[0, 100]。

(18)num_shells. 使用shell命令的次数,连续,[0, 5]。

(19)num_access_files. 访问控制文件的次数,连续,[0, 9]。例如对 /etc/passwd 或 .rhosts 文件的访问。

(20)num_outbound_cmds. 一个FTP会话中出站连接的次数,连续,0。数据集中这一特征出现次数为0。

(21)is_hot_login.登录是否属于“hot”列表(***),是为1,否则为0,离散,0或1。例如超级用户或管理员登录。

(22)is_guest_login. 若是guest 登录则为1,否则为0,离散,0或1。

3. 基于时间的网络流量统计特征 (共9种,23~31)

由于网络攻击事件在时间上有很强的关联性,因此统计出当前连接记录与之前一段时间内的连接记录之间存在的某些联系,可以更好的反映连接之间的关系。这类特征又分为两种集合:一个是 “same host”特征,只观察在过去两秒内与当前连接有相同目标主机的连接,例如相同的连接数,在这些相同连接与当前连接有相同的服务的连接等等;另一个是 “same service”特征,只观察过去两秒内与当前连接有相同服务的连接,例如这样的连接有多少个,其中有多少出现SYN错误或者REJ错误。

(23)count. 过去两秒内,与当前连接具有相同的目标主机的连接数,连续,[0, 511]。

(24)srv_count. 过去两秒内,与当前连接具有相同服务的连接数,连续,[0, 511]。

(25)serror_rate. 过去两秒内,在与当前连接具有相同目标主机的连接中,出现“SYN” 错误的连接的百分比,连续,[0.00, 1.00]。

(26)srv_serror_rate. 过去两秒内,在与当前连接具有相同服务的连接中,出现“SYN” 错误的连接的百分比,连续,[0.00, 1.00]。

(27)rerror_rate. 过去两秒内,在与当前连接具有相同目标主机的连接中,出现“REJ” 错误的连接的百分比,连续,[0.00, 1.00]。

(28)srv_rerror_rate. 过去两秒内,在与当前连接具有相同服务的连接中,出现“REJ” 错误的连接的百分比,连续,[0.00, 1.00]。

(29)same_srv_rate. 过去两秒内,在与当前连接具有相同目标主机的连接中,与当前连接具有相同服务的连接的百分比,连续,[0.00, 1.00]。

(30)diff_srv_rate. 过去两秒内,在与当前连接具有相同目标主机的连接中,与当前连接具有不同服务的连接的百分比,连续,[0.00, 1.00]。

(31)srv_diff_host_rate. 过去两秒内,在与当前连接具有相同服务的连接中,与当前连接具有不同目标主机的连接的百分比,连续,[0.00, 1.00]。

注:这一大类特征中,23、25、27、29、30这5个特征是 “same host” 特征,前提都是与当前连接具有相同目标主机的连接;24、26、28、31这4个特征是 “same service” 特征,前提都是与当前连接具有相同服务的连接。

4. 基于主机的网络流量统计特征 (共10种,32~41)

基于时间的流量统计只是在过去两秒的范围内统计与当前连接之间的关系,而在实际入侵中,有些 Probing攻击使用慢速攻击模式来扫描主机或端口,当它们扫描的频率大于2秒的时候,基于时间的统计方法就无法从数据中找到关联。所以Wenke Lee等按照目标主机进行分类,使用一个具有100个连接的时间窗,统计当前连接之前100个连接记录中与当前连接具有相同目标主机的统计信息。

(32)dst_host_count. 前100个连接中,与当前连接具有相同目标主机的连接数,连续,[0, 255]。

(33)dst_host_srv_count. 前100个连接中,与当前连接具有相同目标主机相同服务的连接数,连续,[0, 255]。

(34)dst_host_same_srv_rate. 前100个连接中,与当前连接具有相同目标主机相同服务的连接所占的百分比,连续,[0.00, 1.00]。

(35)dst_host_diff_srv_rate. 前100个连接中,与当前连接具有相同目标主机不同服务的连接所占的百分比,连续,[0.00, 1.00]。

(36)dst_host_same_src_port_rate. 前100个连接中,与当前连接具有相同目标主机相同源端口的连接所占的百分比,连续,[0.00, 1.00]。

(37)dst_host_srv_diff_host_rate. 前100个连接中,与当前连接具有相同目标主机相同服务的连接中,与当前连接具有不同源主机的连接所占的百分比,连续,[0.00, 1.00]。

(38)dst_host_serror_rate. 前100个连接中,与当前连接具有相同目标主机的连接中,出现SYN错误的连接所占的百分比,连续,[0.00, 1.00]。

(39)dst_host_srv_serror_rate. 前100个连接中,与当前连接具有相同目标主机相同服务的连接中,出现SYN错误的连接所占的百分比,连续,[0.00, 1.00]。

(40)dst_host_rerror_rate. 前100个连接中,与当前连接具有相同目标主机的连接中,出现REJ错误的连接所占的百分比,连续,[0.00, 1.00]。

(41)dst_host_srv_rerror_rate. 前100个连接中,与当前连接具有相同目标主机相同服务的连接中,出现REJ错误的连接所占的百分比,连续,[0.00, 1.00]。

特征名描述类型
count过去的2秒内与当前连接有着相同的目的地址的连接连续
serror_rate出现SYN错误的连接次数连续
rerror_rate出现REJ错误的连接次数连续
same_srv_rate建立相同服务的连接次数连续
diff_srv_rate建立不同服务的连接次数连续
srv_count过去2秒时间内出现和当前连接服务相同的连接次数连续
srv_serror_rate出现SYN错误的连接次数连续
srv_rerror_rate出现REJ错误的连接次数连续
srv_diff_host_rate连接不相同主机的次数连续

样本分析

KDD99数据集总共由500万条记录构成,它还提供一个10%的训练子集和测试子集,它的样本类别分布表如下:

标签类别训练集(10%)测试集(Corrected)
39种攻击
0NORMAL9727860593
1PROBE41074166
ipsweep1247306
mscan/1053
nmap23184
portsweep1040354
saint/736
satan15891633
2DOS391458229853
apache2/794
back22031098
land219
mailbomb/5000
neptune10720158001
pod26487
processtable/759
smurf280790164091
teardrop97912
udpstorm/2
3U2R52228
buffer_overflow3022
httptunnel/158
loadmodule92
perl32
ps/16
rootkit1013
sqlattack/2
xterm/13
4R2L112616189
ftp_write83
guess_passwd534367
imap121
multihop718
named/17
phf42
sendmail/17
snmpgetattack/7741
snmpguess/2406
spy2/
warezclient1020/
warezmaster201602
worm/2
xlock/9
xsnoop/4

39种攻击

  1. 训练集和测试集分别为KDD99数据集中的10%训练样本和corrected 的测试样本;

  2. “/”表示该种攻击类型只在测试集(或训练集)中出现,而未在训练集(或测试集)中出现;

如上表,同DARPA98一样,KDD99将攻击类型分为4类,然后又细分为39小类,每一类代表一种攻击类型,类型名被标记在训练数据集每一行记录的最后一项。

从表中可以看出,训练集中共出现了22个攻击类型,而剩下的17种只在测试集中出现,这样设计的目的是检验分类器模型的泛化能力,对未知攻击类型的检测能力是评价入侵检测系统好坏的重要指标。

数值转化处理

(1)字符型特征转换为数值型特征(即符号型特征数值化)

#kdd99数据集预处理
#将kdd99符号型数据转化为数值型数据#coding:utf-8import numpy as np
import pandas as pd
import csv
import time
global label_list  #label_list为全局变量#定义kdd99数据预处理函数
def preHandel_data():source_file='kddcup.data_10_percent_corrected'handled_file='kddcup.data_10_percent_corrected.csv'data_file=open(handled_file,'w',newline='')     #python3.x中添加newline=''这一参数使写入的文件没有多余的空行with open(source_file,'r') as data_source:csv_reader=csv.reader(data_source)csv_writer=csv.writer(data_file)count=0   #记录数据的行数,初始化为0for row in csv_reader:temp_line=np.array(row)   #将每行数据存入temp_line数组里temp_line[1]=handleProtocol(row)   #将源文件行中3种协议类型转换成数字标识temp_line[2]=handleService(row)    #将源文件行中70种网络服务类型转换成数字标识temp_line[3]=handleFlag(row)       #将源文件行中11种网络连接状态转换成数字标识temp_line[41]=handleLabel(row)   #将源文件行中23种攻击类型转换成数字标识csv_writer.writerow(temp_line)count+=1#输出每行数据中所修改后的状态print(count,'status:',temp_line[1],temp_line[2],temp_line[3],temp_line[41])data_file.close()#将相应的非数字类型转换为数字标识即符号型数据转化为数值型数据
def find_index(x,y):return [i for i in range(len(y)) if y[i]==x]#定义将源文件行中3种协议类型转换成数字标识的函数
def handleProtocol(input):protocol_list=['tcp','udp','icmp']if input[1] in protocol_list:return find_index(input[1],protocol_list)[0]#定义将源文件行中70种网络服务类型转换成数字标识的函数
def handleService(input):service_list=['aol','auth','bgp','courier','csnet_ns','ctf','daytime','discard','domain','domain_u','echo','eco_i','ecr_i','efs','exec','finger','ftp','ftp_data','gopher','harvest','hostnames','http','http_2784','http_443','http_8001','imap4','IRC','iso_tsap','klogin','kshell','ldap','link','login','mtp','name','netbios_dgm','netbios_ns','netbios_ssn','netstat','nnsp','nntp','ntp_u','other','pm_dump','pop_2','pop_3','printer','private','red_i','remote_job','rje','shell','smtp','sql_net','ssh','sunrpc','supdup','systat','telnet','tftp_u','tim_i','time','urh_i','urp_i','uucp','uucp_path','vmnet','whois','X11','Z39_50']if input[2] in service_list:return find_index(input[2],service_list)[0]#定义将源文件行中11种网络连接状态转换成数字标识的函数
def handleFlag(input):flag_list=['OTH','REJ','RSTO','RSTOS0','RSTR','S0','S1','S2','S3','SF','SH']if input[3] in flag_list:return find_index(input[3],flag_list)[0]#定义将源文件行中攻击类型转换成数字标识的函数(训练集中共出现了22个攻击类型,而剩下的17种只在测试集中出现)
def handleLabel(input):#label_list=['normal.', 'buffer_overflow.', 'loadmodule.', 'perl.', 'neptune.', 'smurf.',# 'guess_passwd.', 'pod.', 'teardrop.', 'portsweep.', 'ipsweep.', 'land.', 'ftp_write.',# 'back.', 'imap.', 'satan.', 'phf.', 'nmap.', 'multihop.', 'warezmaster.', 'warezclient.',# 'spy.', 'rootkit.']global label_list  #在函数内部使用全局变量并修改它if input[41] in label_list:return find_index(input[41],label_list)[0]else:label_list.append(input[41])return find_index(input[41],label_list)[0]if __name__=='__main__':start_time=time.clock()global label_list   #声明一个全局变量的列表并初始化为空label_list=[]preHandel_data()end_time=time.clock()print("Running time:",(end_time-start_time))  #输出程序运行时间

(2)数值标准化

标准化

(3)数值归一化

归一化

(4)使用多种深度学习算法进行挖掘

数据集下载

70mb测试数据集(10%)下载(原格式+csv格式+xlsx格式)

700mb完整数据集下载(原格式)


http://www.ppmy.cn/news/946296.html

相关文章

L多样化

为了解决同质性攻击和背景知识攻击所带来的隐私泄露,Machanavajjhala等人提出了L-多样性(l-diversity)模型。简单来说,就是在公开的数据中,每一个等价类里的敏感属性必须具有多样性,即L-多样性保证每一个等价类里,敏感…

protell99 使用细节

细节1:protell99se 如果要把多张原理图,合在一起去画PCB,在保持多张原理图的架构下, 可按以下几步操作(A1,A2,A3 三步操作) A1: 可点Design->Create symbol form sheet 然后,选择要合并的原理图。 A2: 接下来生…

前端 Jenkins 自动化部署

由于公司使用自己搭建的 svn 服务器来进行代码管理,因此这里 Jenkins 是针对 svn 服务器来进行的配置,其实跟Git 配置基本一致。 在没有自动化部署前 之前项目每次修改之后都需要本地 ​​npm run build ​​一次手动发布到服务器上方便测试和产品查看…

自动登录harbor脚本

在CI/CD自动化流程中,或者执行shell脚本拉取本地镜像时,需要手工docker login本地仓库,十分的不方便,这里提供一个可以执行的sh脚本,自动登录本地的镜像仓库。 1、安装expect yum -y install expect 2、创建sh文件 vi…

毫米波雷达 AWR2243 开箱靓照

收到开发板已经有一段时间了,一直还没发帖,年尾单位各种项目验收,确实有点忙,以至于现在才来,好了,废话不多说了,首先来开箱看看我们的板子吧。 AWR2243 Boost是TI mmwave系列微波雷达开发板。…

简单介绍Radar(雷达)和Lidar(激光雷达)的区别

在看无人驾驶相关的资料时,发现关于radar和lidar分的很清,特在此做个简单的介绍以免混淆。 两者最本质的区别是在所用的波上,波长不通,Radar属于毫米波,通常是4-12mm; lidar用的是激光波长通常在900-1500nm之间。 Ra…

1、Ray简介和背景

1、Ray简介和背景 导航 1. 简介和背景2. Ray的基本概念和核心组件3. 分布式任务调度和依赖管理4. 对象存储和数据共享5. Actor模型和并发编程6. Ray的高级功能和扩展性7. 使用Ray构建分布式应用程序的案例研究8. Ray社区和资源9. 核心框架介绍

揭开雷达的面纱(科普) 天线

1、雷达天线 1.1、基本概念 波束宽度:波束辐射方向的功率降到最大值一半时,辐射方向之间角度。 图 1 波束宽度 天线增益:定向天线最大辐射功率与各向均匀辐射天线辐射功率之比。 图 2 天线增益 副瓣电平:常用副瓣最大值与主瓣最…