实验二:静态分析基础技术二
一、实验目的
二、实验内容
三、实验步骤
步骤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库,并重点关注URLDownloadToFileA或URLDownloadToFileW函数的引用。同时,使用Strings工具对脱壳后的文件进行扫描,搜索“http”、“.exe”等关键词,找到其尝试下载的URL地址(如http://www.practicalmalwareanalysis.com/lab01-03.exe)。结合两者,确认该样本是一个下载者,旨在从远程服务器下载并执行文件。
步骤4:分析Lab01-04.dll的导出与导入关系。
Lab01-04是一个动态链接库文件。使用Dependency Walker打开它,点击“Export”标签页。观察导出函数列表,发现包含名为InstallRT、StartRT、StopRT和UninstallRT的函数。其中InstallRT暗示了安装或持久化机制,StartRT暗示了恶意功能的启动。接着查看“Import”标签页,发现其导入了ws2_32.dll中的网络相关函数(如WSASocket、connect)以及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的分析显示,它导出了InstallRT和StartRT等控制函数,并引入了Winsock网络库与服务管理API。这表明该DLL是一个后门组件,设计用于被加载器调用,通过服务机制实现持久化,并建立网络连接等待攻击者指令。
个人收获: 本次实验让我从PE文件结构的底层视角理解了恶意代码的静态特征。我学会了通过区段名称快速识别加壳样本,并掌握了使用UPX进行基础脱壳的实用技能。更重要的是,我理清了DLL型恶意代码与普通EXE的区别,明白了通过导出函数命名(如Install、Start)可以推断其攻击逻辑(安装-运行)。这种结合API调用、字符串特征和文件结构的综合分析方法,大大提高了我在不运行代码的情况下解析恶意软件意图的能力。
本文作者:Linxiong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!