Skip to content

经典蠕虫病毒教科书---熊猫烧香

· 10 min

“熊猫烧香”在2006年底至2007年初大规模爆发,因感染后的文件图标会变成一只持香作揖的熊猫而得名。这个“老古董”是中国网络安全史上极具代表性的计算机蠕虫病毒。

基本信息#

File:xiongmao.vir

SHA1值:CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870

第一道关卡:壳的博弈#

image-20231126213116538

FSG 是一款非常经典的压缩壳,主要设计目标是追求极小的文件体积。它常被早期的恶意软件(如“熊猫烧香”)使用,因为它能显著减小病毒体积并初步混淆代码逻辑,增加静态分析的难度。

FSG脱壳#

ESP定律#

寻找原始入口点 (OEP)

实际操作:

F8 单步执行后,观察到 ESP 寄存器变为红色。

image-20231126221248335

在数据窗口跟随 0018FF88 地址并设置硬件访问断点,我们可以快速跳过脱壳循环,直达程序的 OEP(原始入口点)。

image-20231126221436753

image-20231126221826778

F9 运行后,程序会停在跳转至 OEP 的关键 JMP 指令处。

F9运行–>把断点清理掉,【调试→硬件断点→删除】–>F8单步跟到OPE。

观察发现,004001D9在处dll在载入,在004001D9处下断点。

在EDI数据跟随,将显示模式调整为“长型 -> 地址”,F9观察地址变化。

FSG 在填充模块地址时,会插入 7FFFFFFF 作为分隔或干扰。如果直接使用 ImportREC 修复,这些填充值会导致工具无法识别导入函数。通过手动将这些值修改为 00000000,可以欺骗修复工具正确识别出 API 的边界。

在显示FFFFFFF时,dll载入结束,此时F8即可跳转OPE处。

image-20240807111821580

跳转到如图,右键【分析–>从模块删除分析】

202408081811681

image-20231126223751594

当程序跳转到真正的 OEP(Delphi 程序的起始特征)时,使用 OllyDump 将内存中的代码抓取出来保存为 .exe

image-20231126224143597

在 OEP 处使用 OllyDump 插件,取消勾选“重建输入表”(因为我们需要手动修复)。

image-20240808224822730

修复 IAT#

由于转储出来的文件由于没有正确的导入表无法运行,需要利用 ImportREC 重新建立函数映射关系。

打开 ImportREC,导入原文件,修复的是 Dump 文件,填入正确的 OEP 偏移值,获取输入表并删除无效指针,最后点击“修复转储文件”。

OEP需要和从OD里dump出来时的值相同,【IAT自动搜索–>获得导入表】

image-20240808225409012

【显示无效–>删除指针–>修正转储(选择之前从od dump下来的文件1.exe)】

image-20240808225503625

image-20240808230130829

成功脱壳并修复 IAT 后,我们终于掀开了这只‘熊猫’的神秘面纱。接下来的分析将揭示它如何在系统中扎根、隐藏并开启疯狂的扩散模式。

深度剖析:核心恶意行为#

病毒是用 Delphi 6.0-7.0 编写的,添加正确的签名库(bds)是识别函数语义的前提。

image-20240808232252363

载入分析,IDA打开修好的1_.exe,添加签名。

image-20240808231600793

没有delphi的签名库,右键添加

image-20240808231921359

里面也有Delphi1的库,注意这里添加bds更准确

image-20240808232109890

病毒的“解密引擎”#

xboy 和 whboy 都是解密字符串,sub_405250函数是病毒的“解密引擎”,利用 xboy/whboy 密钥还原攻击指令。

image-20240810201600321

主要执行恶意的三个函数

image-20260103215634219

自我保护与持久化#

自我复制#

在系统目录下释放病毒文件C:\Windows\SysWOW64\drivers\spo0lsv.exe。

病毒自我复制到系统目录下。

202408051827410

自我感染状态检测#

image-20260103224416776

构造系统目录伪装路径#

image-20260103224645427

当文件未被感染且当前病毒路径和系统下的病毒路径不一致#
  1. 终止已存在的spo0lsv.exe进程(避免端口/文件占用,确保复制成功)
  2. 拼接系统伪装路径,修改文件属性(确保复制/写入权限)
  3. 把当前病毒复制到系统伪装路径下
  4. 执行系统目录下的伪装病毒,退出当前进程

image-20260103225031483

当文件未被感染且当前病毒路径和系统下的病毒路径一致#

当前病毒已经在系统伪装路径下(无需复制),进入感染标志查找。

image-20260103225827350

当文件被感染,清理 + 恢复 + 重启#

