Invoke-Obfuscation混淆PS

前言

  在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页

查看评论 -
评论