从样本分析中学习病毒释放过程
字数 1409 2025-08-23 18:31:25
病毒样本分析:内存写入与验证机制绕过技术
1. 病毒释放过程概述
该病毒样本通过以下主要步骤实现攻击:
- 内存分配与初始化
- 结构化异常处理(SEH)滥用实现控制流混淆
- 文件系统操作获取特定文件
- 内存写入病毒数据
- 绕过系统验证机制
2. 内存分配与初始化技术
病毒首先通过以下方式为后续操作准备内存空间:
; 循环五次对eax的值操作
; 分配大块内存
sub esp, 大偏移量
关键点:
- 通过循环操作eax可能用于混淆分析
- 减去大偏移量为函数操作分配足够内存空间
- 调用
sub_4040BC进行上锁确保操作原子性
3. 结构化异常处理(SEH)滥用技术
病毒设置了两个嵌套的SEH处理程序来绕过异常检测:
3.1 第一个异常处理程序
push offset loc_407A36 ; 压入异常处理程序地址
mov fs:[eax], esp ; 设置新的异常处理程序
处理逻辑:
- 参数传递:从栈中获取参数指针
- 检查异常状态:测试特定条件位
- 动态设置异常处理函数地址
- 调用处理逻辑(
sub_4034D4) - 执行异常处理函数
- 返回处理结果(通常返回1)
3.2 第二个异常处理程序
更复杂的处理逻辑,涉及系统级异常处理:
mov eax, [esp+ExceptionInfo.ExceptionRecord] ; 获取异常记录
test dword ptr [eax+4], 6 ; 检查异常状态
jnz loc_40365C ; 条件跳转
cmp dword ptr [eax], 0EEDFADEh ; 检查异常代码
call sub_40326C ; 进一步分析异常
call UnhandledExceptionFilter ; 系统级异常处理
or dword ptr [eax+4], 2 ; 修改异常记录状态
关键点:
- 检查特定异常代码
0EEDFADEh - 可能调用系统函数
UnhandledExceptionFilter - 动态修改异常记录状态
- 通过
jmp ebx实现控制流转移
SEH滥用目的:
- 捕获并处理函数内错误
- 实现控制流混淆对抗反汇编
- 绕过系统错误检测机制
4. 文件系统操作
病毒通过以下函数获取和处理文件:
sub_402EB8 ; 获取文件句柄
sub_402D28 ; 检查和处理文件大小
sub_402CBC ; 获取文件指针
关键操作:
- 使用
TlsGetValue检索线程本地存储值 - 获取特定文件的句柄和指针
- 检查文件大小可能用于缓冲区分配
- 目标文件未明确说明,需动态分析确定
5. 内存写入技术
病毒使用两个主要函数写入数据:
5.1 sub_403D34函数
sub_402650 ; 主要写入函数
jz short loc_40268D ; 地址相同则跳过
sar ecx, 2 ; 计算双字数量
js short loc_40268D ; 负数检查
rep movsd ; 双字复制
写入数据示例:
- "xboy"
- "whboy"
- 加密字符串"++戊+缓叛 聋+??删蚊 苜苜+兆++"
5.2 sub_403ED4函数
与sub_403D34类似,但专注于:
- 处理后的数据复制
- 加解密操作
- 更复杂的数据转换
关键区别:
- sub_402650:实际数据复制
- sub_403ED4:处理后的数据复制
6. 绕过验证机制技术
病毒采用多种技术绕过系统验证:
-
内存操作混淆:
- 非常规内存分配
- 大偏移量栈操作
-
SEH链操纵:
- 动态设置异常处理程序
- 修改异常记录状态
- 利用系统级异常处理
-
控制流混淆:
- 通过异常处理转移控制流
- 条件跳转与动态函数调用
-
反分析技术:
- 加密字符串
- 非常规代码结构
- 动态函数地址设置
7. 分析技术与方法
有效分析此类病毒需要:
-
动态分析:
- 调试寄存器数据和堆栈变化
- 监控异常处理流程
-
静态分析:
- IDA反汇编与代码转换
- 函数调用图分析
- 交叉引用追踪
-
行为监控:
- 文件系统操作记录
- 内存写入模式识别
- API调用序列分析
-
解密技术:
- 识别加密字符串模式
- 分析加解密函数
- 动态提取解密数据
8. 防御建议
针对此类攻击的防御措施:
-
异常处理监控:
- 检测异常的SEH链修改
- 监控
UnhandledExceptionFilter调用
-
内存保护:
- 防止大块非常规内存分配
- 监控可疑的栈操作
-
文件系统防护:
- 限制未知进程的文件访问
- 监控文件指针获取操作
-
行为检测:
- 检测控制流混淆技术
- 识别异常的数据复制模式
-
加固措施:
- 启用DEP(数据执行保护)
- 使用ASLR(地址空间布局随机化)
- 实施控制流完整性检查
通过深入理解病毒的技术细节,安全人员可以更好地检测、分析和防御此类恶意代码。