20252817 2025-2026-2 《网络攻防实践》实践八报告
20252817 2025-2026-2 《网络攻防实践》实践八报告
一、实践内容
本次实验主要完成四部分:
- 对
RaDa样本做文件识别、加壳判断、脱壳后字符串分析。 - 在 WinXPattacker 中分析
crackme1.exe和crackme2.exe,找出正确输入。 - 总结
RaDa样本的功能、类型和防分析方法。 - 在 Kali 中分析
botnet_pcap_file.dat,回答僵尸网络和攻击流量相关问题。
二、实践过程
1. 实验环境和文件准备
我使用本机的两个虚拟机完成本次实验:
| 虚拟机 | 用途 | 已确认 IP |
|---|---|---|
| Kali | 文件识别、哈希计算、字符串提取、PCAP 分析 | 192.168.200.64 |
| WinXPattacker | PEiD、超级巡警脱壳器、IDA Free、crackme 运行验证 | 192.168.200.66 |
实验文件已经复制到两个虚拟机桌面的 exp8 文件夹中。主要文件如下:

2. RaDa 文件识别与加壳判断
在 Kali 中进入实验目录:
cd ~/Desktop/exp8
先查看文件类型:
file crackme1.exe crackme2.exe rada/RaDa.exe rada/rada_dump_.exe botnet_pcap_file.dat
得到的结果说明:
| 文件 | 识别结果 |
|---|---|
RaDa.exe |
32 位 Windows PE GUI 程序 |
rada_dump_.exe |
32 位 Windows PE GUI 程序 |
crackme1.exe |
32 位 Windows PE 控制台程序 |
crackme2.exe |
32 位 Windows PE 控制台程序 |
botnet_pcap_file.dat |
pcap 抓包文件 |
继续计算哈希:
md5sum crackme1.exe crackme2.exe rada/RaDa.exe rada/rada_dump_.exe botnet_pcap_file.dat
结果如下:
| 文件 | MD5 |
|---|---|
RaDa.exe |
caaa6985a43225a0b3add54f44a0d4c7 |
rada_dump_.exe |
6822fd4734dcb2b5064f3e78304d0eeb |
crackme1.exe |
4357bf8c20fabb642fafc0b73fb0abfb |
crackme2.exe |
46aa577172d8f37ae2ae281515c99afb |
botnet_pcap_file.dat |
861985254440038791b88228c231306f |

再查看 RaDa.exe 的节区:
objdump -h rada/RaDa.exe

我看到它的节区名称是 JDR0、JDR1 和 .rsrc。正常 UPX 壳一般会出现 UPX0、UPX1 这样的节区名,但这个样本把名字改成了 JDR0、JDR1。结合讲义内容,可以判断它使用的是 UPX 壳,并且对 UPX 特征做了伪装。
在 WinXPattacker 中可以用图形工具验证:
- 打开
C:\FileDetector\PEiD\PEiD_cn.exe。 - 选择桌面
exp8\rada\RaDa.exe。

- 查看文件类型和壳信息。

- 打开
C:\Packer_Unpacker\超级巡警虚拟机脱壳器\超级巡警虚拟机脱壳器CN.exe。 - 选择
RaDa.exe做脱壳。

- 本次材料中已经给出了脱壳后的
rada_dump_.exe,后续字符串分析直接使用这个文件。
3. RaDa 字符串提取和作者确认
回到 Kali,对脱壳后的 rada_dump_.exe 提取字符串:
strings -a -el rada/rada_dump_.exe | grep -Ei "Raul|David|RaDa|upload|download|CurrentVersion|screenshot|sleep|10\.10\.10\.10|authors|Copyright|bin|tmp"

