[论文阅读] (20)USENIXSec21 DeepReflect:通过二进制重构发现恶意行为(恶意代码ROI分析经典)
《娜璋帶你讀論文》系列主要是督促自己閱讀優(yōu)秀論文及聽取學(xué)術(shù)講座,并分享給大家,希望您喜歡。由于作者的英文水平和學(xué)術(shù)能力不高,需要不斷提升,所以還請(qǐng)大家批評(píng)指正,非常歡迎大家給我留言評(píng)論,學(xué)術(shù)路上期待與您前行,加油。
前一篇從個(gè)人角度介紹英文論文實(shí)驗(yàn)評(píng)估(Evaluation)的數(shù)據(jù)集、評(píng)價(jià)指標(biāo)和環(huán)境設(shè)置如何撰寫。這篇文章將帶來USENIXSec21惡意代碼分析的經(jīng)典論文,DeepReflect,它通過二進(jìn)制重構(gòu)發(fā)現(xiàn)惡意功能,來自于佐治亞理工。一方面自己英文太差,只能通過最土的辦法慢慢提升,另一方面是自己的個(gè)人學(xué)習(xí)筆記,并分享出來希望大家批評(píng)和指正。希望這篇文章對(duì)您有所幫助,這些大佬是真的值得我們?nèi)W(xué)習(xí),獻(xiàn)上小弟的膝蓋~fighting!
原文作者:Evan Downing, Yisroel Mirsky, Kyuhong Park, Wenke Lee
原文標(biāo)題:DeepReflect: Discovering Malicious Functionality through Binary Reconstruction
原文鏈接:https://www.usenix.org/conference/usenixsecurity21/presentation/downing
發(fā)表會(huì)議:USENIXSec 2021
代碼下載:https://github.com/evandowning/deepreflect
除了原文和作者的理解,本文還參考了下面三位老師的博客,再次感謝,向老師和好友們學(xué)習(xí)。
- 利用AI+大數(shù)據(jù)的方式分析惡意樣本(三十)- 西杭兄
- DeepReflect:通過二進(jìn)制重構(gòu)標(biāo)識(shí)具體惡意行為 - Serendipity老師
- 論文閱讀 DeepReflect Discovering Malicious Functionality 惡意軟件中惡意函數(shù)的定位和行為聚類 - Erio老師
作者感受:
這篇論文的框架風(fēng)格和我的很像,非常值得我學(xué)習(xí),尤其是文中的英文表述、創(chuàng)新點(diǎn)、模型設(shè)計(jì)、四類特征設(shè)計(jì)以及實(shí)驗(yàn)評(píng)估(從五個(gè)方面評(píng)估)。整個(gè)工作非常充實(shí),也是惡意代碼分析中的一篇經(jīng)典文章。
文章目錄
- 一.摘要
- 二.引言
- 1.背景引出挑戰(zhàn)
- 2.如何解決挑戰(zhàn)
- 3.創(chuàng)新(Contribution)
- 三.Scope & Overview
- 1.Motivation
- 2.Proposed Solution
- 3.Research Goals
- 四.模型設(shè)計(jì)
- 1.總體框架
- 2.RoI Detection
- 3.RoI Annotation
- 4.Deployment
- 五.實(shí)驗(yàn)評(píng)估
- 1.Dataset
- 2.Evaluation 1 – Reliability(可靠性)
- 3.Evaluation 2 – Cohesiveness(凝聚)
- 4.Evaluation 3 – Focus
- 5.Evaluation 4 – Insight
- 6.Evaluation 5 – Robustness
- 六.限制和相關(guān)工作
- 七.Conclusion
- 八.個(gè)人感受
前文賞析:
- [論文閱讀] (01) 拿什么來拯救我的拖延癥?初學(xué)者如何提升編程興趣及LATEX入門詳解
- [論文閱讀] (02) SP2019-Neural Cleanse: Identifying and Mitigating Backdoor Attacks in DNN
- [論文閱讀] (03) 清華張超老師 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing
- [論文閱讀] (04) 人工智能真的安全嗎?浙大團(tuán)隊(duì)外灘大會(huì)分享AI對(duì)抗樣本技術(shù)
- [論文閱讀] (05) NLP知識(shí)總結(jié)及NLP論文撰寫之道——Pvop老師
- [論文閱讀] (06) 萬字詳解什么是生成對(duì)抗網(wǎng)絡(luò)GAN?經(jīng)典論文及案例普及
- [論文閱讀] (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攻擊檢測安全頂會(huì)總結(jié)
- [論文閱讀] (11)ACE算法和暗通道先驗(yàn)圖像去霧算法(Rizzi | 何愷明老師)
- [論文閱讀] (12)英文論文引言introduction如何撰寫及精句摘抄——以入侵檢測系統(tǒng)(IDS)為例
- [論文閱讀] (13)英文論文模型設(shè)計(jì)(Model Design)如何撰寫及精句摘抄——以入侵檢測系統(tǒng)(IDS)為例
- [論文閱讀] (14)英文論文實(shí)驗(yàn)評(píng)估(Evaluation)如何撰寫及精句摘抄(上)——以入侵檢測系統(tǒng)(IDS)為例
- [論文閱讀] (15)英文SCI論文審稿意見及應(yīng)對(duì)策略學(xué)習(xí)筆記總結(jié)
- [論文閱讀] (16)Powershell惡意代碼檢測論文總結(jié)及抽象語法樹(AST)提取
- [論文閱讀] (17)CCS2019 針對(duì)PowerShell腳本的輕量級(jí)去混淆和語義感知攻擊檢測
- [論文閱讀] (18)英文論文Model Design和Overview如何撰寫及精句摘抄——以系統(tǒng)AI安全頂會(huì)為例
- [論文閱讀] (19)英文論文Evaluation(實(shí)驗(yàn)數(shù)據(jù)集、指標(biāo)和環(huán)境)如何描述及精句摘抄——以系統(tǒng)AI安全頂會(huì)為例
- [論文閱讀] (20)USENIXSec21 DeepReflect:通過二進(jìn)制重構(gòu)發(fā)現(xiàn)惡意功能(惡意代碼ROI分析經(jīng)典)
一.摘要
深度學(xué)習(xí)已在惡意軟件分類任務(wù)中表現(xiàn)出良好的結(jié)果。然而:
- 人工分析效率低:對(duì)于未知惡意軟件的binary,分析人員仍要花大量時(shí)間來利用靜態(tài)分析工具逆向整個(gè)binary,從而識(shí)別關(guān)鍵的惡意行為
- 監(jiān)督學(xué)習(xí)開銷大:盡管機(jī)器學(xué)習(xí)可用來幫助識(shí)別二進(jìn)制的重要部分,但由于獲取足夠大的標(biāo)記數(shù)據(jù)集開銷很大,因此監(jiān)督學(xué)習(xí)方法是不切實(shí)際的
為了提高靜態(tài)(或手動(dòng))逆向工程的生產(chǎn)力,我們提出了DeepReflect:一種用于定位(localize)和識(shí)別(identify)惡意二進(jìn)制文件中惡意軟件組件的工具。
- 為了定位惡意軟件組件,我們以一種新型(novel)方式,即首先使用一個(gè)無監(jiān)督的深度神經(jīng)網(wǎng)絡(luò)l來定位惡意軟件中惡意組件(函數(shù))的位置
- 其次,通過半監(jiān)督聚類分析對(duì)惡意組件進(jìn)行分類,根據(jù)惡意行為分類確定惡意函數(shù)的行為,其中分析人員在他們的日常工作流程中逐步提供標(biāo)簽
- 該工具是實(shí)用的,因?yàn)樗恍枰獢?shù)據(jù)標(biāo)記(require no data labeling)來訓(xùn)練定位模型,也不需要最小/非侵入性標(biāo)記來增量地訓(xùn)練分類器
我們通過5個(gè)惡意軟件分析人員對(duì)超過26k個(gè)惡意軟件樣本進(jìn)行評(píng)估。實(shí)驗(yàn)發(fā)現(xiàn),DeepReflect讓每個(gè)分析人員需要逆向工程的函數(shù)數(shù)量平均減少了85%。本文方法還可以檢測到80%的惡意軟件組件,而當(dāng)使用基于簽名的工具CAPA時(shí),該值僅為43%。
- 企業(yè)界對(duì)比:CAPA
此外,DeepReflect提出的自動(dòng)編碼器(autoencoder)比Shap(一種人工智能解釋工具)表現(xiàn)得更好。這一點(diǎn)很重要,因?yàn)镾hap是一種最先進(jìn)(state-of-the-art)的方法,需要一個(gè)標(biāo)記的數(shù)據(jù)集,而我們的自動(dòng)編碼器不需要。
- 學(xué)術(shù)界對(duì)比:Shap
二.引言
由于每篇論文的引言都非常重要,因此該部分作者會(huì)全文翻譯,后續(xù)章節(jié)則介紹重點(diǎn)內(nèi)容。
1.背景引出挑戰(zhàn)
靜態(tài)逆向工程惡意軟件可能是一個(gè)手動(dòng)且乏味的過程。公司每周可以收到多達(dá) 500 萬個(gè)PE樣本。 雖然大多數(shù)組織提前對(duì)這些樣本進(jìn)行分類(triage),以減少要分析的惡意軟件數(shù)量(即,檢查 VirusTotal來獲取反病毒 (AV) 引擎結(jié)果、在受控沙箱中執(zhí)行樣本、提取靜態(tài)和動(dòng)態(tài)簽名等) ,但最終仍然需要靜態(tài)逆向工程的惡意軟件樣本。這是因?yàn)?strong>總會(huì)有新的惡意軟件樣本,沒有被反病毒公司分析過,或者缺乏簽名來識(shí)別這些新樣本。最終,該樣本有可能會(huì)拒絕在分析人員的動(dòng)態(tài)沙箱(sandbox)中執(zhí)行。
- 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.
當(dāng)前的解決方案以為惡意軟件樣本創(chuàng)建簽名、分類和聚類的形式存在。然而,這些解決方案只能預(yù)測樣本的類別(例如,良性與惡意,或特定的惡意軟件家族)。他們無法定位或解釋惡意軟件樣本本身內(nèi)部的行為(定位惡意函數(shù)位置、解釋惡意函數(shù)行為),而分析師需要執(zhí)行(perform)這些行為來生成報(bào)告并改進(jìn)他們公司的惡意軟件檢測產(chǎn)品。事實(shí)上,由于工作量過大,該領(lǐng)域已呈現(xiàn)了倦怠。
- 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公司,三名來自政府部門)。本文發(fā)現(xiàn),如果惡意軟件分析師有一個(gè)工具可以:
- (1) 識(shí)別惡意軟件中惡意函數(shù)的位置
identify where malicious functionalities are in a malware - (2) 標(biāo)記這些惡意函數(shù)的行為
label those functionalities
那么,他們的工作將更有效率。開發(fā)這樣一種工具的挑戰(zhàn)在于:
- (1) 需要能夠區(qū)分什么是良性的(benign),什么是惡意的(malicious)
- (2) 理解識(shí)別出的惡意行為的語義
對(duì)于第一個(gè)挑戰(zhàn),區(qū)分良性和惡意是困難的,因?yàn)閻阂廛浖土夹攒浖男袨橥ǔT诟邔哟紊现丿B。對(duì)于第二個(gè)挑戰(zhàn),自動(dòng)標(biāo)記和驗(yàn)證這些行為是很困難的,因?yàn)闆]有單獨(dú)標(biāo)記的惡意軟件函數(shù)的數(shù)據(jù)集(與使用反病毒標(biāo)簽的開放數(shù)據(jù)集的惡意軟件檢測和分類系統(tǒng)不同)。
2.如何解決挑戰(zhàn)
為了解決這些挑戰(zhàn),我們開發(fā)了DEEPREFLECT,它使用:
- (1) 一個(gè)無監(jiān)督的深度學(xué)習(xí)模型來定位二進(jìn)制中的惡意函數(shù)
- (2) 一個(gè)半監(jiān)督聚類模型,它使用從分析人員的日常工作流程中獲得的少量標(biāo)簽對(duì)識(shí)別的函數(shù)進(jìn)行分類
為了定位(locate)二進(jìn)制文件中的惡意軟件組件,我們使用自動(dòng)編碼器(autoencoder,AE)。AE是一種基于神經(jīng)網(wǎng)絡(luò)的機(jī)器學(xué)習(xí)模型,其任務(wù)是將其輸入重構(gòu)為輸出(編碼還原)。由于網(wǎng)絡(luò)內(nèi)層存在壓縮,AE被迫學(xué)習(xí)訓(xùn)練分布中的關(guān)鍵概念。我們的直覺是,如果在良性二進(jìn)制文件上訓(xùn)練AE,它將很難重建惡意二進(jìn)制文件(即我們沒有訓(xùn)練它的樣本)。自然地,AE將無法重建(reconstruct)包含惡意行為的二進(jìn)制數(shù)據(jù)區(qū)域(在良性樣本中是不可見或罕見的)。因此(Thus),重構(gòu)錯(cuò)誤可以用來識(shí)別惡意軟件中的惡意組件。此外,由于AE是以無監(jiān)督的方式訓(xùn)練的,我們不需要數(shù)百萬標(biāo)記的樣本,公司可以利用自己的惡意軟件二進(jìn)制數(shù)據(jù)集。
該約束讀者需要理解,本文使用惡意樣本進(jìn)行學(xué)習(xí)和識(shí)別。
為了對(duì)定位的惡意軟件組件進(jìn)行分類,我們:
- (1) 對(duì)惡意軟件樣本中所有已識(shí)別的函數(shù)進(jìn)行聚類
- (2) 使用分析人員在日常工作流程中所做的注釋(即少量人工分析的函數(shù)行為標(biāo)簽)來標(biāo)記聚類結(jié)果
這種方法是半監(jiān)督的,因?yàn)槊總€(gè)類簇(cluster)只需要少數(shù)函數(shù)的行為標(biāo)簽(如三個(gè))即可將大多數(shù)標(biāo)簽分配給整個(gè)集群。隨著時(shí)間推移,我們可以將AE識(shí)別的函數(shù)映射到聚類模型來預(yù)測函數(shù)的類別(如,C&C、特權(quán)升級(jí)等),即認(rèn)為函數(shù)和最接近的類簇有相同的行為標(biāo)簽。這反過來又節(jié)省了分析人員的時(shí)間,因?yàn)樗麄儾槐匾淮斡忠淮蔚貙?duì)相同的代碼進(jìn)行逆向工程。
注意,無監(jiān)督 AE 為惡意軟件分析人員提供了即時(shí)實(shí)用程序,無需訓(xùn)練或使用半監(jiān)督聚類模型。這是因?yàn)樗?#xff1a;
- (1) 通過對(duì)最相關(guān)的函數(shù)進(jìn)行排序(重構(gòu)誤差)來吸引分析師的注意力
- (2) 過濾掉可能需要花費(fèi)分析師數(shù)小時(shí)或數(shù)天時(shí)間來解釋的函數(shù)
DEEPREFLECT根據(jù)我們是為惡意軟件分析人員的反饋進(jìn)行設(shè)計(jì)和修改的,并評(píng)估其有效性和實(shí)用性。
我們?cè)u(píng)估了DEEPREFLECT的性能,包括五個(gè)工作:
- (1) 識(shí)別惡意軟件中的惡意活動(dòng)
- (2) 聚類相關(guān)的惡意軟件組件
- (3) 將分析人員的注意力集中在重要事情上
- (4) 揭示不同惡意軟件家族之間的共享行為
- (5) 處理涉及混淆的對(duì)抗性攻擊
3.創(chuàng)新(Contribution)
我們的貢獻(xiàn)如下:
- 提出了一個(gè)新穎的工具,它可以幫助惡意軟件分析師:(1) 在靜態(tài)惡意軟件樣本中自動(dòng)定位和識(shí)別惡意行為,(2) 洞察分析不同惡意軟件家族之間的功能關(guān)系。
- 提出一種在靜態(tài)分析中使用機(jī)器學(xué)習(xí)的新穎實(shí)用方法:(1) AE訓(xùn)練是在一種無監(jiān)督方式下進(jìn)行的,無需為系統(tǒng)標(biāo)注任何樣本,就可以產(chǎn)生突出顯示惡意軟件組件的實(shí)用程序,(2) 分類是以半監(jiān)督方式完成,具有最小的干預(yù):分析人員的常規(guī)工作流的注釋用作標(biāo)簽,群集中的大多數(shù)標(biāo)簽用于對(duì)相關(guān)的惡意軟件組件進(jìn)行分類。
- 本文提出了一種解釋框架(如我們提出的 AE 或 SHAP)定位惡意軟件重要部分的方法,該方法可以映射回原始二進(jìn)制或控制流圖的特征。
三.Scope & Overview
1.Motivation
圖1展示了一個(gè)典型的惡意軟件分析師Molly的工作流程。當(dāng)給定一個(gè)惡意軟件樣本,Molly的任務(wù)是了解該樣本在做什么,以便她寫一份技術(shù)報(bào)告并改進(jìn)公司的檢測系統(tǒng),從而在未來識(shí)別該類樣本。
- (1) 首先查詢VT(virtotul)和其他組織,以確定他們以前是否見過這個(gè)特定的樣本,然而并沒有
- (2) 在一個(gè)自定義的沙箱中執(zhí)行樣本以了解其動(dòng)態(tài)行為,然而沒有顯示任何惡意行為或拒絕執(zhí)行;運(yùn)行一些內(nèi)部工具,誘使惡意軟件執(zhí)行其隱藏的行為,但仍無效時(shí)
- (3) 嘗試脫殼(unpacking)和靜態(tài)逆向分析惡意樣本,以了解其潛在行為
- (4) 在反匯編程序(IDA Pro 或 BinaryNinja)中打開脫殼后的樣本,被數(shù)千個(gè)函數(shù)淹沒,接著運(yùn)行各種靜態(tài)簽名檢測工具來識(shí)別惡意軟件的某些特定惡意組件,但仍無效
- (5) 逐個(gè)查看每個(gè)函數(shù)(可能通過 API 調(diào)用和字符串過濾)以嘗試了解它們的行為
- (6) 在分析樣本的行為后,撰寫分析報(bào)告(包含基本信息、IOC、靜態(tài)簽名等)
然而,當(dāng)新的樣本出現(xiàn)時(shí),Molly需要重復(fù)同樣的任務(wù)。由于這種重復(fù)的體力勞動(dòng),這項(xiàng)工作對(duì)Molly來說變得單調(diào)乏味和耗時(shí)。
DEEPREFLECT旨在減輕惡意分析師的分析工作,能逆向一個(gè)未知的惡意軟件樣本,從而減輕他們繁重的任務(wù),并為相似的函數(shù)標(biāo)注行為標(biāo)簽。
2.Proposed Solution
我們提出了DEEPREFLECT,該工具能:
-
(1) 定位惡意軟件binary中的惡意函數(shù)
locates malicious functions within a malware binary -
(2) 描述這些函數(shù)的行為
describes the behaviors of those functions
雖然分析人員可能首先嘗試通過搜索特定的字符串和API調(diào)用來靜態(tài)地識(shí)別行為,但這些行為很容易被分析人員混淆或隱藏( obfuscated or hidden)。DEEPREFLECT沒有做出這樣的假設(shè),并試圖通過控制流圖(control-flow graph,CFG)特性和API調(diào)用(API calls)的組合來識(shí)別這些相同的行為。
DEEPREFLECT通過學(xué)習(xí)正常情況下良性的二進(jìn)制函數(shù)來工作。因此,任何異常都表明這些函數(shù)不會(huì)出現(xiàn)在良性二進(jìn)制文件中,而可能被用于惡意行為中。這些異常函數(shù)更可能是惡意函數(shù),分析師可以只分析它們,從而縮小工作范圍。如圖5所示,DEEPREFLECT將分析師必須分析的函數(shù)數(shù)量平均減少了 85%。此外,實(shí)驗(yàn)表明我們的方法優(yōu)于旨在實(shí)現(xiàn)相同目標(biāo)的基于簽名的技術(shù)。
3.Research Goals
本文有四個(gè)主要目標(biāo):
- G1:準(zhǔn)確地識(shí)別惡意軟件樣本中的惡意活動(dòng)
- G2:幫助分析人員在靜態(tài)分析惡意軟件樣本時(shí)集中注意力
- G3:處理新的(不可見的)惡意軟件家族
- G4:深入了解惡意軟件家族的關(guān)系和趨勢
四.模型設(shè)計(jì)
1.總體框架
DEEPREFLECT的目標(biāo)是識(shí)別惡意軟件二進(jìn)制中的惡意函數(shù)。在實(shí)踐中,它通過定位異常基本塊(感興趣區(qū)域 regions of interest,RoI)來識(shí)別可能是惡意的函數(shù)。然后,分析人員必須確定這些函數(shù)是惡意行為還是良性行為。DEEPREFLECT有兩個(gè)主要步驟,如圖2所示:
- RoI檢測(RoI detection):通過AE(AutoEncoder)來執(zhí)行的
- RoI注釋(RoI annotation):通過對(duì)每個(gè)函數(shù)的所有RoI聚類,并將標(biāo)記聚類結(jié)果來執(zhí)行注釋。注意,一個(gè)函數(shù)可能有多個(gè)ROI,用每個(gè)函數(shù)自己的ROI的均值表示該函數(shù),然后對(duì)函數(shù)聚類
(1) 術(shù)語 Terminology
首先定義惡意行為(malicious behaviors)的含義。我們根據(jù)識(shí)別惡意軟件源代碼的核心組件(例如,拒絕服務(wù)功能、垃圾郵件功能、鍵盤記錄器功能、命令和控制C&C功能、利用遠(yuǎn)程服務(wù)等)來生成真實(shí)情況(ground-truth)。通過MITRE ATT&CK框架描述,如表3所示。
然而,當(dāng)靜態(tài)逆向工程評(píng)估惡意軟件二進(jìn)制文件時(shí)(即在野惡意軟件二進(jìn)制 in-the-wild malware binaries),我們有時(shí)無法肯定地將觀察到的低級(jí)函數(shù)歸因于更高級(jí)別的描述。例如,惡意軟件可能會(huì)因?yàn)樵S多不同的原因修改注冊(cè)表項(xiàng),但有時(shí)確定哪個(gè)注冊(cè)表項(xiàng)因什么原因而被修改是很困難的,因此只能粗略地標(biāo)記為“防御逃避:修改注冊(cè)表(Defense Evasion: Modify Registry)”。即使是像CAPA這樣的現(xiàn)代工具,也能識(shí)別出這些類型的模糊標(biāo)簽。因此,在我們的評(píng)估中,我們將“惡意行為”表示為可由MITRE ATT&CK框架描述的函數(shù)。
(2) RoI Detection
檢測的目標(biāo)是自動(dòng)識(shí)別惡意軟件二進(jìn)制文件中的惡意區(qū)域。例如,我們希望檢測C&C邏輯的位置,而不是檢測該邏輯的特定組件(例如,網(wǎng)絡(luò)API調(diào)用connect()、send() 和 recv())。RoI檢測的優(yōu)點(diǎn)是分析人員可以快速定位啟動(dòng)和操作惡意行為的特定代碼區(qū)域。先前的工作只關(guān)注于創(chuàng)建臨時(shí)簽名,簡單地將二進(jìn)制文件標(biāo)識(shí)為惡意軟件或僅基于API調(diào)用的某些函數(shù)。這對(duì)于分析人員擴(kuò)大他們的工作特別有用(即不僅僅依賴手動(dòng)逆向工程和領(lǐng)域?qū)I(yè)知識(shí))。
(3) RoI Annotation
注釋的目標(biāo)是自動(dòng)標(biāo)記包含RoI的函數(shù)的行為,即識(shí)別惡意函數(shù)在做什么。由于分析人員為標(biāo)記集群所執(zhí)行的初始工作是一個(gè)長尾分布。也就是說,只需要前期做比較重要的工作,隨著時(shí)間推移,工作量會(huì)減少。這個(gè)過程的優(yōu)點(diǎn)很簡單:它為分析人員提供了一種自動(dòng)生成未知樣本的報(bào)告及見解的方法。例如,如果惡意軟件示例的變體包含與之前的惡意軟件示例相似的邏輯(但對(duì)于分析人員來說看起來不同以至于不熟悉),我們的工具為他們提供了一種更快實(shí)現(xiàn)這一點(diǎn)的方法。
2.RoI Detection
首先介紹了AutoEncode(AE)神經(jīng)網(wǎng)絡(luò)。此外,先前的工作已經(jīng)證明,當(dāng)自動(dòng)編碼器在良性分布上進(jìn)行訓(xùn)練時(shí),AE可以檢測到惡意(異常)行為。我們的假設(shè)是,與良性二進(jìn)制文件相比,惡意軟件二進(jìn)制文件將包含相似但獨(dú)特的功能。
當(dāng)使用大量良性樣本訓(xùn)練AE后,給定一個(gè)隨機(jī)的樣本,可以利用公式(2)計(jì)算,超過MSE的即認(rèn)為是惡意區(qū)域,突出顯示ROI異常基本塊。與先前識(shí)別整個(gè)樣本為惡意區(qū)域的工作相比,我們識(shí)別了每個(gè)樣本中的惡意區(qū)域。具體而言,我們計(jì)算的 localized MSE 定義如下:
We denote the mapped set of RoIs identified in sample x as the set
(1) Features
我們特征(c)的靈感來自于先前工作中發(fā)現(xiàn)的特征,即屬性控制流圖(attributed control flow graph,ACFG)特征[23,75]。在這些工作中,ACFG特征被選擇來執(zhí)行二進(jìn)制相似性,因?yàn)樗鼈兗僭O(shè)這些特征(由結(jié)構(gòu)和數(shù)字CFG特征組成)將在多個(gè)平臺(tái)和編譯器上是一致的。
- Genius
- Gemini
為了在二進(jìn)制樣本中定位惡意行為的位置,編碼使用的特征必須一對(duì)一的映射回原樣本。因此,作者將每個(gè)二進(jìn)制文件表示為一個(gè) m×c 的矩陣,該矩陣使用c個(gè)靜態(tài)特征捕獲前m個(gè)基本塊以總結(jié)樣本的behavior。m設(shè)置為20k個(gè)基本塊,是因?yàn)?5%的數(shù)據(jù)集樣本具有20k或者更少的基本塊, c設(shè)置為18個(gè)特征。
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
結(jié)構(gòu)特征2個(gè),每個(gè)基本塊的后代(offspring)數(shù)量和betweenness score,可以描述不同功能的控制流結(jié)構(gòu),比如網(wǎng)絡(luò)通信(connect, send, recv)或文件加密(findfile, open, read, encrypt, write, close)。如圖6所示。
- Arithmetic Instructions
算術(shù)指令3個(gè),每個(gè)基本塊基本數(shù)學(xué)、邏輯運(yùn)算、位移指令的數(shù)量(“basic math”, “l(fā)ogic operation”, and “bit shifting”)。這些算術(shù)指令特征可以用來表示如何對(duì)更高層次的行為執(zhí)行數(shù)學(xué)運(yùn)算,以及數(shù)字如何與函數(shù)交互。例如,加密函數(shù)可能包含大量的xor指令,混淆函數(shù)可能包含邏輯和位移操作的組合等。
- Transfer Instructions
轉(zhuǎn)移指令3個(gè),每個(gè)基本塊內(nèi)堆棧操作,寄存器操作和端口操作的數(shù)量(“stack operation”, “register operation”, and “port operation”)。這些底層特征可描述更高級(jí)別函數(shù)的傳輸操作,比如函數(shù)的參數(shù)和返回值是如何與函數(shù)內(nèi)其余數(shù)據(jù)交互的,從而描述更復(fù)雜的邏輯和數(shù)據(jù)操作。例如去混淆、解密函數(shù)可能設(shè)計(jì)更多move-related指令,C&C邏輯設(shè)計(jì)更多堆棧相關(guān)指令。
- API Call Categories
API類別10個(gè), 包括"filesystem", “registry”, “network”, “DLL”,“object”, “process”, “service”, “synchronization”, “system information”, and "time"相關(guān)的API調(diào)用數(shù)量。調(diào)用不同類型API可執(zhí)行不同類型功能,直接的表示了高層的函數(shù)行為,是很關(guān)鍵的特征。
本文工作API特征的選擇受到先前惡意軟件檢測工作[18]的啟發(fā)。本文使用的ACFG特征比Genius和Gemini更細(xì)致。本文沒有用字符串特征,因?yàn)槿菀妆换煜㈦[藏。
(2) Model
Autoencoder使用U-Net模型,U-Net的優(yōu)點(diǎn)是其在編碼器和解碼器之間有跳過連接(skip connections),對(duì)樣本x可以跳過某些特征的壓縮以在重構(gòu)的x’中保持更高的保真度。
首先收集大量的良性樣本,對(duì)每個(gè)binary抽取上述18個(gè)靜態(tài)特征用于表示該binary。設(shè)有用feature表示的樣本x,AE重構(gòu)后得到x’,訓(xùn)練的目標(biāo)是最小化重構(gòu)損失,即輸入x和輸出x’之間的損失。
RoI Detection會(huì)在m個(gè)基本塊中檢測出一些異常基本塊。這些基本塊分別屬于不同的函數(shù),使用例如BinaryNinja的工具就可以確定ROI屬于哪些函數(shù),即認(rèn)為這些函數(shù)可能是惡意函數(shù),也就完成了惡意函數(shù)定位的任務(wù)。后續(xù)RoI Annotation就是對(duì)這些函數(shù)聚類,完成惡意函數(shù)行為標(biāo)記(分類)的任務(wù)。
3.RoI Annotation
給定一個(gè)新樣本x,我們希望識(shí)別其每個(gè)函數(shù)的行為(類別),并將其報(bào)告給Molly。由于標(biāo)記所有的函數(shù)都是不實(shí)用的,所以我們只注釋了少量的函數(shù),并使用聚類分析來傳播結(jié)果。
(1) Clustering Features
假設(shè)一組脫殼惡意軟件,按上述特征提取方式(18種特征)得到每個(gè)binary的特征表示,其中一個(gè)binary為x。
(2) Clustering Model
使用PCA將特征數(shù)從18降維至5,然后使用HDBSCAN算法對(duì)5維特征聚類。
4.Deployment
接下來,我們將描述如何部署和使用它。
(1) Initialization
- 首先對(duì)良性和惡意binaries脫殼
- 提取binary靜態(tài)特征,形成20×18的矩陣
- 用良性樣本訓(xùn)練AutoEncoder
- 使用訓(xùn)練好的AE從惡意樣本中提取ROIs,即惡意基本塊位置
- 計(jì)算惡意二進(jìn)制中惡意函數(shù)的行為表示,加入聚類的訓(xùn)練集D
- PCA降維并聚類生成C
人工分析惡意軟件手動(dòng)打標(biāo),這些label注釋到聚類訓(xùn)練集中,從而評(píng)估實(shí)驗(yàn)結(jié)果。換句話說,每個(gè)cluster只需要其中幾個(gè)函數(shù)的label,就可確定整個(gè)cluster的label,即確定整個(gè)cluster中函數(shù)的惡意行為。
(2) Execution
當(dāng)Molly收到一個(gè)新的樣本x,DeepReflect會(huì)自動(dòng)定位惡意函數(shù)并標(biāo)注惡意行為。
- 對(duì)樣本x執(zhí)行脫殼(unpack)
- 通過AutoEncoder獲取ROIs
- 使用BinaryNinja以及ROIs確定惡意函數(shù)集合,然后計(jì)算惡意函數(shù)的行為表示
- PCA模型降維
- 計(jì)算每個(gè)惡意函數(shù)最相近的集群,通過計(jì)算和聚類中心的距離實(shí)現(xiàn)
- 分配大數(shù)據(jù)集群注釋給函數(shù)
接下來,Molly分析highlighted functions,從而實(shí)現(xiàn):
- 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(共享關(guān)系,分析惡意軟件家族的相關(guān)性)
五.實(shí)驗(yàn)評(píng)估
1.Dataset
根據(jù)CNET爬取PE文件,然后經(jīng)過脫殼、過濾得到23307個(gè)良性樣本。根據(jù)VirusTotal ,脫殼、過濾,在沙箱中執(zhí)行獲取家族標(biāo)簽。得到36396個(gè)惡意樣本,4407個(gè)家族。
特征18個(gè):
2.Evaluation 1 – Reliability(可靠性)
為了評(píng)估DeepReflect自動(dòng)編碼器的定位能力,我們與一般方法和領(lǐng)域特定方法進(jìn)行比較:
-
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.
靜態(tài)的分析了三個(gè)惡意軟件的源代碼(rbot, pegasus, carbanak),分析了其中惡意組件的位置。結(jié)果如Figure 3,橫線為80% True Positive Rate。
3.Evaluation 2 – Cohesiveness(凝聚)
測試DeepReflect聚類的凝聚性,對(duì)惡意函數(shù)行為分類的能力。生成了22469個(gè)類簇,最大的簇包含6321個(gè)函數(shù),最小的簇包含5個(gè),如圖10所示。在圖10中,我們展示了類簇大小上的分布。圖中顯示,存在一個(gè)長尾分布(這在基于密度的聚類中很常見),其中最多的前10個(gè)集群占函數(shù)的5%。
在聚類質(zhì)量分析中,89.7%的分析人員手工聚類功能與DeepReflect創(chuàng)建的功能相匹配。
此外,聚類質(zhì)量存在問題,相同功能卻被聚集在不同類簇中,分析了3個(gè)案例,主要因?yàn)樾〉胤酱嬖诓町?#xff0c;聚類算法過于敏感。
4.Evaluation 3 – Focus
DeepReflect縮小需要人工分析的函數(shù)的范圍的能力。如圖5所示,很多樣本需要分析的函數(shù)數(shù)量降低了90%以上。平均降低85%。
5.Evaluation 4 – Insight
為了評(píng)估DeepReflect是否為惡意軟件家族間的關(guān)系及其行為提供了有意義的見解,我們探索了集群多樣性。圖4的左側(cè)繪制了C中每個(gè)類簇中不同家族的數(shù)量。由圖可知,在家族之間有許多共享的惡意軟件技術(shù)和變體,部分惡意軟件家族間分享了相同的函數(shù),新的惡意軟件家族的樣本也可以被成功的分類。
6.Evaluation 5 – Robustness
使用LLVM混淆,繼續(xù)測試模型的魯棒性;同時(shí)使用對(duì)抗樣本攻擊,將包含本文使用的特征的良性樣本的代碼插入到惡意樣本中,但均未對(duì)結(jié)果產(chǎn)生顯著影響。
六.限制和相關(guān)工作
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
八.個(gè)人感受
寫到這里,這篇文章就分享結(jié)束了,再次感謝論文作者及引文的老師們。接下來是作者的感受,由于是在線論文讀書筆記,僅代表個(gè)人觀點(diǎn),寫得不好的地方,還請(qǐng)各位老師和博友批評(píng)指正,感恩遇見,讀博路漫漫,一起加油~
個(gè)人總結(jié):
這篇文章確實(shí)是惡意代碼分析領(lǐng)域的頂級(jí)論文,寫得非常棒,真心值得我去學(xué)習(xí),感謝論文作者及Georgia Institute of Technology團(tuán)隊(duì)的分享。同時(shí),論文的寫作方式及框架、實(shí)驗(yàn)都非常棒,工作量也很大,每個(gè)部分甚至都需要我們?nèi)ダ斫?#xff0c;具體優(yōu)點(diǎn)如下:
- 整體方面
DeepReflect是一種新穎的用于定位(localize)和識(shí)別(identify)惡意二進(jìn)制文件中惡意軟件組件的工具,能有效提高靜態(tài)(或手動(dòng))逆向工程的生產(chǎn)力。DeepReflect可以幫助分析人員實(shí)現(xiàn):(1) 在靜態(tài)惡意軟件樣本中自動(dòng)定位和識(shí)別惡意行為,(2) 洞察分析不同惡意軟件家族之間的功能關(guān)系。 - 評(píng)估方面
本文對(duì)比實(shí)驗(yàn)非常詳細(xì)和充分。一方面,本文同企業(yè)界和學(xué)術(shù)界經(jīng)典的工具進(jìn)行了對(duì)比實(shí)驗(yàn),包括CAPA、SHAP和FunctionSimSearch,這也是系統(tǒng)安全論文經(jīng)典的實(shí)驗(yàn)比較方式;另一方面,本文涵蓋了五個(gè)方向(Reliability、Cohesiveness、Focus、Insight、Robustness)的詳細(xì)實(shí)驗(yàn)分析,包括Appendix部分的各種特征案例、惡意家族行為共享分析都非常值得我們學(xué)習(xí),而不僅僅是PRF的比較。 - 實(shí)戰(zhàn)方面
本文與ATT&CK框架進(jìn)行有效結(jié)合,包括惡意功能或行為的映射。目前安全頂會(huì)論文與ATT&CK結(jié)合的趨勢越來越多,包括溯源圖、APT檢測、惡意代碼分析、家族分類、二進(jìn)制等等,這進(jìn)一步體現(xiàn)了與企業(yè)界結(jié)合的工作的重要性。同時(shí),論文中詳細(xì)舉例介紹了各種情景,并附有對(duì)應(yīng)的圖形解釋,讓審稿老師更為信服,實(shí)驗(yàn)部分的實(shí)例對(duì)比也很重要。 - 模型方面
本文模型方面主要是AutoEncoder實(shí)現(xiàn)半監(jiān)督學(xué)習(xí),能在少樣本標(biāo)注的情況下識(shí)別更多的惡意行為或類別,有效減少了分析人員的手工標(biāo)注壓力。同時(shí),采用了HDBSCAN聚類,并利用PCA降維,這些都是很常見的模型。但整個(gè)模型的框架非常精彩(圖2勝萬語),并且融合了RoI detection和RoI annotation描述故事,故事講得非常棒。ROI區(qū)域之前在做APP地圖熱點(diǎn)開發(fā)時(shí)經(jīng)常使用,沒想到在二進(jìn)制領(lǐng)域也有這么好的表達(dá),確實(shí)ROI一個(gè)詞就能準(zhǔn)確表示想做的工作。或許,這種跨方向或?qū)W科專業(yè)詞匯值得注意。 - 特征方面
特征方面本文采用4大類(Structural Characteristics、Arithmetic Instructions、Transfer Instructions、API Call Categories)18個(gè)特征(之前論文已提出),并且提出了一種解釋框架定位惡意軟件重要部分的方法,該方法可以映射回原始二進(jìn)制或控制流圖的特征。就我而言,我們也應(yīng)該思考,在進(jìn)行惡意代碼分析或系統(tǒng)安全研究時(shí),如何盡可能全地覆蓋研究問題來提出特征非常重要,并且結(jié)合我們的故事。 - 寫作方面
英文寫作一直是我的短板,不說了,這篇文章從摘要、引言到結(jié)論,值得我全文背誦,學(xué)海無涯。
這篇文章就寫到這里,希望對(duì)您有所幫助。由于作者英語實(shí)在太差,論文的水平也很低,寫得不好的地方還請(qǐng)海涵和批評(píng)。同時(shí),也歡迎大家討論,繼續(xù)加油!感恩遇見,且看且珍惜。
(By:Eastmount 2022-04-28 周四夜于武漢 http://blog.csdn.net/eastmount/ )
最后給出幾段經(jīng)典的句子:
-
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.
總結(jié)
以上是生活随笔為你收集整理的[论文阅读] (20)USENIXSec21 DeepReflect:通过二进制重构发现恶意行为(恶意代码ROI分析经典)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: send 命令 linux,linux的
- 下一篇: 某页式虚拟存储器,若某用户空间为16个界