20232424 2025-2026-1 《网络与系统攻防技术》实验四实验报告
20232424 2025-2026-1 《网络与系统攻防技术》实验四实验报告
1. 实验内容
- 恶意代码文件类型标识、脱壳与字符串提取;
- 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息;
- 分析一个自制恶意代码样本rada并撰写报告;
- 取证分析实践
2. 实验目的
- 掌握恶意代码、僵尸网络、病毒、蠕虫等的概念,恶意代码及普通软件的静态或动态分析方法,PEID、IDA Pro、Process Explorer等软件的使用,对网络流量的分析方法。
3. 准备工作
- 从学习通获取PEid、超级巡警脱壳器V1.3、IDA Pro、Process Explorer以及实验需要用到的各类文件
PEid:是一款经典的“查壳”工具,主要用于快速识别Windows可执行文件使用了哪种加壳或加密软件进行保护。它通过比对内部的特征码数据库,能迅速告诉分析者目标程序是否被加壳以及可能是哪种壳,为后续的脱壳和分析工作提供关键的第一步。
超级巡警脱壳器:一款国产的自动脱壳工具,其核心功能是剥离程序上的保护壳。它内置了对多种常见壳的脱壳逻辑,能够自动化地完成寻找原始程序入口点、修复文件等步骤,帮助分析者快速还原出被加壳前的原始代码。
IDA Pro:IDA Pro是全球公认的顶级交互式反汇编器和调试器。它能够将枯燥的机器代码转换成易于阅读的汇编代码,并通过强大的自动分析和图形化功能,清晰地展现程序的执行流程和结构关系。无论是进行漏洞分析、恶意软件研究还是软件逆向,IDA Pro都是专业人士不可或缺的核心工具。
Process Explorer:Process Explorer是Windows系统上著名的“任务管理器增强版”,由微软旗下的Sysinternals公司开发。它以树状结构实时、直观地显示所有进程的父子关系、它们加载的DLL文件以及持有的句柄资源。这款工具非常适合用于监控系统活动、诊断程序问题或排查恶意软件的进程行为,是系统管理和安全分析的得力助手。
4. 实验过程与分析
4.1 恶意代码文件类型标识、脱壳与字符串提取
4.1.1分析rada样本的文件格式、运行平台和加壳工具
在Kali虚拟机中使用file命令Rada.exe的类型和结构

PE32 executable: 这确认了它是一个 32 位的 Windows 可执行文件。
for MS Windows 4.00 (GUI): 表明它设计为在Windows NT 4.0系统上运行,并且是一个图形用户界面(GUI)程序,而非命令行(CLI)程序。
Intel 1386: 指该程序编译的目标架构是Intel x86 (i386) 32位处理器。
3 sections: 这表示该PE文件包含3个“节区”。常见的节区有:
.text: 存放代码
.data: 存放初始化数据
.rsrc: 存放资源(如图标、对话框等)
用peid软件对Rada.exe进行分析,如下图:

可看到该文件使用了UPX进行加壳
4.1.2 对Rada样本进行脱壳分析
使用peid软件对Rada.exe进行脱壳

脱壳后的文件为Rada.exe.unpacked.exe

打开IDA PRO,选择脱壳后的样本进行分析

发现Rada样本的疑似作者Raul Siles 和 David Perez以及制作时间2004.9
4.2 利用IDA Pro静态或动态分析所给的exe文件
4.2.1 分析文件crackme.exe
进入存放crackme.exe的文件夹,打开powershell运行该文件

发现只有输入一个参数时才会提示“Pardon? What did you say?”,否则提示“I think you are missing something.”,于是推测要输入单个正确参数程序才会输出可读信息。
打开IAD PRO,选择crackme.exe,打开IDA view-A界面

点击上方菜单View->Graphs->Function calls,打开函数调用图

发现_main调用了strcmp、printf等这些有关字符串处理的函数,可能是对接受的参数进行比对。
返回View-A界面,在左侧找到刚刚发现的_main函数的地址并点击,展示函数流程图

