20253912 2025-2026-2 《网络攻防实践》第八次作业报告
20253912 2025-2026-2 《网络攻防实践》第八次作业报告
1. 知识点梳理与总结
本次第八次作业围绕 恶意代码样本分析、Crackme 逆向工程、IRC 僵尸网络取证、蜜罐流量分析以及 Windows 远程入侵证据链还原 展开。与前几次作业相比,本次实验不再只关注“如何扫描目标”或“如何利用漏洞”,而是进一步转向两个更接近真实安全工作的方向:一是对可疑二进制程序进行静态分析、脱壳和逆向判断;二是对长时间采集的蜜罐网络流量进行取证复盘,判断系统如何被攻破、如何加入僵尸网络以及哪些攻击真正成功。
从整体上看,本次实验可以分成四条主线:
- RaDa 恶意代码样本分析:通过
file、strings、PEiD、超级巡警脱壳工具和 IDA Pro,完成文件格式识别、加壳判断、脱壳处理、字符串提取、作者信息确认和恶意行为归纳; - Crackme 程序逆向分析:利用 IDA 的字符串窗口、函数调用图、流程图和
strcmp交叉引用,找出程序成功分支对应的输入条件; - IRC 僵尸网络通信分析:围绕蜜罐主机与 IRC 服务器之间的
NICK、USER、JOIN等文本协议命令,判断主机是否进入控制频道并被纳入 botnet; - Windows 入侵取证复盘:通过 Wireshark、tcpdump、tcpflow 等工具,对 SMB、DCERPC、HTTP、NetBIOS、RAdmin、IRC 等流量进行分阶段分析,区分扫描、漏洞尝试、可疑会话和成功控制。
也就是说,本次作业的核心目标不是简单回答某一个工具输出,而是要形成一种完整的分析意识:面对样本,要能从二进制结构和字符串中推断行为;面对流量,要能从协议交互和证据链中判断攻击是否成功。
1.1 恶意代码静态分析与脱壳分析
恶意代码分析通常分为静态分析和动态分析。本次 RaDa 样本分析以静态分析为主,辅以有限度的行为观察。静态分析的优势是风险较低,不需要直接让样本在真实环境中运行,适合先掌握文件类型、运行平台、关键字符串、导入函数、加壳情况和潜在行为。动态观察则用于补充确认样本运行后是否创建文件、修改注册表、连接远程地址或产生异常进程。
本次实验中使用的核心工具及作用如下:
| 工具 | 作用 | 本次实验中的体现 |
|---|---|---|
file |
判断文件类型、体系结构和运行平台 | 确认 RaDa.exe 为 PE32 GUI 可执行文件 |
strings |
提取可见字符串 | 初步观察 DLL、函数名、URL、作者信息等线索 |
| PEiD | 识别 PE 文件加壳情况 | 判断样本使用 UPX 壳 |
| 超级巡警脱壳机 | 对加壳样本进行脱壳 | 生成 RaDa_unpacked.exe |
| IDA Pro Free | 反汇编与字符串分析 | 通过 String Window 和 Unicode 设置定位作者及行为字符串 |
| Process Explorer | 进程行为观察 | 观察样本运行后的路径、后门、注册表和网络相关线索 |
其中,脱壳是本节实验的重点。加壳的作用通常是压缩程序体积、隐藏真实代码和减少可读字符串暴露。原始样本在 strings 中出现大量乱码或难以理解的信息时,往往说明其内部数据被压缩或扰乱。脱壳之后,样本中真实的函数调用、路径、URL、注册表项和作者信息会更加清晰,便于后续判断其恶意目的。
1.2 PE 文件、UPX 壳与字符串分析
Windows 下的 .exe 文件通常采用 PE(Portable Executable)格式。PE 文件包含 DOS 头、PE 头、节表、代码段、数据段、导入表、资源表等结构。恶意代码分析中,PE 文件格式识别能够回答三个基本问题:这个文件是不是 Windows 可执行文件、运行在什么体系结构上、是否经过异常封装或保护。
UPX 是常见的可执行文件压缩壳。正常软件可能使用 UPX 减小体积,恶意样本也可能使用 UPX 提高初始分析门槛。对 UPX 加壳文件来说,直接 strings 往往只能看到少量壳相关内容,真正的 URL、注册表项、命令参数和作者字符串可能在解压后才完整暴露。因此,本次实验采用“识别壳类型 → 脱壳 → 再次 strings → IDA 辅助分析”的路径是比较规范的。
字符串分析在恶意代码分析中非常重要。比如样本中出现 http://10.10.10.10/RaDa、RaDa_commands.html、download.cgi、upload.cgi、WScript.Shell、RegWrite、RegRead、RegDelete 等内容时,可以推断其可能具有远程命令获取、文件上传下载、注册表持久化和脚本化系统控制能力。但需要注意,字符串只能提供线索,不能单独等同于最终结论,必须结合代码逻辑或运行行为进一步验证。
1.3 Crackme 逆向分析与控制流判断
Crackme 程序是逆向工程入门中常见的练习样本,其目的通常是让分析者通过反汇编或调试找出程序隐藏的输入条件。本次实验中的 crackme1.exe 和 crackme2.exe 都属于小型校验程序,重点不是复杂算法,而是理解字符串比较和分支跳转。
Crackme 分析的一般思路如下:
- 先运行程序观察错误提示和参数数量要求;
- 使用 IDA 打开样本,进入 String Window 查看可见字符串;
- 根据成功提示、失败提示和疑似口令字符串定位交叉引用;
- 观察函数调用图,重点关注
printf、strcmp等函数; - 进入 Flow chart,分析绿色/红色分支对应的 True/False 跳转;
- 根据比较对象和跳转条件还原正确输入,并在命令行中验证。
本次实验中,crackme1.exe 的关键点是将输入参数与 I know the secret 进行字符串比较;crackme2.exe 在此基础上增加了程序文件名校验,要求程序名为 crackmeplease.exe 后再输入正确参数。这说明逆向分析不能只看某一个字符串,还要结合参数来源、文件名判断和控制流跳转综合分析。
1.4 IRC 协议与僵尸网络控制机制
IRC(Internet Relay Chat)是一种基于文本命令的实时通信协议,早期主要用于多人聊天和频道交流。在安全事件中,IRC 也常被早期僵尸网络用作命令与控制通道。受感染主机启动后会主动连接指定 IRC 服务器,发送 NICK 和 USER 完成身份注册,再通过 JOIN 进入特定频道,随后等待控制者下发命令。
本次实验中需要重点区分三个层次:
- TCP 连接尝试:只能说明主机尝试访问 IRC 服务器,不能证明已加入网络;
- IRC 注册成功:出现
NICK、USER和服务器欢迎信息,说明客户端完成入网; - 频道加入与成员列表:出现
JOIN、353 NAMES等内容,说明主机进入了具体控制频道,具备被 botnet 管理的特征。
IRC 常见 TCP 端口包括 6660—6669,其中 6667 最典型;部分加密 IRC 也可能使用 6697。本实验数据中,蜜罐主机与 209.196.44.172:6667 的通信最关键,因为该连接完成了入网、加入频道和频道成员统计。
1.5 蜜罐流量分析与攻击证据链
蜜罐的价值在于主动暴露受控目标,记录攻击者的真实行为。面对多天采集的 pcap 文件,分析人员不能只看单个包或单条告警,而要围绕攻击时间线和协议链条逐步还原事件。本次实验中使用 Wireshark、tcpdump、tcpflow 等工具,分别从图形化视角和命令行统计视角进行分析。
常见分析方法包括:
| 分析目标 | 常用方法 | 判断重点 |
|---|---|---|
| 找通信双方 | Wireshark Conversations | 哪些 IP 与蜜罐通信最频繁 |
| 找 IRC 控制 | 过滤 tcp.port == 6667 |
是否出现 NICK、USER、JOIN |
| 找攻击源 | tcpdump + awk/cut/sort/uniq |
统计攻击蜜罐的唯一 IP |
| 找攻击端口 | TCP/UDP 过滤与响应包分析 | 判断哪些服务被访问或尝试利用 |
| 还原应用内容 | Follow TCP Stream / tcpflow | 查看 HTTP 请求、SMB 行为、IRC 命令 |
| 判断成功与否 | 证据链闭合 | 是否有文件落地、服务创建、命令执行、后续控制 |
本次实验中最重要的思维是区分“扫描”“漏洞尝试”“可疑会话”和“成功入侵”。例如,仅看到 80 端口存在恶意请求,不能直接说明攻击成功;仅看到 4899 端口有通信,也不能单独证明系统被控制。只有出现 SMB 管理共享访问、文件上传、服务创建、服务启动、后续 IRC 连接等闭合证据时,才能较稳妥地认定攻击成功。
1.6 Windows SMB、RAdmin 与 PsExec 式远程控制
在 Windows 入侵场景中,SMB/445、IPC$、ADMIN$、SAMR、svcctl、PSEXESVC 等关键词具有很强的取证意义。攻击者如果能够通过 SMB 访问管理共享,向系统目录写入可执行文件,并通过服务控制管理器创建和启动服务,就说明其已经具备较高权限的远程执行能力。
本次实验中两条较关键的成功链路分别是:
- RAdmin 远程控制链路:攻击者通过 SMB/管理共享上传或创建 RAdmin 相关文件,并启动
r_server.exe /service,随后出现 4899 端口通信。4899 是 RAdmin 常见端口,因此这条链路可以用于说明远程控制后门被安装运行; - PsExec / IRC Bot 链路:攻击者连接 SMB/445,使用管理员身份访问
ADMIN$,上传或创建PSEXESVC.EXE,执行inst.exe/Devlr32.exe,随后蜜罐主机主动连接 IRC 服务器并加入频道。该链路能够把“远程执行”与“加入僵尸网络”直接串联起来。
因此,本次取证分析的关键不是简单说“445 端口被攻击”,而是要写清楚:攻击者如何通过管理共享和服务机制获得执行能力,又如何让蜜罐成为 IRC bot。
1.7 与第二次至第七次作业之间的联系
本次第八次作业是在前几次实验基础上的综合提升,既继承了信息收集、流量分析、漏洞利用和防御检测的能力,又进一步扩展到恶意代码逆向和僵尸网络取证。
(1)与第二次作业的联系:从信息收集到样本和流量识别
第二次作业主要训练信息收集、端口扫描、服务识别和漏洞评估能力。本次作业虽然不再以主动扫描为主,但仍然需要类似的“识别思维”:对二进制样本要先识别文件类型、平台和壳信息;对蜜罐流量要先识别通信主机、开放端口和协议类型。换句话说,第二次作业解决的是“先看清目标是什么”,第八次作业把这种能力迁移到了恶意样本和网络日志中。
(2)与第三次作业的联系:从协议分析到取证复盘
第三次作业训练了 Wireshark、tcpdump、TCP 流追踪和协议字段观察能力。本次第八次作业中的 IRC、SMB、DCERPC、HTTP、NBNS 分析都依赖这些基础。不同的是,第三次作业更像“认识协议”,而本次作业要求进一步判断协议行为背后的攻击含义,例如 JOIN 是否意味着加入控制频道,CreateServiceA 是否意味着远程服务创建,353 NAMES 是否能用于统计 botnet 规模。
(3)与第四次作业的联系:从协议缺陷到攻击流量理解
第四次作业关注 ARP 欺骗、ICMP 重定向、SYN Flood、TCP RST、会话劫持等协议层攻击。本次实验中的 DDoS、IRC 控制、SMB 远程管理也说明,网络协议本身如果缺少足够认证、权限控制和行为检测,就容易被攻击者转化为控制通道或攻击载体。第四次作业让我们理解“协议不是天然安全的”,第八次作业则让我们从真实日志中看到这种风险如何留下证据。
(4)与第五次作业的联系:从防御部署到检测需求
第五次作业学习了 iptables、防火墙、Snort IDS 和 Honeywall 蜜网。本次第八次作业正好说明这些防御技术的必要性:如果能限制 SMB/445、RAdmin/4899、IRC/6667 等端口的异常访问,就可以减少远程入侵和外联控制;如果 Snort 能对 NULL.IDA、cmd.exe?/c、PSEXESVC.EXE、IRC JOIN 等特征告警,就能更早发现攻击链。第八次作业的蜜罐分析也与 Honeywall 的捕获思想高度一致。
(5)与第六次作业的联系:从 Windows 漏洞利用到 Windows 入侵取证
第六次作业围绕 Windows SMB/MS08-067、NT/IIS 入侵和网络取证展开。本次第八次作业继续分析 Windows 2000 主机被攻破的过程,只是重点从“漏洞复现”转向“日志还原”。例如第六次作业中我们关注 SMB/DCERPC 如何建立远程控制,第八次作业中则关注 SMB/ADMIN$、PSEXESVC、服务创建和 IRC 外联如何共同证明系统被控制。
(6)与第七次作业的联系:从 Linux Samba 攻防到跨平台恶意行为分析
第七次作业使用 Metasploit 利用 Linux Samba Usermap Script 漏洞,并结合 Wireshark 做攻防对抗分析。本次作业同样强调“攻击行为必须能从流量中解释”,只是对象从 Linux Samba 扩展到 Windows SMB、RAdmin、IRC botnet 和恶意代码样本。两次作业共同说明:无论是漏洞利用、后门控制还是僵尸网络通信,最终都应形成可解释、可复核的证据链。
1.8 知识拓扑图
知识拓扑图如下所示:

