正文
和
Processes Tree
信息中观察到
PowerShell
被拉起时的进程树,并看到其执行的命令行信息和
PowerShell
命令,如下图所示:
可以看到其通过
PowerShell
静默下载并执行
https[:]//files.catbox[.]moe/69b44f[.]ps1
脚本 (
d03a44e92a67dbb9bb6befdd2c0b3c7844e9f64fb847eff6bbc1ad09d679e273
)。
我们将该脚本下载后,可以看到脚本中的变量
${IndianiqsqDChtlS}
由多个编码片段拼接而成,如下图所示:
对于第一组编码数据,我们猜测为Hex数据,开头部分数据为:
0x54, 0x56, 0x71, 0x51, 0x41, 0x41, 0x4d, 0x41, 0x41, 0x41, 0x41, 0x45, 0x41, 0x41, 0x41, 0x41, 0x2f, 0x2f
,将其转换为字符串后为:
TVqQAAMAAAAEAAAA//
,再讲该字符串进行
base64
解码后就会得到
Windows PE
文件的
MZ
头,因此该脚本通过
base64
编码+
Hex
编码序列化存储了一个二进制可执行文件。如下图所示:
由于脚本中多个部分使用不同的编码方法,并且拆得非常零散,如果一个一个手动进行解码再拼接工作量大且十分复杂,我们直接滑动到脚本底部查看其拼接、反序列化和释放并写入文件的部分。
分析脚本底部的部分变量:
PowerShell
中反引号
是转义字符,变量名中的反引号不会影响实际变量名,反引号在
PowerShell
中用来转义特殊字符,所以这里可能是在故意混淆变量名,让分析变得困难。 对于变量
I
n
D
I
a
n
k
p
M
j
b
Y
e
D
t
f
‘
,
可
以
看
到
赋
值
的
内
容
是
‘
[
s
Y
s
t
E
m
.
i
O
.
P
A
t
H
]
:
:
g
E
t
T
e
m
P
p
a
t
h
(
)
‘
,
即
获
取
系
统
临
时
目
录
并
赋
值
。
对
于
变
量
‘
I
n
D
I
a
n
k
p
M
j
b
Y
e
D
t
f
‘
,
可
以
看
到
赋
值
的
内
容
是
‘
[
s
Y
s
t
E
m
.
i
O
.
P
A
t
H
]
::
g
E
t
T
e
m
P
p
a
t
h
(
)
‘
,
即
获
取
系
统
临
时
目
录
并
赋
值
。
对
于
变
量
‘
indIanRJLztrDfju
,可以看到赋值的内容末尾是
.exe
,其在拼接exe文件的所在目录(
i
n
d
i
a
n
k
P
M
J
B
y