20252817 2025-2026-2 《网络攻防实践》实践八报告

20252817 2025-2026-2 《网络攻防实践》实践八报告

一、实践内容

本次实验主要完成四部分:

  1. RaDa 样本做文件识别、加壳判断、脱壳后字符串分析。
  2. 在 WinXPattacker 中分析 crackme1.execrackme2.exe,找出正确输入。
  3. 总结 RaDa 样本的功能、类型和防分析方法。
  4. 在 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

RaDa 节区

我看到它的节区名称是 JDR0JDR1.rsrc。正常 UPX 壳一般会出现 UPX0UPX1 这样的节区名,但这个样本把名字改成了 JDR0JDR1。结合讲义内容,可以判断它使用的是 UPX 壳,并且对 UPX 特征做了伪装。

在 WinXPattacker 中可以用图形工具验证:

  1. 打开 C:\FileDetector\PEiD\PEiD_cn.exe
  2. 选择桌面 exp8\rada\RaDa.exe

PEiD 选择样本

  1. 查看文件类型和壳信息。

PEiD 识别结果

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

超级巡警脱壳

  1. 本次材料中已经给出了脱壳后的 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"

RaDa 字符串

提取到的关键内容如下:

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.cgidownload.cgi 支持上传和下载
C:\RaDa\binC:\RaDa\tmp 程序会在本机创建目录
CurrentVersion\Run 程序可能通过注册表实现开机自启动
screenshotsleep 支持截图和休眠命令
Raul Siles & David Perez 样本作者信息

因此,RaDa 恶意代码的作者是:

Raul Siles 和 David Perez

4. Crackme1 分析

在 WinXPattacker 中打开命令提示符,进入桌面实验目录:

cd Desktop\exp8

先直接运行:

crackme1.exe

crackme1 无参数

提示:

I think you are missing something.

随便输入一个错误参数:

crackme1.exe test

crackme1 错误参数

提示:

Pardon? What did you say?

在 Kali 中用字符串也能看到关键输入:

strings -a crackme1.exe | grep -E "missing|Pardon|secret|Reverse"

可以看到:

crackme1 字符串

所以在 WinXP 中输入:

crackme1.exe "I know the secret"

成功输出:

crackme1 成功

结论:crackme1.exe 的正确输入是:

I know the secret

5. Crackme2 分析

同样先在 Kali 看字符串:

strings -a crackme2.exe | grep -E "missing|Pardon|secret|identity|crackmeplease"

可以看到:

crackme2 字符串

这说明 crackme2.exe 不只检查输入内容,还检查程序自己的文件名。在 WinXP 里直接运行:

crackme2.exe "I know the secret"

显示:

I have an identity problem.

crackme2 文件名错误

所以先把它复制一份,并改名为 crackmeplease.exe

copy crackme2.exe crackmeplease.exe

然后运行:

crackmeplease.exe "I know the secret"

成功输出:

We have a little secret: Chocolate

crackme2 成功

结论:crackme2.exe 的通过条件有两个:

条件 内容
文件名 crackmeplease.exe
输入参数 I know the secret

6. RaDa 样本功能分析

根据文件识别、字符串和讲义内容,我对 RaDa 的理解如下。

6.1 样本摘要

项目 内容
样本名 RaDa.exe
文件大小 20,992 字节
文件类型 32 位 Windows PE GUI 程序
MD5 caaa6985a43225a0b3add54f44a0d4c7
加壳情况 UPX 加壳,节区名被改成 JDR0JDR1
脱壳后文件 rada_dump_.exe
作者 Raul Siles 和 David Perez

6.2 二进制文件目的

RaDa 的主要目的不是普通显示信息,也不是单纯破坏文件。它会访问远程地址,下载命令,并执行远程控制动作。字符串中出现了上传、下载、截图、休眠、自启动等内容,因此它更像一个后门程序。

6.3 主要特性

RaDa 具有以下特性:

特性 证据
远程控制 RaDa_commands.html
上传下载 upload.cgidownload.cgi
本地目录 C:\RaDa\binC:\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.cgidownload.cgi 脱壳后字符串
本地目录 C:\RaDa\binC:\RaDa\tmp 脱壳后字符串
自启动位置 CurrentVersion\Run 注册表字符串

这些证据放在一起,才比较能支撑“后门/HTTP Bot”的判断。如果只看到一个 URL 或一个目录名,还不能直接下结论。

6.4 防分析方法

我认为它主要用了三类防分析方法:

  1. 使用 UPX 加壳,减少直接能看到的内容。
  2. 修改 UPX 的明显节区名,把 UPX0UPX1 改成类似 JDR0JDR1 的名字。
  3. 结合讲义说明,它会检查 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 基本信息

