20252901 2025-2026-2 《网络攻防实践》实践八报告
20252901 程宇 2025-2026-2 《网络攻防实践》实践八报告
一、实践内容概述
本次实践围绕恶意代码分析与僵尸网络流量分析两大核心主题展开,共包含四个实践任务:
1. 动手实践任务一:RaDa恶意代码样本基础分析
对提供的RaDa恶意代码样本进行文件类型识别、脱壳与字符串提取,以获得RaDa恶意代码的编写作者信息。
2. 动手实践任务二:Crackme程序逆向分析
在WinXP Attacker虚拟机中使用IDA Pro对crackme1.exe和crackme2.exe进行静态或动态分析,寻找特定的输入使其能够输出成功信息。
3. 分析实践任务一:RaDa恶意代码样本深度分析
对RaDa恶意代码样本进行深入分析,撰写报告回答其文件摘要、目的、特性、反逆向技术、分类、相似工具及作者溯源等问题。
4. 分析实践任务二:僵尸网络流量分析
分析蜜罐主机5天的网络数据源,回答IRC协议基础、僵尸网络概念、通信服务器识别、接入主机统计、攻击IP识别、漏洞利用分析及成功攻击判定等问题。
二、实践步骤与过程
任务一:RaDa恶意代码样本基础分析
本任务核心目标是完成RaDa恶意代码的文件识别、脱壳与作者信息提取。
步骤1:文件格式与类型识别
将实验样本RaDa.exe(文件可在学习通下载,压缩密码为rada)传入WinXP Attacker虚拟机(设置共享文档时,请在虚拟机→设置→选项→共享文件夹处进行操作,务必勾选"在Windows客户机中映射为网络驱动器")。

打开命令提示符,切换至样本所在目录(cd 桌面),执行以下命令识别文件类型:
file RaDa.exe

执行结果: RaDa.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
可知该样本为32位Windows GUI界面的PE可执行文件,运行于英特尔80386架构的32位Windows系统。
执行以下命令提取样本可打印字符串:
strings RaDa.exe

结果显示大量乱码字符,仅能识别KERNEL32.DLL等基础系统库文件,无有效可读信息,初步判断样本存在加壳保护。
步骤2:加壳类型识别与脱壳处理
使用PEiD工具(开始→所有程序→PE→PEID)加载RaDa.exe样本,检测加壳类型。


检测结果: 样本采用UPX 0.89.6 - 1.02 / 1.05 - 2.90版本加壳,加壳程序作者为Markus & Laszlo。
打开超级巡警虚拟机脱壳器(开始→所有程序→脱壳和加壳工具),加载RaDa.exe样本,工具识别到UPX壳并提示支持脱壳,点击"给我脱!"按钮完成脱壳操作,生成脱壳后的文件RaDa_unpacked.exe。

执行以下命令验证脱壳效果:
strings RaDa_unpacked.exe

可提取到大量可读的函数名、字符串信息,脱壳操作成功。
步骤3:字符串提取与作者信息获取
IDA Pro逆向验证
使用IDA Pro Free(开始→所有程序→反汇编)加载脱壳后的RaDa_unpacked.exe(New→PE Executable→找到RaDa_unpacked.exe),打开Strings窗口,右键点击Setup并勾选Unicode编码,刷新字符串列表后,在地址JDR0:00402D04处找到完整作者信息。


最终结论: RaDa恶意代码的编写作者为Raul Siles与David Perez,编写时间为2004年9月,该样本为Honeynet组织Scan of The Month 32 (SotM)挑战赛的相关样本。
任务二:Crackme程序逆向分析
本任务通过IDA Pro对两个Crackme程序进行静态逆向分析,定位程序的正确输入参数。
2.1 crackme1.exe分析
步骤1:基础试探
在命令行中运行crackme1.exe,进行参数试探:
- 无参数时输出:
I think you are missing something. - 输入1个参数时输出:
Pardon? What did you say? - 输入2个及以上参数时输出参数缺失提示
![image]()
初步判断程序仅接受1个参数,且需要匹配特定口令。
步骤2:静态逆向分析
使用IDA Pro打开crackme1.exe,查看Strings窗口,除试探到的两个输出字符串外,还发现以下关键字符串:
I know the secret- 判断为正确口令You know how to speak to programs, Mr. Reverse-Engineer- 判断为口令正确时的输出