体现了网络攻防实践课程的整体逻辑:先发现目标与风险,再理解协议与流量,然后复现攻击与控制,最后通过逆向分析、蜜罐取证和证据链复盘完成更完整的安全分析闭环。
2. 实践过程
本部分按照第二个文件中的实验步骤展开,并参考第一个文件的表达方式进行补充。为了保证报告证据完整性,原文件中的截图均予以保留,并在关键图片后补充说明。整体实验可以概括为:
RaDa 样本识别与脱壳 → Crackme 程序逆向 → RaDa 恶意行为综合分析 → Windows 2000 蜜罐入侵与 botnet 取证。
在具体实践中,我会尽量把每个关键步骤写清楚“为什么要这样做”。比如 RaDa 分析中,先判断加壳再脱壳,是因为原始字符串不足以支撑行为判断;Crackme 分析中,先看字符串再看 strcmp,是为了从输出线索反推判断逻辑;蜜罐分析中,先统计端口和通信双方,再判断成功攻击,是为了避免把扫描流量误判为入侵成功。
2.1 实践任务一
2.1.1 实验要求
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
2.1.2 实验过程展示
本实验需要用到的虚拟机环境为WinXP虚拟机。
打开WinXP虚拟机,并使用账号密码:Adminstrator/mima1234进行登录。

