一个加密病毒的分析
字数 1142 2025-08-24 07:48:09

加密病毒分析与逆向工程教学文档

一、实验环境与样本信息

  • 实验环境: Windows 7 x64 操作系统
  • 样本来源: 微步在线获取
  • 分析工具:
    • 火绒 (行为监控)
    • x64dbg (动态调试)
    • IDA Pro (静态分析)

二、病毒行为初步观察

  1. 运行效果:
    • 运行前: 测试创建了txt文件
    • 运行后: 所有文件被加密
    • 病毒作者留下了联系信息

三、静态分析基础

  1. 查壳与编译信息:

    • 未发现加壳保护
    • 程序使用C++13编写
  2. 字符串分析:

    • 发现加密算法相关字符串
    • 在两个函数中引用,推测为加密函数
  3. 区块分析:

    • 只有一个区块,表明可能做了特殊处理
  4. 导入表分析:

    • 调用了敏感函数:
    • 文件遍历相关函数
    • 注册表操作相关函数

四、关键函数分析

  1. 主函数结构:

    • 主函数仅调用了一个关键函数
    • 该函数被推测定为解密函数(下文简称解密函数)
  2. 解密函数(408B19):

    • 通过动态调试分析复杂逻辑
    • 调用GetModuleFileName获取文件路径
    • 解密结果为".Snake4444"(加密文件后缀)
    • 发现"HOW..."字符串,推测为解密信息文件
  3. 硬件信息获取函数(4088F4):

    • 获取硬件信息供后续加密使用
  4. 环境变量获取函数:

    • 获取LOCALAPPDATA或APPDATA环境变量
    • 两次尝试失败则退出
    • 成功获取后添加反斜杠
    • 获取文件名并将自身拷贝到local目录
  5. 注册表操作:

    • 进行注册表相关操作

五、文件操作分析

  1. 文件创建与写入:

    • 创建并写入文件,推测为公钥文件
  2. 加密函数(4099A3):

    • 生成RSA密钥对
    • 遍历磁盘操作
    • 根据遍历结果创建线程进行加密
  3. 清理脚本函数(409449):

    • 创建BAT文件进行清理
    • 动态调试发现创建tmp85c2.tmp.bat
    • 内容为调用CMD命令删除病毒文件

六、分析方法总结

  1. 静态分析局限性:

    • 部分函数仅通过静态分析难以理解
    • 需要结合动态调试
  2. 动态调试优势:

    • 可观察实际执行流程
    • 可获取运行时数据
    • 可验证静态分析假设

七、完整分析流程建议

  1. 初步观察:

    • 运行样本观察行为
    • 记录文件系统、注册表等变化
  2. 基础静态分析:

    • 查壳、编译信息
    • 字符串分析
    • 导入表分析
  3. 关键函数定位:

    • 识别主函数调用关系
    • 标记可疑函数(加密、解密、文件操作等)
  4. 动态调试验证:

    • 设置断点跟踪关键函数
    • 观察参数传递和返回值
    • 记录内存变化
  5. 行为综合分析:

    • 结合静态和动态分析结果
    • 绘制病毒执行流程图
    • 识别加密算法和密钥管理方式

八、防护建议

  1. 预防措施:

    • 避免运行未知来源程序
    • 定期备份重要文件
    • 保持系统更新
  2. 检测方法:

    • 监控可疑文件操作(大量文件修改)
    • 检测异常注册表修改
    • 注意异常进程创建
  3. 应急响应:

    • 隔离感染系统
    • 分析病毒样本获取解密信息
    • 从备份恢复文件
加密病毒分析与逆向工程教学文档 一、实验环境与样本信息 实验环境 : Windows 7 x64 操作系统 样本来源 : 微步在线获取 分析工具 : 火绒 (行为监控) x64dbg (动态调试) IDA Pro (静态分析) 二、病毒行为初步观察 运行效果 : 运行前: 测试创建了txt文件 运行后: 所有文件被加密 病毒作者留下了联系信息 三、静态分析基础 查壳与编译信息 : 未发现加壳保护 程序使用C++13编写 字符串分析 : 发现加密算法相关字符串 在两个函数中引用,推测为加密函数 区块分析 : 只有一个区块,表明可能做了特殊处理 导入表分析 : 调用了敏感函数: 文件遍历相关函数 注册表操作相关函数 四、关键函数分析 主函数结构 : 主函数仅调用了一个关键函数 该函数被推测定为解密函数(下文简称解密函数) 解密函数(408B19) : 通过动态调试分析复杂逻辑 调用GetModuleFileName获取文件路径 解密结果为".Snake4444"(加密文件后缀) 发现"HOW..."字符串,推测为解密信息文件 硬件信息获取函数(4088F4) : 获取硬件信息供后续加密使用 环境变量获取函数 : 获取LOCALAPPDATA或APPDATA环境变量 两次尝试失败则退出 成功获取后添加反斜杠 获取文件名并将自身拷贝到local目录 注册表操作 : 进行注册表相关操作 五、文件操作分析 文件创建与写入 : 创建并写入文件,推测为公钥文件 加密函数(4099A3) : 生成RSA密钥对 遍历磁盘操作 根据遍历结果创建线程进行加密 清理脚本函数(409449) : 创建BAT文件进行清理 动态调试发现创建tmp85c2.tmp.bat 内容为调用CMD命令删除病毒文件 六、分析方法总结 静态分析局限性 : 部分函数仅通过静态分析难以理解 需要结合动态调试 动态调试优势 : 可观察实际执行流程 可获取运行时数据 可验证静态分析假设 七、完整分析流程建议 初步观察 : 运行样本观察行为 记录文件系统、注册表等变化 基础静态分析 : 查壳、编译信息 字符串分析 导入表分析 关键函数定位 : 识别主函数调用关系 标记可疑函数(加密、解密、文件操作等) 动态调试验证 : 设置断点跟踪关键函数 观察参数传递和返回值 记录内存变化 行为综合分析 : 结合静态和动态分析结果 绘制病毒执行流程图 识别加密算法和密钥管理方式 八、防护建议 预防措施 : 避免运行未知来源程序 定期备份重要文件 保持系统更新 检测方法 : 监控可疑文件操作(大量文件修改) 检测异常注册表修改 注意异常进程创建 应急响应 : 隔离感染系统 分析病毒样本获取解密信息 从备份恢复文件