步骤3:汇编逻辑验证
点击页面上方的View→Graphs→Function calls查看函数调用图,核心逻辑位于sub_401280函数中。


点击页面上方的View→Graphs→Flow Chart查看代码流程图。

该函数的核心逻辑如下:
- 判断参数个数argc是否为2(即1个输入参数)
- 若不匹配则输出参数缺失提示
- 若匹配则调用strcmp函数,将输入参数与
I know the secret进行比对 - 比对失败则输出口令错误提示,比对成功则输出正确信息
步骤4:结果验证
在命令行执行以下命令:
crackme1.exe "I know the secret"

程序输出:You know how to speak to programs, Mr. Reverse-Engineer,验证成功。
2.2 crackme2.exe分析
步骤1:基础试探
运行crackme2.exe,进行参数试探:
- 无参数时输出:
I think you are missing something. - 输入1个参数时输出:
I have an identity problem. - 输入2个及以上参数时输出参数缺失提示

判断程序除口令匹配外,还存在文件名校验逻辑。
步骤2:静态逆向分析
使用IDA Pro打开crackme2.exe,查看Strings窗口,发现关键字符串crackmeplease.exe。

结合汇编逻辑分析,程序的核心校验流程如下:


-
参数个数校验:如果参数个数不是一个,则跳转到false分支,调用fprintf输出
I think you are missing something. -
文件名校验:如果参数个数为一个,则跳转到true分支,调用strcmp判断调用的文件名是否为
crackmeplease.exe,如果不是则输出I have an identity problem. -
口令匹配校验:如果调用的文件名是
crackmeplease.exe,则调用strcmp判断输入是否为I know the secret,如果不是则输出Pardon? What did you say? -
成功输出:如果输入是
I know the secret,则输出正确语句


步骤3:结果验证
执行以下命令:
copy crackme2.exe crackmeplease.exe
crackmeplease.exe "I know the secret"

程序输出:We have a little secret: Chocolate,验证成功。
任务三:RaDa恶意代码样本深度分析
3.1 二进制文件摘要与识别信息
文件MD5哈希值
执行以下命令获取样本文件的MD5摘要值:
md5sum RaDa.exe

MD5摘要值: caaa6985a43225a0b3add54f44a0d4c7
该值为样本的唯一哈希标识,可用于同一样本的识别与匹配。
动态行为分析
双击运行脱壳后的RaDa_unpacked.exe文件,打开监视工具Process Explorer监听RaDa_unpacked.exe,选中该进程,右键点击Properties→Strings查看监听到的字符串信息。



