20232312 2024-2025-1 《网络与系统攻防技术》实验四实验报告
1.实验内容
- 本周围绕恶意软件分析与网络取证展开,重点研究了RaDa远程访问木马和基于IRC协议的僵尸网络。通过静态分析、动态监控和流量分析等多种技术手段,深入掌握了恶意代码的工作原理和检测方法。
2.实验过程
2.1恶意代码文件类型标识、脱壳与字符串提取
2.1.1使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
- 在虚拟机中使用
file命令查看文件格式

- 通过查询得知
-
文件格式: PE32
- 这是标准的 32 位 Windows 可执行文件格式。
-
运行平台: MS Windows
- 该程序专为 Microsoft Windows 操作系统设计。
-
子系统版本: 4.00 (GUI)
4.00指明编译此程序时设定的最低系统版本为 Windows 95 或 Windows NT 4.0,表明这是一个非常古老的程序。(GUI)表示这是一个图形用户界面程序,运行时将打开图形窗口,而非在命令行控制台运行。
-
CPU 架构: Intel i386
- 程序针对 Intel 80386(i386)指令集编译,兼容性非常老,但能在所有现代的 x86 架构(32位/64位)CPU上运行。
-
内部结构: 3 sections
- PE 文件通常由多个“节区”组成。此文件仅包含 3 个节区,结构相对简单。
综合分析结论:
RaDa.exe 是一个为早期 Windows 系统(Windows 95/NT 4.0)编写的 32 位图形界面应用程序。其古老的编译标识和简单的节区结构是分析该文件的重要起点。
-
使用
PEid分析结果如下

-
能看到是使用
0.89.6到1.02之间的UPX加壳
2.1.2使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理

2.1.3使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

- 可以看到两位作者的名字,经过查阅资料得知
Raul Siles & David Perez为本代码作者
2.2使用IDA Pro静态或动态分析crackme1.exe与crackme2.exe,寻找特定输入,使其能够输出成功信息
- 在这里先选择crackme1.exe进行分析
2.2.1 初步尝试

- 可以看,输入一个参数提醒我的是
Pardon? What did you say?让我重复,输入两个以上参数是告诉我I think you are missing something.所以可以断定参数是一个,只是我们输错了
2.2.2 寻找正确输入参数
- 将文件放入IDA pro,分析文件结构,看到逻辑如下:

- 可以看到,文件逻辑是需要你输入
I know the secret"才会有下一步的动作,于是尝试得到结果

输入了正确的参数
2.2.3对文件2进行相同操作
- 确定参数还是1个

- 同样看到

- 在
20232304冯天悦同学的帮助下我知道了
“与第一个程序不同的是,该程序还会将第一个参数(程序名)与crackmeplease.exe进行比较,说明我们需要把程序重命名为crackmeplease.exe才能获得正确结果。需要注意的是,这里不能用powershell,因为powershell执行程序需要在程序名前加.\,这样在第一个参数比较时就会出错,所以这里只能使用cmd运行”
- 所以改名后再cmd中运行

- 成功得到结果
2.3分析一个自制恶意代码样本rada,并撰写报告,回答以下问题
2.3.1 二进制文件摘要分析,包括可以帮助识别同一样本的基本信息
- 使用在线计算工具就散如图所示

2.3.2 二进制文件目的解析
-
将文件放入IDA pro中,可以看到以下内容

