You are on page 1of 19

Machine Translated by Google

加速世界的研究。

可擴展、基於行為的惡意軟件集群

克萊門斯·赫勞舍克

相關論文 下載 PDF 包最好的相關論文

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

§加州大學聖巴巴拉分校 ¶ Eurecom 研究所,索菲亞安提波利斯


chris@cs.ucsb.edu kirda@eurecom.fr

抽象的 1 簡介

當今 Internet 上的主要威脅之一是惡意軟件,通常稱為惡意軟件。實際
上,
反惡意軟件公司收到數以千計的惡意軟件 大多數 Internet 安全問題都將惡意軟件作為其根本原因。例如,殭屍網絡通
每天都有樣品。為了處理這麼大的數量,一個數字 常
開發了自動化分析工具。這些工具 用於發送垃圾郵件和託管網絡釣魚網站
在受控環境中執行惡意程序 更難追踪和列入黑名單。惡意軟件來了
並生成總結計劃行動的報告。 有多種形式和變體,例如病毒,
當然,分析報告的問題仍然存在。最近,研究人員開始探索有助於識別樣本的 蠕蟲、殭屍網絡、rootkit、特洛伊木馬和拒絕服務工具。為了傳播,惡意軟件
自動聚類技術 利用瀏覽器和操作系統中的軟件漏洞,或使用社交工程技術誘騙用戶運行惡意
軟件
表現出類似行為的。這允許分析人員丟棄以前見過的樣本報告,而
代碼。
專注於新穎有趣的威脅。不幸的是,以前的技術不能很好地擴展並且經常失敗 反惡意軟件公司通常會收到數千
每天都有新的惡意軟件樣本。這些樣本是由發現可疑代碼的用戶提交的
概括觀察到的活動足以識別
相關的惡意軟件。 系統,由共享他們的其他反惡意軟件公司
樣本和組織(例如,MWCollect [5]、Shad owServer [7]、VirusTotal [9])
使用諸如
在本文中,我們提出了一種可擴展的聚類方法 蜜罐 [42] 收集惡意軟件。對於每個樣本,它是
識別和分組表現出類似行為的惡意軟件樣本。為此,我們首先進行動態分析 了解該程序可以執行的操作很重要
履行。這對於確定惡意軟件構成的威脅的類型和嚴重性是必要的。還有,這
獲取惡意程序的執行痕跡。這些
然後將執行跟踪推廣到行為配置文件中,這些配置文件可以更詳細地描述程 信息對於創建檢測簽名和
序的活動 拆除程序。在某些情況下,樣品可能會轉動
抽象術語。配置文件作為輸入到一個有效的 出來是無害的。此外,在許多情況下,惡意軟件可能會變成眾所周知的惡意軟
允許我們處理樣本集的聚類算法 件實例的變體。事實上,儘管惡意軟件可能仍然存在
這比以前的方法大一個數量級。我們已將我們的系統應用於現實世界的惡意
軟件集合。結果表明,我們的技術能夠識別和分組惡意軟件程序 同樣,它的簽名可能會因為惡意軟件作者使用簡單的混淆或多態而改變

技術 [34, 38, 44]。


表現類似,實現比以前更好的精度 由於對自動化技術的需求不斷增長
方法。為了強調系統的可擴展性,我們 檢查惡意軟件,動態惡意軟件分析工具,如
在少於 75,000 個樣本中聚集了一組 作為 CWSandbox [3]、Norman Sandbox [6] 和 ANUBIS [1,
超過三個小時。 14] 越來越受歡迎。這些系統執行
受控環境中的惡意軟件樣本和 mon

1
Machine Translated by Google

itor 其行為。基於執行跟踪,報告是 ‧我們提出了一種新穎、精確的方法來捕獲惡意軟件程序的行


生成的目的是支持分析師得出關於由所施加的威脅的類型和嚴重性 為。為此,我們監測
的結論 執行程序並創建其行為配置文件
惡意軟件樣本。然而,在自動化分析的同時 通過抽象系統調用、它們的依賴和
單個惡意軟件樣本的行為是第一步, 網絡活動到由 OS 對象和 OS 操作組成的廣義表示。
這還不夠。原因是分析師現在
每天面對成千上萬的報告需要檢查。因此,有必要優先考慮這些報
告和 ‧我們提出了一種高效且快速的算法,用於對大量惡意軟件樣本
指導分析人員選擇最需要關注的樣本。處理報告的一種方法是 進行聚類,從而避免計算n
2
所有n 個樣本對之間的距離,以及
將它們聚集成表現出相似行為的惡意軟件集。自動和有效地將分析 因此,適用於對大型、真實世界的惡意軟件集合進行聚
的惡意軟件樣本聚集到具有相似特徵的家族中的能力是有益的,原
類。
因如下:首先,每個
‧我們已經根據大量真實數據評估了我們的系統
套。我們的實驗證明我們的技術
分析師在野外發現新的惡意軟件樣本時
獲得比以前更精確的聚類結果
可以快速判斷是否是新的惡意軟件實例
接近並擴展到數以萬計的惡意軟件
或知名家族的變種。此外,給定的集合
樣品。
屬於不同惡意軟件家族的惡意軟件樣本,
導出通用簽名、實施刪除程序和創建適用於整個程序類別的新緩解
策略變得非常容易。 2 系統概述

