PowerShell脚本解混淆系统及检测方案_第1页
PowerShell脚本解混淆系统及检测方案_第2页
PowerShell脚本解混淆系统及检测方案_第3页
PowerShell脚本解混淆系统及检测方案_第4页
PowerShell脚本解混淆系统及检测方案_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PowerShell脚本解混淆系统及检测方案Effective and Light-Weight Deobfuscation and Semantic- Aware Attack Detection for PowerShell Scripts研究动机介绍相关工作比较结合例子介绍具体技术实验结果介绍总结2Road Map研究动机31. https:/content/dam/symantec/docs/security-center/white- papers/increased-use-of-powershell-in-attacks-16-en.pdf2. https:/enterprise

2、/en-us/assets/reports/rp-quarterly-threats-aug-2019.pdf基于 PowerShell 的攻击发生的 频率逐年上升 1,2432% between 2016 2017,661% between 2017 2018,460% in the first quarter of 2019. PowerShell 在所有攻击中出现的频率 达到 45% 。研究动机 现代攻击中的 PowerShell4“Live-off-the-Land”PowerShell 被预装在大多数 Windows 系统的主机上。PowerShell 可以作为一种管理员工具,很容易

3、访问和利用Windows 组件。“Fileless Attack”1.PowerShell 可以直接从内存中执行而不需要涉及到文件。“Obufscation”1.PowerShell 作为一种动态语言,灵活性很强,容易被混淆。研究动机51. https:/content/dam/symantec/docs/security-center/white- papers/increased-use-of-powershell-in-attacks-16-en.pdf2. https:/enterprise/en-us/assets/reports/rp-quarterly-threats-aug-2

4、019.pdf基于 PowerShell 的攻击发生的 频率逐年上升 1,2432% between 2016 2017,661% between 2017 2018,460% in the first quarter of 2019. PowerShell 在所有攻击中出现的频率 达到 45% 。11. 混淆是阻碍反病毒引擎查杀包 括 PowerShell 在内的恶意程序的 最大元凶。研究动机 混淆对反病毒引擎的影响SamplesVirusTotalDeobfuscation+ VirusTotal(Malicious) Original100%100%(M) S10.00%76.00%(M

5、) S28.00%90.60%(M) S32.60%96.00%(M) S40.00%97.30%(Benign) Original,S1-40.00%0.00%TP+87.3%67Road Map研究动机介绍相关工作比较结合例子介绍具体技术实验结果介绍总结相关工作比较 传统的解混淆方案存在的问题传统的三阶段的方法:粗粒度的混淆检测:不能处 理局部混淆,可能导致漏报 误报。解混淆逻辑需手工:需要大 量手工工作,无法处理未知 混淆各阶段逻辑未整合:每个阶 段的逻辑需要独立实现。8相关工作比较 我们的解决方案1. 抽象语法 子树级的细 粒度分析111. 解混淆 的三个阶段 紧密联系11. 利用混

6、淆代码自 带逻辑解混淆910Road Map研究动机介绍相关工作比较结合例子介绍具体技术实验结果介绍总结PowerShell 的语义分析Invoke-Expression (New-Object Net.WebClient).DownloadString(“hxxps:/./Invoke-Shellcode.ps1”)Invoke-ExpressionNet.WebClient.DownloadString()“Invoke-Shellcode.ps1”Malicious11PowerShell 的混淆方法 - Invoke-Obfuscation1&($eNv:comspEC4,15,25-

7、jOIN)(New-Object Net.WebClient).DownloadString(“hxxps:/./Invoke-Shellcode.ps1”)“New-Object” = 102-fw-ob,Ne,ject“Net.WebClient”“DownloadString”= Net.W + ebClient= downlOAdstRIngRecoverable Script Pieces121 /danielbohannon/Invoke-Obfuscation131 /danielbohannon/Invoke-ObfuscationPowerShell 的混淆方法 - Invo