提取到的关键内容如下:
http://10.10.10.10/RaDa
RaDa_commands.html
download.cgi
upload.cgi
C:\RaDa\tmp
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
C:\RaDa\bin
RaDa.exe
screenshot
sleep
--authors
Copyright (C) 2004 Raul Siles & David Perez
Authors: Raul Siles & David Perez, 2004
从这些字符串可以看出:
| 字符串 | 我的理解 |
|---|---|
http://10.10.10.10/RaDa |
程序会访问远程控制地址 |
RaDa_commands.html |
可能用网页文件保存控制命令 |
upload.cgi、download.cgi |
支持上传和下载 |
C:\RaDa\bin、C:\RaDa\tmp |
程序会在本机创建目录 |
CurrentVersion\Run |
程序可能通过注册表实现开机自启动 |
screenshot、sleep |
支持截图和休眠命令 |
Raul Siles & David Perez |
样本作者信息 |
因此,RaDa 恶意代码的作者是:
Raul Siles 和 David Perez
4. Crackme1 分析
在 WinXPattacker 中打开命令提示符,进入桌面实验目录:
cd Desktop\exp8
先直接运行:
crackme1.exe

提示:
I think you are missing something.
随便输入一个错误参数:
crackme1.exe test

提示:
Pardon? What did you say?
在 Kali 中用字符串也能看到关键输入:
strings -a crackme1.exe | grep -E "missing|Pardon|secret|Reverse"
可以看到:

所以在 WinXP 中输入:
crackme1.exe "I know the secret"
成功输出:

结论:crackme1.exe 的正确输入是:
I know the secret
5. Crackme2 分析
同样先在 Kali 看字符串:
strings -a crackme2.exe | grep -E "missing|Pardon|secret|identity|crackmeplease"
可以看到:

这说明 crackme2.exe 不只检查输入内容,还检查程序自己的文件名。在 WinXP 里直接运行:
crackme2.exe "I know the secret"
显示:
I have an identity problem.

所以先把它复制一份,并改名为 crackmeplease.exe:
copy crackme2.exe crackmeplease.exe
然后运行:
crackmeplease.exe "I know the secret"
成功输出:
We have a little secret: Chocolate

结论:crackme2.exe 的通过条件有两个:
| 条件 | 内容 |
|---|---|
| 文件名 | crackmeplease.exe |
| 输入参数 | I know the secret |
6. RaDa 样本功能分析
根据文件识别、字符串和讲义内容,我对 RaDa 的理解如下。
6.1 样本摘要
| 项目 | 内容 |
|---|---|
| 样本名 | RaDa.exe |
| 文件大小 | 20,992 字节 |
| 文件类型 | 32 位 Windows PE GUI 程序 |
| MD5 | caaa6985a43225a0b3add54f44a0d4c7 |
| 加壳情况 | UPX 加壳,节区名被改成 JDR0、JDR1 |
| 脱壳后文件 | rada_dump_.exe |
| 作者 | Raul Siles 和 David Perez |
6.2 二进制文件目的
RaDa 的主要目的不是普通显示信息,也不是单纯破坏文件。它会访问远程地址,下载命令,并执行远程控制动作。字符串中出现了上传、下载、截图、休眠、自启动等内容,因此它更像一个后门程序。
6.3 主要特性
RaDa 具有以下特性:
| 特性 | 证据 |
|---|---|
| 远程控制 | RaDa_commands.html |
| 上传下载 | upload.cgi、download.cgi |
| 本地目录 | C:\RaDa\bin、C:\RaDa\tmp |
| 自启动 | HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ |
| 截图 | screenshot |
| 休眠等待 | sleep |
为了后面写结论时不只凭印象判断,我把这部分能作为 IOC 的内容单独整理了一下:
| 类型 | 值 | 依据 |
|---|---|---|
| 样本 MD5 | caaa6985a43225a0b3add54f44a0d4c7 |
原始 RaDa.exe 的哈希 |
| 脱壳后 MD5 | 6822fd4734dcb2b5064f3e78304d0eeb |
rada_dump_.exe 的哈希 |
| 远程地址 | http://10.10.10.10/RaDa |
脱壳后字符串 |
| 命令文件 | RaDa_commands.html |
脱壳后字符串 |
| 上传下载接口 | upload.cgi、download.cgi |
脱壳后字符串 |
| 本地目录 | C:\RaDa\bin、C:\RaDa\tmp |
脱壳后字符串 |
| 自启动位置 | CurrentVersion\Run |
注册表字符串 |
这些证据放在一起,才比较能支撑“后门/HTTP Bot”的判断。如果只看到一个 URL 或一个目录名,还不能直接下结论。
6.4 防分析方法
我认为它主要用了三类防分析方法:
- 使用 UPX 加壳,减少直接能看到的内容。
- 修改 UPX 的明显节区名,把
UPX0、UPX1改成类似JDR0、JDR1的名字。 - 结合讲义说明,它会检查 VMware 环境,并且用一些误导字符串干扰分析。
6.5 样本分类
我把 RaDa 归类为后门程序,也可以说是 HTTP Bot。
理由是:它不是自己复制传播的病毒,也不是自动扫描传播的蠕虫。它的重点是让攻击者通过 HTTP 下发命令,控制被感染主机。
6.6 相似工具
和它功能类似的工具包括:
| 工具 | 相似点 |
|---|---|
| Bobax | 通过网络控制主机 |
| Setiri | 使用 Web 通信方式隐藏控制行为 |
| GatSlag | 具备后门和远程控制功能 |
6.7 是否能调查作者
可以调查,但前提是样本里保留了作者信息,或者样本没有被完全清理痕迹。本次样本脱壳后直接出现了:
Copyright (C) 2004 Raul Siles & David Perez
Authors: Raul Siles & David Perez, 2004
所以本次可以确认作者是 Raul Siles 和 David Perez。
三、Botnet PCAP 分析
1. PCAP 基本情况
在 Kali 中查看抓包文件:
capinfos botnet_pcap_file.dat