首先在学习通中将老师提供的rada.rar文件进行解压,解压密码为rada,将解压后的两个文件拖入WinXP虚拟机中。(需要注意的是:rada.rar文件其中包含一个示例性分析样本,可能会触发反病毒引擎报警。)
解压:


使用Win+R快捷键打开cmd终端,并使用以下命令找到RaDa.exe文件:
cd 桌面
file RaDa.exe
先对RaDa.exe恶意代码文件进行分析。
该图是
file RaDa.exe的识别结果,重点确认样本为 PE32 GUI 可执行文件,运行平台为 32 位 Windows,为后续选择 Windows 逆向工具提供依据。
可以看到RaDa.exe文件是PE32位类型的EXE可执行文件,且带有GUI界面,所处的系统架构为英特尔的80386系列,所处的系统为32位Windows。
这一步我没有急着直接分析恶意行为,而是先确认文件格式和运行平台。因为如果连样本是 PE、ELF 还是脚本文件都没有判断清楚,后续工具选择就容易出错。这里确认它是 32 位 Windows PE 文件后,我才把后续分析重点放在 WinXP、PEiD、IDA 和 Windows API 线索上。
使用以下命令进行RaDa.exe文件恶意代码字符串的查看:
strings RaDa.exe

该图展示对原始
RaDa.exe执行strings的结果,可见输出信息较少且不够连贯,提示样本可能经过压缩壳处理。
可以看到输出的字符串为一堆乱码,猜测是因为加壳的原因。
刚看到乱码时,第一反应是不能简单认为样本“没有有效信息”。在恶意代码分析中,字符串不完整往往是重要信号,可能意味着样本被压缩、加壳或使用了特殊编码。因此我把这里当作一个分岔点:如果字符串清晰,就继续做行为归纳;如果字符串混乱,就优先判断是否加壳。
该图进一步显示原始字符串中存在大量乱码或不可读内容,说明直接静态提取难以获得完整行为信息,需要继续进行加壳识别与脱壳。
此外,最后面出现的几个dll文件名称,查询发现均为Windows操作系统中重要的DLL动态链接库文件,还出现了一些调用的函数等信息。

该图中可见部分 DLL 名称和函数调用信息,说明样本仍暴露了少量 Windows API 线索,但不足以支撑完整行为判断。
使用以下命令查看作者信息:
rada --authors
RaDa.exe --authors

该图展示通过
rada --authors或相关参数查看作者信息的尝试,是确认样本内嵌作者署名的第一类证据。

该图继续展示使用
RaDa.exe --authors获取作者信息的结果,用于与前一条命令输出进行交叉验证。

该图显示命令执行后返回的作者相关内容,初步指向 Raul Siles 与 David Perez,为后续 IDA 验证提供线索。

该图用于对比两种作者查询方式的输出结果,说明样本自带参数返回的信息具有一致性。
发现是Raul Siles & David Perez这两个人的作品,在给文件脱壳后可以验证是否是这两人。
对比以上两种查看作者的命令弹出的信息一致:
在WinXPattacker虚拟机中寻找PEid工具,用于查看RaDa.exe的加壳信息。


可以看到内容为UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo的信息,说明所加的壳即为此形式。
这里 PEiD 给出了 UPX 壳的结果,我的判断思路是把它和前面 strings 的乱码现象对应起来:前面不是工具失效,而是原始样本内容被壳压缩了。这样后续脱壳就不是机械步骤,而是为了解决“看不到真实字符串和代码逻辑”的问题。
再使用WinXPattacker上自带的超级巡警脱壳工具进行脱壳:


该工具会生成一个脱壳后的unpacked的exe文件在桌面:

可以看到在桌面上得到一个RaDa_unpacked.exe的文件:
脱壳后生成的新文件不能直接等同于“分析完成”,它只是把样本从压缩保护状态恢复到更容易观察的状态。真正需要验证的是:脱壳后的字符串是否更多、IDA 是否能识别更完整的内容、作者和行为线索是否能被交叉确认。

再次使用以下命令查看字符串:
strings RaDa_unpacked.exe
对脱壳后的文件RaDa_unpacked.exe进行字符串分析,可以发现大量的函数调用信息,但是仍然不够详细,需要再次借助反汇编来进行分析,字符串分析是不够的。

该图展示对
RaDa_unpacked.exe再次执行strings的结果,可见函数与行为相关字符串明显增多,说明脱壳有效。
再次使用IDA Pro Free反汇编工具进一步分析:

选择PE Exe对脱壳后文件RaDa_unpacked.exe进行反汇编分析:


点击打开后:

发现String界面是与上述查看字符串的输出是相同的:

在Sting窗口单机右键 --> 选择Setup修改编码模式后进一步查看:

选择Unicode改变编码格式,会发现内容发生变化:

该图显示选择 Unicode 相关字符串选项,这是恢复样本中宽字符信息、路径和作者信息的重要操作。
点击OK后:

内容发生变化:

该图显示调整编码后 String 窗口内容发生变化,可见更多隐藏或宽字符形式的信息被解析出来。
下拉找到作者信息:
这里我没有只依赖 RaDa.exe --authors 的输出,而是希望用 IDA 字符串窗口再验证一遍。这样做的原因是,命令行输出只能说明程序主动返回了作者信息,而 IDA 中的字符串能说明这些信息确实内嵌在样本内部,两类证据互相印证后结论更稳。
该图展示在 IDA 字符串中定位到作者信息,进一步验证 Raul Siles 与 David Perez 的署名结论。
与上述命令RaDa.exe --authors查看的作者信息相同,均为Raul Siles & David Perez。

该图用于将 IDA 中的作者信息与命令行
--authors结果对应起来,形成双重证据。