8、ke-Obfuscation1&($eNv:comspEC4,15,25-jOIN)(.(“102”-fw-ob,Ne,ject)(“Net.W” + “ebClient”).(“downlOAdstRIng”).Invoke(“hxxps:/./Invoke-Shellcode.ps1”)141 /danielbohannon/Invoke-ObfuscationPowerShell 的混淆方法 - Invoke-Obfuscation1(New-obJeCT ManAgeMEnt.autOmaTIon.PscREDenTiAL , (7UA.AwADgAMQA1ADMANQBkAGYAMQ

9、BlAGUAZQBi ADYAMgAzADkAZQBmAGUANwA0ADQANwBjADkANgBhADAAYQB kADQAZAAyAGMAYwA0AGQAMgBkADMAMAA3ADYANgBmADgANgA0AGMANgAzADgA |CONVErtTO-sEcurEstring-kE (195.180) ).GetNetWoRKCrEDEntial().PAsSWor d |&( $eNv:puBLIc13+$EnV:puBLIC5+X)混淆后的脚本基本不反应原始脚本语义,很难直接用于检测。解混淆 解析 PowerShell 的抽象语法树(裁剪后)&($eNv:comspEC4,15

10、,25-jOIN)(.(“102”-fw-ob,Ne,ject)(“Net.W” + “ebClient”).(“downlOAdstRIng”).Invoke(6.1.SPLiT(- qO!yXM)|fOrEACH (chAr(cONvErT:ToInt16($_.tosTrINg(),16 )-JOIN)$eNv:comspEC4,15,25-jOIN.(“102”-fw-ob,Ne,ject)(“Net.W” + “ebClient”)(6.1.SPLiT(-qO!yXM)| fOrEACH(chAr(cONvErT:ToInt16($_.tosTrINg(),16 )-JOIN“102

11、”-fw-ob,Ne,ject“Net.W” + “ebClient”16解混淆 自底向上的遍历 & 抽象语法树的更新&($eNv:comspEC4,15,25-jOIN)(.(“102”-fw-ob,Ne,ject)(“Net.W” + “ebClient”).(“downlOAdstRIng”).Invoke(6.1.SPLiT(- qO!yXM)|fOrEACH (chAr(cONvErT:ToInt16($_.tosTrINg(),16 )-JOIN)$eNv:comspEC4,15,25-jOIN.(“102”-fw-ob,Ne,ject)(“Net.W” + “ebClient”)

12、(6.1.SPLiT(-qO!yXM)| fOrEACH(chAr(cONvErT:ToInt16($_.tosTrINg(),16 )-JOIN“102”-fw-ob,Ne,ject“Net.W” + “ebClient”“New-Object”17“Net.WebClient”“IeX”“hxxps:/./Invoke-Shellcode.ps1”解混淆 自底向上的遍历 & 抽象语法树的更新&($eNv:comspEC4,15,25-jOIN)(.(“102”-fw-ob,Ne,ject)(“Net.W” + “ebClient”).(“downlOAdstRIng”).Invoke(6.

13、1.SPLiT(- qO!yXM)|fOrEACH (chAr(cONvErT:ToInt16($_.tosTrINg(),16 )-JOIN)$eNv:comspEC4,15,25-jOIN.(“102”-fw-ob,Ne,ject)(“Net.W” + “ebClient”(6.1.SPLiT(-qO!yXM)| fOrEACH(chAr(cONvErT:ToInt16($_.tosTrINg(),16 )-JOIN“102”-fw-ob,Ne,ject“Net.W” + “ebClient”“IeX”“hxxps:/./Invoke-Shellcode.ps1”“New-Object”“

14、Net.WebClient”)18解混淆 自底向上的遍历 & 抽象语法树的更新&(“IeX”) (.(“New-Object”)(“Net.WebClient”). (“downlOAdstRIng”).Invoke(“hxxps:/./Invoke-Shellcode.ps1”)Post-ProcessIeX (New-Object Net.WebClient). downlOAdstRIng(“hxxps:/./Invoke- Shellcode.ps1”)当整个抽象语法树种没有混淆子树时解混淆过程结束。1920Road Map研究动机介绍相关工作比较结合例子介绍具体技术实验结果介绍总结实

15、验结果 1 解混淆对代码相似度的提升Obfuscation schemesObfuscatedDeobfuscated (PSDEM)Deobfuscated (our approach)S11.80%70.60%71.50%S20.10%79.50%79.00%S30.01%0.01%82.90%S40.00%0.00%85.20%Overall0.50%37.50%79.70%Obfuscated+79.2%Baseline+42.2%21实验结果 11 解混淆对检测的提升SamplesDefenderDeobfuscation+ DefenderVirusTotalDeobfuscati

16、on+ VirusTotalMaliciousOriginal89.30%89.30%100%100%S10.00%48.00%0.00%76.00%S21.30%78.60%8.00%90.60%S30.00%84.00%2.60%96.00%S40.00%89.30%0.00%97.30%BenignOriginal,S1-40.00%0.00%0.00%0.00%TP+74.7%TP+87.3%FP+0%22实验结果 111 解混淆的效率(用普通家用电脑实验)3S1S2 S477116143208910161Emulator Others平均的解混淆速度为5.4Kb/0.5sS31401

17、062/3Overall01714820040060080010001200Average time(ms)的解混淆时间 用于模拟器的 模拟执行2324Deobfuscation基于解混淆的检测系统设计 解混淆放在最前面TrainDetection &Analysis26基于解混淆的检测系统设计 特征举例OOA rulesDescriptionNewTask, RegisterTaskDefinition, .Scheduled task COMFromImage, CopyFromScreen, .Get-TimedScreenshotVirtuAlloc, Memset, CreateTh

18、read, .Reflective LoadingDownloadString, Invoke-ExpressionIEX Downloaded StringDownloadFile, Start-ProcessDownload & ExecutionUseshellExecute, TcpClient, RedirectStandardOutput, GetStream, GetString, Invoke-Expression, Reserve shell27Road Map研究动机介绍相关工作比较结合例子介绍具体技术实验结果介绍总结28Conclusions and Takeaway我们

19、针对攻击者常用工具 PowerShell 的混淆难题,通过对抽象语法子树细粒度的分析,准确定位混淆片段;利用混淆脚本自身逻辑进行解混淆,减少了手工分析的 工作,可以处理未知混淆,提高了鲁棒性;最后将混淆检测、解混淆逻辑、验证三个阶段有机的结 合在一起,可以处理多层混淆。实现了第一个轻量且有效的 PowerShell 解混淆系统。有效 的提升了解混淆后脚本的检测精度。Thank you !li_zhenyuan29Back-up Pages30Comparison with state-of-the-art approachesObfuscation detectionTPRFPROur app

20、roach100%1.80%PSDEM 4149.90%22.20%The accuracy of obfuscation detectionDetection approachesObfuscated scriptsDeobfuscated scriptsMixed scriptsOur approach-92.30%92.30%AST-based 530.00%90.70%9.60%Character-based 3212.10%95.70%34.70%Comparison with state-of-the-art detection approaches in TPR31Break-d

21、own AnalysisDeobfuscation phasesRecovery similarityTimeDetection accuracyw/ all 5 phases80%0.46s92.30%w/o (1) Extract subtrees-14.70%+404.30%-12.40%w/o (2) Obfuscation detection-43.70%+108.70%-54.70%w/o (3) Emulation-based Recovery-43.40%+83.70%-53.60%w/o (4) AST update-0.60%-6.50%-0.10%w/o (5) Post

22、 processing-7.00%-2.10%0.00%Related Work - Script-based Malware DetectionLight- WeightAccuracySemantic AwarenessDynamic det.25,51 Static det.20,26,32,53Obfuscation det.14,17,35,38no yes yeshigh low lowyes no noWe proposed the first effective and light-weight deobfuscation approach for PowerShell.Mos

23、tly static deobfuscation32yeshigheryes33ChallengesRQ1: How to detect obfuscation and locate theobfuscated script pieces?Regular ExpressionML-based ClassifierRQ2: How to restore the original scripts?String ManipulationEmulation-based RecoveryDe-obfuscation Bottom-up Traverse & AST UpdateObfusacted Su

24、btreeStack&($eNv:comspEC4,15,25-jOIN)(.(“102”-fw-ob,Ne,ject)(“Net.W” + “ebClient”).(“downlOAdstRIng”).Invoke(6.1.SPLiT(- qO!yXM)|fOrEACH (chAr(cONvErT:ToInt16($_.tosTrINg(),16 )-JOIN)$eNv:comspEC4,15,25-jOIN.(“102”-fw-ob,Ne,ject)(“Net.W” + “ebClient”)(6.1.SPLiT(-qO!yXM)| fOrEACH(chAr(cONvErT:ToInt16($_.tosTrINg(),16 )-JOIN“102”-fw-ob,Ne,ject“Net.W” + “ebClient”“102 -fw-ob,Ne,ject“Net.W” +

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论