AI安全如何入門(中)
概述
數據和演算法就像黃油和麵包一樣缺一不可,很多時候數據比演算法還要重要。在AI安全剛入門階段,強烈建議使用常見的數據集進行測試,便於快速入門。剛入門階段就急不可耐的使用生產環境的數據往往會帶來很多意想不到的問題。本文將介紹常見的入門級安全相關的數據集,這些數據集來自現實環境同時千錘百鍊,經過人們的長期使用,並且有些已經幫助讀者進行了初步的特徵提取。
KDD 99數據
KDD是數據挖掘與知識發現的簡稱,KDD CUP是由ACM組織的年度競賽。KDD 99 數據集就是KDD競賽在1999年舉行時採用的數據集。
1998年美國國防部高級規劃署(DARPA)在MIT林肯實驗室進行了一項入侵檢測評估項目。林肯實驗室建立了模擬美國空軍區域網的一個網路環境,收集了9周時間的網路連接和系統審計數據,模擬各種用戶類型、各種不同的網路流量和攻擊手段,使它就像一個真實的網路環境。一個網路連接定義為在某個時間內從開始到結束的TCP數據包序列,並且在這段時間內,數據在預定義的協議下從源IP地址到目的IP地址的傳遞。每個網路連接被標記為正常(normal)或異常(attack),異常類型被細分為4大類共39種攻擊類型,其中22種攻擊類型出現在訓練集中,另有17種未知攻擊類型出現在測試集中。
KDD 99 攻擊類型詳情
攻擊大類
攻擊描述
攻擊名稱
dos
拒絕服務攻擊
Back
Land
Neptune
Pod
Smurf
Teardrop等
u2r
非法的本地超級用戶特權訪問
buffer_overflow
loadmodule
perl
rootkit等
r2l
來自遠程主機的未授權訪問
ftp_write
imap
multihop
phf
spy
warezclient
warezmaster等
probe
埠監視或掃描
Portsweep
Ipsweep
Satan等
隨後來自哥倫比亞大學的Sal Stolfo 教授和來自北卡羅萊納州立大學的 Wenke Lee 教授採用數據挖掘等技術對以上的數據集進行特徵分析和數據預處理,形成了一個新的數據集。該數據集用於1999年舉行的KDD競賽中,成為著名的KDD 99數據集。雖然年代有些久遠,但KDD99數據集仍然是網路入侵檢測領域的權威測試集,為基於計算智能的網路入侵檢測研究奠定基礎。
KDD99數據集中每個連接用41個特徵來描述:
0,udp,private,SF,105,146,0,0,0,0,0,0,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,255,254,1.00,0.01,0.00,0.00,0.00,0.00,0.00,0.00,normal.
0,udp,private,SF,105,146,0,0,0,0,0,0,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,255,254,1.00,0.01,0.00,0.00,0.00,0.00,0.00,0.00,normal.
0,udp,private,SF,105,146,0,0,0,0,0,0,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,255,254,1.00,0.01,0.00,0.00,0.00,0.00,0.00,0.00,normal.
0,udp,private,SF,105,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0.00,0.00,0.00,0.00,1.00,0.00,0.00,255,254,1.00,0.01,0.00,0.00,0.00,0.00,0.00,0.00,snmpgetattack.
上面是數據集中的3條記錄,以CSV格式寫成,加上最後的標記(label),一共有42項,其中前41項特徵分為4大類。
q TCP連接基本特徵,基本連接特徵包含了一些連接的基本屬性,如連續時間,協議類型,傳送的位元組數等
KDD 99 TCP連接基本特徵
特徵名稱
數據類型
內容描述
duration
連續類型
連接持續時間,以秒為單位,連續類型。範圍是[0, 58329]。它的定義是從TCP連接以3次握手建立算起,到FIN/ACK連接結束為止的時間;若為UDP協議類型,則將每個UDP數據包作為一條連接。數據集中出現大量的duration = 0 的情況,是因為該條連接的持續時間不足1秒
protocol_type
離散類型
協議類型,離散類型,共有3種:TCP, UDP, ICMP
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′
flag
離散類型
連接正常或錯誤的狀態,離散類型,共11種。』OTH』,『REJ』,『RSTO』,『RSTOS0′,『RSTR』,『S0′,『S1′,『S2′,『S3′,『SF』,『SH』。它表示該連接是否按照協議要求開始或完成。例如SF表示連接正常建立並終止;S0表示只接到了SYN請求數據包,而沒有後面的SYN/ACK。其中SF表示正常,其他10種都是error
src_bytes
連續類型
從源主機到目標主機的數據的位元組數,連續類型,範圍是 [0, 1379963888]
dst_bytes
連續類型
從目標主機到源主機的數據的位元組數,連續類型,範圍是 [0. 1309937401]
land
離散類型
若連接來自/送達同一個主機/埠則為1,否則為0,離散類型,0或1
wrong_fragment
連續類型
錯誤分段的數量,連續類型,範圍是 [0, 3]
urgent
連續類型
加急包的個數,連續類型,範圍是[0, 14]
q TCP連接的內容特徵
KDD 99 TCP連接內容特徵
特徵名稱
數據類型
內容描述
hot
連續類型
訪問系統敏感文件和目錄的次數,連續,範圍是[0, 101]。例如訪問系統目錄,建立或執行程序等
num_failed_logins
連續類型
登錄嘗試失敗的次數。連續,[0, 5]
logged_in
離散類型
成功登錄則為1,否則為0,離散,0或1
num_compromised
連續類型
compromised條件出現的次數,連續,[0, 7479]
root_shell
離散類型
若獲得root shell 則為1,否則為0,離散,0或1。root_shell是指獲得超級用戶許可權
su_attempted
離散類型
若出現」su root」命令則為1,否則為0,離散,0或1
num_root
連續類型
root用戶訪問次數,連續,[0, 7468]
num_file_creations
連續類型
文件創建操作的次數,連續,[0, 100]
num_shells
連續類型
使用shell命令的次數,連續,[0, 5]
num_access_files
連續類型
訪問控制文件的次數,連續,[0, 9]。例如對 /etc/passwd 或 .rhosts 文件的訪問
num_outbound_cmds
連續類型
一個FTP會話中出站連接的次數,連續,0。數據集中這一特徵出現次數為0
is_hot_login
離散類型
登錄是否屬於「hot」列表,是為1,否則為0,離散,0或1。例如超級用戶或管理員登錄
is_guest_login
離散類型
若是guest 登錄則為1,否則為0,離散,0或1
q 基於時間的網路流量統計特徵
KDD 99 基於時間的網路流量統計特徵
特徵名稱
數據類型
內容描述
count
連續類型
過去兩秒內,與當前連接具有相同的目標主機的連接數,連續,[0, 511]
srv_count
連續類型
過去兩秒內,與當前連接具有相同服務的連接數,連續,[0, 511]
serror_rate.
連續類型
過去兩秒內,在與當前連接具有相同目標主機的連接中,出現「SYN」錯誤的連接的百分比,連續,[0.00, 1.00]
srv_serror_rate
連續類型
過去兩秒內,在與當前連接具有相同服務的連接中,出現「SYN」錯誤的連接的百分比,連續,[0.00, 1.00]。
rerror_rate
連續類型
過去兩秒內,在與當前連接具有相同目標主機的連接中,出現「REJ」錯誤的連接的百分比,連續,[0.00, 1.00]
srv_rerror_rate
連續類型
過去兩秒內,在與當前連接具有相同服務的連接中,出現「REJ」錯誤的連接的百分比,連續,[0.00, 1.00]
same_srv_rate
連續類型
過去兩秒內,在與當前連接具有相同目標主機的連接中,與當前連接具有相同服務的連接的百分比,連續,[0.00, 1.00]
diff_srv_rate
連續類型
過去兩秒內,在與當前連接具有相同目標主機的連接中,與當前連接具有不同服務的連接的百分比,連續,[0.00, 1.00]。
rv_diff_host_rate
連續類型
過去兩秒內,在與當前連接具有相同服務的連接中,與當前連接具有不同目標主機的連接的百分比,連續,[0.00, 1.00]。
q 基於主機的網路流量統計特徵
KDD 99 基於主機的網路流量統計特徵
特徵名稱
數據類型
內容描述
dst_host_count
連續類型
前100個連接中,與當前連接具有相同目標主機的連接數,連續,[0, 255]
dst_host_srv_count
連續類型
前100個連接中,與當前連接具有相同目標主機相同服務的連接數,連續,[0, 255]
dst_host_same_srv_rate
連續類型
.前100個連接中,與當前連接具有相同目標主機相同服務的連接所佔的百分比,連續,[0.00, 1.00]
dst_host_diff_srv_rate
連續類型
前100個連接中,與當前連接具有相同目標主機不同服務的連接所佔的百分比,連續,[0.00, 1.00]
dst_host_same_src_port_rate
連續類型
前100個連接中,與當前連接具有相同目標主機相同源埠的連接所佔的百分比,連續,[0.00, 1.00]
dst_host_srv_diff_host_rate
連續類型
前100個連接中,與當前連接具有相同目標主機相同服務的連接中,與當前連接具有不同源主機的連接所佔的百分比,連續,[0.00, 1.00]
dst_host_serror_rate
連續類型
前100個連接中,與當前連接具有相同目標主機的連接中,出現SYN錯誤的連接所佔的百分比,連續,[0.00, 1.00]
dst_host_srv_serror_rate.
連續類型
前100個連接中,與當前連接具有相同目標主機相同服務的連接中,出現SYN錯誤的連接所佔的百分比,連續,[0.00, 1.00]
dst_host_rerror_rate
連續類型
前100個連接中,與當前連接具有相同目標主機的連接中,出現REJ錯誤的連接所佔的百分比,連續,[0.00, 1.00]
dst_host_srv_rerror_rate
連續類型
前100個連接中,與當前連接具有相同目標主機相同服務的連接中,出現REJ錯誤的連接所佔的百分比,連續,[0.00, 1.00]
HTTP DATASET CSIC 2010
HTTP DATASET CSIC 2010包含大量的標註過的針對web服務的36000個正常以及25000個攻擊請求,攻擊類型包括sql注入、緩衝區溢出、信息泄露、文件包含、xss等,被廣泛用於WAF類產品的功能評測。
正常請求格式為:
CSIC 2010正常請求示例
攻擊請求格式為:
CSIC 2010攻擊請求示例
SEA數據集
2001年Schonlau等人第一次將內部攻擊者分類成叛徒(Traitor)與偽裝者(Masquerader),其中叛徒指攻擊者來源於組織內部,本身是內部合法用戶,而偽裝者指外部攻擊者竊取了內部合法用戶的身份憑證,從而利用內部用戶身份實施內部攻擊。隨後該團隊構造了一個公開的檢測偽裝者攻擊的數據集SEA,該數據被廣泛用於內部偽裝者威脅檢測研究。
SEA數據集涵蓋70多個UNIX系統用戶的行為日誌,這些數據來自於UNIX系統acct機制記錄的用戶使用的命令。SEA數據集中每個用戶都採集了15000條命令,從用戶集合中隨機抽取50個用戶作為正常用戶,剩餘用戶的命令塊中隨機插入模擬命令作為內部偽裝者攻擊數據。SEA數據集中的用戶日誌類似於下面的命令序列:
{cpp, sh,cpp, sh, xrdb, mkpts...}
每個用戶的數據按照100命令長度分為150個塊,前三分之一數據塊用作訓練該用戶正常行為模型,剩餘三分之二數據塊隨機插入了測試用的惡意數據。SEA數據集中惡意數據的分布具有統計規律,任意給定一個測試集命令塊,其中含有惡意指令的概率為1%;而當一個命令塊中含有惡意指令,則後續命令塊也含有惡意指令的概率達到80%。可以看出SEA中的數據集將連續數據塊看作一個會話,只能模擬連續會話關聯的攻擊行為;此外由於缺乏用戶詳細個人信息(職位、許可權等)、數據維度單一(僅有命令信息)以及構造性(惡意數據由人工模擬)等因素,數據集在內部威脅檢測研究中作用有限。
Schonlau在他的個人網站http://www.schonlau.net/上發布了SEA數據集。
ADFA-LD數據集
ADFA-LD數據集是澳大利亞國防學院對外發布的一套主機級入侵檢測系統的數據集合,被廣泛應用與入侵檢測類產品的測試。該數據集包括Linux和Windows,記錄了系統調用數據,Gideon Creech為這個項目的負責人,項目主頁為:https://www.unsw.adfa.edu.au
ADFA-LD已經將各類系統調用完成了特徵化,並針對攻擊類型進行了標註,各種攻擊類型列舉如下:
ADFA-LD攻擊類型
攻擊類型
數據量
標註類型
Training
833
normal
Validation
4373
normal
Hydra-FTP
162
attack
Hydra-SSH
148
attack
Adduser
91
attack
Java-Meterpreter
125
attack
Meterpreter
75
attack
Webshell
118
attack
ADFA-LD的每個數據文件都獨立記錄了一段時間內的系統調用順序,每個系統調用都用數字編號,對應的編號舉例如下:
#define __NR_io_setup 0 __SYSCALL(__NR_io_setup, sys_io_setup)
#define __NR_io_destroy 1 __SYSCALL(__NR_io_destroy, sys_io_destroy)
#define __NR_io_submit 2 __SYSCALL(__NR_io_submit, sys_io_submit)
#define __NR_io_cancel 3 __SYSCALL(__NR_io_cancel, sys_io_cancel)
#define __NR_io_getevents 4 __SYSCALL(__NR_io_getevents,sys_io_getevents)
#define __NR_setxattr 5 __SYSCALL(__NR_setxattr, sys_setxattr)
#define __NR_lsetxattr 6 __SYSCALL(__NR_lsetxattr, sys_lsetxattr)
Movie Review Data
Movie Review Data數據集包含1000 條正面的評論和1000條負面評論,被廣泛應用於文本分類尤其是惡意評論識別方面。本書使用其最新的版本,polaritydataset v2.0。
Movie Review Data數據集記錄的都是原始評論數據,全部為英文,文本內容舉例如下:
films adapted from comic books have had plenty of success , whethertheyre about superheroes ( batman , superman , spawn ) , or geared toward kids( casper ) or the arthouse crowd ( ghost world ) , but theres never reallybeen a comic book like from hell before .
for starters , it was created by alan moore ( and eddie campbell ) ,who brought the medium to a whole new level in the mid 80s with a 12-partseries called the watchmen .
the film , however , is all good .
2 : 00 - r for strong violence/gore , sexuality , language and drugcontent
文件分別包含在neg和pos兩個文件夾下面,分別代表正面和負面評價。
Movie Review Dat文件夾結構
Movie Review Data對應網址為:http://www.cs.cornell.edu/People/pabo/movie-review-data/
SpamBase數據集
SpamBase是入門級的垃圾郵件分類訓練集。
SpamBase的數據不是原始的郵件內容而是已經特徵化的數據,對應的特徵是統計的關鍵字以及特殊符號的詞頻,一共58個屬性,其中最後一個是垃圾郵件的標記位。
特徵屬性舉例如下:
SpamBase數據特徵舉例
數據來源為4601封郵件,其中1813封為垃圾郵件,數據內容舉例如下:
0,0.64,0.64,0,0.32,0,0,0,0,0,0,0.64,0,0,0,0.32,0,1.29,1.93,0,0.96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.778,0,0,3.756,61,278,10.21,0.28,0.5,0,0.14,0.28,0.21,0.07,0,0.94,0.21,0.79,0.65,0.21,0.14,0.14,0.07,0.28,3.47,0,1.59,0,0.43,0.43,0,0,0,0,0,0,0,0,0,0,0,0,0.07,0,0,0,0,0,0,0,0,0,0,0,0,0.132,0,0.372,0.18,0.048,5.114,101,1028,1
SpamBase對應網址為:http://archive.ics.uci.edu/ml/datasets/Spambase
Enron數據集
Enron在2001年宣告破產之前,擁有約21000名僱員,曾是世界上最大的電力、天然氣以及電訊公司之一,2000年披露的營業額達1010億美元之巨。公司連續六年被財富雜誌評選為「美國最具創新精神公司」,然而真正使Enron公司在全世界聲名大噪的,卻是這個擁有上千億資產的公司2002年在幾周內破產,持續多年精心策劃、乃至制度化系統化的財務造假醜聞。安然歐洲分公司於2001年11月30日申請破產,美國本部於2日後同樣申請破產保護。但在其破產前的資產規模為498億美元,並有312億的沉重債務。過度膨脹的快速發展使其無法應對經濟環境的逆轉,而導致無法經營運作狀況的惡化,以破產結束企業。機器學習領域使用Enron公司的郵件歸檔來研究文檔分類、詞性標註、垃圾郵件識別等,由於Enron的郵件都是真實環境下的真實郵件,非常具有實際意義。本書使用的Enron數據集是經過人工標註過的正常郵件和垃圾郵件,屬於狹義的Enron數據集合,廣義的Enron數據集指全量真實且未被標記的Enron公司歸檔郵件。
Enron數據集合使用不同文件夾區分正常郵件和垃圾郵件。
Enron數據集文件夾結構
正常郵件內容舉例如下:
Subject: christmas baskets
the christmas baskets have been ordered .
we have ordered several baskets .
individual earth - sat freeze - notis
smith barney group baskets
rodney keys matt rodgers charlie
notis jon davis move
team
phillip randle chris hyde
harvey
freese
faclities
垃圾郵件內容舉例如下:
Subject: fw : this is the solution imentioned lsc
oo
thank you ,
your email address was obtained from apurchased list ,
reference # 2020 mid = 3300 . if you wishto unsubscribe
from this list , please click here andenter
your name into the remove box . if youhave previously unsubscribed
and are still receiving this message , youmay email our abuse
control center , or call 1 - 888 - 763 -2497 , or write us at : nospam ,
6484 coral way , miami , fl , 33155 ". 2002
web credit inc . all rights reserved .
Enron數據集對應的網址為:http://www2.aueb.gr/users/ion/data/enron-spam/
關於數據集的使用可以參考我AI安全三部曲的第一部《Web安全之機器學習入門》,京東鏈接為:
https://item.jd.com/12158965.html
推薦閱讀:
※這款物聯網設備的掃描器似乎沒什麼用?
※手把手教你在PE文件中植入無法檢測的後門(下)
※Chrome Trubofan 優化不當而導致的 RCE
※常見web攻擊
※金石人才培養計劃導師公布啦!——你敢說你不認識他們嗎?!