1. 程式人生 > >基於系統呼叫的系統異常檢測的可用資料集總結

基於系統呼叫的系統異常檢測的可用資料集總結

因為我主要研究的是通過監控系統呼叫進而判斷系統是否異常,所以最近在整理關於系統異常檢測可用的資料集。目前蒐集到的資料集主要有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/