日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[论文阅读] (17)CCS2019 针对PowerShell脚本的轻量级去混淆和语义感知攻击检测(经典)

發布時間:2024/6/1 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [论文阅读] (17)CCS2019 针对PowerShell脚本的轻量级去混淆和语义感知攻击检测(经典) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

《娜璋帶你讀論文》系列主要是督促自己閱讀優秀論文及聽取學術講座,并分享給大家,希望您喜歡。由于作者的英文水平和學術能力不高,需要不斷提升,所以還請大家批評指正,非常歡迎大家給我留言評論,學術路上期待與您前行,加油。

前一篇總結了Powershell惡意代碼檢測相關研究,并結合開源工具分享抽象語法樹提取過程。這篇文章將詳細講解CCS2019的Powershell去混淆工作,這篇文章質量非常高,來自于浙江大學的李振源老師。我將從他在InforSec分享的視頻和論文原文閱讀兩個方面進行講解。希望這篇文章對您有所幫助,深知自己很菜,通過這種最笨分享來提升和記錄,歡迎大家批評指正。這些大佬是真的值得我們去學習,獻上小弟的膝蓋~fighting!

原文作者:Zhenyuan Li, Qi Alfred Chen, Chunlin Xiong, Yan Chen, et al.
原文標題:Effective and Light-Weight Deobfuscation and Semantic-Aware Attack Detection for PowerShell Scripts
中文翻譯:針對PowerShell腳本的有效輕量級去混淆和語義感知攻擊檢測
原文鏈接:https://dl.acm.org/doi/pdf/10.1145/3319535.3363187
發表會議:CCS2019
參考文獻: 感謝老師們的論文以及InforSec的分享

  • https://www.inforsec.org/wp/?p=4349
  • https://www.bilibili.com/video/av800038481

文章目錄

  • 一.InforSec作者分享的學習筆記
    • 1.研究動機
    • 2.相關工作比較
    • 3.整體方案
    • 4.結合例子介紹具體技術
    • 5.實驗結果
    • 6.結論
  • 二.論文閱讀分享
    • 1.摘要學習
    • 2.引言和背景及動機
    • 3.總體框架
    • 4. POWERSHELL DEOBFUSCATION
    • 5.對比實驗
  • 三.總結