针对 “已感染的文件”,目的是清理痕迹、恢复原文件(迷惑用户),同时确保伪装病毒持续运行。

  1. 清理感染标志(删除“whboy”字符串)
  2. 提取原文件大小(恢复文件用)
  3. 恢复原文件(把感染后的文件还原为感染前的状态)
  4. 执行bat脚本(清理痕迹/自启动)

image-20260103230155282

  1. 检查并重启伪装病毒进程(确保病毒持续运行)

image-20260103230726370

病毒的自我保护#

调用了6个定时器:

image-20260104141520831

定时器核心功能 (Function)目标行为
Timer 1核心持久化 + 自保定时器关闭杀软、添加自启动项、禁用隐藏文件显示
Timer 2/3/6远程分发从 C2 服务器下载更新变种或盗号木马
Timer 4反杀软强制结束安全软件进程并禁止其服务加载
Timer 5网络测试打开正常网络 测试网络或混淆

多维感染机制#

image-20260103211114905

全盘感染#

病毒多线程遍历磁盘,感染 .exe 文件并试图在各个文件夹下释放并隐藏Desktop_.ini留下感染痕迹

image-20240807104044054

  1. 判断是否有ini这个文件,不存在则创建并写入内容
  2. 读取desktop.ini到内存,与当前时间对比更新日期

image-20260103234535342

Crt_ScanDisk 是病毒的递归扫描函数:扫描完当前目录后,自动进入子目录继续扫描,实现 “全盘遍历”。

image-20260103234709666

核心破坏行为 1:删除 GHO 备份文件#

image-20260103234836795

GHO 是 Ghost 备份文件(用户 / 管理员用来恢复系统的核心文件),病毒删除 GHO 文件的目的是破坏系统恢复能力—— 即使用户发现中毒,也无法通过 Ghost 恢复干净系统,只能重装,提升病毒的驻留时间。

核心破坏行为 2:定向感染 / 篡改文件(按后缀分类)#

病毒会筛选小于 10MB(0xA00000 字节) 的文件(避免感染大文件导致卡顿 / 被发现),然后按后缀分类处理:

image-20260104122536334

第一类:感染可执行文件

  1. EXE文件 → 调用Crt_InfectExe感染
  2. SCR(屏幕保护)/PIF(快捷方式)/COM(DOS可执行)→ 同样调用Crt_InfectExe感染

image-20260104122803877

第二类:篡改网页文件

  1. HTM/HTML文件 → 调用sub_4079CC篡改
  2. ASP/PHP/JSP/ASPX(动态网页)→ 同样调用sub_4079CC篡改

image-20260104133121788

清理痕迹 + 结束扫描

image-20260104133241953

Autorun 自动运行 + 全磁盘持久化核心模块#

Crt_CreateThread核心感染线程,负责递归遍历磁盘并植入代码。

image-20260103211034197

Crt_SetTimer驱动器监控任务,检测 U 盘并生成 autorun.inf

image-20240812145121321

TimerFunc#

第一步:遍历所有磁盘(本地 + 移动介质)

image-20260104134214730

第二步:拼接病毒文件路径(setup.exe + autorun.inf)

image-20260104134314581

第三步:处理 setup.exe(病毒本体)

  1. 校验:sub_40BD34 是病毒的文件完整性校验函数(比如对比 MD5 / 特征码),防止 setup.exe 被用户删除 / 替换后失去传播能力。
  2. 重建:校验失败则删除篡改文件,重新复制病毒本体 —— 保证每个磁盘的 setup.exe 都是完整的病毒程序。
  3. 传播:U 盘 / 移动介质插入后,病毒会自动复制自身到其根目录,实现 “插 U 盘即中毒”。

image-20260104134640476

第四步:创建 / 篡改 autorun.inf(实现自动运行)

image-20260104135141901

第五步:隐藏病毒文件(提升隐蔽性)

用户在资源管理器中看不到 setup.exe 和 autorun.inf(默认不显示系统 / 隐藏文件),即使打开 U 盘,也发现不了病毒文件,大幅降低被删除的概率。

image-20260104135222729

局域网横向传播核心模块#

利用 Windows SMB 协议的 139/445 端口(局域网共享核心端口),实现 “同网段主机横向扩散”,是勒索病毒 / 蠕虫病毒的典型传播手段。

139 端口失败自动尝试 445 端口,适配不同版本 Windows 主机,最大化传播成功率。

识别横向传播函数:先靠硬编码特征(139/445/\IP\C$)快速锁定候选,再靠关键 API(NetRemoteTOD/NetScheduleJobAdd)确认,最后靠逻辑流程验证。

image-20260104140004113

外联行为监控

image-20240807111821580