Revoke-Obfuscation是一款功能强大的PowerShell混淆检测框架,该框架基于PowerShell开发,并且兼容PowerShell v3.0+脚本。在该工具的帮助下,广大研究人员可以轻松实现大规模的PowerShell命令或脚本的混淆检测。
它依靠PowerShell的AST(抽象语法树)从任何输入的PowerShell脚本中快速提取数千个特征,并将该特征向量与一个包含了40多万个PowerShell脚本的语料库进行计算和对比。
由于Revoke-Obfuscation依赖于特征提取和比较,而不是纯粹的IOC或RegEx匹配,因此它在识别未知模糊技术的能力方面更为强大,即使攻击者试图通过填充未经模糊的脚本内容来推翻字符频率分析等基本检查来抑制其模糊,也难逃Revoke-Obfuscation的法眼。
Revoke-Obfuscation可以在100-300毫秒内轻松检测大多数输入的PowerShell脚本。而且Revoke-Obfuscation支持支持简单的白名单功能,并且能够提取PowerShell操作事件日志记录。
广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/danielbohannon/Revoke-Obfuscation.git
(向右滑动,查看更多)
接下来,切换到项目目录中,运行下列命令完成安装:
Import-Module .\Revoke-Obfuscation.psd1
除此之外,我们也可以直接从PowerShell Gallery来安装Revoke-Obfuscation:
Install-Module Revoke-Obfuscation
Import-Module Revoke-Obfuscation
下列命令可以针对EID 4104脚本块日志执行分析检测:
Get-RvoScriptBlock -Path 'C:\Windows\System32\Winevt\Logs\Microsoft-Windows-PowerShell%4Operational.evtx' -Verbose
Get-ChildItem .\Demo\demo.evtx | Get-RvoScriptBlock -Verbose
Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Get-RvoScriptBlock -Verbose
(向右滑动,查看更多)
下列命令可以针对demo.evtx中的数据记录执行完整检测:
$obfResults = Get-WinEvent -Path .\Demo\demo.evtx | Get-RvoScriptBlock | Measure-RvoObfuscation -OutputToDisk -Verbose
(向右滑动,查看更多)
下列命令可以对本地或远程托管的测试脚本执行检测:
Measure-RvoObfuscation -Url 'http://bit.ly/DBOdemo1' -Verbose -OutputToDisk
Get-Content .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk
Get-ChildItem .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk
(向右滑动,查看更多)
本项目的开发与发布遵循Apache-2.0开源许可证协议。
Revoke-Obfuscation:
https://github.com/danielbohannon/Revoke-Obfuscation
https://www.fireeye.com/blog/threat-research/2017/07/revoke-obfuscation-powershell.html
https://www.fireeye.com/content/dam/fireeye-www/blog/pdfs/revoke-obfuscation-report.pdf
https://aka.ms/PowerShellCorpus