根据图中信息可知:
- 该程序先访问了
http://10.10.10.10/RaDa,请求了RaDa_commands.html页面,进行下载和上传操作 - 检查是否在VMware虚拟机环境下,发现不是后开始进行DDoS Smurf攻击
- 修改注册表,通过Wscript.Shell进行操作,将RaDa.exe设为开机自动启动
- 攻击了192.168、172.16、10三个内网网段
- 该程序的所有者为Raul Siles & David Perez,于2004年9月编写
基础识别信息汇总:
| 属性 | 值 |
|---|---|
| 文件类型 | 32位Windows GUI PE可执行文件 |
| 加壳类型 | UPX 0.89.6 - 1.02 / 1.05 - 2.90 |
| 原始入口点 | 0000FD20 |
| 文件偏移 | 00004120 |
| 运行平台 | Windows 2000/XP等32位Windows操作系统 |
| MD5值 | caaa6985a43225a0b3add54f44a0d4c7 |
3.2 二进制文件的核心目的
RaDa恶意代码是一款远程控制后门/僵尸网络客户端程序,核心目的如下:
-
C&C通信:与C&C服务器
http://10.10.10.10/RaDa建立网络连接,请求RaDa_commands.html指令文件,接收并执行攻击者下发的远程指令
![image]()
-
持久化驻留:在受感染主机中创建
C:\RaDa\bin和C:\RaDa\tmp目录,将自身复制到系统目录,通过修改注册表实现开机自启动
![image]()
-
远程指令执行:执行远程指令,包括文件上传/下载、屏幕截图、系统休眠、远程命令执行等操作
![image]()
-
DDoS攻击:对内网192.168.0.0/16、172.16.0.0/12、10.0.0.0/8三个私有网段进行扫描,并发起DDoS Smurf拒绝服务攻击
![image]()
3.3 二进制文件的核心特性
| 特性 | 描述 |
|---|---|
| 文件下载 | 将文件下载到C盘指定目录(C:\RaDa\bin和C:\RaDa\tmp) |
| DoS攻击 | 实施DDoS Smurf攻击,针对三个内网网段 |
| 持久化 | 将RaDa.exe设为开机自动启动 |
| 反虚拟机 | 检测VMware虚拟机环境,避免在虚拟机中运行 |
| 远程控制 | 通过HTTP协议与C&C服务器通信,接收远程指令 |
3.4 反逆向工程技术分析
样本主要采用UPX压缩壳作为核心反逆向技术:
-
静态分析阻碍:UPX壳通过对原始PE文件的代码段、数据段进行压缩加密,使直接字符串提取、反汇编操作只能得到乱码数据
-
动态分析难度:加壳后的程序在运行时先执行壳代码,对原始程序进行内存解密还原,再跳转到原始入口点执行,增加了动态调试、内存转储的难度
-
脱壳可行性:该样本使用的UPX壳为通用版本,可通过超级巡警、UPX官方工具完成自动脱壳,未采用定制化壳或反调试、反脱壳增强技术
3.5 恶意代码分类与判定理由
该样本应被分类为远程控制后门(Backdoor)/僵尸程序(Bot),具体判定理由如下:
不属于病毒:
- 病毒的核心特征是自我复制、感染其他文件/系统
- 该样本无自主感染、自我复制传播的模块
不属于蠕虫:
- 蠕虫的核心特征是利用系统漏洞主动传播,无需人为干预
- 该样本无主动传播、漏洞利用传播的功能
不属于木马:
- 木马的核心特征是伪装成合法程序诱骗用户执行
- 该样本未进行伪装,核心能力是远程控制与指令执行
符合后门/僵尸程序特征:
- 具备完整的C&C通信、远程指令执行、持久化驻留能力
- 攻击者可通过C&C服务器一对多控制大量受感染主机
- 完全符合僵尸网络客户端(Bot)的核心特征
3.6 同类功能的恶意工具
与该样本功能相似的常见恶意工具包括:
| 工具名称 | 相似功能 |
|---|---|
| Bobax木马 | 具备HTTP协议C&C通信、远程控制、DDoS攻击能力 |
| Setiri特洛伊木马 | 支持注册表持久化、远程文件操作、系统信息窃取 |
| GatSla僵尸程序 | 基于HTTP协议的僵尸网络客户端,支持内网扫描、DDoS攻击、远程指令执行 |
3.7 作者溯源分析
可明确溯源到样本作者为Raul Siles与David Perez,该样本为2004年9月Honeynet组织Scan of The Month 32挑战赛的相关样本。
作者信息获取方法:
- 命令行方法:执行
RaDa --authors或RaDa.exe --authors - 反编译方法:反编译脱壳后的文件RaDa_unpacked.exe
- 动态监听方法:使用Process Explorer进行监听
任务四:僵尸网络流量分析
本任务基于botnet_pcap_file.dat流量包(蜜罐主机172.16.134.191的5天网络流量),完成IRC协议基础、僵尸网络概念、通信服务器识别、接入主机统计、攻击IP识别、漏洞利用分析及成功攻击判定等问题的分析。
4.1 流量文件准备
在学习通下载botnet_pcap_file.dat文件,传入Kali虚拟机中。
右键点击botnet_pcap_file.dat文件,选择使用Wireshark打开进行分析。
4.2 IRC协议基础问题解答
IRC是什么?
IRC(Internet Relay Chat,互联网中继聊天)是一种基于TCP/IP协议的实时文本通信协议,支持用户在频道(Channel)中进行群组聊天,也支持用户间一对一私密消息,是早期互联网最主流的即时通信协议之一。
IRC客户端加入网络时发送的消息
客户端申请加入IRC网络时,需按顺序发送以下核心消息:
PASS <password> // 可选,向服务器传递连接密码
NICK <nickname> // 必选,设置客户端在IRC网络中的唯一昵称
USER <username> <hostname> <servername> <realname> // 必选,完成用户信息注册
JOIN <#频道名> // 可选,加入指定IRC频道,接收攻击指令
IRC常用TCP端口
- 6667端口:IRC协议标准明文通信端口,是最常用的默认端口
- 6697端口:IRC协议基于TLS/SSL的加密通信端口
- 其他端口:6660-6669、7000-7001端口段也常被IRC服务使用
4.3 僵尸网络基础概念
僵尸网络是什么?
僵尸网络(Botnet)是由攻击者(Botmaster)通过恶意软件感染大量主机,形成的一对多命令与控制(C&C)网络。被感染的主机称为"僵尸主机(Bot)",在用户无感知的情况下受控于攻击者,攻击者可通过C&C信道向所有僵尸主机批量下发指令,执行大规模恶意行为。
僵尸网络的常见用途:
| 用途 | 描述 |
|---|---|
| 分布式拒绝服务攻击(DDoS) | 控制大量僵尸主机向目标服务器/网站发起流量攻击,耗尽目标带宽与系统资源 |
| 垃圾邮件发送 | 利用僵尸主机批量发送垃圾邮件、诈骗邮件、恶意软件传播邮件 |
| 加密货币挖矿 | 占用僵尸主机的CPU/GPU资源进行加密货币挖矿 |
| 数据窃取与间谍活动 | 窃取僵尸主机中的敏感信息,包括账号密码、银行卡信息、商业机密等 |
| 恶意软件传播 | 作为恶意软件的分发平台,批量传播勒索软件、木马、挖矿程序 |
| 欺诈与滥用 | 在线投票欺诈、广告点击欺诈、账号暴力破解、验证码绕过等 |
4.4 蜜罐主机通信的IRC服务器识别
蜜罐主机IP为172.16.134.191,IRC协议默认使用6667端口。
通过Wireshark过滤规则筛选蜜罐主机主动发起的IRC通信流量:
ip.src == 172.16.134.191 && tcp.dstport == 6667