得到的关键信息:
| 项目 | 结果 |
|---|---|
| 文件类型 | pcap |
| 总数据包数量 | 54,536 |
| TCP 数据包数量 | 54,350 |
| TCP 会话数量 | 1,294 |
| 开始时间 | 2003-03-01 04:08:09 |
| 结束时间 | 2003-03-06 03:27:57 |
2. IRC 是什么
IRC 是一种早期的在线聊天协议。客户端加入 IRC 网络时,会先发送身份相关消息,例如:
NICK
USER
进入某个频道时,会发送:
JOIN
IRC 常见端口是 6667,也经常使用 6660-6669。
3. 僵尸网络是什么
僵尸网络就是很多被控制的主机组成的网络。控制者可以通过服务器给这些主机下命令。常见用途包括:
- 发起拒绝服务攻击。
- 批量发送垃圾邮件。
- 作为代理隐藏真实来源。
- 下载或执行其他恶意程序。
4. 蜜罐主机通信过的 IRC 服务器
蜜罐主机是:
172.16.134.191
这一部分我是在 Kali 虚拟机里用 Wireshark 做的。操作过程如下:
打开 Kali 桌面 exp8 文件夹
右键 botnet_pcap_file.dat
选择用 Wireshark 打开
在过滤栏输入:ip.addr == 172.16.134.191 && tcp.port == 6667

过滤后可以看到蜜罐主机对多个外部主机发起或建立过 6667/TCP 连接。IRC 常使用 6667 端口,所以这里先以端口定位候选服务器,再根据 TCP 是否建立、服务器是否响应以及应用层内容判断通信是否真正成功。
我在 Wireshark 的数据包列表里查看 Source、Destination 和 Info 三列,确认蜜罐主机尝试通信的 IRC 服务器有:
209.126.161.29
209.196.44.172
217.199.175.10
63.241.174.144
66.33.65.58
这五个地址表示“尝试通信”,不代表都形成了有效 IRC 会话。重组 TCP 流后,只有下面这个服务器与蜜罐发生了持续、显著的 IRC 通信:
209.196.44.172:6667
因为它和蜜罐主机之间的数据量远大于其他地址,而且后面能看到 NICK、USER、JOIN、MODE、WHO、353 等完整 IRC 行为。63.241.174.144 等地址只出现短暂响应或失败信息,所以不能与主 C2 会话等量齐观。
5. 访问 209.196.44.172 僵尸网络的主机数量
这一题也是在 Kali 的 Wireshark 里做的。先在过滤栏输入:
ip.addr == 209.196.44.172 && tcp.port == 6667

