20251914 2025-2026-2 《网络攻防实践》实践八报告
20251914 2025-2026-2 《网络攻防实践》实践八报告
1.实践内容
动手实践任务一:rada恶意代码样本识别、脱壳与字符串提取
本次实践主要针对提供的 rada 恶意代码样本进行初步静态分析。首先使用文件类型识别工具对样本进行检测,了解其文件格式、运行平台以及是否使用了加壳工具。通过识别结果可以判断该样本属于 Windows 平台下的可执行文件,并且存在加壳特征,因此不能直接依靠原始样本中的字符串信息进行完整分析。
随后使用超级巡警脱壳机等脱壳工具对样本进行脱壳处理,并对脱壳后的文件进行字符串提取。通过对可见字符串的分析,可以发现程序中隐藏的一些关键信息,例如路径、命令、网络地址以及作者相关字段。这个过程让我认识到,恶意代码往往会通过加壳方式隐藏真实内容,只有完成脱壳后,字符串分析才更有价值,也更容易发现样本的编写作者等线索。
动手实践任务二:Crackme程序分析
本次实践在 WinXP Attacker 虚拟机中使用 IDA Pro 对 crackme1.exe 和 crackme2.exe 进行静态或动态分析,目标是找到能够让程序输出成功信息的特定输入。分析过程中,主要通过查看程序入口、关键判断语句、字符串引用以及条件跳转逻辑,定位程序验证输入的位置。
通过对比错误提示和成功提示附近的汇编代码,可以逐步推断出程序对输入内容的判断规则。这个实验让我初步理解了逆向分析中“从字符串入手”和“跟踪条件跳转”的基本思路,也认识到 Crackme 程序虽然功能简单,但非常适合用来练习 IDA Pro 的使用、汇编阅读和程序逻辑还原。
分析实践任务一:rada恶意代码样本分析
本次分析实践围绕自制恶意代码样本 rada 展开,重点是从文件摘要、功能目的、行为特征、反分析技术和样本分类等方面进行综合分析。通过对样本的基本信息进行整理,可以记录其文件名、文件类型、哈希值、运行平台、加壳情况等内容,这些信息有助于后续识别同一样本或进行样本比对。
通过脱壳、字符串分析以及行为推测,可以判断 rada 样本的主要目的可能是实现远程控制、信息收集或与控制端通信等恶意行为。样本中可能包含网络连接、命令执行、自启动或隐藏自身等特征,同时也可能使用加壳、字符串隐藏等方式增加分析难度。从功能上看,该样本更接近后门或远程控制类恶意程序。通过本次实验,我学习到恶意代码分析不能只看单一工具结果,而应结合文件信息、字符串、行为特征和网络通信等多方面证据进行判断。
关于开发作者的调查,可以通过脱壳后的字符串、调试信息、版本信息、特殊路径、用户名、编译环境痕迹等线索进行分析。如果样本中残留了作者标识或开发环境信息,就有可能推测出作者相关信息;但这种判断通常需要限定在样本未被完全清理、字符串未被充分混淆、分析环境可靠的条件下,不能简单地把某个字符串直接当作最终结论。
分析实践任务二:Windows 2000系统被攻破并加入僵尸网络
本次实践主要分析蜜罐主机在一段时间内捕获的网络日志,目的是还原 Windows 2000 系统被攻击并加入僵尸网络的过程。首先要理解 IRC 和僵尸网络的基本概念。IRC 是一种早期的实时聊天协议,客户端加入 IRC 网络时通常会发送连接、昵称和用户身份相关消息,如 NICK 和 USER。IRC 常用 TCP 端口包括 6667,也可能使用 6660—6669 等端口。僵尸网络则是由大量被控制主机组成的网络,攻击者可以通过控制服务器向这些主机下发命令,常用于 DDoS 攻击、垃圾邮件发送、恶意代码传播、信息窃取等活动。
2.实践过程
2.1 分析rada恶意代码样本
2.1.1 先对文件类型进行识别
使用file rada.exe对文件进行识别,可知其是windows平台拥有图形化界面的一个文件

2.1.2 打印该文件的所有可打印字符串,观察发现是乱码,可以看出是加壳了

2.1.3 打开虚拟机中自带的软件peid,发现加的壳是UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo

2.1.4 使用超级巡警脱壳机进行脱壳,脱壳后的文件在同一路径下

2.1.4 使用RaDa.exe --authors命令查询作者,发现作者是Raul Siles & David Perez

2.2 分析Crackme程序
2.2.1 分析crackme1.exe
2.2.1.1 使用ipa pro打开crackme1.exe

2.2.1.2 使用图上框选的方式来查询函数调用

2.2.1.3 对函数调用进行分析
可以发现,程序的核心校验逻辑在 sub_401280,通过 strcmp 完成输入与内置正确值的对比

2.2.1.4 光标选中要查看的函数sub_401280内部,然后点击框选的按钮