分析执行逻辑:将接收参数与“2”比较,若不为“2”,直接输出“I think you are missing something.”;若为“2”且第二个输入为“I Know the secret”,就输出“You know how to speak to programs, Mr. Reverse-Engineer”,否则输出“Pardon? What did you say?”
根据分析再次运行crackme.exe

如图,结果与分析一致,成功得到正确回答。
4.2.2 分析文件crackme2.exe
进入文件夹运行crackme2.exe

结果与crackme.exe运行结果类似,但输入“I Know the secret”后出现提示“I have an identity problem.”,没有得到有效输出。
在IDA PRO中选择crackme2.exe进行分析,打开函数调用图

发现还是_main函数调用了strcmp、fprintf、putchar、puts这些字符串处理函数
回到View-A界面打开_main函数的流程图

发现与crackme.exex相比,crackme2对输入的第一个参数进行了比较,要求其为“crackmeplease.exe”,说明需要将该文件的文件名修改为crackmeplease.exe再运行。

成功得到输出“We have a little secret: Chocolate”
4.3 分析恶意代码样本RaDa,并撰写报告
4.3.1 获取Rada样本基础信息
进入kali虚拟机,使用如下命令对Rada样本进行文件类型识别、完整性验证以及时间戳分析
file RaDa.exe #识别文件类型
md5sum RaDa.exe #计算文件的md5摘要值
exiftool RaDa.exe | grep "Time Stamp" #提取文件元数据并过滤时间戳信息

由结果可得
Rada.exe是一个结构简单的32位的Windows图形界面程序
其MD5哈希值为caaa6985a43225a0b3add54f44a0d4c7
时间戳信息
Time Stamp : 2004:10:30 07:59:58+08:00
这应该是该程序的编译链接时间,即它被创建出来的时间(2004年10月30日)
4.3.2 分析文件目的
打开IDA PRO分析脱壳后Rada文件,查看其函数调用,部分如图:

查看404FB0流程图

发现上图这样一串命令
其中 mov edx, offset aHttp1G101010Ra ; "http://10.10.10.10/RaDa"
明确地将字符串"http://10.10.10.10/RaDa"的地址加载到EDX寄存器中,准备在后续的函数调用中使用。
继续向下,能看到四条call指令

"RaDa_commands.html"
作用:这是恶意软件从服务器获取命令的页面。
含义:RaDa 会定期访问这个HTML文件,解析其中隐藏的指令,如下载文件、执行命令、上传数据等。"cgi-bin"
作用:这是一个标准的Web服务器目录,通常用于存放可执行脚本。
含义:表明攻击者在服务器上使用CGI脚本来处理恶意软件的请求。"download.cgi"
作用:这是恶意软件用于下载文件的服务器端脚本。
含义:黑客可以通过这个CGI脚本向受感染主机分发额外的恶意软件或工具。"upload.cgi"
作用:这是恶意软件用于上传文件的服务器端脚本。
含义:RaDa会通过这个脚本将受害者电脑上的敏感数据(如文档、密码等)窃取并发送到攻击者的服务器。
可得出RaDa的完整通信流程:
- 获取指令:
http://10.10.10.10/RaDa_commands.html - 下载文件:
http://10.10.10.10/cgi-bin/download.cgi - 上传数据:
http://10.10.10.10/cgi-bin/upload.cgi
继续向下

这段汇编代码将字符串 "C:\RaDa\tmp" 复制到一个全局变量中
这个 C:\RaDa\tmp\ 目录很可能被用于:
- 存储下载的文件:从download.cgi获取的后续恶意软件或工具会存放在这里。
- 暂存待上传的数据:在通过upload.cgi发送给攻击者之前,窃取的文件会先收集到这里。
- 存放临时配置文件或运行时的临时数据。

HKLM\Software\Microsoft\Windows\CurrentVersion\Run是Windows系统中最经典的自启动项位置,在此处添加的程序会在系统启动时自动运行
"RaDa"是恶意软件要在注册表中创建的键名
"REG_SZ"指定要创建的注册表值类型为字符串类型

