20232422 龙浩然 2025-2026-1 《网络与系统攻防技术》实验四实验报告
1. 实验内容
- 1.1 识别恶意代码的文件类型标识,完成脱壳与字符串提取。
- 1.2 用 IDA Pro 静态分析 crackme1.exe 与 crackme2.exe,找到特定输入使其输出成功信息。
- 1.3 分析恶意代码样本 RaDa.exe,回答指定问题并撰写报告。
- 1.4 开展取证分析实践,包括 IRC 协议、僵尸网络、攻击行为等相关分析。
2. 实验目的
掌握恶意代码分析的核心技能,比如文件识别、加壳检测、脱壳、静态逆向这些关键操作。熟练用 PEiD、IDA Pro、Wireshark 这些工具,理解僵尸网络和 IRC 协议的基本原理,能独立完成恶意代码的功能拆解和取证分析,为后续网络攻防学习打基础。
3. 实验环境
- 3.1 硬件:物理主机;VMware 虚拟机。
- 3.2 软件:Kali Linux 2025.3。
- 3.3 工具:
- Windows 端:PEiD、IDA Pro 7.0+、Wireshark。
- Kali 端:tcpflow、tcpdump、exiftool。
- 3.4 实验文件:RaDa.exe、crackme1.exe、crackme2.exe、botnet_pcap_file.dat(均从学习通下载)。
4. 实验过程及分析
4.1 恶意代码文件类型标识、脱壳与字符串提取
4.1.1 分析原始 RaDa 样本
在 Kali 终端进入文件目录,用 file RaDa.exe 命令查看,发现它是 32 位 Windows GUI 可执行文件,Intel x86 架构,带图形界面。

之后在 Windows 端打开 PEiD,导入该文件,检测出是 UPX 加壳,版本区间 0.89.6-2.90,开发者是 Markus & Laszlo。UPX 加壳就是压缩原始代码,让逆向分析更难,这是恶意代码常见的伪装手段。

4.1.2 脱壳与 IDA 分析
用 “超级巡警” 脱壳成功生成脱壳文件。把脱壳后的文件导入 PEiD,显示 “Microsoft Visual C++ 6.0” 编译,没有加壳标识,说明脱壳成功。

打开 IDA Pro,选择 PE 格式导入脱壳后的文件,默认配置完成反汇编。在 IDA View-A 视图里,地址 00403F7A 处看到作者是 Raul Siles && David Perez,00403FD4 处显示创作时间是 2004 年 9 月,这些都是样本的关键溯源信息。

4.2 IDA Pro 静态分析 crackme1.exe 与 crackme2.exe
4.2.1 静态分析 crackme1.exe
先在 PowerShell 测试:无参数运行提示 “I think you are missing something.”,输 1 个参数提示 “Pardon? What did you say?”,猜它需要特定参数组合。

用 IDA Pro 打开后,通过 “View→Graphs→Function calls” 看函数调用图,重点关注调用 strcmp(字符串比较)和 printf(输出)的 sub_401280 函数,这应该是参数校验的核心。看伪代码,分析出:参数总数为 2(含程序名),且第二个参数是 “I know the secret” 时,就会输出成功信息。



在 PowerShell 里执行 .\crackme1.exe "I know the secret",果然输出 “You know how to speak to programs, Mr. Reverse-Engineer”,验证成功。

4.2.2 静态分析 crackme2.exe
按同样步骤测试,还是失败,说明有额外校验。

用 IDA 看 sub_401280 函数的伪代码,发现多了个条件:程序文件名必须是 “crackmeplease.exe”。




程序文件名必须是 “crackmeplease.exe”
把文件重命名后,在 CMD 里执行(PowerShell 的 “./” 前缀会导致参数识别失败),输入 crackmeplease.exe "I know the secret",成功输出 “We have a little secret: Chocolate”,终于搞定了。


4.3 恶意代码样本 RaDa.exe 分析与问题回答
4.3.1 分析 RaDa.exe 基本信息
在 Kali 终端中通过系列命令获取样本核心信息:
file RaDa.exe::确认文件为 32 位 Windows GUI 可执行程序,Intel x86 架构,带图形用户界面。md5sum RaDa.exe:计算得到样本唯一标识 MD5 值为 caaa6985a43225a0b3add54f44a0d4c7。exiftool RaDa.exe | grep "Time Stamp":提取到程序编译时间戳为 2004 年 10 月 30 日 08:15:32。在 Kali 终端执行三个命令:

4.3.2 分析 RaDa.exe 的目的
通过 IDA Pro 打开脱壳后的 RaDa_unpacked.exe,查看 “View→Graphs→Function calls” 函数调用图,发现 sub_404FB0 函数关联大量网络通信、文件操作及注册表修改相关子函数,确定其为程序核心功能模块。