將單個惡意軟件樣本分組到惡意軟件家族中並不是一個新想法, 我們系統的目標是聚集大量的
聚類和分類 基於其行為的惡意軟件樣本。也就是說,我們要
之前已經提出了方法 [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]。 名字。

在本文中,我們建議使用近似的概率方法有效地解決聚類問題。
‧複製操作:污染使我們能夠識別數據

我們的聚類算法是基於局部敏感的 移動,例如復制數據的情況。這個

哈希(LSH),由 Indyk 和 Mot wani [29] 引入。 LSH 提供了一種 允許我們確定惡意軟件的傳播向量。例如,我們看到惡意軟件何時將自

有效的(次線性) 解決方案 身複製到 Windows 系統目錄或發送副本

近似最近鄰問題( ‑NNS)。聚類是該技術的主要應用之一:LSH
它的代碼在網絡上。

可用於執行近似聚類,同時
僅計算點對之間的n 2/2距離的一小部分。利用 LSH 聚類,我們 污染源。雖然我們的行為特徵主要是
基於系統調用及其依賴關係,我們不僅僅關注原生 API 接口1 。相反,我們也
能夠為超過 75,000 個樣本的數據集計算近似的單鏈接層次聚類
包括幾個 Windows API 函數。這是不同的
不到三個小時。 來自以前的系統,這些系統要么在系統上運行
調用接口 [25, 39] 或執行整個系統的污點分析 [46]。在後一種情況下,污染
源通常是設備
3 動態分析 例如網卡或鍵盤。
Windows API 是用戶模式庫例程的大型集合,這些例程又調用本機 API
動態惡意軟件分析系統變得越來越流行,因為它們即使在混淆或自我修
函數
改代碼的情況下也能提供良好的分析結果,並且
必要時。考慮到 Windows API 的重要性有以下幾個原因:首先,某些功能由

分析阻力技術 [34, 38, 44]。由於有意義的分析結果是良好聚類結果的先決


條件,因此我們選擇進一步擴展我們現有的動態分析系統 ANUBIS [14]。更
操作系統。也就是說,不調用本機 API 函數
準確地說,我們有
執行。除其他外,隨機數生成器、與路徑相關的 Windows API 函數(例如
GetTempFileName、 GetTempPath)

增加了對跟踪操作之間依賴關係的支持
系統代碼對象,以及支持分析控制
DLL 管理函數(例如, GetProcAddress)。
涉及受污染數據操作數的流程決策,我們
其次,Windows API 函數具有
改進了網絡分析。
語義等價的原生 API 函數,但是,因為
出於性能原因,已以某種方式實施
3.1 系統調用依賴 這不需要調用適當的系統服務。一個重要的例子是與時間相關的 Windows

數據污染是一種眾所周知的技術,用於在整個系統仿真器中跟踪信息流。 API 函數,例如GetTickCount或GetSystem Time。這些函數不調用系統調


在這項工作中, 用但可以工作
我們正在利用污染方法來捕獲系統調用之間的依賴關係。正如 Christodor 通過從虛擬地址空間中的特殊頁面讀取。
escu 等人所指出的那樣。 [21],系統調用依賴提供了有價值的 該頁面總是以只讀方式映射到一個固定地址
進程的用戶模式虛擬地址空間。這
洞察應用程序的行為。例如, 內核使用寫訪問和更新映射同一頁面
關於依賴的知識可以讓人們看到 定時器中斷處理程序中與時間相關的信息。
程序搜索具有特定文件名模式的文件
內存映射文件。內存映射文件,正式
然後打開所有找到的文件。在我們的分析中,
在 Windows NT 中稱為截面對象,對分析系統提出了特殊
系統調用依賴用於以下上下文:
的挑戰。當一個進程映射一個文件時
進入其虛擬地址空間,讀取和寫入文件
‧執行跟踪的概括:執行跟踪
可以通過簡單地讀取和寫入映射的
固有地包括許多特定於執行的事件
和名稱(文件名、主機名)。這些處決 1
在 Windows NT 中,操作系統調用接口被稱為本地
每次二進製文件為 exe 時,特定標記都會更改 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

跟踪通常包含數百萬個與受污染操作數的比較。為了專注於比較由實際 系統調用,它充當 Windows 上所有與網絡相關的活動的渠道。為了捕


惡意軟件程序執行的指令,我們丟棄了那些代表(用戶模式)
Windows 獲網絡流量,我們修改了系統模擬器的網卡,以簡單地將所有數據包轉
API 函數執行的指令。 儲到 PCAP 格式的日誌文件中。通過這種方式,我們可以使用範圍廣泛
的標準網絡分析工具來幫助我們進行分析工作。此外,通過解析網絡數
通過這種方式,我們忽略了不代表程序作者的直接意圖但作為標準 據包和解析應用程序協議,例如 HTTP,我們能夠識別更高抽象級別的
Windows 行為的結果而存在的比較。此規則的唯一例外是一些用於比 網絡活動。我們使用 Bro [40] 進行分析,這是一個內置支持識別和解
較更複雜數據類型(如字符串或日期) 的 Windows API 函數。顯然,在 析 HTTP、IRC、SMTP 和 FTP 協議的系統。對於這些協議,我們提取
這些 API 函數中發生的比較是程序員意圖的直接結果。出於這個原因, 信息,例如下載文件的名稱、IRC 頻道的名稱或郵件主題。
我們捕獲了所有發生在strcmp 中的比較,例如。