-
能看网络连接、添加注册表、运行文件...说明这是一个具有...
·远程控制:从RaDa_commands.html获取攻击指令·数据窃取:通过upload.cgi上传敏感文件·文件下载:通过download.cgi下载其他恶意工具·持久化驻留:通过注册表实现开机自启动·横向移动:针对内网环境设计(使用10.x.x.x地址)
- ...功能的远程木马文件
2.3.3 二进制文件特性识别
-
- 在前面的过程中我们知道了该文件
-
使用UPX加壳
-
使用VBA编译
-
是一个自启的、远程的木马
2.3.4 反分析与逆向工程技术研究
-
UPX加壳保护:
- 使用UPX压缩壳隐藏原始代码
- 增加静态分析难度,但可通过
upx -d命令轻松脱壳
-
字符串混淆:
- 关键字符串在内存中动态构建,避免在静态分析中直接暴露
- 使用分段存储敏感信息
-
代码混淆:
- 插入无意义指令干扰反汇编结果
- 使用跳转指令打乱代码逻辑流
-
反调试技术:
- 可能包含检测调试器的代码(虽然在此片段中不明显)
2.3.5 恶意代码分类与判定依据
分类:远程访问木马(Remote Access Trojan, RAT)
判定依据:
- 隐蔽性:无可见界面,后台静默运行
- 远程控制:通过HTTP协议接收远程指令
- 数据外泄:具备文件上传功能
- 持久化:通过注册表实现自启动
- 模块化:可下载执行额外payload
区别于其他类型:
- 非病毒:不自我复制感染其他文件
- 非蠕虫:不通过网络自动传播
- 非勒索软件:不加密文件索要赎金
2.3.6 历史相似功能工具对比分析
与RaDa功能相似的知名恶意软件包括:
-
Poison Ivy(2005年):
- 同样使用HTTP协议通信
- 具备文件管理、屏幕捕获等功能
- 但采用更复杂的加密通信
-
Gh0st RAT(2008年):
- 中国开发的远程控制工具
- 使用自定义协议,隐蔽性更强
- 具备进程管理、键盘记录等高级功能
-
NetBus(1998年):
- 早期Windows远程控制工具
- 功能相对简单,主要用于教育目的
- 后被恶意利用
2.3.7 开发者溯源调查可行性研究
- 当开发者在文件中写上了自己真实的名字,并且没有用加壳混淆等方式隐藏即可溯源其名字
2.3.8 多维度检测方法详解
方法1:基于特征码的检测
原理:提取恶意软件独有的二进制序列作为检测特征
实施:
- 计算文件MD5/SHA256哈希值建立特征库
- 提取独特的代码片段作为特征序列
- 在杀毒软件中建立特征数据库
优势:检测准确率高,误报率低
局限:易被加壳、混淆技术绕过
方法2:基于行为的检测
原理:监控程序的运行时行为特征
实施:
- 监控文件系统操作(创建C:\RaDa\目录)
- 检测网络连接(连接10.10.10.10)
- 监视注册表修改(HKLM注册表项)
优势:可检测未知恶意软件
局限:可能产生误报,需要行为分析引擎
方法3:基于流量的网络检测
原理:分析网络通信特征
实施:
- 检测HTTP请求中的特定URL模式(/RaDa/RaDa_commands.html)
- 监控非常规的CGI请求(download.cgi, upload.cgi)
- 分析通信频率和模式
优势:可在网络层面早期预警
局限:需要解密HTTPS流量
方法4:基于启发式的检测
原理:使用算法识别可疑代码模式
实施:
- 检测加壳特征(UPX壳特征)
- 分析API调用序列(可疑的组合调用)
- 评估代码熵值(加壳文件熵值较高)
优势:能检测变种和新型恶意软件
局限:可能产生误报
方法5:基于沙箱的动态检测
原理:在隔离环境中运行样本并观察行为
实施:
- 在虚拟环境中执行样本
- 记录所有系统调用和网络活动
- 分析产生的文件和注册表变更
优势:提供完整的行为分析
局限:可能被反虚拟机技术绕过
2.4取证分析实践
2.4.1 IRC的定义、客户端加入消息及常用TCP端口
IRC(Internet Relay Chat,互联网中继聊天)是一种基于客户端-服务器架构的实时多用户聊天系统,支持用户加入频道(channel)进行群组交流或私聊。其特点是低延迟、低带宽占用,因此曾被恶意软件(如僵尸网络)滥用为命令与控制(C&C)信道。
- 客户端加入消息:客户端申请加入IRC网络时,需先发送注册消息(包括
USER(用户名)、PASS(密码)和NICK(昵称)),成功后发送JOIN <频道名>消息加入特定频道。 - 常用TCP端口:默认端口为6667,其他常见端口包括6660–6669、6697(SSL加密连接)。僵尸网络为规避检测,可能使用任意端口。
2.4.2 僵尸网络的定义与用途
僵尸网络是由攻击者(Botmaster)通过恶意软件控制的受感染主机("肉鸡")组成的网络。这些主机通过C&C信道接收攻击指令,实现集中操控。
主要用途包括:
- 分布式拒绝服务攻击:利用大量主机淹没目标服务器或网络。
- 发送垃圾邮件:通过僵尸主机匿名分发垃圾邮件或钓鱼邮件。
- 数据窃取:窃取敏感信息(如账户凭证、机密文件)。
- 资源滥用:挖掘加密货币、点击欺诈等。
2.4.3蜜罐主机通信的IRC服务器
-
输入
ip.src==172.16.134.191&&tcp.dstport==6667作为筛选条件

-
可以看到主机与这几个地址通讯209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10
2.4.4在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
- 又是在
20232304冯天悦同学的指导下,下载了sudo apt install tcpflow - 输入以下命令获取报告
tcpflow -r 'botnet_pcap_file.dat' "host 209.196.44.172 and port 6667"

- 输入以下指令获取主机数为
3461个
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

