实验一:静态分析基础技术一
一、实验目的
二、实验内容
三、实验步骤 步骤1:样本收集与病毒检测。 首先在虚拟机中建立专用分析文件夹,放入Lab 1-1和Lab 1-2的三个文件。计算本地哈希值后,分别上传至VirusTotal。记录Lab01-01.exe的SHA1值,观察检测率。若大部分杀软报警,则确认为恶意代码。记录检测报告中提及的“Trojan”或“Downloader”等特征标签,作为后续分析的参考基准。
步骤2:识别文件是否加壳。
打开PEiD工具,点击“...”按钮分别载入Lab01-01.exe、Lab01-01.dll和Lab01-02.exe。观察界面的“Enty point”与“File info”栏目。若Lab01-01.dll显示“UPX 0.89.6 - 1.02 / 1.05 - 2.xx -> Markus & Laszlo”,则说明该文件被UPX壳加压;若Lab01-02.exe显示“Microsoft Visual C++ 6.0”等正常编译信息,则说明未加壳。记录下这些信息,加壳的样本通常无法直接进行字符串或反汇编分析,需优先脱壳。
步骤3:提取与分析字符串。
打开命令行提示符(CMD),切换至Sysinternals Suite目录。执行命令 strings.exe -a -n 4 C:\Samples\Lab01-02.exe。参数-a表示强制扫描所有类型字符,-n 4表示仅显示长度大于等于4的字符串。将输出结果重定向保存为txt文件。使用Notepad++打开该文件,搜索“http”、“ftp”、“.exe”、“Create”等关键词。如果在Lab01-02中发现类似http://www.malicious.com/update.exe的字符串,极可能表明该样本具有下载器的功能。
步骤4:分析依赖关系与API函数。
启动Dependency Walker,打开Lab01-02.exe。在左侧树状图中查看其依赖的DLL文件(如kernel32.dll, user32.dll, ws2_32.dll)。重点关注ws2_32.dll中的WSAStartup或socket函数,这验证了网络通信功能。接着打开Lab01-01.dll,点击“Export”标签页,查看其导出的函数名称。如果发现导出函数名为非规范的字符串(如“InstallRT”或“Start”),这通常意味着该DLL是专门设计供其他程序恶意加载的插件。
步骤5:综合验证与数据记录。 对比上述步骤获取的数据,验证逻辑一致性。例如,若Strings中发现了URL,且Dependency Walker中发现了网络相关的Winsock API,则可相互印证样本具有联网行为。整理所有截图与数据,形成静态分析结论。
四、实验分析
实验结果:
通过本次实验,我们确认Lab01-01.dll被UPX壳压缩,这会阻碍静态反汇编的进行,但其导出表显示了非标准的函数名。Lab01-02.exe未加壳,字符串提取成功发现了包含“http://”前缀的URL地址以及相关的文件路径字符串。Dependency Walker的分析结果显示,Lab01-02.exe导入了ws2_32.dll中的网络连接函数,与字符串分析结果高度吻合。VirusTotal的检测报告也证实了这些文件具有高置信度的恶意特征。
个人收获: 本次实验让我掌握了恶意代码静态分析的“三件套”:病毒库查询、加壳识别和字符串/API分析。我深刻理解了静态分析无需运行代码即可揭示样本意图的优势,同时也认识到加壳技术是静态分析的主要障碍。通过分析导入表和字符串,我学会了像侦探一样从碎片信息中拼凑出恶意代码的攻击链路,例如从URL和网络API推断出下载行为,这种逻辑推理能力的提升是本次实验最大的收获。
本文作者:Linxiong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!