3.3 網絡分析 4 行為概況

惡意軟件樣本的網絡活動提供了對樣本行為的最重要和最典型的洞 當動態分析步驟完成對樣本的處理時,下一個任務是將增強的執行
察之一。因此,樣本網絡活動的分析在我們的方法中起著重要作用。 跟踪轉換為行為配置文件。如前所述,行為配置文件以更高的抽象級別
捕獲程序的操作。為此,我們以 OS 對象的形式對樣本的行為、對這些
對象執行的操作、OS 對象之間的依賴關係以及 OS 對象之間的比較進
環境。成功的網絡分析要求樣本能夠執行其已編程執行的網絡活動。當 行建模。對 mally 來說,行為概況P被定義為 8 元組
程序未能建立與郵件服務器的 TCP 連接時,動態分析無法觀察程序的
電子郵件活動。因此,作為第一步,我們在允許樣本執行其內置網絡活
動的環境中運行樣本。

P = (O, OP, Γ, Δ, CV, CL, ΘCmpV 值, ΘCmpLabel)


為了創建惡意軟件執行環境,我們允許分析樣本通過 HTTP 下載
其中O是所有 OS 對象的集合, OP是所有 OS 操作的集合, Γ ⊆ (O
文件並直接在 Internet 上聯繫 IRC 服務器。所有其他流量都被重新路
× OP)是為每個對象分配一個或多個操作的關係, Δ ⊆ ((O × OP) ×
由到一個專門準備的服務器,稱為 vic tim 機器,該服務器已配置為接
( O × OP))表示依賴集。 CV是 label‑value 類型的所有比較操作的集
受惡意程序經常使用的多個端口上的傳入連接。例如,受害機器運行自
合,而CL是 label‑label 類型的所有比較操作的集合。 ΘCmpV alue
己的 SMTP 服務器,它回答所有 SMTP 請求(但不發送任何電子郵
⊆ (CV × O)是將標籤值比較操作分配給 OS 對象的關係。
件)。此外,我們建立了 nepenthes [11] ‑ 一個模擬流行服務的已知
ΘCmpLabel ⊆ (CL × O × O)是將標籤標籤比較操作分配給兩個適
漏洞的蜜罐系統。當然,我們並不是將豬籠草服務器用作通常意義上的
當的 OS 對象的關係。
蜜罐系統,即作為獲取新惡意軟件樣本的一種方式。相反,我們部署
nepenthes 只是為了讓基本服務偵聽經常用於傳播的端口(例如
Windows Samba 端口)。

操作系統對象。一個 OS 對象代表一種資源,例如文件或註冊表項,可
以通過系統調用對其進行操作和查詢。形式上,操作系統對像是以下形
式的元組:

OS Object ::= (type, object‑name) type ::= file|registry|


分析。我們網絡分析的目標是從低級套接字系統調用中提取高級語義操 process|job|網絡|線程|部分|驅動程序|同步|服務|隨機|時間|信息
作。例如,我們的目標不是報告已建立 TCP 連接以及交換的字節數,而
是報告發送了 HTTP GET 請求以下載文件“foo.bar”。我們選擇在
網絡級別發送和接收的數據包之上構建我們的分析。這比嘗試從
DeviceIoControlFile的參數中推斷出所有信息更容易、更全面
也就是說,一個操作系統對象具有一個名稱和一個類型,它們共同唯
一地標識操作系統中的對象。 “文件” 類型涵蓋文件、命名管道和郵槽
資源,“註冊表” 由註冊表項組成,“進程”包括進程,“作業”
表示
Windows NT 作業,它允許

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 控制

對象依賴。我們抽象之間的依賴關係 代碼。此外, NtDeviceIoControlFile有一個


對 OS 對象之間依賴關係的系統調用。雖然一個 用於傳輸環數據的輸入緩衝區和輸出緩衝區參數。對於每次調用
系統調用依賴是一種依賴關係 NtDeviceIoControlFile
兩個系統調用實例,一個操作系統對象依賴是一個 代表網絡活動,我們將人工系統調用插入到代表解碼的執行跟踪中
兩個操作系統對象及其操作之間的依賴關係。
對於每個現有的系統調用依賴,我們首先檢查 原始調用的形式。特別是,我們必須解碼
兩個涉及的系統調用是否映射到操作系統操作。如果是這種情況,我們引入 緩衝區參數。在網絡活動的情況下,
對象依賴 NtDeviceIoControlFile 的緩衝區參數包含
對應的操作系統對象之間。圖 2 中顯示的行為 pro 文件包含 指向特定於網絡的結構的指針。有四種不同
人工系統調用:
部分 OS 對象的源文件和文件對象
AfdSend(SocketHandle h, char *buffer)
目標文件。這種依賴性反映了數據
AfdReceive(SocketHandle h, char *buffer)
從源文件複製到目標文件。
AfdBind(SocketHandle h,短 localPort)
由於我們所有的對象依賴都源於系統調用依賴這一事實,我們將缺乏與
AfdConnect(char *foreignAddress,
網絡相關的依賴。如前所述,這是因為網絡操作系統對象的提取是單獨的
短外港)