得到的关键信息:

项目 结果
文件类型 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. 僵尸网络是什么

僵尸网络就是很多被控制的主机组成的网络。控制者可以通过服务器给这些主机下命令。常见用途包括:

  1. 发起拒绝服务攻击。
  2. 批量发送垃圾邮件。
  3. 作为代理隐藏真实来源。
  4. 下载或执行其他恶意程序。

4. 蜜罐主机通信过的 IRC 服务器

蜜罐主机是:

172.16.134.191

这一部分我是在 Kali 虚拟机里用 Wireshark 做的。操作过程如下:

打开 Kali 桌面 exp8 文件夹
右键 botnet_pcap_file.dat
选择用 Wireshark 打开
在过滤栏输入:ip.addr == 172.16.134.191 && tcp.port == 6667

IRC 服务器过滤

过滤后可以看到蜜罐主机对多个外部主机发起或建立过 6667/TCP 连接。IRC 常使用 6667 端口,所以这里先以端口定位候选服务器,再根据 TCP 是否建立、服务器是否响应以及应用层内容判断通信是否真正成功。

我在 Wireshark 的数据包列表里查看 SourceDestinationInfo 三列,确认蜜罐主机尝试通信的 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

因为它和蜜罐主机之间的数据量远大于其他地址,而且后面能看到 NICKUSERJOINMODEWHO353 等完整 IRC 行为。63.241.174.144 等地址只出现短暂响应或失败信息,所以不能与主 C2 会话等量齐观。

5. 访问 209.196.44.172 僵尸网络的主机数量

这一题也是在 Kali 的 Wireshark 里做的。先在过滤栏输入:

ip.addr == 209.196.44.172 && tcp.port == 6667

209.196.44.172 过滤

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

IRC 353 成员列表

在这些 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"

攻击关键词过滤 1

攻击关键词过滤 2

这些关键词的意思比较直观:

关键词 说明
PSEXESVC 常见远程执行服务名
RAdminr_server.exe 远程控制工具相关痕迹
NULL.IDA IIS 相关攻击痕迹
cmd.exeroot.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.exeroot.exeupload.asplsass.exe
210.22.204.101 172.16.134.191:80/445/4899 包含 NULL.IDAcmd.exeRAdminr_server.exe
61.111.101.78 172.16.134.191:445 出现 PSEXESVCADMIN$,像是通过 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.exeroot.exeNULL.IDA
WebDAV 或 IIS 相关攻击 Web 请求和相关字段
SMB/RPC 远程管理或远程执行 445 端口、ADMIN$PSEXESVC
RAdmin 远程控制 RAdminr_server.exe4899 端口

8. 哪些攻击成功了

从抓包证据看,最明显的成功迹象有两个。这里把“看到攻击请求”和“出现攻击后的远控/服务行为”分开判断:

攻击 IP 证据 结论置信度
210.22.204.101 出现 RAdminr_server.exe,并有后续 4899/TCP 通信 高:已经出现远控组件和对应服务端口
61.111.101.78 多次出现 PSEXESVCADMIN$ 及 SMB 服务创建/执行痕迹 高:不只是探测,具有远程服务执行证据
24.197.194.106 大量 cmd.exeroot.exeupload.asp 等 Web 请求 中/不足:能确认尝试,缺少稳定的后续控制证据

24.197.194.106 的 Web 攻击请求很多,能确认它进行了大量尝试,但仅凭我看到的关键词,不能把所有请求都直接判定为成功。

这里我把结论分成两类:210.22.204.10161.111.101.78 属于证据比较明显的成功痕迹,因为不只是有探测请求,还出现了远控工具、服务名或共享目录相关内容;24.197.194.106 更适合写成“大量尝试”,因为它的 Web 请求很多,但我没有看到足够明确的后续控制证据。这样写比把所有攻击都写成成功更稳。

四、学习中遇到的问题及解决

1. WinXP 中文文件名显示乱码

材料复制到 WinXP 后,部分中文 PDF 文件名显示成乱码。这个不影响实验,因为主要使用的是 exedatrar 文件。为了避免路径问题,我把实验目录统一命名为英文 exp8

2. RaDa 不直接运行

RaDa.exe 是恶意代码样本。为了避免影响虚拟机环境,我没有直接双击运行它,而是用 filemd5sumobjdumpstrings 做离线分析。脱壳后的 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
posted @ 2026-05-20 18:12  ch_c  阅读(30)  评论(0)    收藏  举报