powershell恶意脚本解混淆

文章目录

  • 前言
  • 分析
  • 总结

前言

现在许多病毒作者为了免杀,使用powershell脚本来执行恶意行为的病毒越来越多,这次分析的一个样本就是利用powershell混淆来隐藏嵌在其中的cs后门dll

分析

样本代码

在这里插入图片描述

从图上可以很清晰的知道存放了一段base64数据,首先将base64数据解密,使用gzip解压,解压的数据进行执行

想要解密,也很简单:

IEX用于将字符串作为命令执行,当去掉IEX后,再文件尾加上| out-file decode.txt

1
IEX (New-Object IO.StreamReader(New-Object IO.Compression.GzipStream($s,[IO.Compression.CompressionMode]::Decompress))).ReadToEnd();

变为

1
(New-Object IO.StreamReader(New-Object IO.Compression.GzipStream($s,[IO.Compression.CompressionMode]::Decompress))).ReadToEnd() | out-file decode.txt;

可将解密后的数据直接输出到文件中

在这里插入图片描述

解密后的文件也是一段powershell脚本,脚本中又存在一段base64加密的数据,解密base64数据后又有一段异或解密

1
2
3
for ($x = 0; $x -lt $var_code.Count; $x++) {
    $var_code[$x] = $var_code[$x] -bxor 35
}

将这段数据操作取出,使用WriteAllBytes函数进行输出

1
[System.IO.File]::WriteAllBytes("C:\OUT", $var_code)

查看OUT文件,发现是个pe文件,随后分析,发现是CS生成的后门

总结

powershell混淆和壳大致是一个原理,无论怎样混淆,最终都会执行相同的代码,最终都会吐出相同的代码,分析powershell混淆更多的是注重技巧,否则就会陷入重复劳动的循环了