熊猫烧香病毒分析(中)

image-20250404232341332

sub_40819C:预备阶段

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

v55 = __readfsdword(0)

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

1
ExceptionList = NtCurrentTeb()->NtTib.ExceptionList;

1
__writefsdword(0, &v55);

一起处理异常。

查找Desktop_.ini并删除:

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

image-20250404233125733

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

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

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

image-20250404233725602

sub_407B68():自毁程序

1
2
3
4
5
6
: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

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

image-20250405000654283

感染可执行文件相关:

image-20250405000742789

C_InfectFile:

image-20250405000806950

sub_40C374:

设置一个6s的计时器运行TimerFunc函数,TimerFunc核心逻辑就是在系统盘创建setup.exe和相应的自启动文件autorun.inf。

sub_40BACC:

创建线程,执行网络连接,实现横向内网渗透,通过SMB协议扫描:

1
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

最后

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

熊猫烧香恶意程序分析