1. 程式人生 > >基於系統調用的系統異常檢測的可用數據集總結

基於系統調用的系統異常檢測的可用數據集總結

mcal 對數 ada 計算機系 要求 分享 chm .cn 時延

因為我主要研究的是通過監控系統調用進而判斷系統是否異常,所以最近在整理關於系統異常檢測可用的數據集。目前搜集到的數據集主要有UNM,ADFA等。

(一)UNM Dataset

  • UNM數據集是新墨西哥大學為了研究入侵免疫系統而采集的數據集。該網站的主頁是這樣的:

技術分享圖片

  下載的地址是:https://www.cs.unm.edu/~immsec/systemcalls.htm  

  UNM數據集主要包含在活躍進程下系統調用的若幹數據集。 這些進程主要包括守護進程以及那些不是守護進程的應用進程(這些應用程序在大小和復雜程度上分布廣泛),還包括了不同種類的入侵(緩沖區溢出,符號鏈接攻擊,木馬程序),其中也包括了特權程序,因為這些程序也是可以引起潛在的嚴重威脅。

  正常數據有”靜態“和”動態“之分。靜態追蹤通過運行準備好的腳本,進而在成品環境下收集數據。選擇程序選項完全是為了執行程序,而不是為了滿足任何實際用戶的要求。實時正常數據是在計算機系統成品正常使用期間收集的程序的跟蹤。

  在某些情況下,我們從多個位置和/或多個版本的程序中獲取同一程序的數據。每一個都是不同的數據集;來自一個集合的正常跟蹤可能與來自另一個集合的正常跟蹤大不相同。在一個位置或程序的某個版本收集的入侵不應該與來自不同集合的正常數據進行比較。

  每個跟蹤是單個進程從執行開始到結束發出的系統調用的列表。由於程序復雜性的差異以及一些跟蹤是守護進程而另一些不是,所以跟蹤長度差異很大。

  下面是每個程序數據集描述的鏈接。每個跟蹤文件(*.int)列出一對數字,每行一對。一對中的第一個數字是執行進程的PID,第二個數字是表示系統調用的系統調用號。註意,在一個文件中可能有多個進程,它們可能是交錯的。

  系統調用號和實際系統調用名稱之間的映射在文件中系統內核文件中給出。由於使用了各種跟蹤包和不同型號的操作系統,所以並非所有程序都使用相同的映射文件。單獨的程序頁指示哪種映射是適當的。每個映射文件只是一個系統調用名稱列表,其中每個名稱的行號表示用於該系統調用的編號。行號從0開始。

  我們使用了一種叫做“序列時延嵌入”(stide)的方法來建模數據。在訓練階段,stide構建一個數據庫,其中包含跟蹤中出現的所有預定固定長度的惟一的、連續的系統調用序列。在測試期間,stide將新跟蹤中的序列與數據庫中的序列進行比較,並報告一個異常度量,指出新跟蹤與常規訓練數據的差異有多大。

  • DRAFT: User Documentation for the STIDE software package

  目前該方法已被新墨西哥大學的學生Steve Hofmeyr開發成一款軟件。他是新墨西哥大學計算機科學系的一名研究生,是將免疫學的思想應用於計算機安全問題研究項目的一部分。特別是,STIDE是通過識別入侵時可能創建的異常的系統調用序列來幫助檢測入侵的。在這種情況下,被考慮的時間序列由單個進程進行的系統調用組成。我們首先記錄正常行為模型,然後使用STIDE將連續的系統調用流劃分為給定長度的序列,並將他們存儲在數據庫中。隨後,當我們想知道是否攻擊了同一個程序的另一個實例時,我們記錄進程生成的系統滴用,並將使用STIDE將系統調用的結果序列與正常序列的數據庫進行比較。

  實際上,因為可用系統調用追蹤機制,對我們來說,更容易記錄運行在同一時間的若幹進程的系統調用。STIDE就是為了處理這種情況而設計的。它可以同時加工多個交織的時間序列,僅僅需要在輸入流中每個元素之前都有一個標識符指定它來自哪個系列。在STIDE中,這個標識符是進程ID。

  STIDE分析新數據與現有數據庫一致性信息最簡單的方法是報告異常序列的數量,即,表示輸入中不存在於數據庫中的序列的數量。

  它還可以報告最小漢明距離(輕量級)。給定一個來自數據流的序列和一個來自數據庫的序列,我們可以計算不同條目的數量得到兩個序列之間的漢明距離。輸入序列與數據庫中所有序列之間的最小漢明距離就是輸入序列的最小漢明距離。

  最後一個選項是,他可以報告一個“本地幀數”。當一個過程被利用時,可能會有一個短時間內異常序列的百分比要高得多。雖然在長期運行過程中出現的10個異常可能不會引起關註,但在這30個序列中出現的10個異常可能會引起關註。因此,觀察有多少異常是有用的。序列的數量被認為是“本地”的另一個稱為大小的局部性幀。在這種模式下,STIDE報告它在任何局域框架中發現額罪大量的一異常。

  輸入數據由待分析的時間序列組成。它是從標準輸入讀取的。它應該是一系列正整數對,每行一對,其中第一個整數標識數據流,第二個整數是數據流的元素。數據流的末尾可以由文件的末尾指定,也可以由數字-1的出現指定為流標識符。在我們的工作中,流標識符是進程標識號(PID),數據流的元素是系統調用號。

