Powershell反混淆

AMSI相关

AMSI(Antimalware Scan Interface)是一种通用接口标准,允许应用和服务集成任何反恶意软件产品

原理如下

一般的Powershell恶意脚本的程度

  • 对于静态脚本,利用签名检查
  • 对于拼接字符串,可以在发现拼接字符串时模拟拼接并检测
  • 对于base64编码,执行base64解码
  • 对于混淆的脚本,需要写通用的反混淆脚本得到签名
  • 脚本可能下载额外脚本并执行,还可能只在内存中

问题的关键在于脚本引擎可以运行程序在运行时生成的代码。即使恶意脚本进行多次反混淆和解码,最终还是要将明文代码提交给脚本引擎执行,在这里,应用可以多次调用AMSI API来请求扫描没有保护的内容

相关反混淆引擎

  • PsDecode 利用了脚本拦截技术,拦截Invoke-*执行
  • powershellprofiler 利用断点计数
  • PowerDrive 论文 PowerDrive: Accurate De-Obfuscation and Analysis of PowerShell Malware
  • PowerDecode 论文 PowerDecode: a PowerShell Script Decoder Dedicated to Malware Analysis

开始编写

参考

https://www.microsoft.com/en-us/security/blog/2015/06/09/windows-10-to-offer-application-developers-new-malware-defenses/?source=mmpc

https://learn.microsoft.com/zh-cn/windows/win32/amsi/antimalware-scan-interface-portal?redirectedfrom=MSDN