从代码逻辑可以推断,程序正在构建完整的文件路径:C:\RaDa\bin\RaDa.exe
这可能是:
- 自我复制目标:恶意软件将自身复制到这个路径以实现持久化
- 实际运行路径:注册表启动项指向的实际可执行文件位置
- 模块存储:存放其他恶意组件的位置
现在,RaDa的完整基础设施已经清晰:
持久化:注册表Run项 → 指向C:\RaDa\bin\RaDa.exe
工作目录:C:\RaDa\tmp\(数据操作)
二进制目录:C:\RaDa\bin\(程序存储)
C&C 通信:http://10.10.10.10/ 及其相关 CGI 接口
4.3.3问题回答
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
- Rada.exe是一个结构简单的32位的Windows图形界面程序
- 其MD5哈希值为caaa6985a43225a0b3add54f44a0d4c7
- 时间戳信息Time Stamp: 2004:10:30 07:59:58+08:00 这应该是该程序的编译链接时间(2004年10月30日)
(2)找出并解释这个二进制文件的目的;
这个名为RaDa.exe的文件是一个具有完整攻击生命周期的Windows后门程序,其核心目的是为攻击者提供远程控制能力。它通过注册表Run项实现持久化,在系统启动时自动运行;在本地建立C:\RaDa\bin和C:\RaDa\tmp目录结构用于存储自身模块和临时数据;并通过HTTP协议与命令控制服务器http://10.10.10.10通信,利用RaDa_commands.html获取指令,通过download.cgi和upload.cgi完成文件传输,最终实现对受害主机的长期控制和数据窃取。
(3)识别并说明这个二进制文件所具有的不同特性;
- 持久化:通过 Windows 注册表 Run 键实现开机自启动。
- 本地驻留:在 C:\RaDa 目录下创建 bin 和 tmp 子目录,用于存储自身和执行环境。
- 远程控制:硬编码连接至 C&C 服务器 http://10.10.10.10,接收远程指令。
- 命令分发:通过下载 RaDa_commands.html 页面来获取攻击者指令。
- 文件操作:利用 upload.cgi 和 download.cgi 接口实现数据窃取和恶意文件下载。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
-
加壳,使用peid工具发现其使用upx压缩壳,且file 命令显示它只有 .text,.data 和 .rsrc 3个标准节区,字符串清晰可读。
-
依赖合法系统API,通过混用大量合法系统的API调用,来“稀释”其恶意代码的逻辑,增加分析人员区分恶意与正常代码的难度。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
后门,其核心行为模式符合此类别定义:不具备自主传播能力,而是专注于在受感染主机上建立隐蔽的持久化通道(如注册表自启动),并被动等待来自远程C&C服务器的指令。其所有活动都完全由攻击者远程控制,本质是为攻击者提供一个可持续的、不受限制的远程访问权限,而非进行自我复制或文件感染。
(6)给出过去已有的具有相似功能的其他工具;
询问AI工具得出:Back Orifice 2000
相似点:这可能是最著名的后门工具之一。BO2K提供了一个高度可扩展的框架,允许攻击者远程完全控制Windows系统。其模块化的文件上传/下载、注册表编辑、进程控制等功能,与 RaDa 的设计理念高度一致。
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
使用工具IDA PRO得到开发者名称Raul Siles && David Perez
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
-
基于特征码的检测
这是最传统和基础的检测方法,依赖于识别恶意软件的静态唯一标识。- 原理:安全软件维护一个庞大的已知恶意软件特征库。检测时,系统会计算文件的密码学哈希值(如MD5、SHA-256)或扫描文件中是否包含特定的字节序列(一段独特的机器代码或字符串),并与特征库进行比对。
- 优点:速度快、资源占用少,对已知威胁准确率极高。
- 缺点:极其脆弱。任何微小的更改(如加壳、代码混淆、重打包)都会改变文件哈希或字节序列,从而轻松绕过检测,对未知(零日)恶意软件无效。
-
基于行为的检测
这种方法不关心文件“是什么”,而关心它“做什么”,通过监控其运行时活动来判定恶意性。- 原理:在沙箱或真实环境中运行程序,并实时监控其系统行为,例如:修改注册表自启动项、创建可疑文件、进行网络连接、调用敏感API等。任何偏离正常程序行为模式的操作都会触发警报。
- 优点:能有效检测未知恶意软件和经过混淆的变种,因为即使代码改变,其核心恶意目标和行为模式往往保持不变。
- 缺点:可能产生误报(某些合法软件也有敏感行为),且需要一定的执行时间来完成分析,对高度环境感知的恶意软件(能检测到沙箱并停止恶意行为)可能失效。
-
基于主机的指标匹配
此方法侧重于在受感染主机上寻找恶意软件活动留下的持久化痕迹和攻击指标。- 原理:安全人员通过分析,总结出恶意软件的典型“足迹”,例如:创建的特定文件或目录、注册表键值、计划任务、服务名称等。检测工具或调查人员会在主机上扫描这些预定义的指标。
- 优点:检测准确率高,一旦指标确定,可以快速在全网范围内进行扫描和清理,非常适合应急响应和威胁狩猎。
- 缺点:同样容易被攻击者修改,例如使用随机的文件路径或注册表键名即可绕过。这要求指标库必须持续更新。
-
基于网络的流量分析
通过监控和分析网络通信来发现与恶意命令与控制服务器或攻击基础设施的连接。- 原理:检测系统会检查网络流量中的异常模式,例如:与已知恶意IP/域名的连接、非常规端口的通信、DNS查询异常、HTTP请求中包含特定恶意URI路径、或使用非标准协议(如DNS隧道)进行数据传输。
- 优点:可以在恶意软件造成实际损害前(如数据窃取阶段)就发现威胁,并可用于发现网络内的其他受感染主机。
- 缺点:如果恶意软件使用强加密通信(如HTTPS),解密和深度包检测会变得困难。同时,使用域名生成算法的恶意软件可以轻松改变其C&C服务器地址,绕过基于域名的封锁。
-
基于遥测数据的异常检测
这是一种更先进的、基于大数据和机器学习的方法,通过建立正常行为基线来发现异常。- 原理:在端点或网络上持续收集大量行为数据(如进程树、网络连接频率、文件访问模式、CPU使用率等),并利用机器学习模型学习“正常”行为模式。当某个程序或用户的行为显著偏离此基线时,系统会将其标记为可疑。
- 优点:有潜力检测到前所未见的新型攻击和潜伏的高级持续性威胁,不依赖于预定义的特征或规则。
- 缺点:技术复杂,部署成本高,可能产生大量误报,且需要时间训练模型以建立准确的基线,在初期可能漏报。
4.4取证分析实践
4.4.1 IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用那些TCP端口?
IRC是一种文本即时通信协议,采用客户端-服务器架构。当客户端申请加入频道时会向服务器发送"JOIN #频道名"指令。该协议传统上使用TCP端口6667(及6660-6669范围),而现代加密连接则普遍采用端口6697。值得注意的是,由于其匿名性和灵活性,IRC曾被许多恶意软件用作命令与控制信道。
4.4.2 僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是由攻击者通过恶意软件集中控制的大量联网设备(如电脑、手机、IoT设备)组成的网络。这些被控制的个体设备被称为“僵尸”或“肉鸡”。
僵尸网络通常用于:
- 分布式拒绝服务攻击:同时指挥所有僵尸机向目标服务器发送海量流量,使其瘫痪。
- 发送垃圾邮件和网络钓鱼:利用庞大的僵尸网络IP资源大规模分发垃圾邮件和欺诈信息。
- 窃取敏感信息:从受感染的设备上盗取银行凭证、个人信息等数据。
- 点击欺诈:模拟真实用户点击网络广告,骗取广告费用。
- 挖矿:在用户不知情的情况下,利用其设备的计算资源进行加密货币挖矿。
- 租赁服务:将僵尸网络作为“攻击即服务”在黑市上出租给其他犯罪分子。
4.4.3 蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?

