Professional Documents
Culture Documents
加速世界的研究。
可擴展、基於行為的惡意軟件集群
克萊門斯·赫勞舍克
XSS‑GUARD:精準動態防範跨站腳本攻擊
穆罕默德·濱田
入侵和惡意軟件檢測以及漏洞評估:第五屆國際會議,DI⋯
摩西·瓦爾迪
用於檢測惡意行為的分層架構
薩姆什·賈
Machine Translated by Google
可擴展、基於行為的惡意軟件集群
Ulrich Bayer 、Paolo Milani Comparetti 、Clemens Hlauschek 、Christopher Kruegel§和 Engin Kirda¶
維也納技術大學安全系統實驗室
{pmilani,ulli,haku}@seclab.tuwien.ac.at
抽象的 1 簡介
當今 Internet 上的主要威脅之一是惡意軟件,通常稱為惡意軟件。實際
上,
反惡意軟件公司收到數以千計的惡意軟件 大多數 Internet 安全問題都將惡意軟件作為其根本原因。例如,殭屍網絡通
每天都有樣品。為了處理這麼大的數量,一個數字 常
開發了自動化分析工具。這些工具 用於發送垃圾郵件和託管網絡釣魚網站
在受控環境中執行惡意程序 更難追踪和列入黑名單。惡意軟件來了
並生成總結計劃行動的報告。 有多種形式和變體,例如病毒,
當然,分析報告的問題仍然存在。最近,研究人員開始探索有助於識別樣本的 蠕蟲、殭屍網絡、rootkit、特洛伊木馬和拒絕服務工具。為了傳播,惡意軟件
自動聚類技術 利用瀏覽器和操作系統中的軟件漏洞,或使用社交工程技術誘騙用戶運行惡意
軟件
表現出類似行為的。這允許分析人員丟棄以前見過的樣本報告,而
代碼。
專注於新穎有趣的威脅。不幸的是,以前的技術不能很好地擴展並且經常失敗 反惡意軟件公司通常會收到數千
每天都有新的惡意軟件樣本。這些樣本是由發現可疑代碼的用戶提交的
概括觀察到的活動足以識別
相關的惡意軟件。 系統,由共享他們的其他反惡意軟件公司
樣本和組織(例如,MWCollect [5]、Shad owServer [7]、VirusTotal [9])
使用諸如
在本文中,我們提出了一種可擴展的聚類方法 蜜罐 [42] 收集惡意軟件。對於每個樣本,它是
識別和分組表現出類似行為的惡意軟件樣本。為此,我們首先進行動態分析 了解該程序可以執行的操作很重要
履行。這對於確定惡意軟件構成的威脅的類型和嚴重性是必要的。還有,這
獲取惡意程序的執行痕跡。這些
然後將執行跟踪推廣到行為配置文件中,這些配置文件可以更詳細地描述程 信息對於創建檢測簽名和
序的活動 拆除程序。在某些情況下,樣品可能會轉動
抽象術語。配置文件作為輸入到一個有效的 出來是無害的。此外,在許多情況下,惡意軟件可能會變成眾所周知的惡意軟
允許我們處理樣本集的聚類算法 件實例的變體。事實上,儘管惡意軟件可能仍然存在
這比以前的方法大一個數量級。我們已將我們的系統應用於現實世界的惡意
軟件集合。結果表明,我們的技術能夠識別和分組惡意軟件程序 同樣,它的簽名可能會因為惡意軟件作者使用簡單的混淆或多態而改變
1
Machine Translated by Google
將單個惡意軟件樣本分組到惡意軟件家族中並不是一個新想法, 我們系統的目標是聚集大量的
聚類和分類 基於其行為的惡意軟件樣本。也就是說,我們要
之前已經提出了方法 [13, 26, 找到給定惡意軟件程序集的分區
30、31、28]。然而,這些方法通常不 因此子集具有一些共同的特徵。如圖所示
可以很好地擴展並且對於惡意軟件集的大小來說太慢了 圖 1,對惡意軟件樣本進行聚類是一個多步驟過程。它由初始的動
反惡意軟件公司面臨。而且, 態惡意軟件分析組成
這些技術是不精確的,要么是因為它們的概念 階段,行為概況的後續提取,以及
相似性與程序的實際行為無關,也不是因為它不能很好地捕捉程序 最後的聚類階段。
的行為。 動態分析。聚類過程的第一步是自動分析惡意軟件樣本。為了
在這種情況下,不精確意味著將樣本放在
不同類型進入同一組或未能識別 為此,我們擴展了 ANUBIS,我們的系統
類似的惡意軟件程序。 自動化的、動態的惡意軟件分析[14]。這個系統是
在本文中,我們提出了一種新穎的聚類技術, 基於 Qemu [15],一個用於 PC 和
可以很好地擴展並產生比以前更精確的結果 英特爾 x86 架構。分析系統的工作原理是
方法。我們的技術基於動態分析 在仿真環境中執行二進製文件,生成
監控惡意軟件樣本執行情況的系統 此二進製文件調用的系統調用的跟踪。
受控環境。與許多以前的系統不同, 我們首先使用污點跟踪擴展了 ANUBIS。類似於之前工作中的
直接對系統調用跟踪等低級數據進行操作, 污染系統 [23, 37, 39],我們
我們豐富和概括收集的數據並總結 將(污點) 標籤附加到內存中某些有趣的字節
行為配置文件中惡意軟件樣本的行為。 並在它們被複製或以其他方式操縱時傳播這些標籤。我們的污點跟
這些配置文件根據操作系統 (OS) 對象和操作系統操作來表達惡意 踪系統建立在
軟件行為。而且, 在以前的原型 [37] 中使用的污點跟踪實現。雖然污點標籤的傳播
配置文件捕獲網絡活動的更詳細視圖 有效
以及惡意軟件程序使用來自 與 [37] 中的相同,污染系統的用途不同
環境。這使我們的系統能夠識別出現低級痕蹟的樣本之間的相似行 污染源。在我們的系統中,系統調用充當污點
為 來源。更準確地說,我們污染了所有系統調用的輸出參數和返回值。
非常不一樣。最後,我們根據他們的行為特徵對分析的樣本進行聚 同時,我們檢查
類。我們採用可擴展的 系統調用的任何參數是否被污染。這
2距離是
避免計算n的聚類算法 目標是確定程序如何使用它的信息
補間所有n 個樣本對,因此適用於對大型的真實世界惡意軟件集合 從操作系統獲取。
進行聚類。總結一下, 雖然污點跟踪本身的想法並不新鮮,但我們
本文的貢獻如下: 利用這些信息獲得一些新穎的,我
2
Machine Translated by Google
圖 1. 系統概覽。
能夠更好地捕捉惡意軟件程序行為的重要功能。例如,我們可以觀 兒子是系統調用跟踪可能會有很大差異,甚至
察程序何時使用GetDate系統調用的返回值 表現出相同行為的程序之間。例如,考慮讀取文件的不同方式:程
序 A 可能一次讀取 256 個字節,而程序 B 調用
在隨後的CreateFile調用中。這允許我們確定文件名取決於當前日
期和 讀取256 次,每次調用讀取 1 個字節。此外,它
每次惡意軟件執行都會發生變化。結果,文件名被適當地概括。此 很容易將讀取調用與其他獨立的系統調用交錯,以便系統調用跟踪
外,我們污染 發生變化。
可執行文件的全部代碼。這使我們能夠發現 為此,我們將系統調用跟踪抽象為一組
程序讀取自己的代碼段的情況。這個 操作系統對象,以及一組操作
有助於檢測重要的傳播模式,例如 (例如讀取、寫入、創建)
在這些對像上執行
通過網絡發送自身的蠕蟲或特洛伊木馬 對象。
將自身複製到 Windows 系統目錄中。最後, 一個 OS 對象代表一個資源,例如一個文件或
我們記錄程序控制流決策,這些決策基於 註冊表項,可以通過系統調用進行操作和查詢。例如,我們的行為
受污染的數據。這使我們能夠識別它們之間的相似之處 配置文件可能包括文件對象C:\Windows及其隨附的
執行相同日期檢查或嘗試的程序
關閉相同的防病毒軟件。 操作查詢目錄。操作系統操作是統一不同系統的系統調用的一般化
為了解決程序的網絡活動沒有被系統調用跟踪充分捕獲的問
題,我們 具有相似語義但函數簽名不同的調用(例如,系統調用
建立了一個網絡分析組件 NtCreateProcessEx和
網絡流量本身。問題是在系統調用層面,所有的網絡活動都是通過 NtCreateProcess都映射到相同的操作)。
調用來執行的 根據污染系統提供的信息,我們推斷出操作系統對象之間的依
到一個名為NtDeviceIo ControlFile的單個原生 API 函數‑ 只是 賴關係。例如,複製文件被表示為源文件 OS 對象和目標文件對象
它們的參數不同。理想的盟友,我們想知道發送了什麼電子郵件, 之間的依賴關係。依賴信息隱式捕獲順序
什麼
執行 HTTP 下載,IRC 對話
為此,我們的網絡分析組件利用 Bro [40] 並利用其功能 的某些操作。這很重要,因為我們不
明確考慮在特定操作系統對像上執行的操作系統操作的順序。原因
識別和解析應用層協議(例如 是行為概要不應該依賴於無關的順序。
HTTP、SMTP 和 IRC)。
分析步驟的輸出是執行跟踪 執行操作。此外,依賴關係有助於確定源自數據源的資源名稱
增加了污點信息。此跟踪列出所有系統調用及其參數值。而且,
其值在執行跟踪之間發生變化(例如隨機值或當前時間)。這些
它為每個參數提供污點信息。這種污點 信息讓我們
信息允許我們將一個系統調用的返回值(和輸出參數)
與後續調用 概括相應的操作系統對象名稱。
的輸入參數聯繫起來。 這一步的輸出是程序的抽象
執行跟踪,其中包含有關程序運行的操作系統對象的信息,以及對
行為概況。在這一步中,我們處理執行 像類型的信息
上一步提供的跟踪。更準確地說,對於 操作和依賴。這些抽像被稱為
每個樣本,我們提取準確的行為特徵 行為概況。
描述二進製文件的運行時活動並用作 可擴展的集群。在這一步中,我們對一組行為概況進行聚類,使得
輸入到我們的聚類算法。 表現出相似行為的樣本
與現有系統 [26, 31] 不同,我們的聚類算法不直接對系統調用 合併在同一個集群中。鑑於惡意軟件程序的數量迅速增加,很明顯
進行操作。雷亞爾 其中一個
3
Machine Translated by Google
聚類算法最重要的要求是 可愛。基於依賴性分析,可以識別這種執行特定的工件。例如,
可擴展性。必須可以聚集大量
惡意軟件,例如十萬個樣本,在合理的時間內。大多數聚類方法需要計算 知道文件名取決於當前時間
有助於刪除文件名作為一個特徵
所有點對之間的距離,這總是導致O(n 程序的行為。此外,污染的返回值
2
)。這個 Windows 函數GetTempFileName讓我們
可能導致系統需要三個小時來處理 400 進入我們可以識別臨時文件的位置
樣品[31]。 名字。
在本文中,我們建議使用近似的概率方法有效地解決聚類問題。
‧複製操作:污染使我們能夠識別數據
我們的聚類算法是基於局部敏感的 移動,例如復制數據的情況。這個
近似最近鄰問題( ‑NNS)。聚類是該技術的主要應用之一:LSH
它的代碼在網絡上。
可用於執行近似聚類,同時
僅計算點對之間的n 2/2距離的一小部分。利用 LSH 聚類,我們 污染源。雖然我們的行為特徵主要是
基於系統調用及其依賴關係,我們不僅僅關注原生 API 接口1 。相反,我們也
能夠為超過 75,000 個樣本的數據集計算近似的單鏈接層次聚類
包括幾個 Windows API 函數。這是不同的
不到三個小時。 來自以前的系統,這些系統要么在系統上運行
調用接口 [25, 39] 或執行整個系統的污點分析 [46]。在後一種情況下,污染
源通常是設備
3 動態分析 例如網卡或鍵盤。
Windows API 是用戶模式庫例程的大型集合,這些例程又調用本機 API
動態惡意軟件分析系統變得越來越流行,因為它們即使在混淆或自我修
函數
改代碼的情況下也能提供良好的分析結果,並且
必要時。考慮到 Windows API 的重要性有以下幾個原因:首先,某些功能由
4
Machine Translated by Google
內存區域。這些讀寫操作不會導致任何系統調用。因此,在當前的分 在下面的段落中,連續比較
析系統中 在我們的分析過程中,指令被合併為一個單一的指令。
例如 [1, 3, 6, 8],所有對內存映射文件的讀寫活動都不會被注意到。
但是,重要的是要添加 要檢測與污染值的比較,請執行以下操作
支持 Windows 部分對象獲取完整的 擴展是必要的:
程序操作的視圖。 表示。在 Qemu 中間語言中
為了跟踪對文件的間接寫入操作,我們 比較指令有兩個操作數,大小分別為
修改了負責寫入的函數 一個、兩個或四個字節。對於每個比較,我們可以檢查附加到兩個參數
我們仿真中的物理內存。每當過程 的字節(如果有的話) 的污點標籤。當存在污點標籤時,我們
寫入內存,我們檢查地址是否在
內存映射區域。如果是這種情況,我們將此操作報告為對相應映射文 可以確定係統調用和確切的參數,其中
件的寫入。跟踪內存映射文件中的讀取操作需要 從中檢索了相應的數據字節。基於
這個信息,我們也可以確定原始數據
每當程序將文件映射到其地址空間時,都會污染內存中的適當區域。 受污染字節的類型。這是可能的,因為 Windows 原生 API 頭文件聲
然而,視窗 明了所有系統調用和
不將文件內容加載到物理內存中 他們的論點的類型。根據數據類型,我們
在創建部分時。相反,Windows 推遲 將比較的操作數視為有符號/無符號
將文件(部分) 加載到物理內存中,直到 整數或字符串。還知道數據類型
訪問該區域中的虛擬地址的時間。 允許我們精確定位結構的確切成員。為了
因為我們的污染系統只能在 例如,我們不僅看到比較了值“6”
物理內存和 CPU 寄存器,我們必須等待 用struct SYSTEMTIME,但我們也可以確定
直到文件最終映射到物理內存中,我們才能對其進行污染。 該值與結構的wDay成員進行比較。
我們通過監控所有來解決這個問題 當數據結構更複雜時會出現一個問題
頁面錯誤處理程序的調用。頁面錯誤時 (例如,結構、字符串等)參與比較。在
處理程序引入作為內存映射一部分的頁面 在這種情況下,我們觀察到幾個連續的cmp指令
區域,我們在處理程序返回後污染頁面。 對數據結構的幾個字節進行操作。處理
在這種情況下,連續標籤上的連續比較是
3.2 控制流依賴 合併。此外,當比較相等時,一旦遇到第一個不同的字節,比較就終
止。在這些情況下,我們看不到完整的值
污點信息對於跟踪之間的依賴關係很有用
系統調用。但是,分析如何 程序實際比較。然而,完整的
受污染的數據由程序本身使用。進一步來說, 數據結構存在於計算機的主存儲器中。因此,
我們想確定涉及流程通過系統調用獲得的數據的控制流決策。有關此 當涉及字符串比較時,我們嘗試恢復
類控制流決策的信息揭示了許多 通過從主存儲器中讀取整個字符串。對此
最後,我們假設被比較的操作數標記了
關於程序的有趣方面。例如,它允許 字符串的開頭並檢查直到找到空字節。
我們通過觀察所有的比較來發現惡意軟件樣本可能希望終止的進程 我們記錄了兩種類型的比較
執行跟踪的一部分:標記值的比較
當程序遍歷運行列表時發生 (即,操作數的至少一個字節被污染)
過程。由於必須通過系統調用來檢索正在運行的進程列表,因此進程 一個未標記的值(稱為標籤值比較)和一個
名稱 一個標記值與另一個標記值的比較
這個系統調用返回被污染了。因此,我們知道 (稱為標籤標籤比較)。在這兩種情況下,我們都不
涉及檢索到的進程列表的所有比較 輸出標記(污染)數據的具體值,但
爭論。 此數據的來源。更確切地說,
對於污染數據,我們記錄函數名,函數
在 x86 架構上,存在許多用於比較兩個值的不同彙編程序指令。
幸運的是,在 Qemu 中間語言中,所有這些不同 參數,以及,如果適用,結構的名稱
將數據與成員名稱一起保存。這允許
比較指令(例如CMP、 CMPS、 SCAS)
映射到 我們來確定程序的哪些輸入用於比較。在標籤值比較的情況下,我們
相同的中間語言結構。這樣,我們可以 還學習了
通過在 Qemu 的中間語言之上構建我們的分析,輕鬆處理所有比較 程序檢查的具體值。
指令。指令前綴中的 REP 被正確處理為同一比較指令的連續執行。然 過濾。分析控制流依賴的一個重要部分是過濾掉不相關的。相比
而,作為前
指令發生非常頻繁,並且原始執行
5
Machine Translated by Google
惡意軟件樣本的網絡活動提供了對樣本行為的最重要和最典型的洞 當動態分析步驟完成對樣本的處理時,下一個任務是將增強的執行
察之一。因此,樣本網絡活動的分析在我們的方法中起著重要作用。 跟踪轉換為行為配置文件。如前所述,行為配置文件以更高的抽象級別
捕獲程序的操作。為此,我們以 OS 對象的形式對樣本的行為、對這些
對象執行的操作、OS 對象之間的依賴關係以及 OS 對象之間的比較進
環境。成功的網絡分析要求樣本能夠執行其已編程執行的網絡活動。當 行建模。對 mally 來說,行為概況P被定義為 8 元組
程序未能建立與郵件服務器的 TCP 連接時,動態分析無法觀察程序的
電子郵件活動。因此,作為第一步,我們在允許樣本執行其內置網絡活
動的環境中運行樣本。
操作系統對象。一個 OS 對象代表一種資源,例如文件或註冊表項,可
以通過系統調用對其進行操作和查詢。形式上,操作系統對像是以下形
式的元組:
6
Machine Translated by Google
用於將單個進程組合成一個組。 “網絡”
類別描述網絡對象,“線程”
表示線 操作系統操作 ::= (操作名稱,
程活動,“部分”
指的是內存映射 操作屬性?,
成功的?)
文件,並且“驅動程序”
捕獲的加載和卸載
一個操作必須有一個名字,它可能有一個或多個
Windows 設備驅動程序。 sync 類型抽象了所有同步活動,例如對信
提供有關操作的附加信息的屬性,並且它可能具有描述操作是否成功的值。
號量的操作
和互斥體,並且“服務”
包含代表的對象
視窗服務。 “隨機”
類型包括幾個
我們將系統調用映射到操作系統操作,目的是
隨機源,每個源都可以被程序用來生成隨機數。 “時間”
類型包括
從 API 特定的細節中抽像出來。例如,我們忽略一個進程是通過NtCreate
Process還是NtCreateProcessEx創建的,將這兩者統一起來
時間源,“信息”
只包含兩個對象。一
是對象信息可執行文件,它代表加載的
系統調用進入單個操作系統操作創建。我們的
可執行。另一個是info‑general,代表
映射函數只考慮最本質的系統
windows系統目錄和臨時目錄的路徑名等信息。
調用,例如用於讀取、寫入和創建的函數
操作系統對象。這允許我們從
許多不重要的細節。例如,我們忽略與 NT 的本地過程調用功能相關的所有
操作系統對 操作系統操作 功能,
像類型名稱 http 名稱屬性 因為這是一個未記錄的功能,無法通過 Windows API 獲得。目前,我們映射
網 服務器聯繫人 www.gson.com , 80 了 130 個原生
網 http請求 /down/s.htm
獲 支持 55 種操作系統操作的 API 和 Windows API 函數。
網 取 dns 解析器查詢 Type A , mx.gmx.net 對資源進行操作的系統調用通常具有
網 端口監聽器監聽 TCP , 6777 (句柄)
引用目標資源的參數。這個
網絡 smtp attmts 發送“fpw.exe” 操作系統需要知道一個資源
網絡 smtp 內容髮送“測試是的。” 應應用操作。我們利用這些把手
網絡 smtp subjs 發送“嗨” 將操作映射到適當的操作系統對象。有
少數情況下,邏輯上構成對對象的操作的函數沒有句柄參數
表 1. 示例網絡操作系統對象。
指定此對象。 NtQueryAttributes文件
例如,函數使用文件名而不是句柄
為了創建 OS 對象,我們在執行跟踪中搜索
指示它工作的文件對象。分配後
所有產生新操作系統資源的系統調用。例如,函數NtCreateFile創建新文件。
對 OS 對象的操作,我們的實現存儲了所有
一個對像在集合中的操作。結果,訂單
對於每個這樣的系統調用,我們提取對象名稱
操作系統操作無關緊要。這很重要,因為它
從參數列表中,推導出對像類型
很容易重新排序資源上的系統調用,而無需
類型的系統調用,然後創建一個新的操作系統對象。通常,本機 API 調用有一
改變程序的語義。因此,我們能夠
個參數,名為
通過忽略順序來概括我們的行為特徵
ObjectAttributes,可以直接翻譯成
的操作。系統調用依賴用於捕獲
對象名稱。在少數情況下,確定對象名稱更加困難。例如, NtCreateProcess
這些操作系統操作之間的順序,其中實際順序由數據依賴性暗示。此外,數
需要一個指向節對象的句柄參數(一個
對某個資源的操作在我們的
內存映射文件),而不是指定的參數
系統。這犧牲了一些精確度,但使行為特徵更普遍,因此更難規避
可執行文件的文件名。為了解決這個問題,我們
擴展了我們的系統調用記錄器來解析句柄
引入多餘的操作。
NT 內核對象並提供此信息。
行為概況示例。圖 2 顯示了一個
由於網絡活動不直接表示在
行為檔案的例子。請注意,雖然
在執行跟踪中,我們依靠網絡分析組件來提取虛擬網絡 OS 對象。根據觀察
此示例以 C 代碼顯示,我們的配置文件提取算法適用於執行跟踪。此示例顯
到的網絡流量類型,我們創建
示複製文件C:\sample.exe的代碼
不同種類的網絡對象。表 1 列出了一些示例網絡對象,以及它們對應的
通過內存映射到C:\Windows\sample.exe
源文件。可以看出,與數量無關
操作。
執行第 14 行中的寫操作的次數,
操作系統操作。操作系統操作是 寫操作在相應的行為配置文件中只出現一次。同樣值得注意的是, NtQuery
系統調用。正式地,操作定義為:
7
Machine Translated by Google
圖 2. 示例行為概況
第 6 行中的AttributesFile操作分配給 與設備驅動程序通信,包括網絡堆棧。
對象C:\Windows\sample.exe,雖然它沒有 可以識別與網絡相關的調用
使用句柄參數來引用其操作系統對象。 NtDeviceIoControlFile通過檢查它的兩個參數,句柄參數以及它的 IO 控制
當我們確定一個進程時,我們插入AfdSend
主要基於捕獲的網絡流量的過程。為了解決這個問題,我們對 調用NtDeviceIoControlFile發送數據。類似地,我們在接收到數據時插入
NtDeviceIoControl File函數的語義進行了部分逆向工程。 AfdReceive ,
NtDeviceIoControlFile是一個通用接口,允許用戶模式程序 當套接字綁定到特定端口號時為AfdBind ,當 TCP 連接建立時為
AfdConnect。四個人為調用的論點反映了
8
Machine Translated by Google
相關係統調用的污點信息。這 幸運的是,不能保證i的值很小
SocketHandle 參數允許我們將各個調用歸因於適當的網絡連接。 (實際上,迭代次數是n中的超多項式
在最壞的情況下[10])。此外,k 均值的準確性是有限的(解決方案只是局部
基於我們對對象及其依賴關係的表示,很容易找到特定於執行的工件。例 最優的),並且
如,我們識別隨機或臨時 必須先驗地指定集群的數量k 。
在這項工作中,我們採用局部敏感散列
通過檢查文件對象和隨機源之間是否存在依賴關係來確定文件名。如果這是 (LSH),由 Indyk 和 Motwani [29] 引入,用於計算我們的數據集的近似聚
類,需要
2
在這種情況下,我們不想將實際對象保留在 pro 文件中,因為每次執行都不 明顯小於n 距離計算。我們的團
同。因此,我們將具體對象名稱替換為佔位符標記 tering 算法將惡意軟件樣本集作為輸入
A = a1, .., an,其中ai ⊆ F, F是所有的集合
表示對象名稱的來源(例如臨時文件名的 TEM PORARY)。此外,我們附加 特徵。 LSH算法已被提出用於度量
兩點之間的相似性由下式定義的空間
計數器的值加一,直到對象名稱在此配置文件中變得唯一。當比較兩個都包含 幾個簡單函數之一,例如 Jaccard 索引 [16],或
對象的行為配置文件時 餘弦相似度[20]。在這項工作中,我們使用 Jaccard
指數作為衡量兩個樣本之間的相似性a和
臨時文件名,可以匹配這兩個對象。但是,我們必須避免pro 文件A的對象a1 b,定義為J(a, b) = |a ∩ b|/|a ∪ b|。相似度值
與配置文件B的對象b1匹配,而與該對象關聯的操作使其實際上更 J(a, b) = 1表示兩個樣本具有相同的
行為。而其他更複雜的相似函數,
例如歸一化壓縮距離 [13],可能更多
類似於配置文件B 的對象b2 。我們解決了這個問題 行為 pro 文件之間相似性的準確度量,選擇這個簡單的集合相似性度量可以
通過計算所有操作系統操作的校驗和,使用 讓我們
結果值作為新對象名稱的一部分。那 集群方法來利用 LSH 並擴展到
也就是說,執行特定的名稱被替換為新名稱 真實世界惡意軟件集合的大小。
<token><checksum><counter>的形式。這 在下面的 5.1 節中,我們解釋了我們如何映射
校驗和保證只有具有相同操作系統的對象 將行為概況轉化為一組合適的特徵
操作將在兩個不同的 pro 文件中接收相同的名稱,因此匹配。 對於 LSH。 5.2 節簡要解釋了 LSH 算法。
在 5.3 節中,我們討論瞭如何使用
控制流依賴。控制流依賴 LSH 算法來計算我們的惡意軟件樣本集的近似層次聚類。最後,在第 5.4 節
被翻譯成操作系統對象之間的比較。根據比較的類型,控制流相關性與一個或 中,我們討論了我們方法的漸近性能。
兩個 OS 對象相關聯。
標籤‑標籤比較涉及兩個 OS 對象(一個
對於每個操作數),而標籤值比較涉及 5.1 將配置文件轉換為特徵集
只有一個。要找到合適的操作系統資源,
使用標籤。也就是說,我們搜索操作系統操作 在我們運行聚類算法之前,我們有
創建了一個特定的標籤。然後,我們搜索對象 將每個行為配置文件轉換為一個特徵集。
操作關聯的。 非正式地,特徵是一個行為特徵
示例,例如“文件 xy 已創建”。我們使用以下算法來轉換行為概況P =
5 可擴展集群
(O, OP, Γ, Δ, CV, CL, ΘCmpV alue, ΘCmpLabel)成一個集合
特徵:對於每個對象oi ∈ O,並且對於每個分配的
在高維空間中對一組n個點進行聚類
opj ∈ OP|(oi , a) ∈ Γ,創建一個特徵:
是一項計算量大的任務。大多數聚類算法需要計算所有對之間的距離
局部最優。因此,計算複雜度是距離函數的O(nki)評估。不適合
fi = “深度|” + 名稱(oi1) + ”|” + 名稱(opi1)+
9
Machine Translated by Google
”
+” → + 名稱(oi2) + ”|” + 名稱(oi2) ‧從H中隨機選擇k個哈希函數h1, .., hk
=
對於每個標籤值比較θi ∈ ΘCmpV alue (cmp, o),我 ‧為每個a ∈ A計算lsh(a) = h1(a), .., hk(a)
們創建一個特徵:
‧根據樣本的 LSH 哈希對樣本進行排序
fi = “cmp值|” + 姓名(o) + ”|” + 名稱(cmp)
‧將具有相同 LSH 哈希的所有樣本對添加到
對於每個標籤‑標籤比較θi ∈ ΘCmpLabel = 小號
fi = ”
cmp 標籤|” + 姓名(o1)+ LSH 參數。對於給定的相似度閾值t,我們
” 必須選擇適當的k和l 值。對於一對
+” → + 名稱(o2) + ”|” + 名稱(cmp) p = (a, b)使得相似度(a, b) = v,我們有
l
此轉換步驟的輸出是一組特徵 P r[p ∈ S] = 1 ‑ (1 ‑ v ) = g(v)。因此,給定t,我們可以
捕獲樣本的行為特徵 選擇k和l使得g(t)接近1並且g(t/(1 + ))
一種適合聚類算法的形式。我們 很小,對於任何 > 0。也就是說, t是唯一的參數
然後丟棄樣本中唯一的所有特徵 需要選擇。對於t = 0.7的閾值,我們
不考慮聚類特徵時不發生
在至少一個其他樣本的特徵集中。這是因為 5.3 層次聚類
樣本的獨特特徵並不能幫助我們找到其他的
行為相似的樣本(即信息增益 局部敏感散列步驟的結果是一個集合
此功能非常低)。此外,我們的實驗表明 S,它是所有近對的真實集合的近似值
我們的聚類對選擇的魯棒性 T = {(a, b)|a, b ∈ A, J(a, b) > t}。因為只有 LSH
當我們丟棄這些獨特的異常值時,閾值t會提高。 計算一個近似值, S可能包含不相似的樣本對。要刪除那些,對於每一對a, b
10
Machine Translated by Google
樣本a的每個散列是O(|a|)。因此,散列步驟的總體複雜度為O(nkld),其 通過我們的工具以及它們為惡意軟件提供的洞察力
中d = 分析師。
avg(|a|), a ∈ A, 是特徵的平均數量
一個樣品。散列後, |S|相似函數必須是 6.1 質量
計算。
集合S是所有附近的真實集合的近似值 評估由以下機構產生的結果的質量
對T。因此,我們可能有假陰性(T ‑ S), 聚類算法本質上是一項艱鉅的任務。顯然,可以量化集群的數量,
和誤報(S ‑ T)。我們有|S| ≤ |T| + |S ‑ T|。
顯然, |T| < nc,其中c是最大簇大小 每個簇的平均樣本數,或相對
給定的閾值。不幸的是,我們無法提供假陽性比例|S ‑T|/|S|的理論界限。 聚類的所有成對距離的總和。或者,
可以隨機挑選幾個集群並手動驗證這些集群中的樣本是否相似。最好的
在不對分佈做一些假設的情況下
A 中的對之間的距離。然而,在實踐中, 然而,證明生成的聚類正確性的選項是將其與現有參考進行比較
值很小(在我們的實驗中低於0.19 )。所以,
相似度計算的數量受大小限制 聚類。不幸的是,惡意軟件樣本不存在這樣的參考聚類。
|T|的以及O(nc) 的複雜度。由於單個相似度計算為O(d),因此該計算複 因此,為了驗證我們的
雜度 聚類方法是有意義的,我們首先需要創建
步長為O(ncd)。最後,需要將S中的對排序為 參考聚類。
進行層次聚類。這一步是O(nc log(nc))。 參考聚類。要創建參考聚類,
對於大型數據集,相似性計算的成本O(ncd)占主導地位。請注意,雖 我們採取了以下方法:首先,我們得到一個集合
然在實踐中nc明顯小於n 在 2007 年 10 月 27 日至 1 月期間提交給 ANU BIS [1] 的 14,212 個惡
2
, 漸近性能沒有改善。原 意軟件樣本中
因是c仍然可以 2008 年 3 月 31 日。這些樣本由許多人提供
在最壞的情況下為O(n) 。例如,考慮一個微不足道的 安全組織和個人,跨越廣泛
所有n 個樣本都相同的數據集。顯然,對於這樣一個 來源範圍(例如 Web 感染、蜜罐、殭屍網絡監控、點對點系統和提取
對於任何t ,我們將有一個大小為n的單個集群(因此, c = n)。更一 的 URL)
般地,如果閾值 來自其他惡意軟件分析服務)。然後,我們掃描了
t太低,可能導致大多數樣品被濃縮 每個樣本都有六個不同的防病毒程序。為了
在幾個大集群中。但是,對於有意義的數據集 初始參考聚類,我們只選擇了那些樣本
和合理的t 值, nc明顯小於 大多數反病毒程序報告的
n 2 . 因此,使用 LSH 獲得的性能足以讓我們對大型的真實世界惡意軟 相同的惡意軟件系列(這要求我們在不同反病毒產品使用的不同標籤之
件數據進行聚類 間定義映射 ping)。這導致總共 2,658
集合,我們將在 6.3 節中展示。
另一方面,對於非常大的數據集,可能需要更激進的近似聚類技術 樣品。對於每個樣本,我們檢查了相應的
ANUBIS [1] 報告和手動更正的分類
僱用(以一定的準確性為代價),例如那些 問題。
在[27]中描述。在 [27] 中,LSH 用於生成 精確度和召回率。為了評估我們算法產生的聚類質量,我們將其與上述
近似近對|S|,但沒有相似度計算。一對(a, b) ∈ S未被證實在附近 參考聚類進行了比較。量化差異
計算相似度(a,b),但使用基於已經計算的哈希值的更快的近似方 在兩個聚類之間,我們引入了兩個指標,精確度和召回率。
法。
精度的目標是衡量一個聚類算法在多大程度上可以區分樣本
6 評價
不同的。也就是說,精度捕獲了一個聚類算法如何將不同類型的樣本分
配給不同的
為了驗證我們方法的有效性,我們使用了 集群。直觀地說,我們爭取每個集群的結果
我們的系統對真實世界的惡意軟件數據集進行聚類。在裡面 僅包含一種特定類型的元素。對於 mally,精度定義如下:假設我們有
下一節,我們討論生成的集群的質量。然後,在第 6.2 節中,我們將我們 一個
的解決方案與 參考聚類T = T1, T2, .., Tt具有t個聚類和一個
先前提出的聚類技術 [13, 31]。在第 6.3 節中,我們展示了跑步的性能 聚類C = C1, C2, .., Cc和c個聚類(對於樣本
測量 2
實際上,為一組惡意軟件樣本提供參考聚類
我們的原型在一個非常大的數據集上。最後,在第 6.4 節中,我們討論了 本身就是一個難題,主要是因為它需要人類的專業知識
生成的集群的一些示例 編譯這樣的聚類或確認現有結果的正確性。
11
Machine Translated by Google
0.8
Pj = max(|Cj ∩ T1|, |Cj ∩ T2|, .., |Cj ∩ Tt|)
整體精度值為: 0.6
標
指
群
集
P=
(P1 + P2 + .. + Pc)
0.4
n
除了精度之外,我們還使用召回率來衡量如何 0.2 精確
聚類算法可以識別相似的樣本。 記起
也就是說,召回率捕獲了算法將相同類型的樣本分配給同一集群的程度。顯 0
然,我們更喜歡 0 0.2 0.4 0.6 0.8 1
將一種類型的所有元素分配給的聚類
集群數
同一個集群。我們正式定義召回如下:假設我們有一個參考聚類T = T1,
T2, .. , Tt
圖 3. 準確率和召回率。
t個簇和一個簇C = C1, C2, .., Cc和c個簇。對於每個Tj ∈ T,我們計算一個集
群召回值
作為:
第 6.4 節,我們討論了一些有趣的、定性的
關於我們系統產生的聚類的觀察。
Rj = max(|C1 ∩ Tj |, |C2 ∩ Tj |, .., |Cc ∩ Tj |) 閾值選擇。相似度閾值
t確定聚類算法將兩個不同的配置文件視為相似的積極程度。因此,選擇
整體召回值為:
聚類結果。我們已經運行了我們的聚類算法 家族(即只有同一家族的相似變體
在 2,658 個樣本的參考集上。對於本次運行,我們選擇了t = 0.7 的相似性閾 應該聚類)。如前所述,混凝土
值。這個的價值 根據我們的經驗,選擇了t = 0.7的值
閾值是根據我們對小型惡意軟件樣本集的初步實驗經驗確定的 最初的小規模實驗。然而,選擇
t的正確值非常穩健。圖 3 顯示瞭如何
一百多個節目。在本節後面,我們將討論 準確率和召回率根據不同的選擇而有所不同
更詳細地考慮選擇適當閾值的注意事項。此外,我們將證明該算法是 噸。可以看到t ∈ [0.6, 0.9]的選擇範圍很廣
對精度和召回率都產生良好的結果。
在具體閾值舊值的選擇方面相當穩健。
6.2 比較評價
我們的系統產生了 87 個集群,而參考
聚類由 84 個聚類組成。對於我們的結果,我們得出了 0.984 的精度和 0.930 在上一節中,我們已經展示了我們的系統
的召回率。這表明我們的方法產生了一個聚類,即 進行了準確的聚類。然而,我們需要把
將這些數字與其他方法結合起來,以便能夠
非常接近參考集。卓越的精度 以更好地評估我們結果的質量。在本節中,我們
表明該系統能夠很好地區分 與 Bailey 等人介紹的當前最先進的聚類方法進行比較評估。 [13]。
不同的惡意軟件類別。召回表明,幾乎
所有案例中,同一類的樣本被分組在 此外,我們分析了我們的行為抽象的影響,並將我們的聚類與直接基於的聚
同一個集群。以下 6.2 節介紹了與其他聚類技術的定量比較。在 類進行了比較
關於系統調用跟踪 [31]。
12
Machine Translated by Google
貝利簡介。因此,此類配置文件仍然為空,或者
幾乎是空的。更麻煩的是,Bai ley 的方法在以下情況下會產生明顯更 表 3. 75K 樣本的運行時間。
差的結果
使用 Jaccard 指數作為相似度指標,而不是 與以前的工作相比,我們的原型顯示出顯著提高的性能。基於惡意
非傳染性疾病(第二行)。不幸的是,聚類算法 軟件分類
基於 NCD 不能利用 LSH 來避免計算所有n 在貝利等人的 NCD 上。 [13],所有的n 2/2距離
2
距離。因此,聚類方法 需要計算n 個樣本之間的值。此外,它
使用 Bailey‑profiles [13] 要么產生 sig 的結果 可以從
13
Machine Translated by Google
行為特徵相似性度量聚類最優閾值質量精確召回
Bailey‑profile [13] NCD 0.916 Bailey‑profile [13]精確的 0.75
Jaccard 指數0.801系統調用 [31] 0.979 0.935
精確的 0.63 0.971 0.825
Jaccard 指數0.656我們的簡介 精確的 Jaccard 指數0.959我們的簡介
0.19 0.874 0.750
Jaccard 指數0.959 精確的 0.61 0.977 0.981
LSH 0.60 0.979 0.980
表 2 不同聚類方法的比較評價。
14
Machine Translated by Google
只有兩個標記為“Keylogger.Ghostbot”
的樣本 當然,也有惡意軟件程序
由卡巴斯基病毒掃描程序。我們的動態分析發現該惡意軟件不斷檢查按鍵 我們的系統沒有產生正確的結果。一個常見的情況是樣本沒有顯示任何可疑
這告訴我們惡意軟件會尋找已知的防病毒軟件
Dr. Watson 調試器應用程序被執行,生成一個
和自動啟動註冊表值列表中的防火牆程序。
崩潰報告,並顯示一個彈出窗口詢問用戶
請注意,以上僅為摘錄。總的來說,
向 Microsoft 發送報告的權限。顯然,這種行為並非特定於惡意軟件家族,它
profile 列出了 98 個不同的程序名稱進行比較
會導致
針對NtEnumerateValueKey 的結果。我們也 錯誤分類。
有一個由大多數病毒掃描程序識別為“Mabezat”
的四個樣本組成的集群。我
們的
行為配置文件顯示它是一個文件感染者,它搜索 7 限制和未來的工作
用於本地硬盤上的可執行文件並感染它們。
這種特徵行為被正確識別並導致一個集群精確地捕獲了數據集中的所有四個
跟踪依賴。如前所述,限制
樣本。我們還發現,在
任何動態惡意軟件分析方法的最大特點是它依賴於跟踪。分析結果將僅基於
樣本在一次(或多次)
特定執行運行期間的行為。
程序正在搜索的控制流依賴項
Windows 用於臨時存儲計劃到的數據的目錄中的不同類型的文檔文件
不幸的是,某些惡意軟件的行為可能僅在特定條件下才會觸發。一個簡單的例
子
被寫入 CD。同樣,我們只顯示列表的一部分
比較。
基於觸發器的行為是一顆定時炸彈。也就是說,惡意軟件
僅在特定日期表現出惡意行為。
cmp_val|文件| 另一個例子是只有當它通過命令和控制通道接收到特定命令時才會執行惡意
C:\文檔和設置\用戶\本地 操作的機器人。此外,針對身份的惡意軟件
設置\應用程序數據\微軟\
\CD 刻錄\ 只有當用戶執行某些操作(例如登錄特定的銀行網站)
時,盜竊才可能表現出
NtQueryDirectoryFile‑FileInformation 某些行為。由於我們自動運行惡意軟件樣本
‑ 。TXT
在沒有人際互動的情況下,這種行為不會發生在
根據AVG[2]的病毒描述數據庫, 我們的痕跡。
惡意軟件程序檢查當前日期是否為 有趣的是,即使沒有觸發它們最重要的惡意行為,我們的聚類仍然可以成
大於 2012/10/16,如果是,則開始加密用戶 功地將相似的樣本分組,就像第 6.4 節中討論的 GBDi aler.J 集群的情況一
文件。我們的系統只能部分找到這個 樣。原因是
日期檢查。我們的簡介如下所示:
用於聚類的行為特徵包括所有惡意軟件行為,而不僅僅是惡意行為。另外,一
cmp_val|time|系統時間
個可以
GetSystemTime
使用探索多個執行路徑的技術 [37]
lpSystemTime.struct _SYSTEMTIME.wYear
獲得更全面的功能圖
‑2012
一個程序。
可以看出,系統正確地識別出這樣一個事實: 逃避。顯然,惡意軟件作者可以手動修改惡意軟件樣本,直到其行為足夠不同
本年度與 2012 年值之間的比較
發生。由於這種比較已經失敗,其餘的 從最初我們的工具將兩者分配到不同的集群。我們對這種勞動密集型的人工
日期沒有進一步檢查。這就是為什麼我們無法確定完整的日期。然而,我們正 規避不感興趣。相反,我們考慮一個試圖自動產生任意
在考慮
通過讀取整個數據的能力來改進我們的系統
來自主存儲器的結構(以類似的方式 惡意軟件樣本的突變數量
到我們目前的字符串方法)。 所有(或大多數)
這樣的突變被分配到不同的集群
15
Machine Translated by Google
並提出了基於行為的比較方法。 並且,在某些情況下,自動簽名生成
檢測到威脅 [23, 39, 41]。與我們的方法類似,有
基於內容的分析。對惡意軟件樣本進行聚類的第一次嘗試是基於對惡意軟件 是使用污染從惡意軟件二進製文件中提取特徵信息流的系統。尹等人。 [46]
樣本的靜態分析。在[26]中,作者提出了一種自動化的
擴展 Qemu,帶有數據污染以捕獲系統範圍內的數據
通過首先拆卸工作的病毒分類系統 信息流。最近,動態污點分析
二進製文件,然後比較它們的基本代碼 也被用於網絡協議的自動分析[18, 43]。
塊。其他研究人員已提議代表一個惡意
16
Machine Translated by Google
參考 [20] 查里卡女士。相似度估計技術來自
舍入算法。在第三屆第四屆 ACM 計算理論研討會論文集上。 ACM,2002
年。
[1] 阿努比斯。 http://anubis.seclab.tuwien.ac。
[21] M. Christodorescu、S. Jha 和 C. Kruegel。惡意行為的挖掘規範。在
在, 2008 年。 ESEC‑FSE 07 中:繼續
[2] AVG 病毒數據庫 ‑ Mabezat。 http://www.avg。 歐洲軟件工程大會第六屆聯席會議暨ACM SIGSOFT symposium
com/virbase?nam=win32/mabezat, 2008 年。
[3] CWS 沙盒。 http://www.cwsandbox.org/,2008年。 軟件工程的基礎,第 5‑14 頁,新
[4] F‑Secure 惡意軟件信息頁面 ‑ Allaple.A. 美國紐約州約克市,2007 年。ACM。
http://www.f‑secure.com/v‑descs/ [22] R. Cilibrasi 和 P. Vitanyi。 Complearn 1.15 版。網址:
allaple_a.shtml, 2008 年。 //www.complearn.org/,2008年。
[5] MW 收集。 http://www.mwcollect.org/,2008年。 [23] J. Crandall 和 F. Chong。 Minos:架構支持
[6] 諾曼沙盒。 http://www.norman.com/ 通過控制數據完整性來保證軟件安全。在國際微架構研討會上,2004 年。
微型網站/nsic/, 2008 年。
[7] 影子服務器。 http://shadowserver.org/wiki/, [24] T. Dullien 和 R. Rolles。可執行對象的基於圖形的比較。在 In Symposium
2008 年。
sur la Securit ´ e des Technologies de l Information et des
[8] 威脅專家。 http://www.threateexpert.com/, Communications (SSTIC) 中,
2008 年。 2005 年 6 月。
[9] 病毒總數。 http://www.virustotal.com/,2008年。 [25] M. Egele、C. Kruegel、E. Kirda、H. Yin 和 D. Song。動態間諜軟件分析。
[10] D. Arthur 和 S. Vassilvitskii。 k‑means有多慢 在 USENIX 年度會議記錄中
方法?在 SCG 06 中:二十二世紀的論文集 技術會議,2007 年 6 月。
計算幾何年度研討會,第 144 頁– [26] M.格奧爾蓋斯庫。自動病毒分類系統。在 2005 年病毒通報會議上。
153,紐約,紐約,美國,2006 年。ACM。
17
Machine Translated by Google
2003. ACM。
[35] L.考夫曼和 P. Rousseeuw。在數據中查找組:一個
聚類分析簡介。紐約:約翰威利 &
兒子們,1990 年。
[36] JB 麥昆。多變量觀測的一些分類和分析方法。在第五屆會議記錄中
分佈式系統安全研討會 (NDSS),2005 年。
[40] 訴帕克森。 Bro:用於檢測網絡入侵者的系統
即時的。計算。網絡,31(23‑24):2435–2463,1999。
[41] G. Portokalidis、A. Slowinska 和 H. Bos。 Argos:用於指紋識別零日
攻擊的模擬器。在過程中。 ACM
SIGOPS EUROSYS 2006,比利時魯汶,2006 年 4 月。
[42] L.斯皮茨納。蜜罐:跟踪黑客。艾迪生‑衛斯理
Longman Publishing Co., Inc.,美國馬薩諸塞州波士頓,2002 年。
[43] G. Wondracek、P. Milani Comparetti、C. Kruegel 和
E.基爾達。自動網絡協議分析。在 15 日
網絡與分佈式系統安全研討會
(NDSS),2008 年。
[44] T.耶蒂瑟。多態病毒 ‑ 實施、檢測和保護。 http://vx.netlux.org/lib/
ayt01.html, 1993 年。
18