當我們確定一個進程時,我們插入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) ∈ Γ,創建一個特徵:
是一項計算量大的任務。大多數聚類算法需要計算所有對之間的距離

fij = “操作|” + 姓名(oi) + ”|” + 名稱(opj )


集合中的點。在這種情況下,計算複雜度為
2
至少O(n )距離函數的評估,即 其中name()是一個返回操作系統名稱的函數
對於大數據集是不可接受的。 對象、操作或比較作為字符串,引號 (”) 表示
存在算法,例如 k‑means 算法 一個文字字符串, +連接兩個字符串。而且,
(勞埃德算法)
[36],只計算距離 對於每個依賴項δi ∈ Δ = (( oi1, opi1),(oi2, opi2)),我們
從n個點到k個聚類中心,並為收斂到 a 所需的每次i次迭代重複此計算 創建一個特徵:

局部最優。因此,計算複雜度是距離函數的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 = 小號

(cmp, o1, o2),我們創建一個特徵:

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的閾值,我們

關於數據集中的所有其他樣本。也就是說,我們做 選擇k = 10和l = 90。

不考慮聚類特徵時不發生
在至少一個其他樣本的特徵集中。這是因為 5.3 層次聚類
樣本的獨特特徵並不能幫助我們找到其他的
行為相似的樣本(即信息增益 局部敏感散列步驟的結果是一個集合
此功能非常低)。此外,我們的實驗表明 S,它是所有近對的真實集合的近似值
我們的聚類對選擇的魯棒性 T = {(a, b)|a, b ∈ A, J(a, b) > t}。因為只有 LSH
當我們丟棄這些獨特的異常值時,閾值t會提高。 計算一個近似值, S可能包含不相似的樣本對。要刪除那些,對於每一對a, b

5.2 局部敏感散列(LSH) 在S 中,我們計算相似度J(a, b)並丟棄該對


如果J(a, b) < t。然後,我們按相似度對剩餘的對進行排序。這允許產生近似
局部敏感散列背後的想法是散列一個 的單鏈接
以接近(或相似)
點的方式設置A點 A的層次聚類[35] ,直到閾值
具有比點更高的碰撞概率 噸。單鏈接聚類允許我們簡單地迭代
遙遠。我們通過使用哈希家族H來實現這一點 對的排序列表以產生凝聚聚類。當附近不再存在時,我們停止聚類
使得P r[h(a) = h(b)] =similarity(a, b) 的函數,
對於我們的特徵空間中的a、b點和h統一選擇 對左。
從H 中隨機抽取。通過定義局部敏感散列 在某些情況下,人們希望繼續分層隨機聚類過程,直到所有元素都合併到
a as lsh(a) = h1 (a), .., hk(a), with k hash functions
從H 中獨立且均勻地隨機選擇,我們 單個集群。但是,所有後續的聚類步驟
然後有P r[lsh(a) = lsh(b)] =similarity(a, b) . 將需要合併兩個具有相似性值低於t 的集群。當然,這些信息並不容易獲得。
在使用 Jaccard 索引作為集合的情況下 原因是LSH算法避免了
相似性度量,一組哈希函數H與
所需的屬性已在 [16] 中介紹。 H中的哈希 計算元素之間的距離
對所有特徵的集合施加隨機順序。哈希 低於t 的相似度值。為了解決這個問題並獲得詳盡的層次聚類,我們使用以下
然後,特徵集a的值由 技術:我們選擇一個代表元素
根據此順序的a的最小元素。因為它是
生成真正隨機排列的效率低下,隨機 每個聚類,計算所有代表之間的距離,然後在這些元素之間執行精確的層次聚
h(x) = c1x + c2 mod P形式的線性函數是 類。我們創建代表元素
用 [27] 代替,其中P是一個大於
F中的特徵總數。 通過將存在於_ _
給定一個相似度閾值t,我們使用 LSH 算法來計算一個集合S ,它近似於 C中所有特徵集的至少一半。當然,精確層次結構聚類的複雜度為O(n
2
集合T )。這是交流
在A × A中的所有近對中,定義為T = {(a, b)|a, b ∈ 可以接受,因為代表人數很少。
A, J(a, b) > t}。給定閾值t,我們首先選擇
每個 LSH 散列中散列函數的數量k ,以及迭代次數l。此外,我們初始化集合S 5.4 漸近性能

候選靠近空集的對。然後,對於每次迭代,執行以下步驟: 前面描述的 LSH 方案需要計算nkl哈希。的計算複雜度

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

設置A = a1, a2, .., an)。對於每個Cj ∈ C,我們計算一個


1
集群精度值為:

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確定聚類算法將兩個不同的配置文件視為相似的積極程度。因此,選擇
整體召回值為:

(R1 + R2 + .. + Rr) 正確的閾值通常取決於所需的水平


R=
n 聚類的粒度。例如,分析師可能
只對將一組惡意軟件樣本粗略劃分為幾個高級類別(例如撥號器、蠕蟲或機
為每個創建集群的原始算法 器人)
感興趣。相反,另一位分析師可能更
樣本達到最佳精度,但召回率最差。這
相反,將所有樣本組合在一個集群中的算法實現了最佳召回率,但精度最差。 有興趣將單個惡意軟件家族拆分為不同的
在 變體。在這些情況下,第一個分析師會選擇一個小的
實踐中,算法應該提供高精度 t,而第二個將使用更大的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