实验成功!!!
2.1.3 问题回答
回答问题如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具?
RaDa.exe文件是PE32位类型的EXE可执行文件,且带有GUI界面;
所处系统架构为英特尔的80386系列,运行平台为32位Windows;
加壳工具为UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo 。
这个问题看似只是填结果,但我理解它的重点是建立样本画像:文件格式决定分析平台,运行架构决定工具兼容性,加壳工具决定后续是否需要脱壳。三者合起来,才是对样本进行后续逆向分析的基础。
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理?
详情可见上述实验过程展示小节。
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
发现恶意代码的编写作者为:Raul Siles & David Perez。
作者信息不是只从一个地方得出的,而是通过命令行参数、脱壳后的字符串和 IDA Unicode 字符串共同确认。这样写答案时更有把握,也能避免把某一次工具显示结果误当成唯一证据。
2.2 实践任务二
2.2.1 实验要求
分析Crackme程序
在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
2.2.2 实验过程展示
同上述实验一样,首先进入学习通下载相关资料:
将下载后的两个文件拖入WinXP虚拟机中。

①crackme1.exe
需要再次借助IDA工具:

与上述实验一样,选择PE Exe新建一个分析界面。


点击打开后内容如下所示:

打开String窗口,发现了其回复总共有4条,而上面直接探测只能发现两条。
猜测没有出现的两条:一条要寻找特定输入,一条是对特定输入的回复。
Crackme 分析中我没有先去暴力尝试,而是从字符串入手。因为这类小程序往往会把成功提示、失败提示和关键比较字符串直接放在程序中。先找字符串,再追踪引用,比盲目输入更容易接近真实判断逻辑。
该图是
crackme1.exe的字符串窗口,重点在于发现错误提示、成功提示以及I know the secret这一疑似关键输入。
进一步查看:
点击打开IDA View窗口,在右上角菜单栏选择:view—>graphs—>function calls 进入流程图查看。

找到其输出(即printf),发现属于sub_401280模块。
其中sub_401280中的strcmp块就是使用字符串匹配密码的模块。
我的思考过程: 看到
strcmp后,我的重点从“程序输出了什么”转向“程序拿什么和用户输入比较”。printf只能说明输出位置,strcmp才更接近校验条件。因此我把sub_401280当作关键函数继续分析,而不是只停留在字符串窗口。
进一步查看:
点击选择:view->Graphs->Functions call 查看函数调用图。

该图展示函数调用图视角,帮助定位
printf、strcmp等与输出和字符串比较有关的调用关系。
可看到输出函数printf被sub_401280调用,sub_401280还调用了strcmp函数,猜测是用于判断输入与密码是否一致。

该图说明
sub_401280同时关联输出函数和strcmp,表明程序通过字符串比较判断输入是否正确。
进行sub_401280块的代码查看:

使用如下操作在Flow chart中查看其代码流程图:
View->Graphs->Flow chart查看汇编代码。

可以看到,这里是一个条件分支。
红色线条代表False,绿色代表True。

该图显示条件分支结构,绿色路径代表比较成功,红色路径代表比较失败,是确定正确输入的关键证据。
着重分析这部分汇编代码:
分析可知:
push offset alKnowTheSecret:"I know the secret" 字符串的地址被推入到栈上;
offset指令用于获取一个标签或数据的偏移量;
dword ptr [eax];char 将eax寄存器中的值解释为一个指向char的指针,后将栈上的地址存储到这个指针指向的内存位置;
call strcmp 调用字符串比较函数strcmp,用于比较两个字符串是否相等。
简单来说就是判断你是否输入 “I know the secret”
如果是则走绿色分支并得到回复 You know how to speak to programs 。
这里绿色分支和红色分支让我更直观地理解了逆向分析的本质:不是猜出一个答案,而是沿着程序的判断条件去找成功路径。只有把 strcmp 的比较对象和分支方向对应起来,后面的命令行验证才不是碰运气。
该图展示与
I know the secret和strcmp相关的汇编片段,说明程序会将输入参数与固定字符串进行比较。
接下来继续实验,在cmd中使用以下命令进行验证:
crackme1.exe “I know the secret”

该图展示在命令行中使用正确参数运行
crackme1.exe后得到成功回显,验证逆向分析结论。
发现得到回复,实验结束!
②crackme2.exe
与①中类似,这里不作过多解释。
对该文件也进行IDA反汇编分析:


打开内容如下所示:

与crackme1不同的是,crackme2.exe有5条回复。
crackme2.exe 比 crackme1.exe 多出一条提示,这说明它很可能不只是单纯比较口令。我在这里开始怀疑它还有额外条件,比如参数个数、文件名、运行路径或程序名检查,因此后面不能直接照搬 crackme1 的方法。
该图展示
crackme2.exe的字符串窗口,重点在于比crackme1.exe多出与文件名校验相关的提示信息。
进一步分析查看:
点击打开IDA View窗口,在右上角菜单栏选择:view—>graphs—>function calls 进入流程图查看。


找到printf所属代码块,发现仍然是sub_401280模块:

查看其反汇编代码:



着重分析分支语句部分的汇编代码:
分析可得:
与crackme1.exe文件不同的是此处crackme2.exe文件有两个参数,多出一个分支来判断是否输入正确:先判断是否输入了“crackmeplease.exe”,再判断是否输入了”I know the secret“。

该图集中体现
crackme2.exe的关键判断:程序名需要满足crackmeplease.exe,输入参数也需要为I know the secret。
使用以下代码进行验证:
类比crackme1.exe文件使用以下代码进行验证:
crackme2.exe “I know the secret”

该图展示只输入
I know the secret的验证结果,程序未成功,说明crackme2.exe还有额外校验条件。
回想上方发现crackme2.exe文件有两个参数,判断是否输入了“crackmeplease.exe”因此改写为代码:
crackme2.exe “crackmeplease.exe” “I know the secret”
结果发现还是错的:
这次失败反而是一个关键提示。最初我误以为 crackmeplease.exe 是第二个参数,但程序仍然失败,说明我对参数位置理解错了。于是我重新回到汇编逻辑中看比较对象来源,最后才意识到它检查的是程序自身文件名,而不是用户额外输入的参数。
该图展示把
crackmeplease.exe当作参数输入仍然失败,说明它不是普通参数,而是程序文件名要求。
再次阅读汇编代码,发现原来不是输入两个参数,是需要将第一个参数“crackmeplease.exe”作为文件的命名,即将crackme2.exe重命名为crackmeplease.exe,再输入第二个参数“I know the secret”。
更改以下命令重新进行验证:
rename crackme2.exe crackmeplease.exe
crackmeplease.exe “I know the secret”

