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 架构,带图形界面。
9c056250849b3755627d3b9bbe1b1816

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

4.1.2 脱壳与 IDA 分析

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

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

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?”,猜它需要特定参数组合。
b9d2e48a5ac45fe860127e88b4204b5d

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

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

4.2.2 静态分析 crackme2.exe

按同样步骤测试,还是失败,说明有额外校验。
760f4cb5ebe2c95430a783b1da87e804
用 IDA 看 sub_401280 函数的伪代码,发现多了个条件:程序文件名必须是 “crackmeplease.exe”。
dd8b6941cba85a37a7ad52110ad1cc26
5173c7558dac8170dacaefeb1b60c221
dc50b5d5dc4787f6c581d53396cfb2fc
66dbbd16e97d6348377c5eef517ead4b
程序文件名必须是 “crackmeplease.exe”
把文件重命名后,在 CMD 里执行(PowerShell 的 “./” 前缀会导致参数识别失败),输入 crackmeplease.exe "I know the secret",成功输出 “We have a little secret: Chocolate”,终于搞定了。
7e6d76fc701d105cdbc6a7a843bf548f
c488564ca03032e8ce699f0b150b93c5

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 终端执行三个命令:

9c056250849b3755627d3b9bbe1b1816

4.3.2 分析 RaDa.exe 的目的

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

对该函数的流程图及伪代码进行深度剖析,
174e3d322a72cc188b8a10c7a8d5e96e
fba72ec2d8e6efbea2f81652b2e6b485
有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 相关问题回答

  1. 提供二进制文件的摘要(含识别信息):
    该样本为 32 位 Windows GUI 可执行程序,基于 Intel x86 架构开发,MD5 校验值为 caaa6985a43225a0b3add54f44a0d4c7,编译于 2004 年 10 月 30 日,作者信息为 Raul Siles && David Perez,原始文件采用 UPX 压缩加壳保护,脱壳后可识别为 Microsoft Visual C++ 6.0 编译产物。

  2. 二进制文件的目的:
    该程序本质是一款远程控制后门,核心目的是通过在目标主机建立隐蔽的远程访问通道,实现长期潜伏。其可连接预设的 C&C 服务器接收攻击者指令,执行数据窃取、恶意模块下载、系统控制等非法操作,对目标主机的信息安全构成严重威胁。

  3. 二进制文件的特性:
    抗分析特性:采用 UPX 加壳技术,压缩原始代码以躲避静态分析。
    持久化特性:通过修改系统注册表 Run 键,实现开机自启,保障长期驻留。
    环境适配特性:自动创建本地专属目录(C:\RaDa\tmp、C:\RaDa\bin),为恶意行为提供支撑。
    网络通信特性:硬编码 C&C 服务器地址,基于 HTTP 协议实现指令接收与数据传输。
    模块化特性:功能模块拆分明确,支持恶意载荷的动态下载与执行。

  4. 防止被分析的技术及应对:
    该样本采用的抗分析技术为 UPX 加壳,通过压缩程序代码段、篡改入口点地址等方式,干扰逆向工具对原始代码的解析。应对方案:进行脱壳处理,还原程序原始代码。

  5. 恶意代码分类及理由:
    属于后门程序。它不能自我复制或主动传播,也不伪装成正常软件,核心就是给攻击者留后门,实现长期未授权访问。

  6. 相似功能的其他工具:
    PcShare、灰鸽子、冰河这些经典后门工具,还有 msfvenom、Veil 能生成类似功能的恶意样本。

  7. 能否调查出开发作者?条件是什么?
    可以,这次就找到作者了。条件是:作者没加密或混淆身份信息,文件能成功脱壳,有 IDA Pro 这类静态分析工具。

  8. 至少 5 种检测该恶意软件的方法:

    • 特征码检测:提取 MD5 值、UPX 加壳特征这些,和杀毒软件病毒库比对,快但要及时更病毒库。
    • 行为检测:监控它是否改注册表、创建异常目录、连可疑 IP,能检测未知恶意软件但可能误报。
    • 网络流量检测:看主机是否连 10.10.10.10 这个可疑 IP,有没有异常 HTTP 请求,不受加壳影响。
    • 沙箱检测:在隔离环境里运行,看它的行为,准确但费资源、速度慢。
    • 静态代码分析:脱壳后反汇编,看代码逻辑有没有恶意功能,安全但对技术要求高。

5. 取证分析实践

5.1 IRC 相关问题

  1. IRC 是什么?
    基于文本的实时聊天协议,多用户能同时交流。攻击者常用它当僵尸网络的控制中心,给被感染的主机发指令。

  2. IRC 客户端加入网络时发送什么消息?
    发送 NICK(设昵称)和 USER(填用户信息)消息,部分服务器可能需要 PASS(口令),核心是 NICK 和 USER。

  3. IRC 常用的 TCP 端口?
    6667(明文传输)和 6697(SSL 加密传输),偶尔用其他备用端口。

5.2 僵尸网络相关问题

  1. 僵尸网络是什么?
    攻击者用恶意软件控制的一批受感染设备(叫 “肉鸡”),能集中管控,分布在不同地方。

  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。
26819264e0dc74f8452e11f0d8041cde

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

5.4 访问僵尸网络服务器的不同主机数

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

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

5.5 攻击蜜罐主机的 IP 地址

共有 165 个不同 IP 地址攻击蜜罐主机。

操作:用 tcpdump 命令筛选出向蜜罐发数据包的源 IP,保存到文件后统计数量,还能查看具体 IP 地址。
26819264e0dc74f8452e11f0d8041cde

5.6 攻击者尝试攻击的安全漏洞

通过 Wireshark 和 tcpdump 分析,攻击流量主要是 TCP(99.7%),少量 UDP(0.3%)。
image
用wireshark筛选不同端口进行流量分析:
image
image
image
image
image
image

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 端口,其他端口要么连接后断开,要么没恶意操作:

  1. 445 端口(SMB 漏洞):攻击者完成认证,能读写文件,还删除了系统文件,说明拿到了管理员权限。
  2. 4899 端口(远程控制漏洞):发送大量数据,还发起目录遍历攻击,成功执行系统命令。
  3. 80 端口(缓冲区溢出漏洞):发送超长字符的恶意载荷,服务器接收处理了,可能植入了后门。

6. 实验遇到的问题及解决

  1. 问题一:Windows 11 运行 IDA 失败。
    解决:需要以管理员身份运行。

  2. 问题二:crackme2 重命名后,在 PowerShell 里运行还是失败。
    解决:询问同学得知 PowerShell 的 ./ 前缀会影响参数识别,换成 CMD 运行,马上就成功了。

  3. 问题三:统计僵尸网络客户端数量时,结果一直是 0。
    解决:搞反了源 IP 和目的 IP 的逻辑,应该找源 IP 为服务器的文件,调整命令后统计出 3461 台。

7. 实验感悟及总结

这次实验让我掌握了恶意代码分析的基本流程,从文件识别、脱壳到静态分析,再到取证分析,每一步都有收获。一开始看 IDA 的函数调用图有点懵,慢慢学会聚焦关键函数,才理顺了逻辑;统计流量的时候也踩了坑,后来搞懂参数和 IP 的对应关系,才得到正确结果。工具使用方面,我发现 IDA Pro 很强大,能还原程序逻辑;Wireshark 筛选流量的功能也超实用。遇到的问题大多是环境兼容和细节理解不到位,比如 IDA 的运行环境、命令参数的含义,解决这些问题的过程也让我学会了网上查阅和询问老师同学。恶意代码分析不仅要会用工具,还要有逻辑思维,能从代码和流量中找到关键信息。