最终识别到5个IRC服务器IP地址:
| 序号 | IRC服务器IP地址 |
|---|---|
| 1 | 209.126.161.29 |
| 2 | 66.33.65.58 |
| 3 | 63.241.174.144 |
| 4 | 217.199.175.10 |
| 5 | 209.196.44.172 |
4.5 僵尸网络接入主机数量统计
本问题需统计访问209.196.44.172为服务器的僵尸网络的不同主机数量。
步骤1:工具安装
在Kali Linux中执行以下命令安装tcpflow流量分流工具:
sudo apt-get install tcpflow

步骤2:流量分流
执行以下命令提取该IRC服务器与蜜罐主机的全量通信流量:
cd /home/kali/Desktop
tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"

生成两个核心流量文件:
172.016.134.191.01152-209.196.044.172.06667209.196.044.172.06667-172.016.134.191.01152
步骤3:主机数统计
执行以下命令从IRC流量中提取频道内的用户昵称,去重后统计数量:
cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l

最终结果: 命令执行输出结果为3461,即在观察期间,共有3461台不同的主机接入了以209.196.44.172为服务器的僵尸网络IRC频道。
4.6 攻击蜜罐主机的IP地址识别
统计原理: 所有向蜜罐主机172.16.134.191发起流量的源IP,均为潜在攻击IP。
执行以下命令提取流量中的源IP并去重统计:
tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq > IP.txt
wc -l IP.txt

统计结果: 命令执行输出结果为165,即共有165个IP地址向蜜罐主机发起了网络访问与攻击行为。