貝利等人。 [13] 提出了一種聚類系統 遠不如我們的精確(通過使用 Jaccard 索引


基於歸一化壓縮距離的惡意軟件 和 LSH),或者它不能擴展到真實世界的數據集(當
(NCD),使用 zlib 壓縮。 NCD 基於 Kol mogorov 複雜性理論 [33], 使用非傳染性疾病)。分析原始系統調用的結果時
並利用以下事實: 跟踪(第三行),結果明顯比
相似的數據,當連接時,壓縮比 其他兩種技術。這並不奇怪,因為
更多不同的數據。此外,Bailey 從系統調用執行粗粒度抽象,還使用配 跟踪包含太多噪音,無法有效地找到密切相關的惡意軟件實例之間的相
置文件 似之處。
表示惡意軟件行為(我們參考這些配置文件
從現在開始作為 Bailey‑profiles)。與我們的方法不同的是,Bailey‑ 6.3 性能
profiles 僅包含行為
惡意軟件樣本導致的非瞬態狀態變化 為了展示我們的集群算法的可擴展性,我們在一組 75,692 個惡
在系統上(即,對文件系統、註冊表的更改),如 意軟件樣本(從 ANUBIS 的完整數據庫中獲得)
上運行了我們的系
以及衍生進程的名稱以及有關網絡連接和掃描的一些基本信息。一個 統。我們
詳細的 在 XEN 虛擬機上進行了我們的實驗
可以獲得對 Bailey‑profiles 內容的印象 託管在配備兩個 PowerEdge 2950 服務器上
來自[12]。根據我們的參考評估貝利系統 四核 Xeon 1.86 GHz CPU 和 8 GB RAM。我們
數據集,我們調整了我們的動態分析系統來生成貝利配置文 分配了大約 7GB RAM 和一個物理 CPU 給
件。關於非傳染性疾病,我們利用了 XEN 虛擬機。
Complearn‑Toolkit [22] 提供的庫。 如表 3 所示,我們的原型實現在 2 小時和 18
許多先前的系統(例如,[31])
基於它們的
行為配置文件基本上在原始系統調用跟踪上。 分鐘。這個時間可以通過利用進一步減少
因此,評估此類系統的性能,並 固有的並行性:LSH 散列和距離計算步驟都可以很容易地並行執行。
獲得一個基線,顯示由於通用行為配置文件的改進,我們還對
我們原型的內存需求從未超過
原始系統調用跟踪。 3.7 GB 的虛擬內存。對於每個樣本,我們在磁盤上存儲一個行為配置
文件,它消耗大約 96 KB
我們使用我們的參考聚類和精度和
平均磁盤空間。為了加載樣本,聚類
召回指標直接比較不同技術生成的集群的質量。作為聚類質量的總體
算法必須讀取和處理6.9GB的行為專業文件。
衡量標準,我們使用

我們使用相同的閾值t = 0.7 運行聚類算法。 LSH 算法計算了一個


精度*召回率。對於表 2 中呈現的配置文件類型、相似性度量和聚類方
集合
法的每種組合,我們選擇了閾值
S,我們對近對集合的近似值,包含 66,528,049 對。確實只有
57,024,374 對
產生最高的質量分數。在聚類列中,“精確”
表示對之間的所有n n/2
高於相似度閾值t,即 LSH 散列結果
距離
大約 14% 的誤報。儘管如此,使用 LSH
計算了樣本的數量,而“LSH” 表示使用了局部敏感哈希。最後兩行顯
散列只允許我們計算 66,528,049 而不是

精確聚類和基於 LSH 的聚類之間的區別
(75, 6922 )/2 = 2, 864, 639, 432距離。
是最小的,證明了基於 LSH 的有效性
算法步驟 加載樣 時間(虛擬) 內存。用過的
聚類作為近似值。
本l LSH 哈希迭代。 58m 1.6GB
如表 2 所示,我們的聚類質量 1 小時 0 分 3.6 GB
方法(最後兩行) 優於 Bailey 等人提出的聚類。 (第一排)。這是因 距離計算 排序所有對 分 16m 3.7GB
為我們的 pro 文件代表了惡意軟件樣本在 1m 3.7GB
層聚類 總計
3m 3.7 GB
更全面、更準確的方法。例如,某些樣本表現出使用無法捕獲的行為 2 小時 18 米 3.7 GB

貝利簡介。因此,此類配置文件仍然為空,或者
幾乎是空的。更麻煩的是,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 不同聚類方法的比較評價。

他們的論文認為兩個之間的單個距離計算 三是否有任何 DNS 或端口 9988 活動。此外,所有


對大約需要1.25毫秒。因此,他們算法的距離計算步驟需要995 Allaple.1 中的樣本將自己複製到文件中
“C:\WINDOWS\system32\urdvxc.exe”,而沒有
小時(近 6 週)
來執行必要的 75、6922 /2 Allaple.2 中的樣本可以。此外,在 Allaple.1 集群中,
距離計算。儘管貝利 我們觀察到以下有趣的對象依賴性:
配置文件相當小(平均約 1KB)。申請
部分|C:\sample.exe‑>網絡|TCP
我們對(更大的)
行為的 NCD 實施
文件|C:\WINDOWS\system32\urdvxc.exe ‑>
我們的工俱生成的配置文件甚至更令人望而卻步
文件|C:\(..)\Internet 臨時文件\
計算時間:單個 NCD 計算平均需要43毫秒。因此,集群75、692個樣本至少
\(..)\ccxebztz.exe
需要 6 個月,即使實現並行化以在 8 個 CPU 上運行。
隨機|隨機值生成器 ‑>
文件|C:\(..)\Internet 臨時文件\
\(..)\ccxebztz.exe

