20252913 2025-2026-2 《网络攻防实践》实践八报告
20252913 2025-2026-2 《网络攻防实践》实践八报告
1.实践内容
动手实践任务一:Rada恶意代码样本分析
- 文件类型识别:使用工具检测样本的文件格式、运行平台及加壳工具。
- 脱壳处理:利用超级巡警脱壳机等工具对加壳样本进行脱壳,还原原始代码。
- 字符串提取与分析:通过字符串提取工具分析脱壳后样本,查找可疑字符串,推断编写作者。
动手实践任务二:Crackme程序分析
- 环境准备:在WinXP Attacker虚拟机中操作。
- 分析目标:使用IDA Pro对crackme1.exe和crackme2.exe进行静态/动态分析。
- 目标达成:通过逆向工程寻找正确输入,使程序输出成功信息。
分析实践任务一:Rada恶意代码深度分析
- 样本摘要:计算摘要,记录文件大小、编译时间等基本信息。
- 行为目的:分析其恶意功能。
- 特性识别:列举网络通信、持久化、文件操作等行为特征。
- 反分析技术:识别加壳、混淆、反调试等手段。
- 分类与理由:判断是否为病毒、蠕虫、木马等,依据传播方式和寄生性。
- 相似工具:对比已知恶意代码。
- 作者调查:结合字符串、硬编码信息、编译环境等推测作者。
分析实践任务二:僵尸网络与蜜罐流量分析
- IRC协议基础:解释IRC定义、客户端加入时发送的
NICK/USER命令,常用端口。 - 僵尸网络概念:定义及常见用途。
- 通信追踪:从蜜罐日志提取与之通信的IRC服务器地址。
- 僵尸主机统计:统计访问服务器209.196.44.172的不同主机数量。
- 攻击来源:列出攻击蜜罐主机的IP地址。
- 漏洞利用:分析攻击尝试针对的安全漏洞。
- 成功攻击:判断哪些攻击成功,描述成功方式。
2.实践过程
一、动手实践任务一:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者
在学习通下载并解压得到RaDa.exe后拖动传入winxp虚拟机桌面,在命令行中通过命令识别文件类型:
cd 桌面
file RaDa.exe

可以确认该文件是一个适用于 Windows 操作系统、采用 GUI 界面且面向 32 位 Intel 架构的可执行程序,执行命令strings RaDa.exe提取并打印可读字符串:

提取出的文本大多是无意义的随机字符组合(如 q161-B、Ie6Sg、Lulnk3等),缺乏可读的英文单词或完整句子。同时出现了 KERNEL32.DLL、GetProcAddress、ExitProcess等系统 API 名称。这种“乱码为主,API名为辅”的特征是典型的加壳保护迹象。
使用PEiD加载RaDa.exe检测加壳类型:


结果显示该样本使用了UPX加壳工具进行压缩保护,下一步使用超级巡警脱壳机针对 UPX 进行脱壳:

脱壳后执行命令strings RaDa_unpacked.exe查看效果:

脱壳后可提取到大量的可读的函数名等信息,脱壳成功。
然后使用IDA Pro Free加载脱壳后的文件RaDa_unpacked.exe,打开String window,在JDR0:00402D04地址可以看到作者信息:

编写作者是Raul Siles与David Perez。
二、动手实践任务二:分析Crackme程序
首先在命令行中运行crackme1.exe,进行参数试探:

无参数时输出:I think you are missing something.
输入1个参数时输出:Pardon? What did you say?
输入2个及以上参数时输出:I think you are missing something.
初步判断该程序接受单个参数输入。
使用IDA Pro打开crackme1.exe,打开Strings窗口:

可以看到除了已经得到的提示外还有:
I know the secret和You know how to speak to programs, Mr. Reverse-Engineer。
然后我们打开View->Graphs->Function calls查看函数调用图:

可以看到strcmp、print、fprint都在sub_401280函数下,依次点击View→Graphs→Flow Chart查看代码流程图:

代码逻辑为:
参数个数错误运行时输出:I think you are missing something.
参数个数正确但内容错误时输出:Pardon? What did you say?
参数正确时:("I know the secret")输出:You know how to speak to programs, Mr. Reverse-Engineer
使用正确参数测试:
crackme1.exe "I know the secret"

验证成功。
以同样的方法测试crackme2.exe文件:

用IDA Pro打开crackme2.exe文件:

查看函数调用图:

可以看出关键方法在sub_401280函数下。
查看代码流程图:

参数数量不等于 1:输出I think you are missing something.
参数数量等于 1、调用文件名错误:输出I have an identity problem.
参数数量等于 1、调用文件名正确但内容错误:输出Pardon? What did you say?
参数完全正确:输出正确内容
通过命令进行验证:
copy crackme2.exe crackmeplease.exe
crackmeplease.exe "I know the secret"

验证成功,输出:We have a little secret: Chocolate
三、分析实践任务一:分析一个自制恶意代码样本rada
执行命令md5sum RaDa.exe获取样本文件的MD5摘要:

获得摘要值为:caaa6985a43225a0b3add54f44a0d4c7
打开Process Explorer,启动已经脱壳的RaDa_unpacked.exe文件,在Process Explorer中打开Strings窗口进行监听:

该文件进行了如下行为:
- 持久化机制:通过修改注册表实现开机自启动:
-
写入注册表项 HKLM\Software\Microsoft\Windows\CurrentVersion\Run\RaDa,值为 C:\RaDa\bin\RaDa.exe(字符串:HKLM\Software\Microsoft\Windows\CurrentVersion\Run\、RaDa、REG_SZ、C:\RaDa\bin\RaDa.exe)。
-
支持安装/卸载参数(--installdir、--noinstall、--uninstall),可指定安装目录或移除自身。
![image-20260511151031609]()
- 网络通信与远程控制
- HTTP通信:连接预设的HTTP服务器(如
http://10.10.10.10/RaDa),通过CGI接口下载或上传文件。 - 文件传输:使用 multipart/form-data格式上传文件,依赖 ADODB.Stream和 ADODB.Recordset处理数据流。
- 恶意攻击功能
-
DDoS攻击:Smurf攻击(利用广播地址发起拒绝服务)。
![image-20260511151154359]()
- 系统操作与信息收集
-
文件系统操作:通过 Scripting.FileSystemObject管理文件。
-
注册表操作:支持读写删除注册表项(RegWrite、RegRead、RegDelete)。
-
系统信息查询:通过WMI(winmgmts:\root\cimv2)执行查询(如 SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True),获取MAC地址(MACAddress)等硬件信息。
![image-20260511151321042]()
![image-20260511151418209]()
5.屏幕截图:存在 screenshot字符串,可能具备截取屏幕并上传的能力。

6.背景属性
属于 Scan of the Month 32 (SotM 32) 挑战样本(2004年9月发布),由 Raul Siles & David Perez 编写(字符串:Copyright (C) 2004 Raul Siles & David Perez、Authors: Raul Siles & David Perez, 2004),主要用于安全教学,无实际破坏性。

回答问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
MD5值:caaa6985a43225a0b3add54f44a0d4c7
基本属性:这是一个32位的Windows PE格式可执行文件(EXE),基于Intel 80386架构,适用于Windows 2000/XP等32位操作系统
保护壳信息:使用了 UPX 压缩壳
2、找出并解释这个二进制文件的目的;
该二进制文件的核心目的是作为一个远程控制后门。攻击者利用它实现对受感染主机的长期隐蔽控制。
3、识别并说明这个二进制文件所具有的不同特性;
持久化机制、网络通信、远程命令执行、系统信息收集、命令行交互(如上截图)
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
UPX 加壳技术:该样本使用了广泛分布的UPX壳。壳代码在程序执行时会先在内存中对原始程序进行解压和解密,这使得静态分析工具(如早期的IDA)无法直接看到程序的逻辑结构和明文字符串,从而阻碍了初步的逆向分析。
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
分类:远程控制后门(Backdoor) 或 僵尸程序(Bot)
理由:不属于病毒:因为它不具备自我复制并感染其他可执行文件或系统的能力 。
不属于蠕虫:因为它没有利用系统漏洞进行主动的网络传播模块,需要攻击者主动投递和执行 。
符合后门特征:它提供了攻击者秘密访问和控制受感染系统的通道,主要功能依赖于与C&C服务器的通信和远程指令执行,完全符合后门程序的定义
6、给出过去已有的具有相似功能的其他工具;
历史上具有类似C&C通信机制、持久化驻留和远程控制功能的恶意工具包括:
- Bobax 木马:同样是基于HTTP协议进行C&C通信的蠕虫/木马,具备DDoS攻击能力 。
- Setiri 特洛伊木马:支持通过注册表实现持久化,具备远程文件操作和系统信息窃取功能 。
- GatSla 僵尸程序:基于HTTP协议的僵尸网络客户端,支持内网扫描、DDoS攻击和远程指令执行 。
- 传统远控软件(如灰鸽子):在功能和架构上与RaDa高度相似,但在合法授权下的商业用途与恶意软件的非法植入有所区别 。
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以。在成功脱壳(Unpacking)该二进制文件的环境下,使用字符串提取工具(如IDA Pro的Strings窗口)扫描。在脱壳后的文件中明确提取到 Copyright (C) 2004 Raul Siles & David Perez这一字符串,可直接锁定作者身份 。此外,该样本实际上是 Honeynet组织于2004年9月发布的“Scan of the Month 32 (SoM 32)”挑战赛 的官方样本,因此其作者信息是公开且确定的 。
四、分析实践任务二:Windows 2000系统被攻破并加入僵尸网络
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC(Internet Relay Chat,互联网中继聊天)是一种基于文本的即时通信协议,允许用户通过客户端连接到 IRC 服务器,加入公共频道(Channel)进行群聊,或与其他用户进行私聊。它是早期互联网中最流行的实时通信方式之一,至今仍被部分技术社区和安全研究人员使用。
当 IRC 客户端申请加入 IRC 网络时,通常需要依次发送两条核心消息:
- NICK <昵称>:设置客户端在 IRC 网络中的唯一昵称(如 NICK RaDaBot)。
- USER <用户名> <主机名> <服务器名> :<真实姓名>:提供用户身份信息(如 USER user 0 * :RaDa Malware)。 这两条消息是 IRC 协议规定的“注册流程”,服务器验证通过后,客户端才能加入频道或接收消息。
IRC 协议默认使用以下 TCP 端口:
- 6667:标准未加密端口(最常用)。
- 6697:SSL/TLS 加密端口(现代 IRC 服务器常用,提升安全性)。
- 其他可选端口:6660-6669、7000 等(部分服务器会自定义端口)。
2、僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络(Botnet)是由攻击者通过恶意软件(如病毒、蠕虫、木马)控制的大量受感染计算机(称为“僵尸主机”或“肉鸡”) 组成的网络。攻击者通过命令与控制(C&C)服务器远程操控这些主机,无需物理接触即可协同执行恶意任务。
僵尸网络的用途广泛,核心是利用“群体力量”放大攻击效果或牟利,常见场景包括:
- DDoS 攻击:控制大量僵尸主机向目标服务器发送海量请求,耗尽资源使其瘫痪(如用户之前分析的 RaDa 样本支持“DDoS Smurf 攻击”)。
- 垃圾邮件/钓鱼:利用僵尸主机批量发送广告、诈骗邮件,规避单一 IP 被封禁的风险。
- 信息窃取:窃取僵尸主机的敏感数据(如账号密码、银行卡信息、企业机密)。
- 加密货币挖矿:占用僵尸主机的算力挖掘虚拟货币(如比特币、门罗币)。
- 跳板攻击:以僵尸主机为中转节点,隐藏攻击者真实 IP,发起更复杂的渗透攻击(如内网横向移动)。
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
首先在学习通下载botnet_pcap_file.dat文件,复制到kali虚拟机上,通过Wireshark打开,使用过滤规则筛选蜜罐主机主动发起的IRC通信流量:
ip.src == 172.16.134.191 && tcp.dstport == 6667

共有5个IRC服务器:209.196.44.172、66.33.65.58、209.126.161.29、63.241.174.144、217.199.175.10
4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
首先在命令行输入命令安装tcpflow工具:
sudo apt-get install tcpflow

然后通过命令分析数据包文件,提取主机和端口的流量数据,并生成report.xml文件:
cd /home/kali/Desktop
tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"

通过命令统计连接到IRC服务器(209.196.44.172)的唯一主机数量:
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为服务器的僵尸网络。
5、那些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 >20252913gh.txt
wc -l 20252913gh.txt


可以看出共有165个IP地址被用于攻击蜜罐主机。其IP如生成txt文件所示。
6、攻击者尝试攻击了那些安全漏洞?
通过指令识别攻击目标端口(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六个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一个UDP端口。
在Wireshark中依次筛选端口流量:
tcp.port == 445

尝试的漏洞/行为:SMB 协议漏洞利用(如 MS04-011 RPC 漏洞)及 PSEXESVC 蠕虫植入。可以看到大量的 DCERPC协议通信,包含 Bind_And_Accept以及对 \samr、\srvsvc等接口的调用。这通常是攻击者试图利用 Windows 系统底层 RPC 服务漏洞(如 LSASS 溢出等)来获取系统最高权限 。
结果:攻击成功。攻击者通过 SMB 会话成功上传了 PSEXESVC.EXE,是一种常见的利用 SMB 弱口令或漏洞传播的蠕虫/远控程序,从而控制了这台蜜罐主机 。
tcp.port == 135

尝试的漏洞/行为:DCERPC 接口绑定与调用尝试。图中显示了大量的 DCERPC Req: UUID和 Endpoint Mapper交互。攻击者正在尝试向目标的 135 端口请求各种系统服务接口 。
结果:大概率失败或无果。虽然建立了 TCP 三次握手,但后续的 RPC 调用要么被目标拒绝,要么没有产生实质性的权限提升或代码执行响应 。
tcp.port == 139

尝试的漏洞/行为:局域网共享访问尝试(Tree Connect)。图中出现了 Tree Connect请求。攻击者试图通过 139 端口连接到目标的隐藏共享资源 。
结果:失败。目标主机返回了 RST(重置)包,拒绝了连接请求,说明目标要么关闭了文件和打印共享,要么存在强密码防护 。
udp.port == 137

尝试的漏洞/行为:NetBIOS 主机名与 IP 枚举扫描。图中全是 NBSTAT协议的数据包,包含大量的 Name query和 Name response。这是典型的 NBTSTAT 扫描,用于在局域网内探活并获取目标主机的 NetBIOS 名称、MAC 地址和工作组信息 。
结果:仅信息收集。这只是攻击前的踩点(Reconnaissance)阶段,不涉及直接破坏或代码执行 。
tcp.port == 25

尝试的漏洞/行为:基础端口连通性探测。
结果:无有效攻击。攻击者可能只是在确认目标是否开放了邮件服务,随后便放弃了,没有发送具体的 SMTP 攻击载荷 。
tcp.port == 4899

尝试的漏洞/行为:已知远程控制端口的探测与连接。建立了 TCP 连接,但没有明显的应用层数据交互。
结果:试探性连接。4899 是 Radmin 软件的默认端口。攻击者可能在试探目标是否安装了该软件,以便后续利用。也可能是在 445 端口失手后,尝试通过这种常见的远控端口寻找后门机会 。
ip.addr == 172.16.134.191 && tcp.port ==80

尝试的漏洞/行为:缓冲区溢出攻击,可以看到大量的 PSH, ACK包,且下方的十六进制和 ASCII 码显示载荷中包含了大量重复的字符(如 CCCCCCCC或 AAAAAAAA)。这是典型的缓冲区溢出攻击测试,试图覆盖函数的返回地址以执行恶意代码 。
结果:目标主机接收了这些恶意请求,没有崩溃,但没有后续 。
7、那些攻击成功了?是如何成功的?
如6中的分析,针对TCP 445端口的SMB服务攻击成功。攻击者通过 SMB 会话成功上传了 PSEXESVC.EXE,这是一种常见的利用 SMB 弱口令或漏洞传播的蠕虫/远控程序,从而控制了这台蜜罐主机 。


观察图中的数据包,会发现许多源端口为 4444 的连接。这说明攻击者可能通过某种方式在目标机上运行了后门程序,从而建立了一个反向连接通道,使得目标主机主动向攻击者的 4444 端口发起通信。结合 445 端口的 PSEXESVC.EXE传输成功以及 4444 端口的活跃通信,可以断定攻击者已经突破了系统的外部防线,成功在目标主机上部署了远程控制木马,并正在对其进行实际操控。
3.学习中遇到的问题及解决
- 问题1:在蜜罐流量分析实验中,面对庞大的 pcap 文件,Wireshark 界面卡顿严重,且难以通过手动点击统计 IRC 频道内的主机数量。
- 问题1解决方案:放弃 GUI 界面操作,改用 Tshark 命令行工具进行处理。利用管道符组合 grep、sed、sort等命令,编写了一行 Shell 脚本直接从 pcap 中提取 353 响应报文并统计独立 IP 数,既提高了效率,也避免了图形界面的卡顿。
4.实践总结
本次实验我通过对RaDa恶意样本进行文件类型识别与UPX脱壳等操作,熟悉了IDA Pro,超级脱壳器等工具的使用,对恶意代码的分析进行了更加深入的了解。使用Wireshark对蜜罐5天流量进行分析,还原了攻击者利用SMB漏洞上传PSEXESVC.exe及IRC僵尸网络的控制过程,熟悉了从静态逆向到动态流量溯源的完整攻防分析技能。





浙公网安备 33010602011771号