(二)FADA Dataset

  Github上發現的項目,使用LSTM長短期記憶網絡對系統進行基於系統調用的異常檢測的例子。ADFA數據集是澳大利亞國防學院(縮寫為ADFA)對外發布的一套主機級入侵檢測系統的數據集合,被廣泛應用於入侵檢測類產品的測試。數據集內已經將各類系統調用完成了特征化,並針對攻擊類型進行了標註。該數據集包括Linux(ADFA-LD)和Windows(ADFA-WD)兩個OS平臺,分別記錄了各類系統調用次序。   ADFA數據集官方介紹及下載地址:https://www.unsw.adfa.edu.au/australian-centre-for-cyber-security/cybersecurity/ADFA-IDS-Datasets/     本文主要對其中的ADFA-LD數據集進行介紹。
  • ADFA-LD

  主機配置信息:

  1. 操作系統:Ubuntu Linux version 11.04
  2. Apache 2.2.17
  3. PHP 5.3.5
  4. FTP、SSH、MySQL14.14使用默認端口開啟服務。
  5. TikiWiki 8.1(一個基於web的協同工具)
    • 選擇這個版本的原因是因為它有一個已知的遠程php代碼註入漏洞,從而可以讓我們發起基於web的攻擊。

  這個配置合理概括了當前(ADFA數據集是2012年的一個數據集)市面上最常見的linux local服務器——提供文件共享、數據庫服務、遠程連接和web服務器的功能,同時也有一些小型的殘余漏洞。  在制作這個數據集的時候,配置人員已經非常小心仔細地考慮了滲透測試人員和黑客通常采用的方法,並在目標系統的脆弱性與現實主義之間進行了微妙的權衡。

  包含的攻擊類型有:

技術分享圖片

  那麽為什麽設置這些攻擊呢?

  密碼爆破(FTP AND SSH):前兩個攻擊類型代表了攻擊方嘗試在開放服務上暴力猜解密碼的系統序列。因為FTP和SSH是常用的服務,如果暴露於外部來源,它們就會經常受到攻擊。 因此,在這個數據集也包含了這樣的攻擊類型。

  添加新的超級用戶:在Linux系統中進行提權的常見方法之一。在該數據集中使用了客戶端側攻擊來實現添加新用戶的操作。攻擊者通過使用Metasploit將一個payload編碼為Linux可執行文件,然後在模擬社會工程攻擊中將這個可執行文件上傳到服務器。然後攻擊者就可以使用諸如包含在本地文件和模擬社會工程等技術來遠程或本地觸發這個註入。

  Java-Meterpreter:Meterpreter是免費的Metasploit框架所獨有的自定義的有效載荷。Metasploit是最受歡迎的開源黑客工具包,被安全界的人士廣泛使用。Meterpreter是增強的功能命令shell,極大地促進了目標系統的遠程妥協。TiKiWiKi漏洞用於上傳Java Meterpreter有效載荷的副本,該副本在執行時啟動了與攻擊者計算機的反向TCP連接。一旦shel建立,攻擊者就可以在主機上執行各種操作。類似地,使用社會工程等操作上傳有效載荷的linux可執行版本,也可以進行各種操作,這代表了Java版本的不同攻擊。

  C100 WebShell:使用基於PHP的遠程文件包含漏洞來上傳C100 WebShell,後者用於進一步破壞主機系統並升級權限。C100 WebShell是復雜的PHP代碼。通過web瀏覽器為攻擊者提供了非法的GUI界面,從而允許操作底層的操作系統。

  這種攻擊的集合代表了中級技能水平的黑客可能采用的攻擊方式。它利用所有可用的攻擊途徑,從低級密碼猜測到社會社會工程和基於web的攻擊到遠程攻擊,這是代表性的做法, 為IDS評估提供了現代化的攻擊手段。

參考文獻:

[1] https://baijiahao.baidu.com/s?id=1595426742680707340&wfr=spider&for=pc

[2] https://www.researchgate.net/post/What_are_anomaly_detection_benchmark_datasets

[3] https://www.cs.unm.edu/~immsec/systemcalls.htm

[4] https://www.zuozuovera.cn/archives/918/

基於系統調用的系統異常檢測的可用數據集總結