这次不用volatility2了,试试volatility3
filescan一下,在桌面上看到个叫成绩单的表格

把它dump下来

在这张表格的第275行发现了一串powershell命令

那么就去查看一下powershell的evtx日志文件。powershell的日志文件主要有PowerShell.evtx,Powershell Operational.evtx,Powershell Admin.evtx三种,这里在Powershell Operational.evtx中可以找到执行的命令记录



可以看到有两串Scriptblock文本,把它们合起来

可以看到所有的变量名都经过了混淆,手动改回去

这下看起来舒服多了(
可以看见最终的密文被输入到了一个叫做text.txt的文件中,去找找,dump一下



接下来就是写个ps1脚本进行解密,由于不熟悉powershell,废了好大功夫。。。
exp:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| function Hash($text) { $md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider $utf8 = New-Object -TypeName System.Text.UTF8Encoding $hash = [System.BitConverter]::ToString($md5.ComputeHash($utf8.GetBytes($text))).replace('-','').ToLower() return $hash } function Decode($cypherText) { $numbers = [string]::Join("", ([regex]::Matches($k3y, "\d+")).Value) $seed = [int]$numbers.Substring(0,5) $rand = New-Object System.Random($seed) $bytes = [System.Convert]::FromBase64String($cypherText)
$keyposition = 0 $decryptedText = ""
foreach ($byte in $bytes) { $decryptedChar = [char]($byte -bxor ($rand.Next()%256)) $decryptedText += $decryptedChar }
return $decryptedText } function Decode2($pass) { $key = [Byte[]]($pass.PadRight(24).Substring(0,24).ToCharArray()) $secureString = ConvertTo-SecureString -String $d -Key $key $decryptedText = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString)) return $decryptedText }
$Script:key = "MyS3cr37K3y1sH3r3101" $Script:k3y = Hash($key) $text="" $Script:d=(Decode($text)) Decode2($k3y)
|

看到这个熟悉的504B的开头,就知道是我们最爱的zip了
放进010editor或者其他什么二进制编辑器,保存为zip文件
虽然这个zip文件好像有些损坏,但是并没有伤及要害,仍然可以解压(
于是,得flag