2.2.1.5 查看函数流程图并分析,
得出结论:程序的第一步是检查参数个数。它要求总参数个数必须为 2,
满足数量条件后,程序进入第二步的内容比对。它会提取用户输入的这个参数,并使用 strcmp 函数将其与程序内部硬编码的密码字符串 "I know the secret" 进行比对。
只有当用户输入的字符串与预设密码完全一致时,程序才会跳转到最终的成功分支,并输出祝贺信息。
因此,最终的破解方法是在命令行中运行该程序,并将 "I know the secret" 作为唯一的参数传入。

2.2.1.6 输入刚刚分析得到的参数:程序名和"I know the secret",获得输出:You know how to speak to programs, Mr. Reverse-Engineer

2.2.2 分析crackme2.exe
2.2.2.1 分析函数调用图
通过观察调用关系,可以推断出 sub_401280 大概率就是程序的 main 函数。
因为程序入口 start 调用了初始化代码 sub_401110,而 sub_401110 调用了一系列 C 运行库的初始化函数。
在这堆初始化函数中,sub_401280 是唯一一个包含核心业务逻辑的自定义函数。

2.2.2.2 分析sub_401280函数流程图
对这个函数分析发现,它有三个判断条件
- 条件1:要求参数个数必须等于 2。
- 条件2:程序名必须等于crackmeplease.exe
- 条件3:另一个参数必须等于"I know the secret"
![image]()
2.2.2.3 重命名程序为crackmeplease.exe

2.2.2.4 按要求输入参数crackmeplease.exe "I know the secret",得到结果We have a little secret: Chocolate

2.3 分析一个恶意代码样本rada
2.3.1 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
为了准确识别并关联到同一个样本,我们需要核心标识信息(哈希值)和基本文件属性
2.3.1.1 摘要值

2.3.1.2 基本文件属性

2.3.2找出并解释这个二进制文件的目的
使用Process Explorer对脱壳后的文件进行监听,打开文件并运行
| 关键字符串 (Strings) | 推断 |
|---|---|
http://10.10.10.10/RaDa |
硬编码的服务器地址,木马连接此地址接收黑客指令。 |
...\CurrentVersion\Run\ |
写入系统“开机自启”注册表,确保每次开机都在后台潜伏运行。 |
Starting DDoS Smurf... |
将受害者电脑变成“肉鸡”,用于对外发动网络瘫痪攻击(DDoS)。 |
...\VMware Tools\... |
检测电脑是否装有虚拟机。 |
可以看出RaDa.exe 是一个具有后门控制、文件上传下载、能够实现开机持久化、具备反虚拟机侦查能力,并且能够被远程操控发动 DDoS 攻击的木马程序。

2.3.3 识别并说明这个二进制文件所具有的不同特性
简单梳理下这个样本的初步逆向结果。
基本可以敲定,这是一个兼具后门远控功能的僵尸网络(Botnet)恶意样本。它的执行逻辑比较传统:先在本地C盘建个专属工作目录,然后把启动项写进系统注册表 Run 键里持久化。之后,它会去连硬编码的 C&C 服务器(通过请求那几个 cgi 脚本)来抓取指令和传文件。
从防护和攻击面上看,有两点值得注意:一是这它带了初步的对抗机制,会去查系统有没有装 VMware Tools,明显是为了规避沙箱和动态分析;二是它的核心 Payload 包含了一个 DDoS 模块,主打 Smurf 攻击。说白了,机器只要中了招,基本就沦为肉鸡了。
整体看下来,脱壳后的主逻辑没加什么特别复杂的混淆,是个标准的“远控+DDoS”复合木马。
2.3.4 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
它使用了加壳技术,脱壳后的主逻辑没加什么特别复杂的混淆
2.3.5 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
这个样本属于僵尸程序或远控木马,因为它主要依赖连接C&C服务器接收指令,以此来发动DDoS攻击或窃取数据。
2.3.6 给出过去已有的具有相似功能的其他工具
ai总结如下:
-
BlackEnergy (早期版本):相似度极高。它在2007年左右刚出现时,本质上就是个纯粹的基于 HTTP 的 DDoS 僵尸网络客户端。跟 RaDa 一样,它通过周期性拉取 Web 页面来获取 C&C 指令,支持文件下载执行,主打利用肉鸡资源打瘫目标(后期才演变成高级 APT 武器)。
-
Gh0st RAT (幽灵远控):源码泄露后满天飞的经典 Windows 后门。虽然原生设计更偏向纯远控,但市面上的魔改版基本都缝合了各类 DDoS 模块(包括 Smurf、SYN Flood 等)。在文件读写管理、注册表 Run 键驻留等核心行为特征上,跟 RaDa 属于同一个模子。
-
Poison Ivy (毒藤):老牌高控 RAT。主打轻量化和隐蔽,在获取本地文件系统的绝对控制权(文件下载/上传/执行)以及经典的开机自启手法上,与该样本如出一辙。
-
Dirt Jumper / Drive:早年黑产圈非常流行的纯正 DDoS 僵尸程序。Bot 端同样通过 HTTP 协议定时向主控端的面板请求攻击配置,获取到目标后直接开始无脑发包攻击。
2.3.7 可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
string里直接显示了,作者是 Raul Siles & David Perez