该图展示将
crackme2.exe重命名为crackmeplease.exe后再输入口令,程序成功输出结果,验证了文件名加口令的双条件逻辑。
发现成功验证,实验结束!!!
2.2.3 问题回答
回答问题如下:
在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息?
①crackme1.exe
特定的输入为:crackme1.exe “I know the secret”
②crackme2.exe
特定的输入为:crackmeplease.exe “I know the secret”
两个 Crackme 的答案表面上都包含 I know the secret,但本质不同:第一个只做字符串比较,第二个还检查程序名。因此回答时不能只给命令,还要说明它们分别代表“单条件校验”和“双条件校验”。
2.3 分析任务一
2.3.1 实验要求
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
2、找出并解释这个二进制文件的目的;
3、识别并说明这个二进制文件所具有的不同特性;
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
6、给出过去已有的具有相似功能的其他工具;
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
2.3.2 实验过程展示
所使用的相关资料在实践任务一中均已下载好,详情见2.1.2 。
分析过程如下:
使用以下命令进行MD5摘要的获取:
md5sum RaDa.exe
可得到MD5为:caaa6985a43225a0b3add54f44a0d4c7
MD5 的作用不是判断样本恶意与否,而是给样本建立唯一标识。后续如果不同工具、不同平台或不同报告分析的是同一个 MD5,就能确认大家讨论的是同一份样本,避免因文件版本不同导致结论不一致。

该图展示对
RaDa.exe计算 MD5 摘要,得到caaa6985a43225a0b3add54f44a0d4c7,用于样本唯一性标识。
打开虚拟机自带的Process Explorer软件,进行脱壳后的RaDa.exe文件监听,即RaDa_unpacked.exe 。

(这里需要注意的是,要先启动脱壳后的恶意代码文件以实现监听)

该图强调需要先运行脱壳后的样本再进行监控,否则 Process Explorer 中无法看到对应进程行为。
点击进行监听查看:

该图展示 Process Explorer 监听到 RaDa 相关进程或行为信息,为判断样本运行目的提供动态侧证据。
打开String会看到红框内的监听信息,分析后可知:
该恶意软件先访问了http://10.10.10.10/RaDa网站,将RaDa_commands.html下载到了C:\RaDa\tmp,留下了后门。
看到 URL 和命令文件时,我首先想到的是“远程控制”而不是单纯下载文件。因为 RaDa_commands.html 更像控制端下发任务的载体,结合后续 download.cgi、upload.cgi、注册表操作等字符串,才能把它判断为后门控制行为。
还可判断当前环境是否是在虚拟环境下:如果不是则进行DDos泛洪攻击,占据目标主机的资源,然后修改注册表,用Wscript.Shell对象进行读写。

该图中可见与
http://10.10.10.10/RaDa、RaDa_commands.html等相关线索,说明样本具有远程命令获取和后门通信特征。
Wscript.Shell用到三个方法,分别是RegWrite、RegRead、RegDelete。

该图展示
WScript.Shell及RegWrite、RegRead、RegDelete等信息,说明样本具备脚本化注册表操作能力。
修改注册表后将RaDa设置为了开机启动项,最后还攻击三大内网,即192.168、172.16以及10等三个网段。
注册表自启动说明样本追求持久化,而内网地址段说明它不满足于单机运行,可能还想继续传播或攻击内网目标。这里我把“自启动”“外联控制”“内网地址段”放在一起看,才逐渐形成它是后门型样本的判断。
该图反映样本修改注册表、设置自启动并涉及
192.168、172.16、10等内网地址段,说明其具有持久化和内网攻击意图。
还看到作者的信息,即Raul Siles & David Perez,于2004年编写了此恶意软件。

该图再次显示作者署名与时间信息,证明作者信息不仅可通过参数和 IDA 获得,也能在行为/字符串分析中得到印证。
2.3.3 问题回答
回答问题如下
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息?
摘要为:caaa6985a43225a0b3add54f44a0d4c7:
2、找出并解释这个二进制文件的目的?
①进行DDos攻击;②连接http://10.10.10.10/RaDa网站,下载并留下后门; ③修改注册表,设置RaDa开机自启动; ④攻击192.168、172.16、10等三个网段。
3、识别并说明这个二进制文件所具有的不同特性?
①会在初次运行时,下载文件到C盘下,留下后门 ;②启动DDos攻击;③初次运行时,修改注册表实现自己的开机自启动
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术?
在实践任务一中可知使用加壳技术为:UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
这里我认为不能只写“使用 UPX”,还要说明 UPX 对分析造成了什么影响:它让原始 strings 输出不完整,使真实行为字符串被隐藏起来,所以必须经过脱壳才能继续分析。这才体现出“防分析技术”的意义。
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由?
该文件通过修改注册表实现开机自启动,通过连接网站下载文件,留下后门,并实现DDos攻击。通过分析可知其主要目的是让主机瘫痪,无法提供服务。因其不复制感染的特性所以不属于病毒或蠕虫,且因其没有伪装成可用程序欺骗用户运行所以不属于木马,仅是一个后门程序。
分类时我主要看“核心行为”而不是只看某一个功能。RaDa 有 DDoS 能力,但它还会外联、下载命令、修改注册表并保持驻留,所以更应从远程控制和后门能力角度理解。判断病毒、蠕虫、木马或后门时,关键是看它是否感染文件、是否自传播、是否伪装欺骗、是否提供远程控制。
6、给出过去已有的具有相似功能的其他工具?
①Bobax-2004年发现的木马,也是使用HTTP协议从指定的服务器下载命令文件后解析并执行其中的指令;
②Setiri及其前辈Gatslag。
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,并且有三种方式,作者为Raul Siles & David Perez。
使用命令RaDa - authors 即可知晓作者(详情可见实践任务一2.1.2小节);或是进行反编译脱壳文件也可以发现(详情可见实践任务一2.1.2小节);或是运行Process Explorer软件进行监听,也能知晓作者(详情可见分析任务一2.3.2小节)。
2.4 分析任务二
2.4.1 实验要求
Windows 2000系统被攻破并加入僵尸网络:
分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
2、僵尸网络是什么?僵尸网络通常用于什么?
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
5、那些IP地址被用于攻击蜜罐主机?
6、攻击者尝试攻击了那些安全漏洞?
7、那些攻击成功了?是如何成功的?
2.4.2 实验过程展示
所使用的相关资料在实践任务一中均已下载好,详情见2.2.2 。
分析过程如下:
本次实验需要用到kali虚拟机:
首先在学习通平台下载所需要的分析资料:

打开Kali虚拟机,将文件直接拖入kali虚拟机:

单击右键,使用Wireshark打开进行分析:
发现该文件存在各种IP地址以及各种包,有TCP、UDP、HTTP、NBNS、NBSS、DCERPC、SMB等种类。
刚打开这个 pcap 时,最大的困难是信息太多。如果直接逐包查看,很容易迷失在大量连接中。因此我先按问题拆分思路:先看 IRC 通信,再看攻击源,再看被攻击端口,最后再判断成功链路。这样分析会更像还原事件,而不是盲目翻包。
该图展示用 Wireshark 打开 pcap 文件后的总体视图,可见 TCP、UDP、HTTP、NBNS、SMB、DCERPC 等多类协议混杂。
由于数据过多在此就不集中一一回答问题了,进行边分析边回答,回答如下:
问题1
1.IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC 是 Internet Relay Chat,即互联网中继聊天协议,早期常用于多人实时聊天。它通常由多个 IRC 服务器组成网络,用户通过客户端连接服务器,再进入某个频道进行通信。很多早期僵尸网络也会利用 IRC 频道作为命令控制通道。
严格来说:
- 客户端注册/登录 IRC 网络时,通常发送:
NICK、USER,有时还会先发送PASS。 - 客户端加入某个频道时,发送:
JOIN。
这里我特意区分“登录 IRC 网络”和“加入频道”,因为二者证据强度不同。只有看到 NICK/USER,只能说明客户端尝试注册;继续看到 JOIN,才说明它进入了具体频道,也更接近被控制的 bot 行为。
本抓包中的关键位置:
| 作用 | 包序号 | 说明 |
|---|---|---|
| 连接 IRC 服务器 | 35794–35796 | 172.16.134.191 → 209.196.44.172:6667 三次握手 |
| 注册 IRC 昵称和用户信息 | 35804 | 出现 NICK rgdiuggac、USER rgdiuggac |
| 加入 IRC 频道 | 35811 | 出现 JOIN #xàéüîéðìx :sex0r |
IRC 常见 TCP 端口主要是 6660–6669,其中最常见的是 6667;加密 IRC 常见 6697。本文件中 IRC 通信使用的是 TCP/6667。
问题2
2.僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是指大量被攻击者控制的受害主机组成的网络。这些被控制的主机通常被称为 Bot、Zombie 或“肉鸡”。攻击者可以通过 IRC、HTTP、P2P 等方式向这些主机下发命令。
僵尸网络通常用于:
- 发起 DDoS 攻击;
- 扫描和传播恶意程序;
- 发送垃圾邮件;
- 窃取账号、密码等敏感信息;
- 作为跳板隐藏攻击者真实来源。
本抓包中,蜜罐主机后来连接到 IRC 服务器并加入特定频道,说明它被植入了 IRC Bot 程序。公开分析中也指出,该频道内聚集了大量 bot,具备发动 DDoS 的能力。
问题3
3.蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
蜜罐主机尝试连接了 5 个 IRC 服务器,均使用 TCP/6667。
对这个问题我没有只看 Conversations 里出现了哪些 IP,而是进一步区分“连接尝试”和“有效 IRC 会话”。有些服务器只出现 SYN 重传或失败响应,并不能说明真正建立了控制关系;真正关键的是后面成功完成 NICK/USER/JOIN 的 209.196.44.172。
| IRC 服务器 IP | 端口 | 包序号位置 | 结果 |
|---|---|---|---|
| 209.126.161.29 | 6667 | 34821、34849、34930、35776–35784 | 连接尝试,未成功建立有效 IRC 会话 |
| 66.33.65.58 | 6667 | 35739–35744、35779–35781 | 连接尝试,未成功建立有效 IRC 会话 |
| 63.241.174.144 | 6667 | 35745–35761 | 连接成功但昵称已被占用 |
| 217.199.175.10 | 6667 | 35762–35775 | 服务器满员,无法加入 |
| 209.196.44.172 | 6667 | 35794–54536 | 最终成功连接并加入僵尸网络频道 |
6665

6666

6667

该图展示 6667 端口存在明显通信,是后续确认 IRC 服务器和僵尸网络控制通道的重点。
6668

6669

7000

发现只有6667号端口才有数据,其他均没有。
这里逐个检查 6665、6666、6667、6668、6669、7000 的目的,是避免先入为主地认定 IRC 一定在 6667。虽然 6667 是常见端口,但取证分析要以抓包证据为准,最后确认只有 6667 存在有效通信。
6667号端口截图如下所示:

该图为 6667 端口的详细流量视图,说明蜜罐主机主要通过 TCP/6667 与 IRC 服务器交互。
可知,蜜罐主机与以下IRC服务器进行了通信:209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10和209.196.44.172
且通信最多的服务器为:209.196.44.172。

该图展示 Conversations 或相关统计结果,列出蜜罐尝试连接的多个 IRC 服务器地址。

该图进一步突出
209.196.44.172的通信量和会话持续性,说明它是最终成功连接的核心 IRC 控制服务器。
问题4
4.在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
此处需要用到kali虚拟机。
使用以下命令安装TCPflow工具:
sudo apt-get install tcpflow

使用以下命令进行Wireshark日志进行分析:
sudo tcpflow -r botnet_pcap_file.dat " host 209.196.44.172 and port 6667"
需要注意的是:先要cd到桌面文件系统。
发现其生成report.xml报告文件。

使用以下grep命令进行过滤后查看该文件便可得到主机数量,即利用管道命令来筛选:
sudo 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

该图展示通过管道命令统计 IRC
353 NAMES返回中的唯一昵称数量,结果为 3461,说明 botnet 规模较大。
可以看到总共有3461台主机访问了以209.196.44.172为服务器的僵尸网络。
统计 3461 台主机时,我关注的不是 TCP 连接数量,而是 IRC 353 NAMES 返回里的唯一昵称。因为频道成员列表更能反映 botnet 规模;如果直接统计数据包或连接数,可能会把重传、重复响应和同一主机多次出现都算进去。
问题5
5.那些IP地址被用于攻击蜜罐主机?
使用以下命令重新利用tcpflow来进行分析,并生成一个名为IP.txt的文件,文件中是被用于攻击蜜罐主机的所有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 > IP.txt;wc -l IP.txt

该图展示利用
tcpdump、awk、cut、sort等命令提取攻击蜜罐的源 IP,并统计出 165 个不同地址。
生成的IP.txt文件如下所示,共有165个IP被用于攻击蜜罐主机。
双击打开IP.txt文件:

即总共165个IP被用于攻击蜜罐主机。
这里统计的是攻击或探测蜜罐的源 IP 集合,但我也意识到“出现过连接”不等于“攻击成功”。因此 165 个 IP 更适合作为攻击面和威胁来源规模的描述,真正判断成功还要回到具体会话内容和后续行为证据。
问题6
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
使用tcpflow工具进行筛选,筛选TCP端口和UDP端口:

该图展示从 TCP 响应端口中提取出的被攻击端口,包括 135、139、25、445、4899、80 等。
可以看到TCP端口有:135(rpc)、139(netbios-ssn)、25(smtp)、445(smb)、 4899(radmin)、 80(http)被攻击。
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