然后在过滤结果中找 IRC 服务器返回的频道成员列表。具体看 Info 列里包含 353 的数据包。353 可以理解为 IRC 服务器告诉客户端“这个频道里有哪些用户”。

在这些 353 消息里可以看到大量昵称。我最初直接从 Wireshark 显示出的 353 行提取并去重,得到 3406。复核后发现这个数字偏小:IRC 响应跨越多个 TCP 段,若只按单包或未完整重组的显示文本提取,会漏掉被分段的昵称;另外还要清理昵称前的频道权限标记和回车字符。
这一题必须先明确“统计什么”。依据该数据集的原始 Honeynet Scan of the Month 27 评审报告,有三种合理但含义不同的口径:
| 口径 | 数量 | 含义与适用性 |
|---|---|---|
| JOIN/QUIT 中的主机名或 IP 合并去重 | 5580 | 整个观察期内访问过该 botnet 的不同主机;最符合题目“during the observation period” |
蜜罐加入频道时 IRC 353 NAMES 快照 |
3457 | 某一时刻频道中的不同昵称,适合估计当时在线规模 |
我初次按未完整重组的 353 显示文本去重 |
3406 | 存在 TCP 分段漏计,只保留为排错记录,不作为最终答案 |
因此本题最终答案写为:观察期内共有 5580 个不同主机访问该僵尸网络;若问题特指蜜罐加入频道当时的 NAMES 快照,则为 3457 个不同昵称。 抓包中的昵称并不天然等于物理主机,一台主机可能换昵称或建立多条连接,所以报告同时给出对象和局限。
可复现的分析思路是先用 tcpflow 重组 209.196.44.172:6667 -> 172.16.134.191 的完整服务端数据流,再分别对 JOIN|QUIT 后的主机标识和 353 行中的昵称清洗、排序、去重。这样比直接复制 Wireshark 单包内容更可靠。
6. 用于攻击蜜罐主机的 IP 地址
这一题继续使用 Kali 里的 Wireshark。我的做法是先只看发往蜜罐主机的数据包:
ip.dst == 172.16.134.191
然后再根据常见攻击痕迹继续过滤。Wireshark 过滤栏可以分别输入:
frame contains "PSEXESVC"
frame contains "RAdmin"
frame contains "NULL.IDA"
frame contains "cmd.exe"
frame contains "root.exe"
frame contains "upload.asp"
frame contains "lsass.exe"


