20242418 2026-2027-1《网络与系统攻防技术》实验四实验报告
1. 基础知识
1.1 可执行文件与逆向分析
知识点 | 关键内容 | 用在哪里 |
|---|---|---|
PE 文件格式 | Windows EXE 通常采用 PE 格式,文件头能反映机器类型、入口点及节表信息。 | 我用 PEiD、IDA 检查 RaDa.exe,还从 PE 头读取了 COFF 时间戳。 |
UPX 加壳 | UPX 对程序进行压缩和封装,程序的入口和可读内容会发生变化;遇到改动过的包头时,标准工具可能无法解包。 | 原始 RaDa 在 PEiD 中呈现 UPX 特征,但 UPX 5.2.1 报错;我改用实验提供的脱壳器。 |
脱壳结果核对 | 脱壳后需要观察程序结构是否更容易分析,并核对入口、导入表及字符串。 | 我比较了文件大小、PEiD 检测结果、字符串数量,并用 IDA 查看 ThunRTMain。 |
IDA 交叉引用 | 从字符串位置沿着引用关系找到代码,能够进一步弄清数据用在什么地方。 | 我追踪 RaDa 的 URL、Run 注册表路径和 C:\RaDa 目录,找到了相应的汇编指令。 |
VB6 运行时 | Visual Basic 程序会借助 MSVBVM60 等运行时例程执行初始化、字符串处理和对象操作。 | 我在导入表看到 ThunRTMain、__vbaStrCopy 等名称,结合代码理解字符串如何被加载。 |
Crackme 常用判断 | 参数比较、条件跳转、文件名检查和简单编码都可能影响程序的成功分支。 | Crackme1 通过 strcmp 判断口令;Crackme2 还检查程序名,并用 XOR 0x42 还原提示文本。 |
1.2 恶意代码与网络取证
知识点 | 关键内容 | 用在哪里 |
|---|---|---|
后门与远程访问木马 | 这类程序通常具有远程指令处理、文件操作或维持访问能力。分析时要把潜在功能与已发生的行为区分开。 | RaDa 的 CGI 路径、命令解释器及自启动字符串帮助我判断它可能具有的功能。 |
病毒、蠕虫 | 病毒往往依靠感染文件复制;蠕虫可以利用网络弱点传播。 | 我把 RaDa 的程序功能与 PCAP 中的 SQL Slammer 传播流量分别分析,没有混成同一种行为。 |
PCAP 文件 | PCAP 记录已捕获的数据包,时间、协议、源目的地址和负载可以用于还原通信经过。 | 我用 capinfos 看总体情况,再用 TShark/Wireshark 筛选 IRC、HTTP、UDP 1434 和 SMB。 |
IRC 通信 | IRC 客户端可用 NICK、USER 注册,用 JOIN 加入频道,PRIVMSG 发送消息;常见端口是 TCP 6667。 | 我追踪到 209.196.44.172:6667 的 IRC 会话,查看了欢迎信息、频道名单与消息正文。 |
NBNS 与 SMB | NBNS 可查询 NetBIOS 名称;SMB 通过会话请求和共享连接请求访问网络共享。 | 我把 NBSTAT 查询、响应与 TCP 139 上的 SMB Tree Connect 请求联系起来分析。 |
证据判断 | 报文里出现目标路径、命令或错误码,只能先说明对应字段出现过;还要查看双方是否有后续交互。 | 在 HTTP 和 SMB 部分,我追踪了 TCP 流,再判断现有抓包能说明什么。 |
2. 实验内容
这次实验分为四个部分。我先识别并脱壳 RaDa,再完成两个 Crackme 的逆向验证;随后围绕 RaDa 回答八个分析问题,最后对给定的蜜罐 PCAP 回答七个取证问题。
部分 | 已完成内容 | 主要工具 |
|---|---|---|
任务一 | 识别 RaDa 的文件类型、运行平台和壳,完成脱壳与字符串提取,并找出样本中声明的作者。 | PowerShell、PEiD、VMUnpacker、IDA |
任务二 | 找出 Crackme1、Crackme2 输出成功信息所需的条件,说明判断过程并实际运行验证。 | IDA、Windows 命令行 |
任务三 | 围绕 RaDa 依次分析文件摘要、用途、特性、反分析手段、类别、相似工具、作者和至少五种检测方法。 | IDA、文件哈希及公开资料 |
任务四 | 分析 Windows 2000 蜜罐的 PCAP,重点回答 IRC、僵尸网络规模、攻击来源、漏洞类型和攻击结果。 | Kali、Wireshark、TShark、Python |
3. 实验过程
3.1 任务一:RaDa 文件识别、脱壳与字符串提取
(1)先确认样本和文件信息
我先把 RaDa 文件解压到 Windows 10 虚拟机中,之后将这一部分的工作目录统一放在 C:\lab4\samples\rada。最开始做 Crackme 时用过 C:\lab3,所以前几张界面的目录与后面的不同;后续分析都围绕同一组实验样本进行。
我在 PowerShell 中查看 RaDa.exe 的文件大小、MD5 和 SHA256,并保存输出。原文件为 20,992 字节,MD5 是 CAAA6985A43225A0B3ADD54F44A0D4C7。再用 PEiD 打开它,工具检测到 UPX 壳特征,入口点落在 JDR1 段。结合 Windows PE 文件结构,可以得出它是一个面向 Windows 的 32 位可执行程序。
cd C:\lab4\samples\rada
Get-Item .\RaDa.exe | Select-Object Name,Length,LastWriteTime
Get-FileHash .\RaDa.exe -Algorithm MD5 | Format-List
Get-FileHash .\RaDa.exe -Algorithm SHA256 | Format-List
图41 Kali 安装 tcpflow 时出现代理连接超时
解决五: 我发现 Wireshark 已经能够打开所需会话,于是没有继续折腾软件源,而是用 Follow TCP Stream → Save As 导出 irc_1539.txt,再通过 Python 统计不同昵称和主机标识。最终拿到了 Q4 的具体数量,并生成了可复查的 q4_hosts.txt 和 q4_statistics.txt。
5. 学习感悟、思考等
做完实验四,我印象最深的不是某一条命令,而是自己几次改变判断的过程。
最开始我以为 RaDa 被 PEiD 识别为 UPX,就能直接运行 UPX 解包。真正动手后,工具先报错,换用 VMUnpacker 又遇到 IDA 地址映射警告。我没有把“脱壳成功”四个字当作终点,而是继续核对文件大小、入口和字符串,并从 URL、注册表路径一步步跟到代码。以前看 IDA 中一大页汇编,我很容易迷失;现在至少知道可以先抓住有意义的字符串,再通过引用关系进入对应的处理位置。
Crackme2 也让我记得很清楚。口令已经对了,程序还是报身份错误,我起初只盯着输入内容,后来看出它还检查程序名。找到 crackmeplease.exe 这个条件并完成验证后,我才真正理解:一道逆向题的关键条件可能分散在不同位置,不能凭一条提示就急着下结论。
PCAP 取证的工作量更大。面对五万多个数据包,我一开始只是试着切换过滤器,结果越看越乱。后来先统计总体信息,再按 IRC、UDP1434、NBNS、HTTP、SMB 分开检查,思路才清晰起来。第 33 帧的 376 字节载荷、第 12 帧的 NBSTAT 响应、第 8 帧的 SMB 共享路径,都是我一步步展开协议字段才找到的。尤其是 Q4 的 4752 和 5573,我曾经以为选一个数字就能回答题目,真正做去重后才意识到,统计方法本身就决定了这个数字能说明什么。
我还学会了处理工具故障:挂载失效要检查共享目录,TShark 告警要先缩小范围,安装工具失败时也能考虑现成工具的其他功能。这些排障过程花费了不少时间,但正因为留下了错误界面和修复后的结果,后来整理报告时才有完整的操作经过。
参考资料
[1] Oikarinen J., Reed D. Internet Relay Chat Protocol. RFC 1459, 1993. https://www.rfc-editor.org/rfc/rfc1459.html
[2] CAIDA. Analysis of the Sapphire Worm. https://www.caida.org/archive/sapphire/
[3] Moore D., Paxson V., Savage S., et al. The Spread of the Sapphire/Slammer Worm. CAIDA, 2003. https://www.caida.org/catalog/papers/2003_sapphire/
[4] Microsoft. MS01-033: Unchecked Buffer in Index Server ISAPI Extension. https://learn.microsoft.com/en-us/security-updates/securitybulletins/2001/ms01-033
[5] MITRE ATT&CK. PoisonIvy (S0012). https://attack.mitre.org/software/S0012/
[6] MITRE ATT&CK. njRAT (S0385). https://attack.mitre.org/software/S0385/
[7] MITRE ATT&CK. DarkComet (S0334). https://attack.mitre.org/software/S0334/
[8] Wireshark. User's Guide: Following Protocol Streams. https://www.wireshark.org/docs/wsug_html_chunked/ChAdvFollowStreamSection.html