前言
在powershell中最常使用的编码就是base64编码了,今天主要说一下Invoke-Obfuscation 这个powershell混淆编码框架,这也是著名的组织APT32 (海莲花)经常使用的一个工具。
导入项目
下载后,在当前目录下打开powershell输入以下命令
Import-Module .\Invoke-Obfuscation.psd1
Invoke-Obfuscation
功能简介
支持的加密功能简介
TOKEN 支持分部分混淆
STRING 整条命令混淆
COMPRESS 将命令转为单行并压缩
ENCODING 编码LAUNCHER选择执行方式
基本命令
set scriptblock / scriptpath 指定要混淆的代码块或者脚本路径
undo 取消上一次混淆
back 返回上一层菜单
home 返回到主菜单
out “filename” 将混淆的结果保存到文本文件
小试牛刀
输入set scriptblock 'echo test'
,设置要混淆的命令为echo test
然后输入encoding,就会列出以下几种编码方式
输入2,选择Hex编码后
得到的Result就是混淆后的结果,混淆后的代码为InvOke-ExPressIoN(('65K63}68L6f&20K74}65}73&74'.sPLIt( 'K,}h&%mL' ) | fOReAch{ ([cOnVeRt]::tOInt16( ($_.toSTrIng()) ,16)-as[CHAr]) })-JoiN '')
在powershell下验证刚刚的混淆代码,成功输出test
注:如果再进行一次encoding,将会对上次的Result,再进行一次编码,即实现多次编码。
实战绕AV
使用cs生成powershell马子,我将payload保存到D:\payload.ps1
Invoke-Obfuscation下输入set scriptpath D:\payload.ps1
输入token
输入all
,将会选择上面所有的选项
输入home
,回到主菜单,再输入encoding
选择8,再进行一次编码
字符太多,屏幕无法显示,输入out test.ps1
,保存成文件并且给出保存路径。
火绒测试
360测试
cs上线,火绒出现弹框拦截
执行dir
,正常返回信息,美中不足就是会出现弹框。
参考资料
Powershell编码与混淆
安恒红皮书(中)第66页