对该函数的流程图及伪代码进行深度剖析,


有C&C 通信配置:mov edx, offset aHttp10_10_10_1 ; "http://10.10.10.10/RaDa"
mov ecx, offset dword_40C02C call esi ; __vbaStrCopy
文件系统操作:mov edx, offset aCRadaTmp ; "C:\RaDa\tmp"
mov ecx, offset dword_40C040
call esi ; __vbaStrCopy
mov edx, offset aCRadaBin ; "C:\RaDa\bin"
mov ecx, offset dword_40C060 还有持久化机制等。
这是一个具备持久化能力的远程控制木马,通过硬编码C&C服务器"http://10.10.10.10/RaDa"接收指令,利用download.cgi和upload.cgi进行文件上传下载,并在系统中创建C:\RaDa目录存储恶意文件,同时通过注册表自启动项实现开机自动运行。
得出以下结论:
该样本是一款具备持久化驻留能力的远程控制后门程序。其核心行为逻辑包括:硬编码 C&C 服务器地址 “http://10.10.10.10/RaDa”,通过 “RaDa_commands.html” 网页文件接收攻击者指令,借助 “download.cgi” 和 “upload.cgi” 脚本实现恶意模块下载与敏感数据窃取上传;在本地 C 盘创建 “RaDa\tmp” 临时目录和 “RaDa\bin” 程序目录,分别用于存储下载的恶意载荷和自身副本;通过修改注册表路径 “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”,将自身添加为开机自启动项,实现长期潜伏运行。
4.3.3 相关问题回答
-
提供二进制文件的摘要(含识别信息):
该样本为 32 位 Windows GUI 可执行程序,基于 Intel x86 架构开发,MD5 校验值为 caaa6985a43225a0b3add54f44a0d4c7,编译于 2004 年 10 月 30 日,作者信息为 Raul Siles && David Perez,原始文件采用 UPX 压缩加壳保护,脱壳后可识别为 Microsoft Visual C++ 6.0 编译产物。 -
二进制文件的目的:
该程序本质是一款远程控制后门,核心目的是通过在目标主机建立隐蔽的远程访问通道,实现长期潜伏。其可连接预设的 C&C 服务器接收攻击者指令,执行数据窃取、恶意模块下载、系统控制等非法操作,对目标主机的信息安全构成严重威胁。 -
二进制文件的特性:
抗分析特性:采用 UPX 加壳技术,压缩原始代码以躲避静态分析。
持久化特性:通过修改系统注册表 Run 键,实现开机自启,保障长期驻留。
环境适配特性:自动创建本地专属目录(C:\RaDa\tmp、C:\RaDa\bin),为恶意行为提供支撑。
网络通信特性:硬编码 C&C 服务器地址,基于 HTTP 协议实现指令接收与数据传输。
模块化特性:功能模块拆分明确,支持恶意载荷的动态下载与执行。 -
防止被分析的技术及应对:
该样本采用的抗分析技术为 UPX 加壳,通过压缩程序代码段、篡改入口点地址等方式,干扰逆向工具对原始代码的解析。应对方案:进行脱壳处理,还原程序原始代码。 -
恶意代码分类及理由:
属于后门程序。它不能自我复制或主动传播,也不伪装成正常软件,核心就是给攻击者留后门,实现长期未授权访问。 -
相似功能的其他工具:
PcShare、灰鸽子、冰河这些经典后门工具,还有 msfvenom、Veil 能生成类似功能的恶意样本。 -
能否调查出开发作者?条件是什么?
可以,这次就找到作者了。条件是:作者没加密或混淆身份信息,文件能成功脱壳,有 IDA Pro 这类静态分析工具。 -
至少 5 种检测该恶意软件的方法:
- 特征码检测:提取 MD5 值、UPX 加壳特征这些,和杀毒软件病毒库比对,快但要及时更病毒库。
- 行为检测:监控它是否改注册表、创建异常目录、连可疑 IP,能检测未知恶意软件但可能误报。
- 网络流量检测:看主机是否连 10.10.10.10 这个可疑 IP,有没有异常 HTTP 请求,不受加壳影响。
- 沙箱检测:在隔离环境里运行,看它的行为,准确但费资源、速度慢。
- 静态代码分析:脱壳后反汇编,看代码逻辑有没有恶意功能,安全但对技术要求高。
5. 取证分析实践
5.1 IRC 相关问题
-
IRC 是什么?
基于文本的实时聊天协议,多用户能同时交流。攻击者常用它当僵尸网络的控制中心,给被感染的主机发指令。 -
IRC 客户端加入网络时发送什么消息?
发送 NICK(设昵称)和 USER(填用户信息)消息,部分服务器可能需要 PASS(口令),核心是 NICK 和 USER。 -
IRC 常用的 TCP 端口?
6667(明文传输)和 6697(SSL 加密传输),偶尔用其他备用端口。
5.2 僵尸网络相关问题
-
僵尸网络是什么?
攻击者用恶意软件控制的一批受感染设备(叫 “肉鸡”),能集中管控,分布在不同地方。 -
僵尸网络通常用于什么?
发动 DDoS 攻击、传播恶意软件、偷敏感信息、静默挖矿、发垃圾邮件这些违法活动。
5.3 蜜罐主机通信的 IRC 服务器
蜜罐主机(IP:172.16.134.191)和 5 个 IRC 服务器通信,IP 分别是 209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172。

