编辑
2026-05-30
恶意代码分析实验报告
00

实验二:静态分析基础技术二

一、实验目的

  1. 掌握PE文件区段头的分析技术,能够通过区段特征判断文件是否被加壳或存在异常结构。
  2. 学习基本的脱壳技术,能够使用通用脱壳工具(如UPX)对恶意样本进行脱壳处理,以便进行深层次分析。
  3. 深入理解DLL(动态链接库)型恶意代码的工作原理,掌握分析导出表和导入表的方法。
  4. 能够通过静态分析技术推断恶意代码的具体功能(如下载者、后门)及其持久化机制。

二、实验内容

  • PE文件区段结构分析:使用PE查看工具或IDA Pro加载Lab01-03.exe,详细查看其节表,识别是否存在非标准的区段名称(如UPX0、UPX1)及异常的区段权限设置。
  • 样本脱壳操作:针对Lab01-03.exe被UPX加壳的特征,使用命令行工具UPX对其进行脱壳,对比脱壳前后的文件大小与区段变化,验证脱壳是否成功。
  • DLL文件导出函数分析:利用Dependency Walker加载Lab01-04.dll,查看其导出表,重点分析非标准命名的导出函数(如Install、Start),推测DLL被加载后的执行流程。
  • 核心功能API定位:结合Strings工具与导入表分析,定位Lab01-03.exe中的网络下载API及Lab01-04.dll中的网络连接API,验证其恶意行为。

三、实验步骤 步骤1:分析Lab01-03.exe的PE区段结构。 首先使用PEiD确认Lab01-03.exe被UPX加壳。随后,使用LordPE或CFF Explorer打开该文件,切换到“区段”视图。观察区段名称,确认存在名为.upx0.upx1.UPX2的非标准区段。记录这些区段的虚拟大小和原始大小,特别是.upx0的原始大小为0,这是UPX加壳的典型特征。同时,关注区段的属性(如是否可读、可写、可执行),加壳样本通常会有异常的属性设置。

步骤2:对Lab01-03.exe进行脱壳处理。 打开CMD命令行窗口,进入UPX工具所在目录。执行脱壳命令:upx.exe -d C:\Malware\Lab01-03.exe -o C:\Malware\Lab01-03_unpacked.exe。参数-d表示执行解压操作,-o指定输出文件名。执行完毕后,若显示“Unpacked successfully”,则说明脱壳成功。再次使用PEiD或CFF Explorer查看脱壳后的文件,确认区段名称已恢复为标准的.text.rdata.data等,文件结构已恢复正常。

步骤3:深入分析脱壳后的Lab01-03.exe。 将脱壳后的文件拖入Dependency Walker,查看其导入表。在列表中寻找urlmon.dll库,并重点关注URLDownloadToFileAURLDownloadToFileW函数的引用。同时,使用Strings工具对脱壳后的文件进行扫描,搜索“http”、“.exe”等关键词,找到其尝试下载的URL地址(如http://www.practicalmalwareanalysis.com/lab01-03.exe)。结合两者,确认该样本是一个下载者,旨在从远程服务器下载并执行文件。

步骤4:分析Lab01-04.dll的导出与导入关系。 Lab01-04是一个动态链接库文件。使用Dependency Walker打开它,点击“Export”标签页。观察导出函数列表,发现包含名为InstallRTStartRTStopRTUninstallRT的函数。其中InstallRT暗示了安装或持久化机制,StartRT暗示了恶意功能的启动。接着查看“Import”标签页,发现其导入了ws2_32.dll中的网络相关函数(如WSASocketconnect)以及advapi32.dll中的服务管理函数,这表明该DLL可能具备通过网络通信并作为服务运行的能力。

步骤5:综合验证与功能推断。 对比Lab01-03与Lab01-04的分析结果。Lab01-03通过URLDownloadToFile下载文件,而Lab01-04作为DLL,提供了安装和启动的接口。进一步搜索Lab01-04中的字符串,可能发现与“Service”相关的字符串。由此推断,Lab01-03可能是下载器,负责下载Lab01-04(或类似的后门程序),然后通过导出的Install函数将其安装为系统服务,实现长期驻留。

四、实验分析 实验结果: 通过对Lab01-03.exe的静态分析,成功识别其UPX壳结构并完成脱壳。分析发现脱壳后的样本调用了URLDownloadToFile API,且包含特定的URL字符串,证实其为一个恶意下载器。对Lab01-04.dll的分析显示,它导出了InstallRTStartRT等控制函数,并引入了Winsock网络库与服务管理API。这表明该DLL是一个后门组件,设计用于被加载器调用,通过服务机制实现持久化,并建立网络连接等待攻击者指令。

个人收获: 本次实验让我从PE文件结构的底层视角理解了恶意代码的静态特征。我学会了通过区段名称快速识别加壳样本,并掌握了使用UPX进行基础脱壳的实用技能。更重要的是,我理清了DLL型恶意代码与普通EXE的区别,明白了通过导出函数命名(如Install、Start)可以推断其攻击逻辑(安装-运行)。这种结合API调用、字符串特征和文件结构的综合分析方法,大大提高了我在不运行代码的情况下解析恶意软件意图的能力。

本文作者:Linxiong

本文链接:

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