[论文阅读] (20)USENIXSec21 DeepReflect:通过二进制重构发现恶意行为(恶意代码ROI分析经典)
《娜璋帶你讀論文》系列主要是督促自己閱讀優秀論文及聽取學術講座,并分享給大家,希望您喜歡。由于作者的英文水平和學術能力不高,需要不斷提升,所以還請大家批評指正,非常歡迎大家給我留言評論,學術路上期待與您前行,加油。
前一篇從個人角度介紹英文論文實驗評估(Evaluation)的數據集、評價指標和環境設置如何撰寫。這篇文章將帶來USENIXSec21惡意代碼分析的經典論文,DeepReflect,它通過二進制重構發現惡意功能,來自于佐治亞理工。一方面自己英文太差,只能通過最土的辦法慢慢提升,另一方面是自己的個人學習筆記,并分享出來希望大家批評和指正。希望這篇文章對您有所幫助,這些大佬是真的值得我們去學習,獻上小弟的膝蓋~fighting!
原文作者:Evan Downing, Yisroel Mirsky, Kyuhong Park, Wenke Lee
原文標題:DeepReflect: Discovering Malicious Functionality through Binary Reconstruction
原文鏈接:https://www.usenix.org/conference/usenixsecurity21/presentation/downing
發表會議:USENIXSec 2021
代碼下載:https://github.com/evandowning/deepreflect
除了原文和作者的理解,本文還參考了下面三位老師的博客,再次感謝,向老師和好友們學習。
- 利用AI+大數據的方式分析惡意樣本(三十)- 西杭兄
- DeepReflect:通過二進制重構標識具體惡意行為 - Serendipity老師
- 論文閱讀 DeepReflect Discovering Malicious Functionality 惡意軟件中惡意函數的定位和行為聚類 - Erio老師
作者感受:
這篇論文的框架風格和我的很像,非常值得我學習,尤其是文中的英文表述、創新點、模型設計、四類特征設計以及實驗評估(從五個方面評估)。整個工作非常充實,也是惡意代碼分析中的一篇經典文章。
文章目錄
- 一.摘要
- 二.引言
- 1.背景引出挑戰
- 2.如何解決挑戰
- 3.創新(Contribution)
- 三.Scope & Overview
- 1.Motivation
- 2.Proposed Solution
- 3.Research Goals
- 四.模型設計
- 1.總體框架
- 2.RoI Detection
- 3.RoI Annotation
- 4.Deployment
- 五.實驗評估
- 1.Dataset
- 2.Evaluation 1 – Reliability(可靠性)
- 3.Evaluation 2 – Cohesiveness(凝聚)
- 4.Evaluation 3 – Focus
- 5.Evaluation 4 – Insight
- 6.Evaluation 5 – Robustness
- 六.限制和相關工作
- 七.Conclusion
- 八.個人感受
前文賞析:
- [論文閱讀] (01) 拿什么來拯救我的拖延癥?初學者如何提升編程興趣及LATEX入門詳解
- [論文閱讀] (02) SP2019-Neural Cleanse: Identifying and Mitigating Backdoor Attacks in DNN
- [論文閱讀] (03) 清華張超老師 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing
- [論文閱讀] (04) 人工智能真的安全嗎?浙大團隊外灘大會分享AI對抗樣本技術
- [論文閱讀] (05) NLP知識總結及NLP論文撰寫之道——Pvop老師
- [論文閱讀] (06) 萬字詳解什么是生成對抗網絡GAN?經典論文及案例普及
- [論文閱讀] (07) RAID2020 Cyber Threat Intelligence Modeling Based on Heterogeneous GCN
- [論文閱讀] (08) NDSS2020 UNICORN: Runtime Provenance-Based Detector for Advanced Persistent Threats
- [論文閱讀] (09)S&P2019 HOLMES Real-time APT Detection through Correlation of Suspicious Information Flow
- [論文閱讀] (10)基于溯源圖的APT攻擊檢測安全頂會總結
- [論文閱讀] (11)ACE算法和暗通道先驗圖像去霧算法(Rizzi | 何愷明老師)
- [論文閱讀] (12)英文論文引言introduction如何撰寫及精句摘抄——以入侵檢測系統(IDS)為例
- [論文閱讀] (13)英文論文模型設計(Model Design)如何撰寫及精句摘抄——以入侵檢測系統(IDS)為例
- [論文閱讀] (14)英文論文實驗評估(Evaluation)如何撰寫及精句摘抄(上)——以入侵檢測系統(IDS)為例
- [論文閱讀] (15)英文SCI論文審稿意見及應對策略學習筆記總結
- [論文閱讀] (16)Powershell惡意代碼檢測論文總結及抽象語法樹(AST)提取
- [論文閱讀] (17)CCS2019 針對PowerShell腳本的輕量級去混淆和語義感知攻擊檢測
- [論文閱讀] (18)英文論文Model Design和Overview如何撰寫及精句摘抄——以系統AI安全頂會為例
- [論文閱讀] (19)英文論文Evaluation(實驗數據集、指標和環境)如何描述及精句摘抄——以系統AI安全頂會為例
- [論文閱讀] (20)USENIXSec21 DeepReflect:通過二進制重構發現惡意功能(惡意代碼ROI分析經典)
一.摘要
深度學習已在惡意軟件分類任務中表現出良好的結果。然而:
- 人工分析效率低:對于未知惡意軟件的binary,分析人員仍要花大量時間來利用靜態分析工具逆向整個binary,從而識別關鍵的惡意行為
- 監督學習開銷大:盡管機器學習可用來幫助識別二進制的重要部分,但由于獲取足夠大的標記數據集開銷很大,因此監督學習方法是不切實際的
為了提高靜態(或手動)逆向工程的生產力,我們提出了DeepReflect:一種用于定位(localize)和識別(identify)惡意二進制文件中惡意軟件組件的工具。
- 為了定位惡意軟件組件,我們以一種新型(novel)方式,即首先使用一個無監督的深度神經網絡l來定位惡意軟件中惡意組件(函數)的位置
- 其次,通過半監督聚類分析對惡意組件進行分類,根據惡意行為分類確定惡意函數的行為,其中分析人員在他們的日常工作流程中逐步提供標簽
- 該工具是實用的,因為它不需要數據標記(require no data labeling)來訓練定位模型,也不需要最小/非侵入性標記來增量地訓練分類器
我們通過5個惡意軟件分析人員對超過26k個惡意軟件樣本進行評估。實驗發現,DeepReflect讓每個分析人員需要逆向工程的函數數量平均減少了85%。本文方法還可以檢測到80%的惡意軟件組件,而當使用基于簽名的工具CAPA時,該值僅為43%。
- 企業界對比:CAPA
此外,DeepReflect提出的自動編碼器(autoencoder)比Shap(一種人工智能解釋工具)表現得更好。這一點很重要,因為Shap是一種最先進(state-of-the-art)的方法,需要一個標記的數據集,而我們的自動編碼器不需要。
- 學術界對比:Shap
二.引言
由于每篇論文的引言都非常重要,因此該部分作者會全文翻譯,后續章節則介紹重點內容。
1.背景引出挑戰
靜態逆向工程惡意軟件可能是一個手動且乏味的過程。公司每周可以收到多達 500 萬個PE樣本。 雖然大多數組織提前對這些樣本進行分類(triage),以減少要分析的惡意軟件數量(即,檢查 VirusTotal來獲取反病毒 (AV) 引擎結果、在受控沙箱中執行樣本、提取靜態和動態簽名等) ,但最終仍然需要靜態逆向工程的惡意軟件樣本。這是因為總會有新的惡意軟件樣本,沒有被反病毒公司分析過,或者缺乏簽名來識別這些新樣本。最終,該樣本有可能會拒絕在分析人員的動態沙箱(sandbox)中執行。
- Reverse engineering malware statically can be a manual and tedious process.
- checking VirusTotal [12] for antivirus (AV) engine results, executing the sample in a controlled sandbox, extracting static and dynamic signatures, etc.
當前的解決方案以為惡意軟件樣本創建簽名、分類和聚類的形式存在。然而,這些解決方案只能預測樣本的類別(例如,良性與惡意,或特定的惡意軟件家族)。他們無法定位或解釋惡意軟件樣本本身內部的行為(定位惡意函數位置、解釋惡意函數行為),而分析師需要執行(perform)這些行為來生成報告并改進他們公司的惡意軟件檢測產品。事實上,由于工作量過大,該領域已呈現了倦怠。
- Current solutions exist in the form of creating signatures [33,45,72], classification [14,30,36,41], and clustering [18,25,52] for malware samples.
為了確定他們的需求,我們咨詢了四名逆向工程惡意軟件分析師(一名來自AV公司,三名來自政府部門)。本文發現,如果惡意軟件分析師有一個工具可以:
- (1) 識別惡意軟件中惡意函數的位置
identify where malicious functionalities are in a malware - (2) 標記這些惡意函數的行為
label those functionalities
那么,他們的工作將更有效率。開發這樣一種工具的挑戰在于:
- (1) 需要能夠區分什么是良性的(benign),什么是惡意的(malicious)
- (2) 理解識別出的惡意行為的語義
對于第一個挑戰,區分良性和惡意是困難的,因為惡意軟件和良性軟件的行為通常在高層次上重疊。對于第二個挑戰,自動標記和驗證這些行為是很困難的,因為沒有單獨標記的惡意軟件函數的數據集(與使用反病毒標簽的開放數據集的惡意軟件檢測和分類系統不同)。
2.如何解決挑戰
為了解決這些挑戰,我們開發了DEEPREFLECT,它使用:
- (1) 一個無監督的深度學習模型來定位二進制中的惡意函數
- (2) 一個半監督聚類模型,它使用從分析人員的日常工作流程中獲得的少量標簽對識別的函數進行分類
為了定位(locate)二進制文件中的惡意軟件組件,我們使用自動編碼器(autoencoder,AE)。AE是一種基于神經網絡的機器學習模型,其任務是將其輸入重構為輸出(編碼還原)。由于網絡內層存在壓縮,AE被迫學習訓練分布中的關鍵概念。我們的直覺是,如果在良性二進制文件上訓練AE,它將很難重建惡意二進制文件(即我們沒有訓練它的樣本)。自然地,AE將無法重建(reconstruct)包含惡意行為的二進制數據區域(在良性樣本中是不可見或罕見的)。因此(Thus),重構錯誤可以用來識別惡意軟件中的惡意組件。此外,由于AE是以無監督的方式訓練的,我們不需要數百萬標記的樣本,公司可以利用自己的惡意軟件二進制數據集。
該約束讀者需要理解,本文使用惡意樣本進行學習和識別。
為了對定位的惡意軟件組件進行分類,我們:
- (1) 對惡意軟件樣本中所有已識別的函數進行聚類
- (2) 使用分析人員在日常工作流程中所做的注釋(即少量人工分析的函數行為標簽)來標記聚類結果
這種方法是半監督的,因為每個類簇(cluster)只需要少數函數的行為標簽(如三個)即可將大多數標簽分配給整個集群。隨著時間推移,我們可以將AE識別的函數映射到聚類模型來預測函數的類別(如,C&C、特權升級等),即認為函數和最接近的類簇有相同的行為標簽。這反過來又節省了分析人員的時間,因為他們不必一次又一次地對相同的代碼進行逆向工程。
注意,無監督 AE 為惡意軟件分析人員提供了即時實用程序,無需訓練或使用半監督聚類模型。這是因為它:
- (1) 通過對最相關的函數進行排序(重構誤差)來吸引分析師的注意力
- (2) 過濾掉可能需要花費分析師數小時或數天時間來解釋的函數
DEEPREFLECT根據我們是為惡意軟件分析人員的反饋進行設計和修改的,并評估其有效性和實用性。
我們評估了DEEPREFLECT的性能,包括五個工作:
- (1) 識別惡意軟件中的惡意活動
- (2) 聚類相關的惡意軟件組件
- (3) 將分析人員的注意力集中在重要事情上
- (4) 揭示不同惡意軟件家族之間的共享行為
- (5) 處理涉及混淆的對抗性攻擊
3.創新(Contribution)
我們的貢獻如下:
- 提出了一個新穎的工具,它可以幫助惡意軟件分析師:(1) 在靜態惡意軟件樣本中自動定位和識別惡意行為,(2) 洞察分析不同惡意軟件家族之間的功能關系。
- 提出一種在靜態分析中使用機器學習的新穎實用方法:(1) AE訓練是在一種無監督方式下進行的,無需為系統標注任何樣本,就可以產生突出顯示惡意軟件組件的實用程序,(2) 分類是以半監督方式完成,具有最小的干預:分析人員的常規工作流的注釋用作標簽,群集中的大多數標簽用于對相關的惡意軟件組件進行分類。
- 本文提出了一種解釋框架(如我們提出的 AE 或 SHAP)定位惡意軟件重要部分的方法,該方法可以映射回原始二進制或控制流圖的特征。
三.Scope & Overview
1.Motivation
圖1展示了一個典型的惡意軟件分析師Molly的工作流程。當給定一個惡意軟件樣本,Molly的任務是了解該樣本在做什么,以便她寫一份技術報告并改進公司的檢測系統,從而在未來識別該類樣本。
- (1) 首先查詢VT(virtotul)和其他組織,以確定他們以前是否見過這個特定的樣本,然而并沒有
- (2) 在一個自定義的沙箱中執行樣本以了解其動態行為,然而沒有顯示任何惡意行為或拒絕執行;運行一些內部工具,誘使惡意軟件執行其隱藏的行為,但仍無效時
- (3) 嘗試脫殼(unpacking)和靜態逆向分析惡意樣本,以了解其潛在行為
- (4) 在反匯編程序(IDA Pro 或 BinaryNinja)中打開脫殼后的樣本,被數千個函數淹沒,接著運行各種靜態簽名檢測工具來識別惡意軟件的某些特定惡意組件,但仍無效
- (5) 逐個查看每個函數(可能通過 API 調用和字符串過濾)以嘗試了解它們的行為
- (6) 在分析樣本的行為后,撰寫分析報告(包含基本信息、IOC、靜態簽名等)
然而,當新的樣本出現時,Molly需要重復同樣的任務。由于這種重復的體力勞動,這項工作對Molly來說變得單調乏味和耗時。
DEEPREFLECT旨在減輕惡意分析師的分析工作,能逆向一個未知的惡意軟件樣本,從而減輕他們繁重的任務,并為相似的函數標注行為標簽。
2.Proposed Solution
我們提出了DEEPREFLECT,該工具能:
-
(1) 定位惡意軟件binary中的惡意函數
locates malicious functions within a malware binary -
(2) 描述這些函數的行為
describes the behaviors of those functions
雖然分析人員可能首先嘗試通過搜索特定的字符串和API調用來靜態地識別行為,但這些行為很容易被分析人員混淆或隱藏( obfuscated or hidden)。DEEPREFLECT沒有做出這樣的假設,并試圖通過控制流圖(control-flow graph,CFG)特性和API調用(API calls)的組合來識別這些相同的行為。
DEEPREFLECT通過學習正常情況下良性的二進制函數來工作。因此,任何異常都表明這些函數不會出現在良性二進制文件中,而可能被用于惡意行為中。這些異常函數更可能是惡意函數,分析師可以只分析它們,從而縮小工作范圍。如圖5所示,DEEPREFLECT將分析師必須分析的函數數量平均減少了 85%。此外,實驗表明我們的方法優于旨在實現相同目標的基于簽名的技術。
3.Research Goals
本文有四個主要目標:
- G1:準確地識別惡意軟件樣本中的惡意活動
- G2:幫助分析人員在靜態分析惡意軟件樣本時集中注意力
- G3:處理新的(不可見的)惡意軟件家族
- G4:深入了解惡意軟件家族的關系和趨勢
四.模型設計
1.總體框架
DEEPREFLECT的目標是識別惡意軟件二進制中的惡意函數。在實踐中,它通過定位異常基本塊(感興趣區域 regions of interest,RoI)來識別可能是惡意的函數。然后,分析人員必須確定這些函數是惡意行為還是良性行為。DEEPREFLECT有兩個主要步驟,如圖2所示:
- RoI檢測(RoI detection):通過AE(AutoEncoder)來執行的
- RoI注釋(RoI annotation):通過對每個函數的所有RoI聚類,并將標記聚類結果來執行注釋。注意,一個函數可能有多個ROI,用每個函數自己的ROI的均值表示該函數,然后對函數聚類
(1) 術語 Terminology
首先定義惡意行為(malicious behaviors)的含義。我們根據識別惡意軟件源代碼的核心組件(例如,拒絕服務功能、垃圾郵件功能、鍵盤記錄器功能、命令和控制C&C功能、利用遠程服務等)來生成真實情況(ground-truth)。通過MITRE ATT&CK框架描述,如表3所示。
然而,當靜態逆向工程評估惡意軟件二進制文件時(即在野惡意軟件二進制 in-the-wild malware binaries),我們有時無法肯定地將觀察到的低級函數歸因于更高級別的描述。例如,惡意軟件可能會因為許多不同的原因修改注冊表項,但有時確定哪個注冊表項因什么原因而被修改是很困難的,因此只能粗略地標記為“防御逃避:修改注冊表(Defense Evasion: Modify Registry)”。即使是像CAPA這樣的現代工具,也能識別出這些類型的模糊標簽。因此,在我們的評估中,我們將“惡意行為”表示為可由MITRE ATT&CK框架描述的函數。
(2) RoI Detection
檢測的目標是自動識別惡意軟件二進制文件中的惡意區域。例如,我們希望檢測C&C邏輯的位置,而不是檢測該邏輯的特定組件(例如,網絡API調用connect()、send() 和 recv())。RoI檢測的優點是分析人員可以快速定位啟動和操作惡意行為的特定代碼區域。先前的工作只關注于創建臨時簽名,簡單地將二進制文件標識為惡意軟件或僅基于API調用的某些函數。這對于分析人員擴大他們的工作特別有用(即不僅僅依賴手動逆向工程和領域專業知識)。
(3) RoI Annotation
注釋的目標是自動標記包含RoI的函數的行為,即識別惡意函數在做什么。由于分析人員為標記集群所執行的初始工作是一個長尾分布。也就是說,只需要前期做比較重要的工作,隨著時間推移,工作量會減少。這個過程的優點很簡單:它為分析人員提供了一種自動生成未知樣本的報告及見解的方法。例如,如果惡意軟件示例的變體包含與之前的惡意軟件示例相似的邏輯(但對于分析人員來說看起來不同以至于不熟悉),我們的工具為他們提供了一種更快實現這一點的方法。
2.RoI Detection
首先介紹了AutoEncode(AE)神經網絡。此外,先前的工作已經證明,當自動編碼器在良性分布上進行訓練時,AE可以檢測到惡意(異常)行為。我們的假設是,與良性二進制文件相比,惡意軟件二進制文件將包含相似但獨特的功能。
當使用大量良性樣本訓練AE后,給定一個隨機的樣本,可以利用公式(2)計算,超過MSE的即認為是惡意區域,突出顯示ROI異常基本塊。與先前識別整個樣本為惡意區域的工作相比,我們識別了每個樣本中的惡意區域。具體而言,我們計算的 localized MSE 定義如下:
We denote the mapped set of RoIs identified in sample x as the set
(1) Features
我們特征(c)的靈感來自于先前工作中發現的特征,即屬性控制流圖(attributed control flow graph,ACFG)特征[23,75]。在這些工作中,ACFG特征被選擇來執行二進制相似性,因為它們假設這些特征(由結構和數字CFG特征組成)將在多個平臺和編譯器上是一致的。
- Genius
- Gemini
為了在二進制樣本中定位惡意行為的位置,編碼使用的特征必須一對一的映射回原樣本。因此,作者將每個二進制文件表示為一個 m×c 的矩陣,該矩陣使用c個靜態特征捕獲前m個基本塊以總結樣本的behavior。m設置為20k個基本塊,是因為95%的數據集樣本具有20k或者更少的基本塊, c設置為18個特征。
Our features consist of counts of instruction types within each basic block (a more detailed form of those extracted for ACFG features), structural features of the CFG, and categories of API calls (which have been used to summarize malware program behaviors).
- Structural Characteristics
結構特征2個,每個基本塊的后代(offspring)數量和betweenness score,可以描述不同功能的控制流結構,比如網絡通信(connect, send, recv)或文件加密(findfile, open, read, encrypt, write, close)。如圖6所示。
- Arithmetic Instructions
算術指令3個,每個基本塊基本數學、邏輯運算、位移指令的數量(“basic math”, “logic operation”, and “bit shifting”)。這些算術指令特征可以用來表示如何對更高層次的行為執行數學運算,以及數字如何與函數交互。例如,加密函數可能包含大量的xor指令,混淆函數可能包含邏輯和位移操作的組合等。
- Transfer Instructions
轉移指令3個,每個基本塊內堆棧操作,寄存器操作和端口操作的數量(“stack operation”, “register operation”, and “port operation”)。這些底層特征可描述更高級別函數的傳輸操作,比如函數的參數和返回值是如何與函數內其余數據交互的,從而描述更復雜的邏輯和數據操作。例如去混淆、解密函數可能設計更多move-related指令,C&C邏輯設計更多堆棧相關指令。
- API Call Categories
API類別10個, 包括"filesystem", “registry”, “network”, “DLL”,“object”, “process”, “service”, “synchronization”, “system information”, and "time"相關的API調用數量。調用不同類型API可執行不同類型功能,直接的表示了高層的函數行為,是很關鍵的特征。
本文工作API特征的選擇受到先前惡意軟件檢測工作[18]的啟發。本文使用的ACFG特征比Genius和Gemini更細致。本文沒有用字符串特征,因為容易被混淆、隱藏。
(2) Model
Autoencoder使用U-Net模型,U-Net的優點是其在編碼器和解碼器之間有跳過連接(skip connections),對樣本x可以跳過某些特征的壓縮以在重構的x’中保持更高的保真度。
首先收集大量的良性樣本,對每個binary抽取上述18個靜態特征用于表示該binary。設有用feature表示的樣本x,AE重構后得到x’,訓練的目標是最小化重構損失,即輸入x和輸出x’之間的損失。
RoI Detection會在m個基本塊中檢測出一些異常基本塊。這些基本塊分別屬于不同的函數,使用例如BinaryNinja的工具就可以確定ROI屬于哪些函數,即認為這些函數可能是惡意函數,也就完成了惡意函數定位的任務。后續RoI Annotation就是對這些函數聚類,完成惡意函數行為標記(分類)的任務。
3.RoI Annotation
給定一個新樣本x,我們希望識別其每個函數的行為(類別),并將其報告給Molly。由于標記所有的函數都是不實用的,所以我們只注釋了少量的函數,并使用聚類分析來傳播結果。
(1) Clustering Features
假設一組脫殼惡意軟件,按上述特征提取方式(18種特征)得到每個binary的特征表示,其中一個binary為x。
(2) Clustering Model
使用PCA將特征數從18降維至5,然后使用HDBSCAN算法對5維特征聚類。
4.Deployment
接下來,我們將描述如何部署和使用它。
(1) Initialization
- 首先對良性和惡意binaries脫殼
- 提取binary靜態特征,形成20×18的矩陣
- 用良性樣本訓練AutoEncoder
- 使用訓練好的AE從惡意樣本中提取ROIs,即惡意基本塊位置
- 計算惡意二進制中惡意函數的行為表示,加入聚類的訓練集D
- PCA降維并聚類生成C
人工分析惡意軟件手動打標,這些label注釋到聚類訓練集中,從而評估實驗結果。換句話說,每個cluster只需要其中幾個函數的label,就可確定整個cluster的label,即確定整個cluster中函數的惡意行為。
(2) Execution
當Molly收到一個新的樣本x,DeepReflect會自動定位惡意函數并標注惡意行為。
- 對樣本x執行脫殼(unpack)
- 通過AutoEncoder獲取ROIs
- 使用BinaryNinja以及ROIs確定惡意函數集合,然后計算惡意函數的行為表示
- PCA模型降維
- 計算每個惡意函數最相近的集群,通過計算和聚類中心的距離實現
- 分配大數據集群注釋給函數
接下來,Molly分析highlighted functions,從而實現:
- obtains a better perspective on what the malware is doing
- annotates any function labeled “unknown” with the corresponding MITRE category (dynamically updating D)
- observe shared relationships between other malware samples and families by their shared clusters(共享關系,分析惡意軟件家族的相關性)
五.實驗評估
1.Dataset
根據CNET爬取PE文件,然后經過脫殼、過濾得到23307個良性樣本。根據VirusTotal ,脫殼、過濾,在沙箱中執行獲取家族標簽。得到36396個惡意樣本,4407個家族。
特征18個:
2.Evaluation 1 – Reliability(可靠性)
為了評估DeepReflect自動編碼器的定位能力,我們與一般方法和領域特定方法進行比較:
-
SHAP(a classification model explanation tool)
Scott M. Lundberg and Su-In Lee. A unified approach to interpreting model predictions. In Advances in Neural Information Processing Systems, pages 4765–4774, 2017. -
CAPA (a signature-based tool by FireEye for identifying malicious behaviors within binaries)
https://github.com/fireeye/capa -
FunctionSimSearch(a function similarity tool by Google)
https://github.com/googleprojectzero/functionsimsearch.
靜態的分析了三個惡意軟件的源代碼(rbot, pegasus, carbanak),分析了其中惡意組件的位置。結果如Figure 3,橫線為80% True Positive Rate。
3.Evaluation 2 – Cohesiveness(凝聚)
測試DeepReflect聚類的凝聚性,對惡意函數行為分類的能力。生成了22469個類簇,最大的簇包含6321個函數,最小的簇包含5個,如圖10所示。在圖10中,我們展示了類簇大小上的分布。圖中顯示,存在一個長尾分布(這在基于密度的聚類中很常見),其中最多的前10個集群占函數的5%。
在聚類質量分析中,89.7%的分析人員手工聚類功能與DeepReflect創建的功能相匹配。
此外,聚類質量存在問題,相同功能卻被聚集在不同類簇中,分析了3個案例,主要因為小地方存在差異,聚類算法過于敏感。
4.Evaluation 3 – Focus
DeepReflect縮小需要人工分析的函數的范圍的能力。如圖5所示,很多樣本需要分析的函數數量降低了90%以上。平均降低85%。
5.Evaluation 4 – Insight
為了評估DeepReflect是否為惡意軟件家族間的關系及其行為提供了有意義的見解,我們探索了集群多樣性。圖4的左側繪制了C中每個類簇中不同家族的數量。由圖可知,在家族之間有許多共享的惡意軟件技術和變體,部分惡意軟件家族間分享了相同的函數,新的惡意軟件家族的樣本也可以被成功的分類。
6.Evaluation 5 – Robustness
使用LLVM混淆,繼續測試模型的魯棒性;同時使用對抗樣本攻擊,將包含本文使用的特征的良性樣本的代碼插入到惡意樣本中,但均未對結果產生顯著影響。
六.限制和相關工作
Every system has weaknesses and ours is no exception.
- Adversarial Attacks.
- Training Data Quality.
- Human Error.
Related Works
- Deep Learning and Malware
- Autoencoders and Security
七.Conclusion
八.個人感受
寫到這里,這篇文章就分享結束了,再次感謝論文作者及引文的老師們。接下來是作者的感受,由于是在線論文讀書筆記,僅代表個人觀點,寫得不好的地方,還請各位老師和博友批評指正,感恩遇見,讀博路漫漫,一起加油~
個人總結:
這篇文章確實是惡意代碼分析領域的頂級論文,寫得非常棒,真心值得我去學習,感謝論文作者及Georgia Institute of Technology團隊的分享。同時,論文的寫作方式及框架、實驗都非常棒,工作量也很大,每個部分甚至都需要我們去理解,具體優點如下:
- 整體方面
DeepReflect是一種新穎的用于定位(localize)和識別(identify)惡意二進制文件中惡意軟件組件的工具,能有效提高靜態(或手動)逆向工程的生產力。DeepReflect可以幫助分析人員實現:(1) 在靜態惡意軟件樣本中自動定位和識別惡意行為,(2) 洞察分析不同惡意軟件家族之間的功能關系。 - 評估方面
本文對比實驗非常詳細和充分。一方面,本文同企業界和學術界經典的工具進行了對比實驗,包括CAPA、SHAP和FunctionSimSearch,這也是系統安全論文經典的實驗比較方式;另一方面,本文涵蓋了五個方向(Reliability、Cohesiveness、Focus、Insight、Robustness)的詳細實驗分析,包括Appendix部分的各種特征案例、惡意家族行為共享分析都非常值得我們學習,而不僅僅是PRF的比較。 - 實戰方面
本文與ATT&CK框架進行有效結合,包括惡意功能或行為的映射。目前安全頂會論文與ATT&CK結合的趨勢越來越多,包括溯源圖、APT檢測、惡意代碼分析、家族分類、二進制等等,這進一步體現了與企業界結合的工作的重要性。同時,論文中詳細舉例介紹了各種情景,并附有對應的圖形解釋,讓審稿老師更為信服,實驗部分的實例對比也很重要。 - 模型方面
本文模型方面主要是AutoEncoder實現半監督學習,能在少樣本標注的情況下識別更多的惡意行為或類別,有效減少了分析人員的手工標注壓力。同時,采用了HDBSCAN聚類,并利用PCA降維,這些都是很常見的模型。但整個模型的框架非常精彩(圖2勝萬語),并且融合了RoI detection和RoI annotation描述故事,故事講得非常棒。ROI區域之前在做APP地圖熱點開發時經常使用,沒想到在二進制領域也有這么好的表達,確實ROI一個詞就能準確表示想做的工作。或許,這種跨方向或學科專業詞匯值得注意。 - 特征方面
特征方面本文采用4大類(Structural Characteristics、Arithmetic Instructions、Transfer Instructions、API Call Categories)18個特征(之前論文已提出),并且提出了一種解釋框架定位惡意軟件重要部分的方法,該方法可以映射回原始二進制或控制流圖的特征。就我而言,我們也應該思考,在進行惡意代碼分析或系統安全研究時,如何盡可能全地覆蓋研究問題來提出特征非常重要,并且結合我們的故事。 - 寫作方面
英文寫作一直是我的短板,不說了,這篇文章從摘要、引言到結論,值得我全文背誦,學海無涯。
這篇文章就寫到這里,希望對您有所幫助。由于作者英語實在太差,論文的水平也很低,寫得不好的地方還請海涵和批評。同時,也歡迎大家討論,繼續加油!感恩遇見,且看且珍惜。
(By:Eastmount 2022-04-28 周四夜于武漢 http://blog.csdn.net/eastmount/ )
最后給出幾段經典的句子:
-
Deep learning has continued to show promising results for malware classification. However, to identify key malicious behaviors, malware analysts are still tasked with reverse engineering unknown malware binaries using static analysis tools, which can take hours.
-
To increase the productivity of static (or manual) reverse engineering, we propose DEEPREFLECT: a tool for localizing and identifying malware components within a malicious binary.
-
Our approach also detects 80% of the malware components compared to 43% when using a signature-based tool (CAPA). Furthermore, DEEPREFLECT performs better with our proposed autoencoder than SHAP (an AI explanation tool). This is significant because SHAP, a state-of-the-art method, requires a labeled dataset and autoencoders do not.
-
While most organizations triage (鑒別、分類) these samples ahead of time to reduce the amount of malware to analyze (i.e., checking VirusTotal [12] for antivirus (AV) engine results, executing the sample in a controlled sandbox, extracting static and dynamic signatures, etc.), at the end of the day there will still be malware samples which require static reverse engineering.
-
Current solutions exist in the form of creating signatures [33,45,72], classification [14,30,36,41], and clustering [18,25,52] for malware samples. However, these solutions only predict the class of the samples (e.g., benign vs. malicious, or a particular malware family). They cannot localize or explain the behaviors within the malware sample itself, which an analyst needs to perform to develop a report and improve their company’s malware detection product.
-
The goal of DEEPREFLECT is to identify malicious functions within a malware binary. In practice, it identifies functions which are likely to be malicious by locating abnormal basic blocks (regions of interest – RoI). The analyst must then determine if these functions exhibit malicious or benign behaviors. There are two primary steps in our pipeline, illustrated in Figure 2: (1) RoI detection and (2) RoI annotation. RoI detection is performed using an autoencoder, while annotation is performed by clustering all of the RoIs per function and labeling those clusters.
-
The challenges in developing such a tool are that (1) one would need to be able to distinguish between what is benign and what is malicious and (2) understand the semantics of the identified malicious behaviors.
-
For the second challenge, automatically labeling and verifying these behaviors is difficult because there are no published datasets of individually labeled malware functions (unlike malware detection and classification systems which use open datasets like antivirus labels).
-
To solve these challenges we developed DEEPREFLECT, a novel tool which uses (1) an unsupervised deep learning model which can locate malicious functions in a binary and (2) a semi-supervised clustering model which classifies the identified functions using very few labels obtained from analyst’s regular daily workflow.
總結
以上是生活随笔為你收集整理的[论文阅读] (20)USENIXSec21 DeepReflect:通过二进制重构发现恶意行为(恶意代码ROI分析经典)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: send 命令 linux,linux的
- 下一篇: 某页式虚拟存储器,若某用户空间为16个界