编辑
2026-06-01
恶意代码分析实验报告
00

目录

实验六:OllyDebug动态结合实验报告
一、实验目的
二、实验内容
三、实验步骤
四、实验分析

实验六:OllyDebug动态结合实验报告

一、实验目的

  1. 掌握OllyDbg动态调试与IDA静态分析的结合使用方法,熟悉调试器窗口布局及常用快捷键操作。
  2. 深入理解恶意代码中的文件名校验机制及其作为反调试手段的原理与绕过技巧。
  3. 掌握自定义异或(XOR)加密算法的识别技术,能够通过动态调试提取隐藏的C2域名等敏感配置。
  4. 分析恶意样本的进程创建行为与网络连接逻辑,理解恶意代码的完整执行流程与载荷触发条件。

二、实验内容

  1. 静态环境搭建与初步分析:利用Strings工具提取样本中的可见明文字符串,结合IDA Pro加载样本,定位程序入口点并分析关键函数逻辑,导出MAP符号文件以辅助动态调试。
  2. 动态调试配置与行为触发:在OllyDbg中加载恶意样本并导入MAP文件以还原符号信息,设置关键地址断点,跟踪程序执行流,分析程序异常退出的具体原因。
  3. 文件名校验机制绕过:通过单步执行GetModuleFileNameA和strcmp等系统函数,详细分析程序获取当前路径并比对文件名的自校验过程,通过重命名文件绕过该检测。
  4. 加密算法逆向与C2提取:动态跟踪核心解密函数sub_401089的调用参数与内部逻辑,验证异或解密算法,利用密钥还原加密的C2域名,并分析后续CreateProcessA调用意图。

三、实验步骤

步骤1:静态分析准备与MAP文件生成 首先使用Strings工具扫描Lab09-02.exe,发现静态字符串中仅包含1qaz2wsx3edcocl.exe,未发现明显的域名明文。接着启动IDA Pro加载样本,在入口函数列表中定位到main函数地址为0x401128。为了提高动态调试时的代码可读性,在IDA中点击菜单栏File->Produce file->Create MAP file,导出包含函数符号信息的MAP文件,保存至本地目录。

步骤2:OllyDbg环境配置与初始断点设置 启动OllyDbg调试器,按F3键打开Lab09-02.exe文件。点击右键菜单选择插件LoadMapEx,加载步骤1中导出的MAP文件,此时汇编代码中的地址旁将显示具体的函数名称。按下Ctrl+G快捷键,输入目标地址0x401128跳转到主函数入口处,按下F2键在该地址设置断点。最后按F9运行程序,程序成功中断在入口点。

步骤3:分析文件名校验导致退出的问题F8单步执行指令,观察底部的堆栈窗口。首先看到程序压入了两个字符串参数:1qaz2wsx3edcocl.exe。继续F8步过GetModuleFileNameA函数调用,并在内存窗口中查看缓冲区,确认程序成功获取了当前完整路径。随后程序调用strrchr查找最后一个反斜杠,紧接着调用strcmp将提取的文件名与ocl.exe进行对比。由于当前文件名为Lab09-02.exe,对比结果不为0,导致程序执行exit指令直接退出。

步骤4:绕过校验并触发网络行为 关闭调试器,将样本文件重命名为ocl.exe。在OllyDbg中重新加载该文件,再次运行至strcmp指令处。此时校验通过,程序未发生跳转退出。继续向下执行,在底部的模块列表窗口中可以观察到程序动态加载了ws2_32.dllmswsock.dll等网络通信库,说明Payload已被触发。

步骤5:解密C2域名分析 继续执行至地址0x00401133,此处有一条CALL sub_401089指令。在调用前检查堆栈窗口,确认传入的参数分别为:密文缓冲区地址和密钥字符串1qaz2wsx3edc的指针。按下F7步入sub_401089函数内部,通过单步执行观察寄器变化,确认算法为循环异或(XOR)。执行完该函数返回后,在数据窗口跟随EAX寄存器,查看解密后的内存数据,成功还原出明文字符串www.practicalmalwareanalysis.com

步骤6:验证进程创建行为 继续向下跟踪代码至地址0x40106E,此处调用了CreateProcessA。通过查看栈中传入的参数,可以确认恶意代码正在准备创建新的子进程。结合网络连接行为,判断该步骤旨在下载执行后续的恶意载荷或建立反向Shell,完成恶意功能的最终落地。

四、实验分析

实验结果 本实验成功复现了恶意样本Lab09-02.exe的运行逻辑。初始运行时程序瞬间退出,经动态调试确认是因为文件名不符触发了基于strcmp的自毁机制。将文件重命名为ocl.exe后,程序顺利通过校验并加载了网络库。通过在地址0x00401133处跟踪关键函数调用,利用硬编码密钥1qaz2wsx3edc成功解密出了隐藏的C2域名www.practicalmalwareanalysis.com。最后,验证了程序在0x40106E处通过CreateProcessA创建子进程的行为,完整还原了其从自检到外联的攻击链。

个人收获 通过本次实验,我深刻体会到了动静结合分析在恶意代码逆向中的重要性。利用IDA导出MAP文件辅助OllyDbg调试,极大地提升了代码阅读效率和定位速度。技术上,我掌握了识别简单异或加密的方法,理解了文件名校验作为一种基础的反分析手段如何影响程序流。此外,熟练运用OD的断点、内存查看和堆栈分析功能,使我对恶意代码的底层机制和C2架构有了更直观、深入的理解。

本文作者:Linxiong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!