操作:用 Wireshark 打开流量包,筛选 ip.src==172.16.134.191 and tcp.dstport==6667 ,分别看明文和加密传输的情况。

5.4 访问僵尸网络服务器的不同主机数
观察期间有 3461 台不同主机访问了以 209.196.44.172 为服务器的僵尸网络。

操作:先在 Kali 装 tcpflow,再提取目标流量,最后用命令筛选去重计数。步骤不复杂,但要注意文件路径和参数,不然统计结果会错。

5.5 攻击蜜罐主机的 IP 地址
共有 165 个不同 IP 地址攻击蜜罐主机。
操作:用 tcpdump 命令筛选出向蜜罐发数据包的源 IP,保存到文件后统计数量,还能查看具体 IP 地址。

5.6 攻击者尝试攻击的安全漏洞
通过 Wireshark 和 tcpdump 分析,攻击流量主要是 TCP(99.7%),少量 UDP(0.3%)。

用wireshark筛选不同端口进行流量分析:






445 端口(SMB 协议):攻击者完成 NTLM 认证,执行文件删除(如C:\System32\PSEXESVC.EXE),获取管理员权限,利用 SMB 漏洞(如永恒之蓝)成功入侵。
135 端口(RPC):仅完成 TCP 三次握手,无后续恶意操作,攻击未成功。
139 端口(SMB):尝试访问共享目录被 RST 拒绝,攻击失败。
25 端口(SMTP):TCP 连接建立后无恶意行为,服务器主动断开,攻击未奏效。
4899 端口(远程控制软件):建立稳定通信通道,发起目录遍历攻击(如/cgi/../../../../../winnt/system32/cmd.exe),成功执行系统命令。
80 端口(HTTP):发送超长字符载荷触发缓冲区溢出,服务器接收处理,可能植入后门。
137 端口(NetBIOS):仅正常名称查询,无攻击载荷,未被利用。
所以经分析得到涉及的端口和漏洞:
- TCP 端口:135、139/445、25(SMTP 邮件服务器漏洞)、4899(远程控制软件漏洞)、80(HTTP 服务缓冲区溢出漏洞)。
- UDP 端口:137(NetBIOS 名称服务缓冲区溢出漏洞)。
5.7 成功的攻击及原因
成功的攻击是 445、4899、80 端口,其他端口要么连接后断开,要么没恶意操作:
- 445 端口(SMB 漏洞):攻击者完成认证,能读写文件,还删除了系统文件,说明拿到了管理员权限。
- 4899 端口(远程控制漏洞):发送大量数据,还发起目录遍历攻击,成功执行系统命令。
- 80 端口(缓冲区溢出漏洞):发送超长字符的恶意载荷,服务器接收处理了,可能植入了后门。
6. 实验遇到的问题及解决
-
问题一:Windows 11 运行 IDA 失败。
解决:需要以管理员身份运行。 -
问题二:crackme2 重命名后,在 PowerShell 里运行还是失败。
解决:询问同学得知 PowerShell 的 ./ 前缀会影响参数识别,换成 CMD 运行,马上就成功了。 -
问题三:统计僵尸网络客户端数量时,结果一直是 0。
解决:搞反了源 IP 和目的 IP 的逻辑,应该找源 IP 为服务器的文件,调整命令后统计出 3461 台。
7. 实验感悟及总结
这次实验让我掌握了恶意代码分析的基本流程,从文件识别、脱壳到静态分析,再到取证分析,每一步都有收获。一开始看 IDA 的函数调用图有点懵,慢慢学会聚焦关键函数,才理顺了逻辑;统计流量的时候也踩了坑,后来搞懂参数和 IP 的对应关系,才得到正确结果。工具使用方面,我发现 IDA Pro 很强大,能还原程序逻辑;Wireshark 筛选流量的功能也超实用。遇到的问题大多是环境兼容和细节理解不到位,比如 IDA 的运行环境、命令参数的含义,解决这些问题的过程也让我学会了网上查阅和询问老师同学。恶意代码分析不仅要会用工具,还要有逻辑思维,能从代码和流量中找到关键信息。
浙公网安备 33010602011771号