这次不用volatility2了,试试volatility3

filescan一下,在桌面上看到个叫成绩单的表格

image-20240328132138952

把它dump下来

image-20240328132551305

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

image-20240328194801457

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

image-20240328200431086

image-20240328195639155

image-20240328195922747

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

image-20240328200118331

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

image-20240328200218045

这下看起来舒服多了(

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

image-20240328200502193

image-20240328200611602

image-20240328200642356

接下来就是写个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)

image-20240328201823496

看到这个熟悉的504B的开头,就知道是我们最爱的zip了

放进010editor或者其他什么二进制编辑器,保存为zip文件

虽然这个zip文件好像有些损坏,但是并没有伤及要害,仍然可以解压(

于是,得flag

image-20240328202122988