使用wireshark打开botnet_pcap_file.dat文件,并将筛选条件设为ip.src == 172.16.134.191 and tcp.dstport == 6667,筛选源IP为172.16.134.191,目的端口为6667的数据包。
可发现蜜罐主机与IP地址为209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10的IRC服务器进行了通信
4.4.4 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
先通过命令apt-get install tcpflow下载tcpflow
然后输入tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667,从botnet_pcap_file.dat文件中,筛选出与IP为209.196.44.172且端口为6667的主机相关的所有TCP流量数据。

进入kali目录发现新增了三个文件

这里选择访问IP地址为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个不同的主机访问了该僵尸网络。
4.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 > 20232424.txt;wc -l 20232424.txt将攻击蜜罐主机的ip筛选出来并输出至20232424.txt,此处仅展示前二十个ip

4.4.6 攻击者尝试攻击了哪些安全漏洞?
回到wireshark对botnet_pcap_file.dat文件的抓包结果,选择统计->协议分级,查看该文件各种协议的分布情况和层次结构

可以看到,流量包绝大部分都是tcp(99.7%),同时有少量udp包(0.3%)
进入kali虚拟机终端,输入命令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筛选172.16.134.191发送所有UDP包的源端口号

可以看到172.16.134.191在TCP连接建立时使用了多个端口:135、139、25、445、4899、80。这些端口与以下服务相关:
- 135端口:Microsoft RPC(远程过程调用),常用于Windows系统管理,但也被恶意软件用于通信。
- 139端口:NetBIOS Session Service,用于文件共享和网络浏览。
- 25端口:SMTP(简单邮件传输协议),常用于发送垃圾邮件。
- 445端口:Microsoft DS(目录服务),用于SMB文件共享,常被勒索软件或蠕虫利用。
- 4899端口:常与远程管理工具(如Radmin)相关,也可能被后门程序用于C&C通信。
- 80端口:HTTP(超文本传输协议),常用于Web通信,恶意软件可能通过HTTP协议与C&C服务器交互。
再使用命令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
4.4.7 哪些攻击成功了?是如何成功的?
在wireshark中以tcp.port == xxx &&ip.dst == 172.16.134.191作为过滤条件,查看不同端口连接情况
-
135