具体IP地址列表可查看生成的IP.txt文件,包括12.252.61.161、12.253.142.87、129.116.182.239、195.36.247.77等165个地址。
4.7 攻击者尝试利用的安全漏洞分析
首先通过tcpdump筛选蜜罐主机响应的端口,确定攻击者的攻击目标端口,再通过Wireshark深度分析每个端口的攻击行为与漏洞利用尝试。
攻击目标端口识别
执行TCP端口筛选命令:
tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq

输出结果: 135、139、25、445、4899、80,共6个TCP端口。
执行UDP端口筛选命令:
tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq

输出结果: 137,共1个UDP端口。
各端口的漏洞利用尝试分析
| 端口 | 协议 | 服务 | 攻击者尝试利用的漏洞与攻击行为 |
|---|---|---|---|
| 80 | TCP | HTTP/IIS 5.0 | 1. 针对Windows IIS 5.0的红色代码(Code Red)蠕虫漏洞,通过GET /default.ida发起攻击 2. 针对IIS ISAPI扩展的缓冲区溢出漏洞,通过GET /NULL.IDA?CCCCCCCC...大量填充字符,尝试栈溢出攻击 3. 尝试Web目录扫描、HTTP头部注入等基础Web攻击 |
| 445 | TCP | SMB/CIFS | 1. 针对Windows SMB服务的远程代码执行漏洞,通过SMB协议进行NTLM身份认证,获取ADMIN$管理员共享权限 2. 尝试上传并执行PSEXESVC.EXE蠕虫程序,利用PsExec工具的远程执行机制 3. 针对Windows SMB服务的DCERPC接口漏洞,尝试远程服务管理与权限提升 |
在Wireshark中输入tcp.port == 445进行筛选。

在筛选后的数据包中发现了可执行文件PSEXESVC.EXE(NO.33280),查阅资料可知这是一种蠕虫病毒的特征码。
| 端口 | 协议 | 服务 | 攻击者尝试利用的漏洞与攻击行为 |
|---|---|---|---|
| 135 | TCP | RPC | 针对Windows RPC服务的DCOM远程缓冲区溢出漏洞(MS03-026、MS04-012),攻击者尝试通过TCP 135端口发起RPC接口漏洞探测与溢出攻击 |
在Wireshark中输入tcp.port == 135进行筛选。

在筛选后的数据包中只有一些TCP三次握手过程的数据包,没有数据的交互。
| 端口 | 协议 | 服务 | 攻击者尝试利用的漏洞与攻击行为 |
|---|---|---|---|
| 139 | TCP | NetBIOS/SMB | 针对Windows NetBIOS会话服务的SMB空会话攻击、共享枚举攻击,攻击者尝试建立NetBIOS会话,枚举目标主机的SMB共享资源 |
在Wireshark中输入tcp.port == 139进行筛选。

在筛选后的数据包中有许多TCP、SMB和NBSS类型的数据包,但没有关于攻击或漏洞的信息。
| 端口 | 协议 | 服务 | 攻击者尝试利用的漏洞与攻击行为 |
|---|---|---|---|
| 137 | UDP | NetBIOS名称服务 | 针对NetBIOS名称服务的主机信息枚举、NBNS欺骗攻击,攻击者通过NBNS名称查询请求,获取蜜罐主机的主机名、MAC地址、工作组等系统信息 |
在Wireshark中输入udp.port == 137进行筛选。

| 端口 | 协议 | 服务 | 攻击者尝试利用的漏洞与攻击行为 |
|---|---|---|---|
| 25 | TCP | SMTP | 针对邮件服务的SMTP中继漏洞、用户枚举攻击,攻击者尝试连接SMTP服务,探测开放中继、弱口令、命令注入等漏洞 |
在Wireshark中输入tcp.port == 25进行筛选。

在筛选后的数据包中只有一些TCP三次握手过程的数据包,没有数据的交互。
| 端口 | 协议 | 服务 | 攻击者尝试利用的漏洞与攻击行为 |
|---|---|---|---|
| 4899 | TCP | Radmin远程管理 | 针对Radmin远程管理软件的弱口令暴力破解、认证绕过漏洞,攻击者尝试建立Radmin连接,探测目标主机是否开启该远程管理服务 |
在Wireshark中输入tcp.port == 4899进行筛选。