6.4 聚類結果的定性討論 第一個依賴表明樣本已經成功地通過網絡傳播自身(到我們的 ne


penthes 蜜罐)。由於我們的污點系統正確處理
在本節中,我們提出了一些關於
我們聚類技術的質量。首先,我們討論 內存映射文件,我們看到惡意軟件傳播
四個最大的集群(關於它們包含的樣本數量)。這些是 Allaple.1(1,289 個 通過讀取內存映射文件並將其寫入網絡。第二和第三個依賴提供了強大的
樣本),
Allaple.2(717 個樣本)、DOS(179 個樣本)
和 GBDi aler.j(106 表明這是多態惡意軟件,因為數據來自
個樣本)。它們加起來佔所有的 86% 惡意軟件樣本和隨機數生成
樣品。 API 被寫入新文件“ccxebztz.exe”。由此可見
Allaple.1 和 Allaple.2 是 系統調用依賴性如何提供有價值的見解
Allaple 蠕蟲 [4]。 Allaple 是一種多態惡意軟件,它 關於惡意軟件行為。
解釋了為什麼每個樣本中有這麼多不同的樣本 GBDialer.J 是我們的幾個撥號器集群中最大的一個
簇。它還展示了我們系統的能力 樣本集。有趣的是,我們能夠正確地
快速處理外觀不同但行為相同的多態惡意軟件實例。有趣的是, 將樣本分組在這個集群中,因為我們的分析環境不直接支持對撥號器的分
析。
我們發現病毒掃描程序的分配不一致 也就是說,沒有調製解調器(仿真)
可以
兩個集群中樣本的不同變體名稱(回想一下 允許撥號器執行其主要任務。儘管如此,
我們只使用了該病毒的惡意軟件家族名稱 剩餘的行為(例如啟動動作和系統
掃描儀報告執行初始參考聚類)。然而,更仔細的人工分析表明,我們的 修改)
充分錶徵以區分各種撥號器變體。不是這種情況

聚類正確識別了兩個不同的 Allaple 變體。雖然兩個集群中的所有樣本都執 對於第四個集群,稱為“DOS”。該集群包含


行 各種 DOS 惡意軟件樣本。不存在的理由
ICMP 掃描,Allaple.2 變體在立即嘗試使用更廣泛的傳播向量來利用目標系 能夠區分不同 DOS 變體的是
統方面更具侵略性。例如,幾乎所有 Allaple.2 樣本都執行 DNS 查找 我們的分析環境只能執行 Windows PE 可執行文件。 Windows 加載程序
處理所有非 Windows PE
文件作為 DOS 可執行文件,並嘗試通過
對於他們成功掃描的主機地址, 在ntvdm.exe進程中模擬它們。本次活動
並嘗試連接到對應於 Windows 遠程管理服務的 TCP 端口 9988。上 被認為是類似的行為。
除了四個大集群之外,還有幾個有趣的小集群。例如,有一個集群
另一方面,在 Allaple.1 clus 中沒有一個樣本

14
Machine Translated by Google

只有兩個標記為“Keylogger.Ghostbot”
的樣本 當然,也有惡意軟件程序
由卡巴斯基病毒掃描程序。我們的動態分析發現該惡意軟件不斷檢查按鍵 我們的系統沒有產生正確的結果。一個常見的情況是樣本沒有顯示任何可疑

使用 Windows API 函數GetKeyState。 pro 文件包含以下有趣的比較: 在我們的分析環境中活動。這可能是因為


惡意軟件程序已損壞,或者因為它檢測到
分析環境的存在並提前退出。
cmp_val|註冊表|HKLM\SOFTWARE\MICROSOFT\ 無論如何,它強調了我們的系統對
\WINDOWS\CURRENTVERSION\運行
行為檔案的質量。特別是一個簇由屬於 10 個不同的 25 個樣本組成
NtEnumerateValueKey‑KeyValueInformation
‑ PCCNTMON
根據參考聚類進行聚類。人工分析顯示,這些樣本全部崩潰,導致

這告訴我們惡意軟件會尋找已知的防病毒軟件
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

由我們的工具提供。為此,惡意軟件作者可以隨意改變惡意軟件行為中不屬 ware 程序作為其代碼段的十六進制轉儲,構建