如图,该端口只有用于建立连接的三次握手的数据包,并未被攻击成功 -
139

可看出,一直在反复尝试连接并尝试访问共享目录\PC0191\c,但并未被攻击成功 -
25

有三次握手的连接过程,但连接后立马断开,未被攻击 -
445

这是经典的 “Pass the Hash/Ticket” 或利用SMB漏洞进行横向移动的后期行为。
目的:攻击者已成功入侵内网一台主机(61.111.101.78可能也是受控肉鸡),并正尝试在内网另一台主机(172.16.134.191)上部署后门程序(DSEXESVC.EXE),以巩固其控制权。 -
4899

外部主机与172.16.134.191:4899建立连接后发送了大量PSH包,即攻击者通过4899端口与目标主机已经建立起了通信通道

并且通过http请求发起了攻击 -
80

如图,攻击者通过80端口发起了多次缓冲区溢出攻击(数据包中数据为大量的“C”字符)

且攻击后连接未断开,C/S还通过80端口进行了正常的http通信,可以推测攻击者已在服务器中植入后门或维持了访问权限 -
137

只有大量类型为“NBNS”的数据包,未表露被攻击迹象
5. 问题及解决方案
问题1:运行crackme2.exe时,将文件名改成crackmeplease也无法得到正确输出

解决方法:在目录内直接“鼠标右键——在终端中打开”调用的是powershell,而在powershell运行可执行文件需要在文件名前加上“./”,导致参数名称不匹配。使用cmd运行即可解决。
6. 心得体会
本次实验我亲手操作了PEID 脱壳、IDA Pro等工具,从基础的恶意代码标识到复杂的RaDa后门程序拆解,逐步掌握了恶意代码的分析逻辑与逆向工程思路。网络取证环节里,通过Wireshark解析流量数据,我直观理解了僵尸网络的攻击模式与C&C通信机制,对端口漏洞利用有了具象认知。
实验也让我深刻体会到攻防技术的严谨性,比如处理crackme2.exe时,Powershell与cmd的环境差异导致的问题,让我明白细节对实验成败的关键影响。同时,后门程序的持久化手段与防护方法,更让我意识到网络安全的重要性。未来我将继续深耕攻防技术,提升实操能力,为后续学习筑牢基础。

浙公网安备 33010602011771号