前言
现在许多病毒作者为了免杀,使用powershell脚本来执行恶意行为的病毒越来越多,这次分析的一个样本就是利用powershell混淆来隐藏嵌在其中的cs后门dll
分析
样本代码
从图上可以很清晰的知道存放了一段base64数据,首先将base64数据解密,使用gzip解压,解压的数据进行执行
想要解密,也很简单:
IEX
用于将字符串作为命令执行,当去掉IEX
后,再文件尾加上| out-file decode.txt
将
IEX (New-Object IO.StreamReader(New-Object IO.Compression.GzipStream($s,[IO.Compression.CompressionMode]::Decompress))).ReadToEnd();
变为
(New-Object IO.StreamReader(New-Object IO.Compression.GzipStream($s,[IO.Compression.CompressionMode]::Decompress))).ReadToEnd() | out-file decode.txt;
可将解密后的数据直接输出到文件中
解密后的文件也是一段powershell脚本,脚本中又存在一段base64加密的数据,解密base64数据后又有一段异或解密
for ($x = 0; $x -lt $var_code.Count; $x++) {
$var_code[$x] = $var_code[$x] -bxor 35
}
将这段数据操作取出,使用WriteAllBytes
函数进行输出
[System.IO.File]::WriteAllBytes("C:\OUT", $var_code)
查看OUT文件,发现是个pe文件,随后分析,发现是CS生成的后门
总结
powershell混淆和壳大致是一个原理,无论怎样混淆,最终都会执行相同的代码,最终都会吐出相同的代码,分析powershell混淆更多的是注重技巧,否则就会陷入重复劳动的循环了