於 在此之上的分類系統[30]。在 [24] 中,杜連
對其功能至關重要。一個例子是經常 提出了一個基於可執行文件比較的系統
惡意軟件在其下複製自身的任意文件名 控制流圖。
在文件系統上。這些可以用隨機替換 所有基於內容的分析方法都存在需要反彙編二進製文件的問題。鑑於惡
字符串,硬編碼到每個惡意軟件實例中。儘管如此,添加足 意軟件經常被混淆和打包,這有十個困難甚至是不可能的。另外,可以寫
夠的隨機性以使每個突變都不同並不是一項簡單的任務。我
們數據集中的樣本有更多
平均超過一千個功能,其中許多代表來自系統庫內部的行為,這些行為只是惡 有很大差異的語義等價程序
意軟件編寫者意圖的直接結果。還, 在他們的代碼中。因此,惡意軟件作者可以
阻止基於內容的相似性計算。
因為我們的工具丟棄了單一的特徵 基於行為的分析。最近,Holz 等人。 [28] 提出了一個對未知惡意軟件樣本
惡意軟件實例,簡單的隨機變化只會導致 進行分類的系統
這些特徵被丟棄。此外,我們可以添加 根據他們的行為。一個重要的限制是
對我們用於提取行為特徵的算法進行更積極的概括。例如,我們可以考慮 系統需要監督學習,使用病毒掃描程序
用於標記訓練集。李等人。開發了一個系統,用於對依賴於系統的惡意軟件樣
惡意軟件創建的任何文件的名稱不相關, 本進行分類
並用一個特殊的令牌替換它(就像我們目前所做的那樣 要求比較可執行文件 [31]。的可擴展性
臨時文件的名稱)。 技術有限;該系統需要幾個小時才能
另一個問題是不受信任的動態數據污染 對一組數百個樣本進行聚類。此外,對系統調用的密切關注意味著收集的配
軟件很容易被規避。惡意二進製文件可以 置文件不
注入虛假數據依賴項,使用 NOP 等效操作在不修改其值的情況下污染乾淨 抽象觀察到的行為。
數據。此外,它可以隱藏我們工具的數據依賴關係,
最接近我們的方法是由
貝利等人。 [13]。他們提出的系統從
使用隱式流來“清理”
受污染的數據 [19]。不幸的是,對這種技術沒有簡單的
系統調用跟踪和聚類表現出類似行為的樣本。不幸的是,Bailey 的系統無法
防禦。至
擴展
解決這個問題,我們將不得不禁用動態數據 2
好(它需要計算O(n )距離), 和, com
污染,犧牲一些系統的準確性。
與我們的系統相比,他們生成的行為檔案缺乏
我們可以通過細粒度獲取的重要信息
8 相關工作 分析和行為抽象。這會導致聚類不太準確。

自動化惡意軟件領域的最新進展 萊塔等人。 [32] 建議根據


分析(例如,[17, 25, 37, 45, 46])
引起了人們對分析結果自動分組的興趣(以 epsilon‑gamma‑pi‑mu 模型。在此模型中,有關惡意軟件最初是如何安裝
及 在
報告)
創建的。為此,研究人員已 目標系統被考慮進行分類。這可以包括關於利用和利用有效載荷的信息
提出了有監督和無監督的機器學習技術。因為這些技術至關重要
安裝惡意軟件滴管,並在滴管的途中
可以處理大量樣本,它們的可擴展性是 turn 下載並安裝惡意軟件。由於在 [32]
決定性的屬性之一。 惡意軟件本身的特點是簡單地使用殺毒軟件
每個旨在發現惡意軟件的系統的核心 名稱,這種方法是對所描述的方法的補充
家庭是相似性的概念。因此,這些系統需要解決兩個問題。首先,他們需要找 在本文中。
到 動態數據污染。污點分析是一種技術
惡意軟件樣本的合適表示。第二, 已廣泛應用於計算機安全領域。
基於這些表示,他們需要計算兩個樣本之間的距離。在文獻中,基於內容的 例如,它已成功應用於檢測劫持程序控制流的漏洞。

並提出了基於行為的比較方法。 並且,在某些情況下,自動簽名生成
檢測到威脅 [23, 39, 41]。與我們的方法類似,有
基於內容的分析。對惡意軟件樣本進行聚類的第一次嘗試是基於對惡意軟件 是使用污染從惡意軟件二進製文件中提取特徵信息流的系統。尹等人。 [46]
樣本的靜態分析。在[26]中,作者提出了一種自動化的
擴展 Qemu,帶有數據污染以捕獲系統範圍內的數據
通過首先拆卸工作的病毒分類系統 信息流。最近,動態污點分析
二進製文件,然後比較它們的基本代碼 也被用於網絡協議的自動分析[18, 43]。
塊。其他研究人員已提議代表一個惡意

16
Machine Translated by Google

9 結論 [11] P. Baecher、M. Koetter、T. Holz、M. Dornseif 和 FC Freil ing。豬籠草