4.8 成功攻击行为判定与原理分析
成功攻击判定结果: 在所有攻击尝试中,仅针对TCP 445端口的SMB服务攻击成功,攻击者通过PSEXESVC蠕虫实现了对蜜罐主机的远程控制,其他端口的攻击均未成功。
其他端口攻击失败的原因:
-
135、139、25、4899端口:攻击者仅完成了TCP三次握手,后续无有效漏洞利用载荷,或在会话建立后被目标主机直接RST重置连接,未完成权限获取与代码执行
-
80端口:攻击者发起的缓冲区溢出攻击、红色代码蠕虫攻击,仅发送了攻击载荷,目标主机无对应的漏洞利用响应
在筛选后的数据包中发现有一数据包中含有CCCCCCCC...填充数据,这是攻击者在尝试缓冲区溢出攻击,但没有后续。


- UDP 137端口:仅完成了NetBIOS主机信息枚举,无后续权限获取行为,不属于成功的入侵攻击
445端口攻击成功的原理与过程:
在Wireshark中筛选tcp.port == 445 && ip.addr==172.16.134.191,发现攻击者拿到权限。


攻击过程详解:
-
SMB会话建立:攻击者与蜜罐主机445端口建立TCP连接,通过SMB协议完成协商、NTLM身份认证,成功获取了蜜罐主机的本地管理员Administrator权限
-
管理员共享访问:攻击者通过SMB协议成功连接蜜罐主机的ADMIN$系统共享(对应Windows系统目录),获得了文件读写权限
-
恶意程序上传:攻击者通过SMB的NT Create AndX请求,在目标主机System32目录下创建PSEXESVC.EXE文件,并通过Write AndX请求将蠕虫程序完整写入目标主机
-
远程服务执行:攻击者通过DCERPC/SVCCTL协议,在目标主机上远程创建并启动PSEXESVC服务,该服务运行后,攻击者获得了蜜罐主机的交互式远程控制权限
-
持久化控制:PSEXESVC服务运行后,攻击者可通过该服务执行任意系统命令、上传后续恶意工具、将蜜罐主机加入僵尸网络,完成完整的攻击链
三、学习中遇到的问题及解决方法
问题:无法准确判定哪个端口的攻击成功
原因: 流量包中包含多个端口的攻击尝试,需要逐个分析才能判定攻击是否成功。
解决方法: 通过Wireshark逐端口筛选流量,重点查找是否存在漏洞利用成功的特征(如文件上传、会话建立、命令执行等),最终确认仅445端口的SMB攻击成功。
四、实践总结
本次实验围绕恶意代码分析与僵尸网络流量分析两大核心主题,完成了从恶意代码静态/动态分析、程序逆向工程,到网络流量深度解析、攻击行为识别的全流程实践。
在恶意代码分析环节,我掌握了PE文件识别、加壳检测、脱壳处理、字符串提取等静态分析基础技能,也学会了使用IDA Pro对二进制程序进行逆向分析,通过反汇编代码还原程序的核心逻辑。对RaDa恶意代码的深度分析,让我理解了恶意代码的持久化、C&C通信、反虚拟机等核心特性,也认识到了恶意代码从代码编写到入侵执行的完整设计逻辑。
在僵尸网络流量分析环节,我掌握了tcpdump、tcpflow、Wireshark三大流量分析工具的使用,学会了从海量流量中筛选关键通信、识别IRC僵尸网络C&C信道、统计攻击源IP、还原漏洞利用攻击链。通过对蜜罐主机流量的逐端口分析,我深入理解了Windows平台常见的高危端口与对应漏洞,也掌握了从流量层面还原攻击行为、判定攻击是否成功的核心方法。
本次实验也让我认识到,恶意代码分析与网络取证是网络攻防实践中的重要技能,需要综合运用多种工具和技术手段,从静态分析到动态监控,从代码层面到网络层面,形成完整的分析能力。后续我会继续深入学习恶意代码分析、逆向工程、网络取证等相关知识,通过更多的实践操作,提升自己的网络攻防与安全分析能力。





浙公网安备 33010602011771号