该图展示 UDP 端口统计结果,确认 137/UDP 也存在 NetBIOS 名称服务相关探测。
UDP端口有:137(NetBIOS Name Service)被攻击。
以上便是攻击者攻击的安全漏洞。
端口统计只能告诉我攻击者关注了哪些服务,例如 80、445、4899 等,但不能直接说明漏洞利用是否成功。所以我在这里把问题拆成两层:第一层回答“尝试攻击了哪些端口/服务”,第二层再结合文件落地、服务创建和外联行为判断“哪些真正成功”。
问题7
7.那些攻击成功了?是如何成功的?
成功的主要有 两次 Windows/SMB 相关入侵。Web/IIS 类攻击和 SQL Slammer 在本文件中没有明显成功迹象。公开分析也指出 Web 攻击没有成功,而真正成功的是 SMB/远程管理相关入侵。
成功攻击一:210.22.204.101 安装 RAdmin 后门
攻击流程:
- 攻击者连接蜜罐主机的 SMB/445 服务;
- 通过 IPC$、SAMR 等接口枚举系统用户信息;
- 访问管理共享;
- 向系统目录上传 RAdmin 相关文件;
- 启动
r_server.exe /service; - 之后通过 TCP/4899 与蜜罐通信,说明 RAdmin 后门已经运行。
| 具体顺序 |
|---|
| 连接 SMB/445 |
| 枚举用户信息,出现 Administrator、Guest 等账户 |
| 创建/上传 RAdmin 相关文件 |
出现 r_server.exe /service |
| 连接 RAdmin 默认端口 4899 |
连接SMB:

该图展示攻击者与蜜罐 SMB/445 建立连接,是后续 RAdmin 安装链条的起点。
枚举用户信息:

该图显示通过 SMB/SAMR 等接口枚举用户信息,说明攻击者正在获取系统账户结构。

该图继续展示账户枚举证据,如 Administrator、Guest 等信息,为后续管理员级操作做铺垫。
创建RAdmin文件:

该图展示攻击者开始创建或上传 RAdmin 相关文件,说明行为已从探测进入远程控制组件落地阶段。

该图显示 RAdmin 文件写入或传输的进一步证据,表明后门组件正在被部署到目标系统。

该图展示更多与 RAdmin 落地相关的文件或服务痕迹,用于支撑“安装远控后门”的判断。
出现r_server.exe:

该图出现
r_server.exe /service,说明 RAdmin 服务被启动或配置为服务运行,这是攻击成功的重要证据。
连接RAdmin默认端口:

该图显示与 4899 端口的连接,对应 RAdmin 默认通信端口,说明远程控制服务已经可以被访问。
结论:210.22.204.101 的攻击成功,成功方式是利用 Windows SMB/管理共享,将 RAdmin 远程控制程序安装到蜜罐主机上。
我把这条链路判断为成功,不是因为单独看到了 4899 端口,也不是因为看到 SMB 连接,而是因为它同时出现了 SMB 访问、用户枚举、RAdmin 文件落地、r_server.exe /service 和后续 4899 通信。多个证据能前后衔接,才说明远控后门确实被安装并运行。
成功攻击二:61.111.101.78 通过 PsExec 安装 IRC Bot
攻击流程:
- 攻击者连接蜜罐主机 SMB/445;
- 使用
Administrator身份建立会话; - 连接
ADMIN$管理共享; - 上传
PSEXESVC.EXE; - 上传或执行
inst.exe/Devlr32.exe; - 程序运行后,蜜罐主机开始主动连接 IRC 服务器;
- 最终连接
209.196.44.172:6667并加入僵尸网络频道。
| 具体顺序 |
|---|
| SMB 连接开始 |
出现 Administrator 登录信息 |
连接 ADMIN$ 管理共享 |
创建 PSEXESVC.EXE |
出现 %SystemRoot%\System32\PSEXESVC.EXE |
执行 inst.exe |
出现 Devlr32.exe |
| 开始连接 IRC 服务器 |
最终连接 209.196.44.172:6667 |
发送 NICK/USER |
加入频道 JOIN #xàéüîéðìx :sex0r |
SMB 连接开始:

该图展示另一条成功攻击链的 SMB 连接开始,源主机随后通过 SMB/ADMIN$ 与 PsExec 机制进行远程执行。
出现 Administrator 登录信息:

该图出现 Administrator 登录或会话信息,说明攻击者使用管理员级身份建立 SMB 会话。
连接 ADMIN$ 管理共享:

该图展示连接
ADMIN$管理共享,这是向系统目录写入文件并执行远程服务的关键前提。
创建 PSEXESVC.EXE:

该图展示创建
PSEXESVC.EXE的证据,说明 PsExec 式远程服务组件已被投放到目标主机。
出现 %SystemRoot%\System32\PSEXESVC.EXE:

该图出现
%SystemRoot%\System32\PSEXESVC.EXE路径,说明服务文件落地位置位于系统目录。
执行 inst.exe:

该图显示执行
inst.exe,表示攻击者开始触发安装或运行后续恶意组件。
出现 Devlr32.exe:

该图出现
Devlr32.exe,可视为 IRC Bot 或后续载荷程序的重要落地证据。
开始连接 IRC 服务器:

该图展示蜜罐开始连接 IRC 服务器,说明 Bot 程序运行后进入外联控制阶段。
最终连接 209.196.44.172:6667:

该图显示蜜罐最终连接
209.196.44.172:6667,这是其加入 IRC 型僵尸网络的关键网络证据。
发送 NICK/USER:

该图展示 IRC
NICK和USER注册消息,说明蜜罐已经以 bot 客户端身份完成入网注册。
加入频道 JOIN #xàéüîéðìx :sex0r:

该图展示
JOIN频道命令,说明蜜罐不仅连接了 IRC 服务器,还进入了具体僵尸网络控制频道。
结论:61.111.101.78 的攻击成功,成功方式是通过 SMB/ADMIN$ 和 PsExec 机制在蜜罐主机上安装并运行 IRC Bot,使蜜罐加入僵尸网络。
这条链路最关键的是闭环证据:前面有 SMB/ADMIN$ 和 PSEXESVC.EXE,中间有 inst.exe、Devlr32.exe,后面有 IRC NICK/USER/JOIN。也就是说,攻击不是停留在远程执行,而是进一步导致蜜罐加入僵尸网络,这样才能把“系统被攻破”和“成为 bot”两个结论连起来。
3. 实验结果综合分析与防护建议
3.1 RaDa 样本分析结果
通过文件识别、字符串提取、PEiD 检测、脱壳和 IDA 分析,可以确认 RaDa.exe 是一个运行在 32 位 Windows 环境下的 PE32 GUI 可执行文件,原始样本使用 UPX 壳进行压缩。脱壳后,样本中的 URL、注册表操作、文件路径、脚本对象和作者信息变得更加清晰,最终确认作者署名为 Raul Siles & David Perez。
从功能上看,RaDa 更适合被理解为具有远程控制能力的后门类样本。它能够连接远程地址获取命令文件,配合 download.cgi、upload.cgi 实现数据交换;同时会创建本地目录、复制自身、修改注册表启动项,具备持久化能力。此外,样本还涉及内网地址段和 DDoS 行为提示,说明其不仅是单机后门,也具有进一步攻击或扩散的意图。
3.2 Crackme 逆向分析结果
crackme1.exe 的核心逻辑是单一字符串比较。通过 IDA 的 String Window 和函数调用图可以定位到 strcmp,并确认正确输入为:
crackme1.exe "I know the secret"
crackme2.exe 则增加了一层文件名校验。程序不仅要求输入参数为 I know the secret,还要求自身文件名为 crackmeplease.exe。因此正确方式为:
rename crackme2.exe crackmeplease.exe
crackmeplease.exe "I know the secret"
这说明逆向分析不能只看表面提示,而要把字符串、参数位置、文件名判断和控制流分支结合起来分析。
3.3 僵尸网络与蜜罐入侵分析结果
蜜罐主机 172.16.134.191 在观察期间尝试连接多个 IRC 服务器,其中 209.196.44.172:6667 是最关键的控制通道。通过 NICK、USER、JOIN 和 353 NAMES 等 IRC 协议内容,可以确认蜜罐主机最终进入了异常频道,并被纳入 IRC 型僵尸网络。根据实验中对频道成员的统计,访问该 botnet 的不同主机数量为 3461 台。
从入站攻击看,共统计出 165 个不同 IP 对蜜罐主机发起攻击或探测。被攻击端口包括 TCP 的 135、139、25、445、4899、80,以及 UDP 的 137。其中,80 端口存在明确的 IIS/HTTP 漏洞利用尝试,例如 NULL.IDA、cmd.exe?/c、目录遍历和系统文件读取尝试;但仅凭这些 HTTP 请求,还不能单独证明 Web 攻击成功。
本次实验中较明确的成功入侵主要集中在 Windows SMB/远程管理方向:
- 210.22.204.101 安装 RAdmin 后门:攻击者通过 SMB/445 访问目标,枚举用户信息,写入或创建 RAdmin 相关文件,并启动
r_server.exe /service,随后出现 RAdmin 默认端口 4899 的远程控制通信; - 61.111.101.78 通过 PsExec 安装 IRC Bot:攻击者通过 SMB/ADMIN$ 和 PsExec 机制上传
PSEXESVC.EXE,执行inst.exe/Devlr32.exe,最终使蜜罐连接209.196.44.172:6667并加入僵尸网络频道。
这两条链路都不是单纯的端口扫描,而是包含了共享访问、文件落地、服务运行、后续连接等多个证据点,因此可以构成较完整的成功入侵证据链。
3.4 防护建议
结合本次实验,可以从主机、网络和检测三个层面提出防护建议。
首先,主机层面要减少高危服务暴露,特别是 Windows 老旧系统中的 SMB/445、NetBIOS、RAdmin 等远程管理服务。对于不需要对外开放的管理端口,应通过防火墙限制访问范围;对于必须开放的管理服务,应使用强认证、最小权限和日志审计。
其次,Web 服务应及时修补历史漏洞,清理 IIS 示例目录、危险脚本、FrontPage 扩展和 cmd.exe 可访问路径。对于 NULL.IDA、cmd.exe?/c、目录遍历、boot.ini、repair/sam._ 等典型恶意访问路径,可以在 WAF、IDS 或 Web 日志分析中建立规则。
再次,网络出口控制非常重要。本次蜜罐被控制后主动连接 IRC 服务器并加入频道,说明出站流量同样是安全检测重点。企业网络中应监测异常的 IRC 端口、未知外联地址、非业务主机访问 6667/6697 等行为,并结合 DNS、NetFlow 和防火墙日志进行告警。
最后,对于可疑文件分析,应始终在隔离环境中进行,避免将恶意样本直接复制到真实主机运行。分析时应优先采用静态分析、快照还原、网络隔离和行为监控,防止样本真实连接外部控制端或造成二次感染。
4. 实验中可能遇到的问题及解决
4.1 问题一:RaDa 样本字符串显示乱码,难以判断真实行为
问题表现: 在原始 RaDa.exe 上直接执行 strings 后,输出内容大多是乱码或零散 DLL、函数名,无法清楚看到 URL、注册表项、作者信息和行为路径。IDA 中初始字符串窗口也可能显示不完整,导致分析者误以为样本没有明显行为线索。
原因分析: 该样本使用 UPX 壳进行了压缩或保护。加壳后,真实代码和数据被压缩到壳结构中,原始可见字符串减少,普通字符串提取工具只能看到部分壳相关内容。此外,部分字符串可能采用 Unicode 编码显示,如果 IDA 字符串窗口没有设置合适的编码模式,也会导致关键信息无法显示。
解决方案: 先使用 PEiD 判断壳类型,确认 UPX 后再使用超级巡警脱壳工具进行脱壳,得到 RaDa_unpacked.exe。随后重新执行 strings,并在 IDA Pro 中打开脱壳文件,进入 String Window 后通过 Setup 调整字符串类型或编码显示,特别关注 Unicode 字符串。最后将命令行 strings、IDA 字符串窗口和样本自带参数 RaDa.exe --authors 的结果进行交叉验证,避免单一工具误判。
4.2 问题二:蜜罐流量过多,难以判断哪些攻击真正成功
问题表现: 打开 botnet_pcap_file.dat 后,可以看到大量 TCP、UDP、HTTP、NBNS、SMB、DCERPC、IRC 等流量。许多端口都存在连接或请求,例如 80、135、139、445、4899、6667 等。如果只看端口或单个数据包,很容易把普通扫描、漏洞尝试、可疑会话和成功入侵混为一谈。
原因分析: 蜜罐日志本身记录的是多天、多源、多协议攻击行为,攻击者既可能只是探测端口,也可能真正上传文件、创建服务或建立远控。端口开放不等于漏洞利用成功,出现恶意 HTTP 请求也不一定说明命令执行成功。成功攻击必须有更强证据支撑,例如管理共享访问、文件落地、服务创建、服务启动、后续外联、控制频道加入等。
解决方案: 分析时应先用 Conversations 和过滤器确定主要通信双方,再按协议分层处理:IRC 看 NICK/USER/JOIN,HTTP 看恶意路径和响应,SMB/DCERPC 看 IPC$、ADMIN$、samr、svcctl、CreateServiceA、StartServiceA,RAdmin 看 4899 持续连接与服务文件,最后用 Follow TCP Stream 或 tcpflow 还原关键会话。判断成功攻击时必须坚持证据链闭合原则,即“连接建立 → 文件/服务操作 → 程序运行 → 后续控制行为”能够相互印证。
5. 实验总结与思考
通过第八次作业,我对网络攻防实践有了更完整的认识。以前我更关注能否拿到结果,但这次让我明白,安全分析更重要的是证据判断。RaDa 样本分析让我学会了从文件识别、加壳判断、脱壳到字符串和行为分析的基本流程;Crackme 让我体会到逆向不是猜答案,而是理解程序的判断逻辑;蜜罐流量分析则让我认识到,面对复杂 pcap,必须按协议、端口、攻击源和时间线逐步梳理。尤其是判断攻击是否成功时,不能只看可疑请求,还要结合文件落地、服务创建、程序启动和后续连接等证据。总体来说,这次作业让我从“会用工具”进一步转向“会解释证据”,也让我更加重视逆向分析和流量取证能力。











浙公网安备 33010602011771号