这些关键词的意思比较直观:
| 关键词 | 说明 |
|---|---|
PSEXESVC |
常见远程执行服务名 |
RAdmin、r_server.exe |
远程控制工具相关痕迹 |
NULL.IDA |
IIS 相关攻击痕迹 |
cmd.exe、root.exe |
Web 攻击中常见的执行命令痕迹 |
upload.asp |
可能和上传 Web 后门有关 |
lsass.exe |
Windows 服务相关攻击痕迹 |
在 Wireshark 过滤结果中,我主要看 Source 是谁、Destination 是否为 172.16.134.191、目标端口是什么,以及 Info 或数据内容里出现了什么关键词。整理后,比较明显的攻击来源如下:
| 攻击 IP | 目标 | 现象 |
|---|---|---|
24.197.194.106 |
172.16.134.191:80 |
大量 Web 攻击请求,包含 cmd.exe、root.exe、upload.asp、lsass.exe |
210.22.204.101 |
172.16.134.191:80/445/4899 |
包含 NULL.IDA、cmd.exe、RAdmin、r_server.exe |
61.111.101.78 |
172.16.134.191:445 |
出现 PSEXESVC、ADMIN$,像是通过 SMB 远程执行 |
66.139.10.15 |
172.16.134.191:445 |
SMB 探测 |
209.45.125.69 |
172.16.134.191:445 |
SMB 探测 |
129.116.182.239 |
172.16.134.191:445 |
SMB 探测 |
80.181.116.202 |
172.16.134.191:445 |
SMB 探测 |
7. 攻击者尝试攻击的漏洞
从流量内容看,攻击者主要尝试了这些方向:
| 攻击方向 | 证据 |
|---|---|
| IIS Web 目录遍历或命令执行 | cmd.exe、root.exe、NULL.IDA |
| WebDAV 或 IIS 相关攻击 | Web 请求和相关字段 |
| SMB/RPC 远程管理或远程执行 | 445 端口、ADMIN$、PSEXESVC |
| RAdmin 远程控制 | RAdmin、r_server.exe、4899 端口 |
8. 哪些攻击成功了
从抓包证据看,最明显的成功迹象有两个。这里把“看到攻击请求”和“出现攻击后的远控/服务行为”分开判断:
| 攻击 IP | 证据 | 结论置信度 |
|---|---|---|
210.22.204.101 |
出现 RAdmin、r_server.exe,并有后续 4899/TCP 通信 |
高:已经出现远控组件和对应服务端口 |
61.111.101.78 |
多次出现 PSEXESVC、ADMIN$ 及 SMB 服务创建/执行痕迹 |
高:不只是探测,具有远程服务执行证据 |
24.197.194.106 |
大量 cmd.exe、root.exe、upload.asp 等 Web 请求 |
中/不足:能确认尝试,缺少稳定的后续控制证据 |
24.197.194.106 的 Web 攻击请求很多,能确认它进行了大量尝试,但仅凭我看到的关键词,不能把所有请求都直接判定为成功。
这里我把结论分成两类:210.22.204.101 和 61.111.101.78 属于证据比较明显的成功痕迹,因为不只是有探测请求,还出现了远控工具、服务名或共享目录相关内容;24.197.194.106 更适合写成“大量尝试”,因为它的 Web 请求很多,但我没有看到足够明确的后续控制证据。这样写比把所有攻击都写成成功更稳。
四、学习中遇到的问题及解决
1. WinXP 中文文件名显示乱码
材料复制到 WinXP 后,部分中文 PDF 文件名显示成乱码。这个不影响实验,因为主要使用的是 exe、dat 和 rar 文件。为了避免路径问题,我把实验目录统一命名为英文 exp8。
2. RaDa 不直接运行
RaDa.exe 是恶意代码样本。为了避免影响虚拟机环境,我没有直接双击运行它,而是用 file、md5sum、objdump、strings 做离线分析。脱壳后的 rada_dump_.exe 已经在材料中提供,可以直接用于字符串分析。
3. crackme2 不是只检查密码
一开始只看到了 I know the secret,但直接运行 crackme2.exe "I know the secret" 并不会成功,而是提示:
I have an identity problem.
后来发现它还检查文件名,必须把程序名改成 crackmeplease.exe,再输入同样的参数才会成功。
4. PCAP 统计不能只看一条流
PCAP 中数据很多,如果只看一两条包,很容易漏掉攻击过程。我先用 capinfos 看抓包文件的基本信息,再用 Wireshark 过滤 IRC、攻击关键词和目标 IP,这样能更快定位通信关系和攻击痕迹。
五、学习感想和体会
这次实验让我感觉恶意代码分析不一定一上来就要运行样本。很多关键信息其实可以先从文件类型、哈希、节区和字符串里看出来。比如 RaDa 的作者、自启动位置、远程地址和控制命令,都是从脱壳后的字符串里得到的。
crackme 部分让我明白,程序校验不一定只检查输入内容,也可能检查自己的文件名、路径或运行环境。crackme2 就是先要求文件名正确,再检查输入参数。
PCAP 分析部分让我认识到,流量分析要先抓住主线。这里的主线是蜜罐主机 172.16.134.191 连接 IRC 服务器,然后又出现 Web、SMB、RAdmin 等攻击痕迹。把时间、IP、端口和关键词放在一起看,整个攻击过程就比较清楚了。
六、参考资料
- 课程材料:
rada分析实践讲解.pdf - 课程材料:
实践解答-解开两个简单的crackme.pdf

浙公网安备 33010602011771号