平台:收集惡意軟件的有效方法。在 D. Zamboni 和 C. Kruegel,編輯,
RAID,
在本文中,我們提出了一種新的聚類方法
計算機科學講義第 4219 卷,頁數
大量惡意軟件樣本。目標是找到 165–184。斯普林格,2006 年。
對一組給定的惡意程序進行分區,以便 [12] M.貝利。惡意軟件聚類結果。 http://www。
子集表現出類似的行為。我們的系統首先在動態分析環境中分析 eecs.umich.edu/~mibailey/malware/,2008年。
每個樣本 [13] M. Bailey、J. Oberheide、J. Andersen、ZM Mao、F. Jaha nian 和 J.
我們增強了污點跟踪和額外的網絡分析。然後,我們通過抽象系統 Nazario。自動分類和分析
調用、它們的依賴關係和網絡來提取行為配置文件 互聯網惡意軟件。在第 10 屆入侵檢測最新進展國際研討會 (RAID 07)
上,2007 年 9 月。
活動到由 OS 組成的廣義表示
對象和操作系統操作。這些配置文件用作我們的聚類算法的輸入, [14] U. Bayer、C. Kruegel 和 E. Kirda。 TTAnalyze:一個工具
分析惡意軟件。在第十五屆歐洲計算機反病毒研究所(EICAR 2006)
年會
它需要少於
上,
二次距離計算量。這對於處理經常遇到的大型數據集很重要
2006 年 4 月。
[15] F.貝拉德。 Qemu,一個快速便攜的動態翻譯器。
在現實世界。我們的實驗表明我們的
在 Usenix 年度技術會議上,2005 年。
技術可以準確識別以類似方式存在的惡意代碼。此外,我們的結果 [16] AZ Broder、SC Glassman、MS Manasse 和 G. Zweig。
表明, 網絡的句法聚類。計算。網絡。 ISDN 系統,
我們可以在不到 75,000 個樣本中聚類 29(8‑13):1157‑1166,1997。
三個小時。 [17] D. Brumley, C. Hartwig, Z. Liang, J. Newsome,
P. Poosankam、D. Song 和 H. Yin。自動識別惡意軟件中基於觸發器的
行為。在本書章節
致謝 在“殭屍網絡分析與防禦”
中,編輯 Wenke Lee 等。等,
2007 年。

這項工作得到了歐盟委員會通過 FP7‑ICT‑216026‑WOMBAT [18] J. Caballero、H. Yin、Z. Liang 和 D. Song。 Polyglot:使用動態二進制


項目、FIT IT 通過 Pathfinder 項目、FWF 通過 Web 防禦項目(編 分析自動提取協議消息格式。在 ACM 會議論文集中
號 P18764) 和 Secure Business Aus tria 的支持。我們要感謝
關於計算機和通信安全,2007 年 10 月。
Luca Foschini 的協助
[19] L. Cavallaro、P. Saxena 和 R. Sekar。關於惡意軟件分析和遏制的信息流
技術的局限性。在 GI SIG SIDAR Conference on Detection of Intrusion
並提供他在大規模數據領域的專業知識
and Malware & Vulnerability Assessment (DIMVA) 中,
聚類。
2008 年。

參考 [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

[27] TH Haveliwala、A. Gionis 和 P. Indyk。用於集群網絡的可擴展技術。 [45] H. Yin、Z. Liang 和 D. Song。 HookFinder:識別和


在 WebDB (Informal Proceedings),第 129‑134 頁,2000。 了解惡意軟件掛鉤行為。在訴訟中
第十五屆網絡與分佈式系統安全
[28] T. Holz、C. Willems、K. Rieck、P. Duessel 和 P. Laskov。 研討會 (NDSS 08),2008 年 2 月。
惡意軟件行為的學習和分類。在第五 [46] H. Yin、D. Song、M. Egele、C. Kruegel 和 E. Kirda。
入侵檢測和惡意軟件和漏洞評估會議 (DIMVA 08),2008 年 6 月。 全景圖:捕獲系統範圍的信息流以進行惡意軟件檢測和分析。在 CCS
07:會議記錄中
[29] P. Indyk 和 R. Motwani。近似最近鄰: 第 14 屆 ACM 計算機和通信安全會議,第 116‑127 頁,紐約,紐約,美
消除維度的詛咒。在過程中。的 國,2007 年。ACM。
第 30 期 STOC,第 604‑613 頁,1998 年。
[30] JZ Kolter 和 MA Maloof。學習在野外檢測和分類惡意可執行文件。 J.
馬赫。學。水庫,
7:2721–2744, 2006。
[31] T. Lee 和 JJ 麼。行為分類。在 EICAR
會議,2006 年。
[32] C. Leita 和 M. Dacier。 SGNET:全球可部署的
支持分析惡意軟件威脅模型的框架。在 EDCC 2008 中,第 7 屆歐洲可
靠計算
會議,2008 年 5 月 7 日至 9 日,考納斯,立陶宛,2008 年。
[33] M. Li 和 P. Vitanyi。 Kolmogorov 複雜性及其應用簡介。施普林
格出版社,紐約,
第二版,1997 年。
[34] C. Linn 和 S. Debray。混淆可執行代碼
提高抗靜電拆卸能力。在 CCS 03:第 10 屆 ACM 計算機和通信安全
會議記錄中,第 290‑299 頁,美國紐約州紐約市,

2003. ACM。
[35] L.考夫曼和 P. Rousseeuw。在數據中查找組:一個
聚類分析簡介。紐約:約翰威利 &
兒子們,1990 年。

[36] JB 麥昆。多變量觀測的一些分類和分析方法。在第五屆會議記錄中

伯克利數理統計和概率研討會,第 281‑297 頁,1967 年。

[37] A. Moser、C. Kruegel 和 E. Kirda。探索惡意軟件分析的多種執行路徑。


在安全和隱私方面,
2007. SP 07。 IEEE 研討會,第 231‑245 頁,2007 年。
[38] A. Moser、C. Kruegel 和 E. Kirda。惡意軟件檢測的靜態分析限制。在
ACSAC,第 421‑430 頁。 IEEE
計算機學會,2007 年。
[39] J. Newsome 和 D. Song。用於自動檢測、分析和生成商品軟件漏洞利用
的動態污點分析。在第 12 屆年度網絡和

分佈式系統安全研討會 (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

You might also like