2.4 分析botnet_pcap文件
2.4.1 IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC是一个非常经典的、基于文本的实时应用层通信协议。跟现在微信、QQ 这种由单体大厂控制的中心化软件不同,IRC 是去中心化的。只要搞个客户端,你就能连上网络里的任意一个 IRC 节点,敲命令加入那些以 # 开头的频道去群聊,或者跟别人私聊。
客户端连入 IRC 网络最核心的必发报文有两个:
-
NICK 命令:先告诉服务器你想用的昵称。
-
USER 命令:紧跟其后向服务器登记更详细的底层身份信息,包括你的用户名、主机名和真实姓名。
-
PASS 命令:如果这个 IRC 节点设置了门禁密码,在这俩命令之前还得先发个 PASS 命令把密码递过去。
把这套组合拳发完,服务器那边校验过关,给你回传一个带有 001 Welcome... 状态码的欢迎消息,你就算正式接入这个网络了。之后才是用 JOIN 命令去加具体的聊天频道。
IRC一般使用以下TCP端口:
- 明文默认端口:6667
- 加密端口 (SSL/TLS):6697
2.4.2 僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络,核心是被恶意程序攻陷、受攻击者统一控制的大量设备(肉鸡)集群。攻击者通过 C&C 服务器下发指令,驱使这些设备协同发起 DDoS 攻击、发送垃圾邮件、窃取信息或挖矿等恶意行为,实现规模化、隐蔽化的攻击,是黑产与网络攻击的重要基础设施。
僵尸网络主要被攻击者用来规模化、隐蔽地开展恶意活动:最典型的是发起 DDoS 攻击,通过海量肉鸡的流量压垮目标服务;也常被用于发送垃圾邮件、分发钓鱼链接,或是窃取设备上的敏感信息、进行挖矿牟利。部分僵尸网络还会被用来作为跳板,对其他目标发起渗透、构建多层代理,以此掩盖真实攻击来源。
2.4.3 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
点击顶部菜单栏 Statistics → Conversations,在弹出的窗口里,切换到 IPv4 标签页,勾选 Limit to display filter(仅显示过滤后的结果)
如图所示,有5个服务器与其通信

2.4.4 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
- 安装tcpflow:sudo apt install tcpflow -y
![image]()
- 使用tcpflow -r /home/kali/Desktop/botnet_pcap_file.dat "host 209.196.44.172 and port 6667"生成文件
![image]()
- 使用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台主机访问过
![image]()
2.4.5 哪些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 | more > 20241905.txt;wc -l 20241905.txt将所有ip保存到文件里,可以看出有165个ip
![image]()
- 查看所有ip
![image]()
2.4.6 攻击者尝试攻击了那些安全漏洞?
- 使用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 筛选有响应的tcp端口,端口为
135
139
25
445
4899
80
![image]()
- 使用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
![image]()
2.4.7 那些攻击成功了?是如何成功的?
1. 135端口
使用ip.addr == 172.16.134.191 && tcp.port == 135进行筛选,可以看出这只是一次tcp连接

2. 139端口
使用ip.addr == 172.16.134.191 && tcp.port ==135,在其中没有看出攻击痕迹

3. 25端口
使用ip.addr == 172.16.134.191 && tcp.port ==25进行筛选,未发现攻击行为

4.445端口
使用ip.addr == 172.16.134.191 && tcp.port ==445 进行筛选,发现了PSEXESVC.EXE程序,这是一种蠕虫病毒

5. 4899端口
使用命令ip.addr == 172.16.134.191 && tcp.port == 4899,可以看出只是进行了连接

6.80端口
使用ip.addr == 172.16.134.191 && tcp.port == 80筛选80端口,发现红色代码蠕虫病毒的特征:GET /default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN...

7.137端口
使用ip.addr == 172.16.134.191 && udp.port == 137筛选,从图中可以看出,这是NetBIOS(NBT-NS)扫描流量

3.学习中遇到的问题及解决
-
问题1:运行脱壳后的rada.exe失败,显示
![image]()
-
问题1解决方案:查看发现是因为脱壳前的程序正在运行,结束脱壳前的程序进程
-
问题2:tcpflow命令未找到
-
问题1解决方案:使用sudo apt install tcpflow -y命令安装tcpflow
4.实践总结
通过这次实验,我知道了很多古老的病毒,我感觉这些病毒都非常的有意思,对它们很感兴趣










浙公网安备 33010602011771号