第1段:cat 209.196.044.172.06667-172.016.134.191.01152
- 功能:读取指定的文件内容
- 文件名解析:格式为
源IP.端口-目标IP.端口,是tcpflow工具捕获的网络流量数据文件
第2段:grep -a "^:irc5.aol.com 353"
- 功能:过滤包含IRC 353响应的行
- 参数说明:
-a:将二进制文件作为文本文件处理^:irc5.aol.com 353:匹配以指定字符串开头的行(IRC名称列表响应)
第3段:sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g"
- 功能:使用sed进行文本替换,删除行首的固定格式
- 模式解析:
- 删除从行首到用户名列表开始部分的所有内容
- 只保留实际的用户名列表
第4段:tr ' ' '\n'
- 功能:将空格替换为换行符
- 效果:使每个用户名单独占据一行
第5段:tr -d "\15"
- 功能:删除回车符(CR, ASCII 15)
- 用途:清理Windows风格的换行符
第6段:grep -v "^$"
- 功能:过滤掉空行
- 参数说明:
-v表示反向选择,^$匹配空行
第7段:sort -u
- 功能:排序并去重
- 参数说明:
-u表示只输出唯一的行
第8段:wc -l
- 功能:统计行数
- 输出:唯一的用户数量
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 > 20232312.txt;wc -l 20232312.txt


- 统计得以上165个ip地址用于攻击。
其中,第1段:tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191'
- 功能:读取并分析指定的pcap数据包文件。
- 参数说明:
-
-n:禁用IP地址到主机名的转换。 -
-nn:禁用端口号到服务名称的转换。 -
-r botnet_pcap_file.dat:从文件botnet_pcap_file.dat中读取数据包,而不是从网络接口捕获。 -
'dst host 172.16.134.191':过滤表达式,仅显示目标地址为172.16.134.191的数据包。
-
第2段:awk -F " " '{print $3}'
- 功能:提取每行的第三个字段。
- 参数说明:
-
-F " ":指定空格作为字段分隔符(此为awk默认值,可省略)。 -
{print $3}:打印第三个字段。在tcpdump的默认输出格式timestamp src.ip.srcport > dst.ip.dstport中,第三个字段即为源IP.源端口。
-
第3段:cut -d '.' -f 1-4
-
功能:从
IP.端口格式的字符串中截取出纯IP地址部分。 -
参数说明:
-
-d '.':指定点号.作为分隔符。 -
-f 1-4:选择第1到第4个字段。例如,将192.168.1.10.55321截取为192.168.1.10。
-
第4段:sort
- 功能:对前面步骤得到的IP地址列表进行排序。这是
uniq命令正确去重的前提。
第5段:uniq
- 功能:去除排序后列表中相邻的重复行,只保留唯一的IP地址。
第6段:more > 20232312.txt
- 功能:将处理后的结果保存到文件。
- 参数说明:
-
more:此处用于分页显示,但在管道和重定向中主要起传递作用。可直接用>重定向。 -
>:重定向操作符,将标准输出覆盖写入到指定文件。 -
20232312.txt:输出文件名,命名可能基于日期(2023年12月23日)。
-
第7段:wc -l 20232312.txt
- 功能:统计最终生成的文件行数。
- 参数说明:
-l:统计行数。- 最终输出:一个数字,代表向目标IP
172.16.134.191发起连接的不同源IP的数量。
2.4.6 攻击者尝试攻击了那些安全漏洞
- 如图

攻击流量显示,攻击者尝试利用了多种漏洞: - NetBIOS漏洞:针对UDP 137端口和TCP 139/445端口,试图窃取系统信息或植入后门。
- SMB漏洞:针对TCP 445端口(如利用PsExec工具传播恶意软件)。
- Web漏洞:针对TCP 80端口,http漏洞攻击
- 邮件服务漏洞:针对TCP 25端口(SMTP)。
- 远程管理工具滥用:利用TCP 4899端口和TCP 135端口。
2.4.7 那些攻击成功了?是如何成功的
- 445端口的恶意软件传播

- 缓冲区溢出攻击获取管理员信息

3.问题及解决方案
问题:
- 在大量网络流量中准确识别出攻击者尝试利用的具体安全漏洞具有挑战性。
解决方案:
-
先按端口分类:445(SMB)、139(NetBIOS)、80(HTTP)等
-
再按协议特征过滤:
smb、http、dcerpc等协议过滤器 -
最后分析载荷内容:使用Follow TCP Stream查看具体攻击代码
特征模式识别:
-
缓冲区溢出特征:超长字符串、NOP滑板指令(0x90)
-
路径遍历特征:
../、..\等目录跳转模式 -
命令注入特征:
cmd.exe、/bin/sh等系统命令
4.学习感悟、思考等
技术层面:恶意软件分析需要综合运用静态分析和动态分析技术,网络取证则需要扎实的协议分析能力。工具的使用固然重要,但对原理的理解才是根本。
安全认知:安全是一个持续的过程,没有一劳永逸的解决方案。攻击技术在不断进化,防御手段也需要相应更新。
实践价值:理论知识与实践操作的结合至关重要。只有通过实际分析,才能真正理解攻击者的思维方式和攻击链的各个环节。
参考资料
-
腾讯元宝
-
通义千文