KDD CUP99數據集

背景知識

KDD是數據挖掘與知識發現(Data Mining and Knowledge Discovery)的簡稱,KDD CUP是由ACM(Association for Computing Machiner)的 SIGKDD(Special Interest Group on Knowledge Discovery and Data Mining)組織的年度競賽。競賽主頁在這裏

下面是歷屆KDDCUP的題目:

KDD-Cup 2008, Breast cancer
KDD-Cup 2007, Consumer recommendations
KDD-Cup 2006, Pulmonary embolisms detection from image data
KDD-Cup 2005, Internet user search query categorization
KDD-Cup 2004, Particle physics; plus Protein homology prediction
KDD-Cup 2003, Network mining and usage log analysis
KDD-Cup 2002, BioMed document; plus Gene role classification
KDD-Cup 2001, Molecular bioactivity; plus Protein locale prediction.
KDD-Cup 2000, Online retailer website clickstream analysis
KDD-Cup 1999, Computer network intrusion detection
KDD-Cup 1998, Direct marketing for profit optimization
KDD-Cup 1997, Direct marketing for lift curve optimization

 

”KDD CUP 99 dataset ”就是KDD競賽在1999年舉行時採用的數據集。從這裏下載KDD99數據集。

 

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種未知攻擊類型出現在測試集中。

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等。

 

 

 

隨後來自哥倫比亞大學的Sal Stolfo 教授和來自北卡羅萊納州立大學的 Wenke Lee 教授採用數據挖掘等技術對以上的數據集進行特徵分析和數據預處理,形成了一個新的數據集。該數據集用於1999年舉行的KDD CUP競賽中,成爲著名的KDD99數據集。雖然年代有些久遠,但KDD99數據集仍然是網絡入侵檢測領域的事實Benckmark,爲基於計算智能的網絡入侵檢測研究奠定基礎。

 

數據特徵描述

 

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連接基本特徵(共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種)

對於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]。

 

樣本分析

 

前面提到KDD99數據集是由DARPA98數據集經過數據挖掘和預處理後得到的。但KDD99與DARPA98並不是一一對應的,Wende Lee等人在處理原始連接數據時將部分重複數據去除,例如進行DoS攻擊時產生大量相同的連接記錄,就只取攻擊過程中5分鐘內的連接記錄作爲該攻擊類型的數據集。同時,也會隨機抽取正常(normal)數據連接作爲正常數據集。

KDD99數據集總共由500萬條記錄構成,它還提供一個10%的訓練子集和測試子集,它的樣本類別分佈表如下:

標籤 類別 訓練集(10%) 測試集(Corrected)
  39種攻擊
0 NORMAL 97278 60593
1 PROBE 4107 4166
  ipsweep 1247 306
  mscan / 1053
  nmap 231 84
  portsweep 1040 354
  saint / 736
  satan 1589 1633
2 DOS 391458 229853
  apache2 / 794
  back 2203 1098
  land 21 9
  mailbomb / 5000
  neptune 107201 58001
  pod 264 87
  processtable / 759
  smurf 280790 164091
  teardrop 979 12
  udpstorm / 2
3 U2R 52 228
  buffer_overflow 30 22
  httptunnel / 158
  loadmodule 9 2
  perl 3 2
  ps / 16
  rootkit 10 13
  sqlattack / 2
  xterm / 13
4 R2L 1126 16189
  ftp_write 8 3
  guess_passwd 53 4367
  imap 12 1
  multihop 7 18
  named / 17
  phf 4 2
  sendmail / 17
  snmpgetattack / 7741
  snmpguess / 2406
  spy 2 /
  warezclient 1020 /
  warezmaster 20 1602
  worm / 2
  xlock / 9
  xsnoop / 4

1. 訓練集和測試集分別爲KDD99數據集中的10%訓練樣本和corrected 的測試樣本;
2. “/”表示該種攻擊類型只在測試集(或訓練集)中出現,而未在訓練集(或測試集)中出現;

