
sub_40819C:预备阶段
实现对原病毒所在路径下的 desktop.ini 文件的删除和将自己复制到 drivers 路径下并启动
v55 = __readfsdword(0)
sub_40819C 函数开头的 v55 = __readfsdword(0) 可以反编译成
ExceptionList = NtCurrentTeb()->NtTib.ExceptionList;
和
__writefsdword(0, &v55);
一起处理异常。
查找Desktop_.ini并删除:
检测是否存在该文件,若存在,先修改其属性为隐藏,再进行删除。

这段代码并不是我们之前观察到的创建 Desktop_.ini 文件实现代码。
自我复制到C:windowsSystem32drivers路径下:
先检测是否已经存在该进程和文件,有就先 kill 该进程和修改属性,再获取 System32 路径,拼接路径,自我复制到驱动目录下再运行,最后退出当前进程。

sub_407B68():自毁程序
:try1
del "原程序.exe" → 尝试删除被锁定的程序文件
if exist "原程序.exe" goto try1 → 循环检测直到进程退出
ren "原程序.exe" 临时名称 → 解除文件锁定后重命名
del 临时名称 → 删除重命名后的文件
del %0 → 最后删除批处理自己
当程序自然退出后,批处理文件将会开始执行。
sub_40D18C:爆发阶段
实现对各目录下 Desktop_.ini 文件的创建,对其余文件的感染,和 setup.exe 文件的创建,以及实现内网横向渗透
sub_0040A5B0:
创建线程执行:sub_40A48C:

来执行遍历路径,创建 Desktop_.ini 文件和感染可执行文件的逻辑(读取系统时间并写入):

感染可执行文件相关:

C_InfectFile:

sub_40C374:
设置一个 6s 的计时器运行 TimerFunc 函数,TimerFunc 核心逻辑就是在系统盘创建 setup.exe 和相应的自启动文件 autorun.inf。
sub_40BACC:
创建线程,执行网络连接,实现横向内网渗透,通过 SMB 协议扫描:
System::BeginThread(sub_40BA8C, 0, 0, &v6, 0, 0, v3); 多线程运行,横向内网渗透,
sub_40D088:对抗安全查杀
恶意下载与执行相关,对抗安全软件和监控
设置了 6 个计时器:
特别是在 sub_40CEE4 函数中的sub_406E2C函数:
执行sub_4061B8,实现通过关闭安全软件窗口、终止关键进程、模拟用户操作,破坏系统防御能力,确保恶意程序持续运行:

最后
把分析的思维图放到最后:
