image-20250404232341332.png

sub_40819C:预备阶段

实现对原病毒所在路径下的 desktop.ini 文件的删除和将自己复制到 drivers 路径下并启动

v55 = __readfsdword(0)

sub_40819C 函数开头的 v55 = __readfsdword(0) 可以反编译成

ExceptionList = NtCurrentTeb()->NtTib.ExceptionList;

__writefsdword(0, &v55);

一起处理异常。

查找Desktop_.ini并删除:

检测是否存在该文件,若存在,先修改其属性为隐藏,再进行删除。

image-20250404233125733.png

这段代码并不是我们之前观察到的创建 Desktop_.ini 文件实现代码。

自我复制到C:windowsSystem32drivers路径下:

先检测是否已经存在该进程和文件,有就先 kill 该进程和修改属性,再获取 System32 路径,拼接路径,自我复制到驱动目录下再运行,最后退出当前进程。

image-20250404233725602.png

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:

image-20250405000442012.png

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

image-20250405000654283.png

感染可执行文件相关:

image-20250405000742789.png

C_InfectFile:

image-20250405000806950.png

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 个计时器:

定时器地址

时间间隔

回调函数

功能描述

0x3E8u

1 秒

sub_40CEE4

创建自启动项 (spo0lsv),实现持久化

0x124F80u

20 分钟

sub_40D040

核心恶意下载模块(可能下载远控木马或勒索组件)

0x2710u

10 秒

sub_40D048

下载后抹除痕迹(删除日志、加密通信等)

0x1770u

6 秒

sub_407430

系统性终止安全软件服务,删除注册表启动项(针对性对抗杀软)

0x2710u

10 秒

sub_40CC4C

隐蔽数据下载(可能用于泄露敏感信息或接收指令)

0x1B7740u

30 分钟

sub_40C728

二次恶意下载(更新组件或下载额外攻击载荷)

特别是在 sub_40CEE4 函数中的sub_406E2C函数:

执行sub_4061B8,实现通过关闭安全软件窗口、终止关键进程、模拟用户操作,破坏系统防御能力,确保恶意程序持续运行

image-20250405001750188.png

最后

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

熊猫烧香恶意程序分析-iNbf.png