前文賞析:

  • [論文閱讀] (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腳本的輕量級去混淆和語義感知攻擊檢測

一.InforSec作者分享的學習筆記

InforSec(網絡安全研究國際學術論文)內容簡介:
越來越多的報道顯示,PowerShell被廣泛的用于各種網絡攻擊。這些攻擊包括高級持續性威脅、勒索病毒、網絡釣魚郵件等等。基于PowerShell的攻擊,利用了PowerShell的動態性,構造了復雜的混淆模式,繞過檢測。為了克服這一難題,我們提出來第一個輕量且有效的解混淆方案,并基于解混淆后的腳本構造了基于攻擊語義的檢測系統。實驗顯示,通過解混淆,我們可以將混淆后腳本和原始腳本之間的相似度從僅0.5%提高到了近80%。同時解混淆過程有效的改善了已有系統的檢測效率,Windows Defender和VirusTotal的攻擊檢測率分別從0.3%和2.65%大幅增加到75.0%和90.0%。


嘉賓介紹:
李振源,浙江大學在讀博士,研究興趣包括終端安全,入侵檢測,威脅分析等。

接下來,我們將從研究動機、相關工作比較、結合案例的具體技術、實驗結果和結論五個方面講解。

1.研究動機

Powershell越來越多出現在各種攻擊事件中,根據Mcafee和Symantec報告顯示,在2016年至2019年期間,基于Powershell的攻擊發生的頻率逐年上升,占所有攻擊中的45%。

為什么Powershell這么受攻擊者歡迎呢?
主要是Powershell符合現代攻擊的需求,包括三點內容:

  • Live-off-the-Land
    攻擊者傾向于使用系統中已有的工具開展攻擊,從而避免使用自制的可執行文件及檢測。并且,Powershell作為管理員工具,很容易訪問和利用Windows組件。
  • Fileless Attack(無文件攻擊)
    Powershell可以直接從內存中執行而不需要涉及文件。攻擊者可以直接從網絡上下載攻擊腳本,整個過程不涉及文件讀寫而在內存中執行,可以避免基于文件的殺毒引擎查殺。
  • Obufscation
    Powershell作為一種動態語言,靈活性很強,容易被混淆。

那么,針對前兩個問題,微軟近幾年也提出了 ScriptBlock 的記錄方案,可以將執行的大多數腳本塊記錄下來。這種方法具有先天解混淆的能力,因為它可以記錄最后執行的 ScriptBlock ,通常混淆后的代碼需要解混淆后執行,因此該方法可以解混淆。

但是,混淆并不一定需要從 ScriptBlock 中完成,它也可以在更小的代碼片段或token中混淆。此時,該方法就無能為力。基于此,提出了我們的工作,彌補該不足。

混淆是阻礙反病毒引擎查殺包括Powershell在內的惡意程序的最大元兇。

我們可以看看混淆對反病毒引擎的影響。該實驗通過40多個樣本,在 VirusTotal 上的56個殺毒引擎檢測的結果,分為Malicious和Benign兩部分,每部分都包括五組數據,對應原始腳本和四種混淆方法加密的結果。

其中,S1和S2是基于字符串操作的,S3和S4是基于編碼的。

由圖可知,對于惡意樣本來說,原始樣本平均被13個引擎所查殺,但進行混淆后,檢測率大幅度下降。這里有2至3個可以固定將編碼混淆找出,但存在一個問題,它其實檢測的是編碼混淆方法,而不是惡意性,從而帶來誤報。

經過解混淆后,整體的檢測率會大幅提升,將近87%。


2.相關工作比較

傳統的解混淆方法分為三個階段:

  • 檢測階段:腳本是否混淆
  • 解混淆階段:動態和靜態解混淆
  • 驗證階段

這類方法存在如下問題:

  • 粗粒度的混淆檢測
    不能處理局部混淆,比如惡意程序只對關鍵邏輯混淆,它整體代碼仍符合為混淆惡意代碼的特征。或者,整個邏輯都應用到腳本上解混淆,未混淆代碼會受解混淆的影響,導致漏報和誤報
  • 解混淆邏輯需手工
    需要大量手工工作,無法處理未知混淆,魯棒性較差
  • 各階段邏輯未整合
    每個階段的邏輯需要獨立實現,大大增加人工處理工作


3.整體方案

基于上述動機和問題,我們提出了一種細粒度的,且將各個步驟整合得比較好的系統。此外,我們利用惡意代碼或混淆代碼自身帶有的邏輯來開展解混淆工作。

從直覺上來講,一個混淆后的代碼或腳本想要在機器上正確執行,它肯定是要包含一個解混淆的邏輯,在它們執行之前將內容解析出來。我們提出了比較核心的部分——基于模擬器的解混淆。

在《網絡安全系列》,我的博客中也有Powershell解混淆的分享。這里舉個簡單例子,下圖是一段字符混淆Powershell腳本,代碼的最后就是自帶的解混淆邏輯,當它會調用IEX在內存中執行解析,再實施真實的攻擊。

本文系統的核心框架包括五個步驟,后續詳細講解。

  • (1) 提取子樹
  • (2) 基于子樹的混淆檢測
  • (3) 基于模擬器的解混淆
  • (4) 更新抽象語法樹
  • (5) 后處理

該方案的具體實現過程如下:

  • 首先,我們會把混淆后的代碼使用AST(抽象語法樹)解析,根據一定的規則提取部分子樹。判斷哪些子樹包含混淆代碼,取出子樹并量化。

  • 然后,基于子樹的混淆檢測,我們會通過基于token、字符串和AST三層特性的分類器來判斷子樹是否存在混淆。

  • 其次,如果子樹存在混淆,則基于模擬器開展解混淆,將原始代碼片段還原。

  • 再次,更新抽象語法樹。接著進行解析,并將新生成的抽象語法樹合并到原有抽象語法樹中(子樹棧),更新分類器的特征值。

  • 最后,當沒有剩余的混淆子樹,整個解混淆工作基本完成,開展善后處理,使得混淆代碼更具可讀性。

相對于之前工作,本文具有第三個優點。

  • 第一點:抽象語法子樹級的細粒度分析
    有效實現局部解混淆,將混淆片段準確找到

  • 第二點:利用混淆代碼自帶邏輯解混淆
    覆蓋面更廣,不需要自己去寫解混淆的邏輯

  • 第三點:解混淆的三個階段緊密聯系
    形成一個循環,可以將多層混淆問題解決,具體詳見論文


4.結合例子介紹具體技術

為了更好地理解,我們結合例子具體介紹。Powershell是一種高層次、富含語義的語義,假設存在如下代碼,可以看到幾個明顯的特性。

  • Invoke-Expression:調用命令的操作
  • Net.WebClient:網絡命名空間
  • .DownloadString():下載函數
  • “Invoke-Shellcode.ps1”:惡意腳本

它會建立一個Web服務,然后下載文件并執行,這是一個典型的惡意行為。

如果不經過混淆,很容易就能檢測出其惡意性。

接下來使用主流的Invoke-Obfuscation進行混淆,將之前的檢測特征進行字符串重組混淆。

需要注意:這些操作本身就是混淆后的代碼,又是一個解混淆的邏輯。當然,對于更復雜的情況,解混淆邏輯和解混淆內容會分開,也會提出一些基于AST重組的方法解混淆。

在第一層混淆之后,緊接著進行第二層混淆。這次使用編碼的方法,即 Convertto-securestring。

該混淆的本質是一個AES加密,根據信息論的觀點來說,加密后的密文和明文信息熵的關系非常弱。那么,我們想利用混淆后的腳本檢測原始腳本基本不可能,所以我們需要做一個解混淆的操作。

那么,解混淆怎么做呢?
剛才提到,混淆的過程就是把每個片段或整塊代碼進行一一重組或編碼操作,解混淆的過程也會將這些節點找出來。首先,將其解析成一個抽象語法樹,我們經過一些裁剪,將有可能參與混淆節點的識別出來。

接著會利用一個分類器來判斷哪些是真正含有混淆的,完成之后就可以得到這五棵子樹。其實,我們需要解混淆的是標紅的四棵。

總之,解混淆大概邏輯是一個自底向上的遍歷。 為什么自底向上呢?因為解混淆的最下面兩棵樹,每個節點下面都有一個子樹。

解混淆完成之后,我們對抽象語法樹進行更新。重組后,可以看到新的節點不具備混淆特征,就不再處理黑色節點。

接著處理其他紅色節點并進行重組。

完成解混淆的過程后,整個節點中不再含有混淆的子樹。

最終生成如下圖所示的Powershell代碼。


5.實驗結果

我們第一個實驗是比較解混淆對代碼相似度的提升。與經典的PSDEM方法進行比較,相對于混淆代碼提升79.2%,比PSDEM提升42.2%。需要注意,傳統方法對很多未知混淆方案無法解混淆,所以說它的魯棒性較差,攻擊者可以較好地針對,并繞過傳統的解混淆方法。

第二個實驗比較解混淆對檢測的提升。我們比較 Windows Defender 和 VirusTotal 對解混淆的效果。VirusTotal 是56個的平均結果。由圖可知, Windows Defender 可以提升74.7%,VirusTotal 可以提升87.3%。

此外,解混淆的效率很高。對于平均5.4Kb大小的腳本,解混淆只需要0.5秒,而且用的是普通家用電腦。

解混淆完成之后,我們也提供了一個檢測系統。關鍵是訓練、檢測之前,進行解混淆操作,我們使用比較基礎的OOA方法,通過挖掘平凡子集,提取一些可以用于檢測的規則。

可以看到,解混淆之后的規則都比較清晰,包括各種典型的惡意行為函數等。所以,解混淆后的腳本不但能較好地進行惡意性檢測,其本身邏輯和語義分析也比較清晰,從而能進行針對性保護。


6.結論

最后總結,我們針對攻擊者常用工具PowerShell的混淆難題。

  • (1) 通過對抽象語法子樹細粒度的分析,準確定位混淆片段;
  • (2) 利用混淆腳本自身邏輯進行解混淆,減少了手工分析的工作,可以處理未知混淆,提高了魯棒性;
  • (3) 最后將混淆檢測、解混淆邏輯、驗證三個階段有機的結合在一起,可以處理多層混淆。

實現了第一個輕量且有效的PowerShell解混淆系統。有效的提升了解混淆后腳本的檢測精度。


二.論文閱讀分享

通過上面李老師的分享后,我們再來閱讀這篇論文,就會發現文章很多美妙的地方。在該部分,我將站在讀者的第一視角,介紹這篇論文很多值得我們學習的地方和亮點。

1.摘要學習

首先,我們來看這篇文章的摘要。前面的博客我們說過,一篇論文的摘要和引言非常重要。如何寫好摘要和引言,寫高質量摘要,寫引人入勝的引言很關鍵。

近年來,PowerShell 越來越多地出現在各種網絡攻擊中,從高級持續威脅、勒索軟件、網絡釣魚電子郵件、加密劫持、金融威脅到無文件攻擊。但是,由于 PowerShell 語言在設計上是動態的,并且可以在不同級別構建腳本片段,因此基于最新靜態分析的 PowerShell 攻擊檢測方法本質上容易受到混淆。

為了克服這一挑戰,本文為 PowerShell 腳本設計了第一個有效且輕量級的反混淆方法。為了解決精確識別可恢復腳本片段的挑戰,設計了一種新穎的基于子樹的反混淆方法。該方法在 PowerShell 腳本的抽象語法樹(Abstract Syntax Tree)中的子樹級別執行混淆檢測和基于仿真的恢復。

基于新的反混淆方法,我們進一步設計了第一個語義感知的 PowerShell 攻擊檢測系統。為了實現基于語義的檢測,我們利用了經典的面向目標的關聯挖掘算法,并為 PowerShell 攻擊新識別了 31 個語義簽名。我們對 2342 個良性樣本和 4141 個惡意樣本的集合進行了評估,發現我們的去混淆方法平均耗時不到 0.5 秒,同時將混淆后的腳本與原始腳本之間的相似度從僅 0.5% 提高到 80% 左右,這既有效又輕便。

此外,應用我們的去混淆處理后,Windows Defender 和 VirusTotal 的攻擊檢測率分別從 0.3% 和 2.65% 大幅提高到 75.0% 和 90.0%。同時,當應用我們的去混淆處理時,我們的語義感知攻擊檢測系統以 92.3% 的平均真陽性率和 0% 的假陽性率優于 Windows Defender 和 VirusTotal。


2.引言和背景及動機

這篇論文的引言寫得非常棒,有效突出了Powershell在網絡攻擊中的重要性,以及現有方法的諸多缺陷,進一步體現本文研究的必要性和貢獻。

緊接著是方法對比,體現解混淆、恢復質量和輕量級的優點。

接下來簡要介紹本文工作如何解決現有挑戰,提出的方法。主要包括解混淆和攻擊檢測兩塊。

最后是本文的貢獻,分別從解混淆、語義感知攻擊檢測兩個工作,以及實驗性能提升方面介紹,很多頂會論文也都采取這種方式介紹貢獻。


3.總體框架

接下來是論文的總體概述。

論文整體框架分為三部分:

  • Deobfuscation phase(去混淆):子樹+AST+三層機制結合
  • Training and detection phases(訓練和檢測):OOA挖掘算法
  • Application scenarios(應用)
    – Real-time attack detection
    – Large-scale automated malware analysis

在應用場景中,突出本文方法比現有方法更好,同時介紹兩種經典的安全應用場景。


4. POWERSHELL DEOBFUSCATION

第四部分是詳細的解混淆工作,該部分推薦讀者閱讀原文。

作者從整個解混淆框架的五個核心步驟,依次講解,具體包括:

  • 4.1 Subtree-based Deobfuscation Approach Overview
  • 4.2 Extract Suspicious Subtrees
  • 4.3 Subtree-based Obfuscation Detection
  • 4.4 Emulation-based Recovery
  • 4.5 AST Update
  • 4.6 Post processing

包括子樹提取、更新AST等步驟。

一個惡意腳本混淆和去混淆后和AST效果圖如下所示:

此外,第五部分詳細介紹了語義感知攻擊檢測工作。

個人感受:
本文的重點是解混淆,解混淆后的代碼其實語義比較豐富,其惡意檢測也相對容易,所以僅選擇了OOA。該部分應該是為了豐富整體的工作,讓論文更加的充實和完整,或許也是審稿老師的修改意見。不過,確實很多頂會論文,包括攻防攻系列,漏洞挖掘防御系列,都會采用這種方式,從而讓論文更加完美,值得我學習。


5.對比實驗

實驗主要包括學術界(PSDEM)和工業界(Defender、VT)的對比,惡意代碼分析相關論文都可以嘗試這種對比實驗。總體而言,本文方法的TP更高,性能更好,解混淆速度較快,再次建議讀者閱讀原文。


三.總結

此外,作者在討論部分補充了下表,通過這種畫龍點睛,回頭點題,進一步突出論文的貢獻和工作量。這篇文章確實是Powershell領域的頂級論文,寫得非常棒,真心值得大家學習,也感謝李老師的分享。

此外,由于去混淆做得非常好,Powershell源碼有豐富的語義,因此關于Powershell的惡意檢測文章很少。最后,我們讀論文,也需要看看未解決的問題、存在的困難或者下一步工作,作者說到了逃逸攻擊,包括反調試、高價值攻擊無法檢測等,以及邏輯混淆。具體參見下圖:

這篇文章就寫到這里,希望對您有所幫助。由于作者英語實在太差,論文的水平也很低,寫得不好的地方還請海涵和批評。同時,也歡迎大家討論,繼續加油!感恩遇見,且看且珍惜。

(By:Eastmount 2022-03-25 周五夜于武漢 http://blog.csdn.net/eastmount/ )

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的[论文阅读] (17)CCS2019 针对PowerShell脚本的轻量级去混淆和语义感知攻击检测(经典)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。