如上表,同DARPA98一樣,KDD99將攻擊類型分爲4類,然後又細分爲39小類,每一類代表一種攻擊類型,類型名被標記在訓練數據集每一行記錄的最後一項。

從表中可以看出,訓練集中共出現了22個攻擊類型,而剩下的17種只在測試集中出現,這樣設計的目的是檢驗分類器模型的泛化能力,對未知攻擊類型的檢測能力是評價入侵檢測系統好壞的重要指標。

 

應用和評價

 

 

KDD 99數據集的應用

建立KDD99數據集的目的就是爲入侵檢測系統提供統一的性能評價基準,它的應用一般侷限在學術範圍內,用來檢驗入侵檢測算法的好壞。

入侵檢測的方法從根本上講就是設計一個分類器,能將數據流中的正常與異常數據區分出來,從而實現對攻擊行爲的報警。通常的,我們將數據集中的的10%訓練集來訓練分類器,然後用corrected測試集測試分類器性能,這個分類器可以是基於貝葉斯的、決策樹的、神經網絡的或者是支持向量機的。有關分類器的設計,請自行google相關文獻。

特徵選擇是KDD99數據集的另一個主要應用。KDD99數據集中,每個連接有41個特徵,對於一個分類器來說,要從這麼多特徵中提取規則是費時且不精確的,這體現在一些無關或冗餘的特徵往往會降低分類器模型的檢測精度和速度。而且對於從原始的tcpdump數據中提取特徵這一過程,也將是困難和費時的,這對於在線入侵檢測系統是致命的。因此去除冗餘特徵或不重要特徵,對於提高分類器訓練速度和檢測精度來說,是必要的。要說明的是對於不同的分類器來說,最優的特徵子集可以是不同的。關於特徵選擇,以後寫一篇文章詳細介紹下。

KDD 99數據集的評價

前面說過,KDD 99數據集是入侵檢測領域的事實Benchmark,爲基於計算智能的網絡入侵檢測研究奠定了基礎,從那以後很多學者開始研究入侵檢測算法,當然不能不提到衆所周知、臭名昭著的“功夫網”。實際上“功夫網”就是一個大規模的入侵檢測系統,科技這把雙刃劍在讓我們遠離惡意攻擊的同時,也讓我們離真相越來越遠。

不評論某牆,話說KDD99從1999年創建到2010年現在也有11個年頭了,因爲是98年做的實驗,所以還得加1年,12年。12年過去,當年的實驗條件和攻擊手段放到今天早已過時,而且從原來的網絡層攻擊進化爲針對應用層的攻擊,例如跨站腳本、數據庫注入等等(當然,針對應用層攻擊自有新的解決方案)。你可以說,要解決這個問題,重新做一遍98年那個實驗,用新的設備新的攻擊手段,產生新的數據集不就行了嗎?事實是據我所知還沒有學術組織公開新的數據集,安全軟件公司裏肯定有足夠的數據庫,當然,人家是不會共享出來的,就靠這個賺錢了唄。另一個解決辦法是你自己搭建網絡環境,自己做實驗,就是累點,當然可行。

暫且不管數據新舊,KDD99數據集存在的一些原生的缺陷卻不能被忽略。這裏給出幾篇介紹KDD99缺陷的文獻,供大家參考:

[1] The 1998 Lincoln Laboratory IDS Evaluation A Critique. by John McHugh

[2] Testing Intrusion Detection Systems: A Critique of the 1998 and 1999 DARPA Intrusion Detection System Evaluations as Performed by Lincoln Laboratory. by John McHugh

[3] The Comparison of IP Networks. by ST Brugger

[4] KDD Cup ’99 dataset (Network Intrusion) considered harmful. by ST Brugger

 

鄭重聲明

本文轉載自XiFage's Blog
本文鏈接地址: http://xifage.com/kdd-cup-99-dataset-5/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章