从样本分析中学习病毒释放过程
字数 1409 2025-08-23 18:31:25

病毒样本分析:内存写入与验证机制绕过技术

1. 病毒释放过程概述

该病毒样本通过以下主要步骤实现攻击:

  1. 内存分配与初始化
  2. 结构化异常处理(SEH)滥用实现控制流混淆
  3. 文件系统操作获取特定文件
  4. 内存写入病毒数据
  5. 绕过系统验证机制

2. 内存分配与初始化技术

病毒首先通过以下方式为后续操作准备内存空间:

; 循环五次对eax的值操作
; 分配大块内存
sub esp, 大偏移量

关键点:

  • 通过循环操作eax可能用于混淆分析
  • 减去大偏移量为函数操作分配足够内存空间
  • 调用sub_4040BC进行上锁确保操作原子性

3. 结构化异常处理(SEH)滥用技术

病毒设置了两个嵌套的SEH处理程序来绕过异常检测:

3.1 第一个异常处理程序

push offset loc_407A36     ; 压入异常处理程序地址
mov fs:[eax], esp          ; 设置新的异常处理程序

处理逻辑:

  1. 参数传递:从栈中获取参数指针
  2. 检查异常状态:测试特定条件位
  3. 动态设置异常处理函数地址
  4. 调用处理逻辑(sub_4034D4)
  5. 执行异常处理函数
  6. 返回处理结果(通常返回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. 绕过验证机制技术

病毒采用多种技术绕过系统验证:

  1. 内存操作混淆

    • 非常规内存分配
    • 大偏移量栈操作
  2. SEH链操纵

    • 动态设置异常处理程序
    • 修改异常记录状态
    • 利用系统级异常处理
  3. 控制流混淆

    • 通过异常处理转移控制流
    • 条件跳转与动态函数调用
  4. 反分析技术

    • 加密字符串
    • 非常规代码结构
    • 动态函数地址设置

7. 分析技术与方法

有效分析此类病毒需要:

  1. 动态分析

    • 调试寄存器数据和堆栈变化
    • 监控异常处理流程
  2. 静态分析

    • IDA反汇编与代码转换
    • 函数调用图分析
    • 交叉引用追踪
  3. 行为监控

    • 文件系统操作记录
    • 内存写入模式识别
    • API调用序列分析
  4. 解密技术

    • 识别加密字符串模式
    • 分析加解密函数
    • 动态提取解密数据

8. 防御建议

针对此类攻击的防御措施:

  1. 异常处理监控

    • 检测异常的SEH链修改
    • 监控UnhandledExceptionFilter调用
  2. 内存保护

    • 防止大块非常规内存分配
    • 监控可疑的栈操作
  3. 文件系统防护

    • 限制未知进程的文件访问
    • 监控文件指针获取操作
  4. 行为检测

    • 检测控制流混淆技术
    • 识别异常的数据复制模式
  5. 加固措施

    • 启用DEP(数据执行保护)
    • 使用ASLR(地址空间布局随机化)
    • 实施控制流完整性检查

通过深入理解病毒的技术细节,安全人员可以更好地检测、分析和防御此类恶意代码。

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