來源:https://www.unb.ca/cic/datasets/ids-2018.html
https://github.com/ISCX/CICFlowMeter
注:通信安全機構(gòu)(CSE)與加拿大網(wǎng)絡(luò)安全研究所(CIC)合作項目
異常檢測因其具有檢測新攻擊的潛力莽鸿,一直是許多研究者關(guān)注的焦點。然而,由于這些系統(tǒng)在部署之前需要進行大量的測試、評估和調(diào)優(yōu),因此它在實際應(yīng)用程序中的應(yīng)用受到了系統(tǒng)復(fù)雜性的限制稿茉。將這些系統(tǒng)置于真實標記的網(wǎng)絡(luò)跟蹤之上弟晚,并使用一組全面而廣泛的入侵和異常行為,是測試和評估的最理想方法蛹稍。
這本身就是一個巨大的挑戰(zhàn),因為數(shù)據(jù)集的可用性是極其罕見的部服,因為一方面唆姐,許多這樣的數(shù)據(jù)集是內(nèi)部的,由于隱私問題而不能共享廓八,另一方面奉芦,其他數(shù)據(jù)集是高度匿名的,不能反映當(dāng)前的趨勢剧蹂,或者缺乏某些統(tǒng)計特征声功,所以還沒有一個完美的數(shù)據(jù)集。因此宠叼,研究人員必須求助于通常不是最優(yōu)的數(shù)據(jù)集先巴。隨著網(wǎng)絡(luò)行為和模式的變化和入侵的發(fā)展,從靜態(tài)和一次性的數(shù)據(jù)集轉(zhuǎn)向更動態(tài)的生成數(shù)據(jù)集變得非常必要冒冬,這些數(shù)據(jù)集不僅反映了當(dāng)時的流量組合和入侵伸蚯,而且是可修改的、可擴展的和可重現(xiàn)的简烤。
為了克服這些缺點剂邮,設(shè)計了一種系統(tǒng)的方法來生成數(shù)據(jù)集來分析、測試和評估入侵檢測系統(tǒng)横侦,重點是基于網(wǎng)絡(luò)的異常檢測器挥萌。本項目的主要目標是開發(fā)一種系統(tǒng)的方法,在創(chuàng)建包含網(wǎng)絡(luò)上所見事件和行為的抽象表示的用戶概要的基礎(chǔ)上枉侧,生成用于入侵檢測的多樣化和全面的基準數(shù)據(jù)集引瀑。這些概要文件將組合在一起,生成一組不同的數(shù)據(jù)集棵逊,每個數(shù)據(jù)集都具有一組獨特的特性伤疙,這些特性涵蓋了評估域的一部分。
最后的數(shù)據(jù)集包括七種不同的攻擊場景:暴力攻擊辆影、心臟出血、僵尸網(wǎng)絡(luò)黍特、DoS蛙讥、DDoS、Web攻擊和網(wǎng)絡(luò)內(nèi)部的滲透灭衷。攻擊基礎(chǔ)設(shè)施包括50臺機器次慢,受害者組織有5個部門,包括420臺機器和30臺服務(wù)器。數(shù)據(jù)集包括每個機器的捕獲網(wǎng)絡(luò)流量和系統(tǒng)日志迫像,以及使用CICFlowMeter-V3從捕獲的流量中提取的80個特征劈愚。
1. 介紹
在CSE-CIC-IDS2018 dataset中,我們使用profile的概念以系統(tǒng)的方式生成數(shù)據(jù)集闻妓,其中將包含應(yīng)用程序菌羽、協(xié)議或較低層網(wǎng)絡(luò)實體的入侵詳細描述和抽象分布模型。代理或人工操作員可以使用這些概要文件生成網(wǎng)絡(luò)上的事件由缆。由于生成概要文件的抽象性質(zhì)注祖,我們可以將它們應(yīng)用于具有不同拓撲結(jié)構(gòu)的各種網(wǎng)絡(luò)協(xié)議。概要文件可以一起用于為特定需求生成數(shù)據(jù)集均唉。我們將建立兩類不同的個人資料:
(1)B-profiles:使用各種機器學(xué)習(xí)和統(tǒng)計分析技術(shù)(如K-Means是晨、Random Forest、SVM和J48)封裝用戶的實體行為舔箭。封裝的特性包括協(xié)議的包大小罩缴、每個流的包數(shù)、有效負載中的某些模式层扶、有效負載的大小和協(xié)議的請求時間分布靴庆。在我們的測試環(huán)境中,將模擬以下協(xié)議:HTTPS怒医、HTTP炉抒、SMTP、POP3稚叹、IMAP焰薄、SSH和FTP。根據(jù)我們最初的觀察扒袖,大部分流量是HTTP和HTTPS塞茅。
(2)M-Profiles:試圖描述攻擊場景以一種明確的方式。在最簡單的情況下季率,人類可以解釋這些概要文件野瘦,然后執(zhí)行它們。理想情況下飒泻,將使用自治代理和編譯器來解釋和執(zhí)行這些場景鞭光。對于攻擊,我們考慮了六種不同的場景(表1):
(3)網(wǎng)絡(luò)內(nèi)部泄漏:
在此場景中泞遗,我們通過電子郵件向受害者發(fā)送惡意文件惰许,并利用應(yīng)用程序漏洞。成功利用后史辙,在受害者的計算機上執(zhí)行一個后門汹买,然后我們使用他的計算機掃描內(nèi)部網(wǎng)絡(luò)佩伤,尋找其他易受攻擊的盒子,如果可能的話利用它們晦毙。
(4)HTTP拒絕服務(wù):
HTTP拒絕服務(wù):在這個場景中生巡,我們使用Slowloris和LOIC作為主要工具,它們已經(jīng)被證明可以使用一臺攻擊機器完全訪問Web服務(wù)器见妒。Slowloris從建立到遠程服務(wù)器的完整TCP連接開始孤荣。該工具通過定期向服務(wù)器發(fā)送有效的、不完整的HTTP請求來保持連接打開徐鹤,以防止套接字關(guān)閉垃环。由于任何Web服務(wù)器提供連接的能力都是有限的,所以使用完所有套接字并不能建立其他連接只是時間問題返敬。此外遂庄,HOIC是另一個著名的應(yīng)用程序,它可以對網(wǎng)站發(fā)起DoS攻擊劲赠。
(5)web應(yīng)用程序攻擊的集合:
web應(yīng)用程序攻擊集合:在這個場景中涛目,我們使用了Damn Vulnerable web App (DVWA)作為我們的受害者web應(yīng)用程序,該應(yīng)用程序的開發(fā)目的是幫助安全專業(yè)人員測試他們的技能凛澎。在第一步中霹肝,我們通過web應(yīng)用程序漏洞掃描器掃描網(wǎng)站,然后對易受攻擊的網(wǎng)站進行不同類型的web攻擊塑煎,包括SQL注入沫换、命令注入和無限制的文件上傳。
(6)蠻力攻擊:
蠻力攻擊:蠻力攻擊對網(wǎng)絡(luò)非常常見最铁,因為它們傾向于使用弱用戶名和密碼組合來入侵帳戶讯赏。最后一個場景的設(shè)計目標是通過對主服務(wù)器運行字典暴力攻擊來獲取SSH和MySQL帳戶。
(7)最后更新攻擊:
最后更新攻擊:有一些基于一些著名的漏洞攻擊,可以進行在特定的時間(這些非凡的弱點有時影響數(shù)以百萬計的服務(wù)器或受害者,通常需要幾個月補丁所有脆弱的世界各地的計算機),其中最著名的是近年來Heartbleed冷尉。
重要的是要注意漱挎,概要文件需要一個基礎(chǔ)設(shè)施才能有效地使用。我們的測試平臺將由一些相互連接的Windows和基于Linux的工作站組成雀哨。對于Windows機器磕谅,我們將使用不同的服務(wù)包(因為每個包都有一組不同的已知漏洞),對于Linux機器雾棺,我們將使用Metasploit-able distribution膊夹,它是為被新的滲透測試人員攻擊而開發(fā)的。
2. 基礎(chǔ)設(shè)施和實現(xiàn)
2.1 B-Profile
為了產(chǎn)生良性的背景流量垢村,B-Profile被設(shè)計用來提取一組人類用戶的抽象行為割疾。它試圖用機器學(xué)習(xí)和統(tǒng)計分析技術(shù)來封裝用戶生成的網(wǎng)絡(luò)事件。封裝的特性包括協(xié)議的包大小分布嘉栓、每個流的包數(shù)宏榕、有效負載中的某些模式、有效負載大小和協(xié)議的請求時間分布侵佃。一旦從用戶派生出b - profile麻昼,代理(ic - benigngenerator)或人工操作員就可以使用它們在網(wǎng)絡(luò)上生成真實的良性事件。組織和研究人員可以使用這種方法輕松地生成真實的數(shù)據(jù)集;因此馋辈,不需要匿名數(shù)據(jù)集抚芦。
2.2 M-Profile
我們實現(xiàn)了七個攻擊場景。對于每種攻擊迈螟,我們都基于實現(xiàn)的網(wǎng)絡(luò)拓撲定義一個場景叉抡,并在目標網(wǎng)絡(luò)之外的一臺或多臺機器上執(zhí)行攻擊。圖1顯示了實現(xiàn)的網(wǎng)絡(luò)答毫,這是AWS計算平臺上常見的LAN網(wǎng)絡(luò)拓撲褥民。為了擁有與真實網(wǎng)絡(luò)相似的多種機器,我們安裝了5個子網(wǎng)絡(luò)洗搂,分別是研發(fā)部(Dep1)消返、管理部(Dep2)、技術(shù)部(Dep3)耘拇、秘書和運營部(Dep4)撵颊、IT部(Dep5)和服務(wù)器室。除了IT部門惫叛,我們?yōu)樗胁块T安裝了不同的MS Windows OSs (Windows 8.1和Windows 10)倡勇, IT部門的所有計算機都是Ubuntu。對于服務(wù)器室嘉涌,我們實現(xiàn)了不同的MS Windows服務(wù)器妻熊,如2012年和2016年。本節(jié)的其余部分將介紹七種攻擊場景和工具洛心。
2.2.1 蠻力攻擊
有很多工具可以進行強力攻擊和密碼破解固耘,比如Hydra、Medusa词身、Ncrack厅目、Metasploit模塊和Nmap NSE腳本。此外法严,還有一些用于密碼散列破解的工具损敷,如hashcat和hashpump。但是深啤,最全面的多線程工具之一是Patator拗馒,它是用Python編寫的,似乎比其他工具更可靠溯街、更靈活诱桂。它還可以將每個響應(yīng)保存在一個單獨的日志文件中洋丐,供以后查看。在這個數(shù)據(jù)集中挥等,我們使用兩個模塊友绝,攻擊者是Kali Linux機器上的FTP和SSH,受害者是Ubuntu 14.0系統(tǒng)肝劲。對于密碼列表迁客,我們使用一個包含9000萬個單詞的大字典。
2.2.2 Heartbleed攻擊
利用心臟出血最著名的工具之一是心臟水蛭辞槐。它可以掃描易受漏洞攻擊的系統(tǒng)掷漱,然后可以用來利用它們并過濾數(shù)據(jù)。一些重要的特點:
(1)關(guān)于目標是否脆弱的結(jié)論性/非結(jié)論性判斷
(2)批量/快速下載heartbleed數(shù)據(jù)到一個大文件中榄檬,使用多個線程進行離線處理
(3)自動檢索私鑰卜范,不需要其他步驟
(4)一些有限的IDS規(guī)避
(5)STARTTLS支持
(6)IPv6支持
(7)Tor / Socks5n代理支持
(8)廣泛連接診斷信息
(9)為了利用這個漏洞,我們編譯了OpenSSL version 1.0.1f丙号,這是一個脆弱的版本先朦。然后使用Heartleech檢索服務(wù)器的內(nèi)存。
2.2.3僵尸網(wǎng)絡(luò)
在這個數(shù)據(jù)集中犬缨,我們使用Zeus喳魏,它是一個特洛伊木馬惡意軟件包,運行在Microsoft Windows的不同版本上怀薛。雖然它可以用來執(zhí)行許多惡意和犯罪的任務(wù)刺彩,但它經(jīng)常被用來通過人在瀏覽器中的擊鍵記錄和表單抓取來竊取銀行信息。它也被用來安裝密碼柜勒索軟件枝恋。Zeus主要通過下載和網(wǎng)絡(luò)釣魚的方式傳播刽虹。此外拐辽,作為補充谆甜,我們使用戰(zhàn)神僵尸網(wǎng)絡(luò)梦鉴,這是一個開源僵尸網(wǎng)絡(luò),具有以下功能:
(1)遠程用于cmd . exe殼
(2)持久性
(3)文件上傳/下載
(4)截圖
(5)關(guān)鍵日志
在這個場景中十电,我們用兩個不同的僵尸網(wǎng)絡(luò)(Zeus和Ares)感染機器知押,并且每隔400秒我們就向僵尸請求屏幕截圖。
2.2.4拒絕服務(wù)
Slowloris是Robert Hansen發(fā)明的一種拒絕服務(wù)攻擊工具鹃骂,它允許一臺機器以最小的帶寬和對不相關(guān)的服務(wù)和端口的副作用來關(guān)閉另一臺機器的web服務(wù)器台盯。在這個場景中,我們使用一個基于Slowloris perl的工具來關(guān)閉web服務(wù)器畏线。
2.2.5分布式拒絕服務(wù)
High Orbit Ion Cannon静盅,通常縮寫為HOIC寝殴,是一個開源的網(wǎng)絡(luò)壓力測試和拒絕服務(wù)攻擊應(yīng)用程序蒿叠,使用BASIC編寫明垢,可以同時攻擊多達256個url。它被設(shè)計用來取代普拉托克斯技術(shù)公司開發(fā)的低軌道離子炮栈虚。在這種情況下袖外,我們使用免費的HOIC工具史隆,使用4臺不同的計算機進行DDoS攻擊魂务。
2.2.6網(wǎng)絡(luò)攻擊
在這項工作中,我們使用該死的脆弱的網(wǎng)絡(luò)應(yīng)用程序(DVWA)進行我們的攻擊泌射。DVWA是一個脆弱的PHP/MySQL web應(yīng)用程序粘姜。它的主要目標是幫助安全專業(yè)人員在法律環(huán)境中測試他們的技能和工具,幫助web開發(fā)人員更好地理解保護web應(yīng)用程序的過程熔酷,并幫助教師/學(xué)生在教室環(huán)境中教授/學(xué)習(xí)web應(yīng)用程序安全性孤紧。為了自動化XSS和蠻力部分中的攻擊,我們開發(fā)了一個帶有Selenium框架的自動化代碼拒秘。
2.2.7網(wǎng)絡(luò)內(nèi)部滲透
在這個場景中号显,應(yīng)該利用一個脆弱的應(yīng)用程序(如adobeacrobatreader9)。首先躺酒,受害者通過電子郵件收到惡意文件押蚤。然后,在成功利用Metasploit框架后羹应,將在受害者的計算機上執(zhí)行一個后門±康猓現(xiàn)在我們可以使用Nmap對受害者的網(wǎng)絡(luò)進行不同的攻擊,包括IP掃描园匹、全端口掃描和服務(wù)枚舉雳刺。
3.捕獲數(shù)據(jù)和最終數(shù)據(jù)集
基于上一節(jié)中選擇的所有攻擊和定義的場景,我們實現(xiàn)了基礎(chǔ)設(shè)施并執(zhí)行了攻擊場景裸违。表2顯示了攻擊列表掖桦、相關(guān)攻擊者和受害者IP、攻擊日期供汛、開始和結(jié)束時間枪汪。
表2:每日攻擊列表、機器ip紊馏、攻擊開始和結(jié)束時間(s)
3.特征提取
CICFlowMeter是一個用Java編寫的網(wǎng)絡(luò)流量生成器料饥,在選擇要計算的特性、添加新特性以及更好地控制流超時時間方面提供了更大的靈活性朱监。它產(chǎn)生雙向流(Biflow)岸啡,其中第一個數(shù)據(jù)包確定正向(源到目的地)和反向(目的地到源)的方向,因此在正向和反向分別計算了持續(xù)時間赫编、數(shù)據(jù)包數(shù)量巡蘸、字節(jié)數(shù)奋隶、數(shù)據(jù)包長度等83個統(tǒng)計特征。
應(yīng)用程序的輸出是CSV文件格式悦荒,為每個流標記了6列唯欣,分別是FlowID、SourceIP搬味、DestinationIP境氢、SourcePort、DestinationPort和具有80多個網(wǎng)絡(luò)流量特性的協(xié)議碰纬。通常TCP流在連接斷開時終止(通過FIN包)萍聊,UDP流通過流超時終止。流超時值可以由單獨的方案任意分配悦析,例如TCP和UDP都是600秒寿桨。CICFlowMeter-V3可以提取80多個特征,如下表所示:
表3:CICFlowMeter-V3提取的流量特征列表
(1)fl_dur
流持續(xù)時間
(2)tot_fw_pk(流出方向强戴?)
在正向上包的數(shù)量
(3)tot_bw_pk
在反向上包的數(shù)量
(4)tot_l_fw_pkt
正向數(shù)據(jù)包的總大小
(5)fw_pkt_l_max
包在正向上的最大大小
(6)fw_pkt_l_min
包在正向上的最小大小
(7)fw_pkt_l_avg
數(shù)據(jù)包在正向的平均大小
(8)fw_pkt_l_std
數(shù)據(jù)包正向標準偏差大小
(9)Bw_pkt_l_max
包在反向上的最大大小
(10)Bw_pkt_l_min
包在反向上的最小大小
(11)Bw_pkt_l_avg
數(shù)據(jù)包在反向的平均大小
(12)Bw_pkt_l_std
數(shù)據(jù)包反向標準偏差大小
(13)fl_byt_s
流字節(jié)率亭螟,即每秒傳輸?shù)臄?shù)據(jù)包字節(jié)數(shù)
(14)fl_pkt_s
流包率,即每秒傳輸?shù)臄?shù)據(jù)包數(shù)
(15)fl_iat_avg
兩個流之間的平均時間
(16)fl_iat_std
兩個流之間標準差
(17)fl_iat_max
兩個流之間的最大時間
(18)fl_iat_min
兩個流之間的最小時間
(19)fw_iat_tot
在正向發(fā)送的兩個包之間的總時間
(20)fw_iat_avg
在正向發(fā)送的兩個包之間的平均時間
(21)fw_iat_std
在正向發(fā)送的兩個數(shù)據(jù)包之間的標準偏差時間
(22)fw_iat_max
在正向發(fā)送的兩個包之間的最大時間
(23)fw_iat_min
在正向發(fā)送的兩個包之間的最小時間
(24)bw_iat_tot
反向發(fā)送的兩個包之間的總時間
(25)bw_iat_avg
反向發(fā)送的兩個數(shù)據(jù)包之間的平均時間
(26)bw_iat_std
反向發(fā)送的兩個數(shù)據(jù)包之間的標準偏差時間
(27)bw_iat_max
反向發(fā)送的兩個包之間的最大時間
(28)bw_iat_min
反向發(fā)送的兩個包之間的最小時間
(29)fw_psh_flag
在正向傳輸?shù)臄?shù)據(jù)包中設(shè)置PSH標志的次數(shù)(UDP為0)
(30)bw_psh_flag
在反向傳輸?shù)臄?shù)據(jù)包中設(shè)置PSH標志的次數(shù)(UDP為0)
(31)fw_urg_flag
在正向傳輸?shù)臄?shù)據(jù)包中設(shè)置URG標志的次數(shù)(UDP為0)
(32)bw_urg_flag
反方向數(shù)據(jù)包中設(shè)置URG標志的次數(shù)(UDP為0)
(33)fw_hdr_len
用于前向方向上的包頭的總字節(jié)數(shù)
(34)bw_hdr_len
用于后向方向上的包頭的總字節(jié)數(shù)
(35)fw_pkt_s
每秒前向包的數(shù)量
(36)bw_pkt_s
每秒后向包的數(shù)量
(37)pkt_len_min
流的最小長度
(38)pkt_len_max
流的最大長度
(39)pkt_len_avg
流的平均長度
(40)pkt_len_std
流長度的方差
(41)pkt_len_va
最小包到達間隔時間
(42)fin_cnt
帶有FIN的包數(shù)量
(43)syn_cnt
帶有SYN的包數(shù)量
(44)rst_cnt
帶有RST的包數(shù)量
(45)pst_cnt
帶有PUSH的包數(shù)量
(46)ack_cnt
帶有 ACK的包數(shù)量
(47)urg_cnt
帶有URG的包數(shù)量
(48)cwe_cnt
帶有CWE的包數(shù)量
(49)ECE
帶有ECE的包數(shù)量
(50)down_up_ratio
下載和上傳的比例
(51)pkt_size_avg
數(shù)據(jù)包的平均大小
(52)fw_seg_avg
觀察到的前向方向上數(shù)據(jù)包的平均大小
(53)bw_seg_avg
觀察到的后向方向上數(shù)據(jù)包的平均大小
(54)fw_byt_blk_avg
在正向上的平均字節(jié)數(shù)塊速率
(55)fw_pkt_blk_avg
在正向方向上數(shù)據(jù)包的平均數(shù)量
(56)fw_blk_rate_avg
在正向方向上平均bulk速率
(57)bw_byt_blk_avg
在反向上的平均字節(jié)數(shù)塊速率
(58)bw_pkt_blk_avg
在反向方向上數(shù)據(jù)包的平均數(shù)量
(59)bw_blk_rate_avg
在反向方向上平均bulk速率
(60)subfl_fw_pk
在正向子流中包的平均數(shù)量
(61)subfl_fw_byt
子流在正向中的平均字節(jié)數(shù)
(62)subfl_bw_pkt
反向子流中數(shù)據(jù)包的平均數(shù)量
(63)subfl_bw_byt
子流在反向中的平均字節(jié)數(shù)
(64)fw_win_byt
在正向的初始窗口中發(fā)送的字節(jié)數(shù)
(65)bw_win_byt
在反向的初始窗口中發(fā)送的字節(jié)數(shù)
(66)Fw_act_pkt
在正向方向上具有至少1字節(jié)TCP數(shù)據(jù)有效負載的包
(67)fw_seg_min
在正方向觀察到的最小segment尺寸
(68)atv_avg
流在空閑之前處于活動狀態(tài)的平均時間
(69)atv_std
流在空閑之前處于活動狀態(tài)的標準偏差時間
(70)atv_max
流在空閑之前處于活動狀態(tài)的最大時間
(71)atv_min
流空閑前激活的最小時間
(72)idl_avg
流在激活之前空閑的平均時間
(73)idl_std
流量在激活前處于空閑狀態(tài)的標準偏差時間
(74)idl_max
流在激活之前空閑的最大時間
(75)idl_min
流在激活之前空閑的最小時間