20232429 2025-2026-1 《网络与系统攻防技术》实验四实验报告

1.实验内容

1.1识别恶意代码的文件类型标识,进行脱壳与字符串提取。

1.2使用IDA Pro静态或动态分析所给exe文件,找到输出成功信息的方法。

1.3分析自制恶意代码样本并撰写报告。

1.4取证分析实践。

2.实验过程

2.1恶意代码文件类型标识、脱壳与字符串提取

2.1.1分析原始RaDa文件

屏幕截图 2025-11-10 102422

分析:
RaDa.exe: PE32 executable for MS Windows 4.00 (GUI),Intel i386,3 sections
PE32:指Portable Executable32位格式,是Windows可执行文件的标准格式。
for MS Windows 4.00 (GUI):说明该程序是为Windows系统开发的(“4.00”对应Windows 95/NT 4.0时代的格式),且是带图形界面(GUI)的程序。
Intel i386:表示程序基于x86架构的32位处理器编译。
3 sections:指该可执行文件包含3个段(如代码段、数据段、资源段等),是PE文件结构的组成部分。

在Windows系统下使用peid对RaDa文件进行分析,得到了图片中的内容

屏幕截图 2025-11-10 113602

2.1.2分析脱壳之后的RaDa.exe

使用“超级巡警之虚拟机自动脱壳器”对RaDa.exe进行脱壳操作,如图所示:

屏幕截图 2025-11-10 113858

打开IDA pro,分析脱壳后的RaDa_unpacked.exe

屏幕截图 2025-11-10 114345

可以分析出作者的名字:Raul Siles && David Perez

屏幕截图 2025-11-10 114409

在第00403FD400403FD4行处可以看到时间是2004年9月

2.2利用IDA Pro静态或动态分析所给的exe文件

2.2.1分析文件crackme1.exe

在powershell中分别进行以下操作:直接运行、使用参数1、使用参数1 2,效果如图

屏幕截图 2025-11-10 114818

在IDA pro中打开crackme1.exe,查看函数调用,如图所示

屏幕截图 2025-11-10 115100

在Functions-window里面查看函数流程图
屏幕截图 2025-11-10 115228

屏幕截图 2025-11-10 115515

可以看出回答还可能有一种情况,再次运行程序以验证

屏幕截图 2025-11-10 181539

2.2.2分析文件crackme2.exe

在powershell中运行crackme2.exe,效果如图所示

屏幕截图 2025-11-10 181822

可以看出crackme2.exe的运行和crackme1.exe的运行并不一样。

在IDA中打开crackme2.exe

查看crackme2.exe的函数调用

屏幕截图 2025-11-10 183437

可以看到除了运行crackme2.exe有结果以外,还有一种运行crackmeplease.exe的结果。将crackme2.exe重命名为crackmeplease.exe,再次运行。

屏幕截图 2025-11-10 184007

可以看到在powershell里面运行得到的依然是"I have an identity problem."

在cmd中再次运行

屏幕截图 2025-11-10 184618

可以看到出现了额外的结果。

2.3 分析恶意代码样本RaDa,并撰写报告

2.3.1分析RaDa的基本信息

使用命令

file RaDa.exe
md5sum RaDa.exe
exiftool RaDa.exe | grep "Time Stamp"

来查看到了Rada的文件类型、md5值和时间戳信息

屏幕截图 2025-11-10 185637

屏幕截图 2025-11-10 185647

2.3.2分析文件目的

在IDA Pro中查看脱壳后的RaDa文件,打开函数调用,看到函数sub_404FB0下有很多的子函数,分析其流程图

屏幕截图 2025-11-10 190412

如图是函数sub_404FB0的函数调用图

屏幕截图 2025-11-10 190443

打开函数sub_404FB0的具体流程图

屏幕截图 2025-11-10 191402

从图中可以分析得出:这段代码大概率是恶意程序的一部分,通过VBA字符串复制功能处理网络URL:http://10.10.10.1/RaDa 后续可能利用该URL进行网络通信如连接恶意服务器、下载木马程序、回传信息等,具备典型的恶意代码行为特征:字符串操作、网络地址调用、函数封装。

屏幕截图 2025-11-10 191740

从图中可以分析得出:这段代码是RaDa恶意程序的“资源预制模块”,通过准备网络通信、本地存储、系统持久化所需的关键字符串,为后续的远程命令执行、文件窃取/投放、开机自启等核心恶意功能铺路。是RaDa恶意程序的“基建环节”,通过批量初始化各类资源,让后续的攻击行为具备了执行所需的字符串。

屏幕截图 2025-11-10 192055

分析:1.本地目录与文件路径的初始化
mov edx, offset aCRadaBin ; "C:\\RaDa\\bin":指定恶意程序的本地目录C:\RaDa\bin,用于存储组件、可执行文件等。后续通过__vbaStrCat拼接RaDa.exe,最终构造出完整可执行文件路径如 C:\RaDa\bin\RaDa.exe
2.字符串操作函数的作用
__vbaStrCopy:复制字符串,如初始化目录路径。
__vbaStrCat:字符串拼接,如将目录与可执行文件名拼接,得到完整路径。
__vbaStrMove:字符串移动,内存中调整字符串存储位置。
__vbaFreeStr:释放字符串内存,完成操作后清理资源,避免内存泄漏。
3.恶意行为推测
这段代码的核心是构造RaDa.exe的本地完整路径,为后续行为铺路:可能用于自我复制/启动:定位自身可执行文件,实现多实例运行或自启动。可能用于加载组件:从C:\RaDa\bin目录调用其他恶意模块如插件、工具程序。

3.问题回答

(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
文件格式:PE32可执行文件,针对 MS Windows 4.00 GUI 环境,Intel i386架构,包含3个节区。加壳信息:经PEiD检测,存在UPX壳,版本范围0.89.6-1.02,连接器版本为 6.0,子系统为Win32 GUI。唯一标识:MD5哈希值为caaa6985a43225a03badd54f44a0d4c7。时间戳:编译时间为2004年10月29日19:59:58,时区 -04:00。

(2)找出并解释这个二进制文件的目的;
建立与远程控制服务器http://10.10.10.1/RaDa 的通信,通过RaDa_commands.html接收控制指令;实现文件上传upload.cgi、下载download.cgi功能,完成恶意payload投放或敏感信息窃取;通过修改Windows注册表HKLM\Software\Microsoft\Windows\Current... 路径,实现系统持久化,确保开机自启;维护本地资源目录C:\RaDa\tmpC:\RaDa\bin,存储临时文件或恶意组件。

(3)识别并说明这个二进制文件所具有的不同特性;
技术栈关联:大量使用VBA字符串操作函数__vbaStrCopy__vbaStrCat__vbaStrMove等,暗示与VBA环境或开发者技术背景的关联。网络功能:具备明确的 C2服务器路径,支持HTTP协议的文件上传/下载交互。持久化机制:通过修改HKLM注册表项实现开机自启,规避手动清理。本地资源管理:创建专用本地目录C:\RaDa\tmpC:\RaDa\bin,用于存储恶意组件、临时文件,模块化管理资源。加壳保护:采用UPX壳对代码进行压缩/加密,增加逆向分析难度。

(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
UPX加壳:通过压缩PE文件节区并加密代码,使逆向工程师无法直接分析原始指令,需先脱壳才能开展深入分析。字符串封装:通过VBA字符串函数对敏感信息,如C2地址、注册表路径进行封装操作,增加静态分析时的识别难度。

(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
分类:远程访问木马。
理由:具备远程控制核心功能如接收指令、文件传输;依赖远程服务器完成指令下发,无自我复制或自动网络传播行为,因此不属于病毒或蠕虫。

(6)给出过去已有的具有相似功能的其他工具;
SubSeven:早期知名RAT,支持远程文件管理、注册表操作、系统持久化,功能与本样本高度重叠。
NetBus:经典RAT工具,通过HTTP或自定义协议实现远程控制,具备文件上传/下载能力。

(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可行性:存在一定调查空间,但受限于时间和信息留存。环境与条件:
需依托历史恶意软件样本库如VirusTotal、MalwareBazaar等,通过MD5哈希 caaa6985a43225a03badd54f44a0d4c7检索关联情报;结合早期黑客论坛、技术社区的历史归档,追踪RaDa标识或相似字符串的讨论线索;分析样本的代码风格、字符串命名习惯,与已知恶意软件作者的技术特征做关联比对。

(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。

  • 1.基于特征码检测
    原理:提取样本的唯一标识如MD5哈希caaa6985a43225a03badd54f44a0d4c7或特有字符串如 http://10.10.10.1/RaDa 、RaDa_commands.html作为特征码。
    实现:在杀毒软件、入侵检测系统IDS中配置特征码规则,对文件或内存中的数据进行匹配。

  • 2.基于行为分析检测
    原理:监控进程的异常行为组合,如 “创建C:\RaDa\tmp目录+修改HKLM注册表项+发起对10.10.10.1的HTTP请求”。
    实现:通过端点检测与响应工具,对进程的文件操作、注册表操作、网络行为进行实时监控和关联分析。

  • 3.基于网络流量检测
    原理:识别样本与C2服务器的通信流量,如包含/RaDa/cgi-bin/download.cgi/RaDa/cgi-bin/upload.cgi的HTTP请求,或目标IP为10.10.10.1的异常流量。
    实现:在防火墙、网络入侵检测系统中配置流量规则,对HTTP路径、目标IP进行深度包检测。

  • 4.基于PE结构分析检测
    原理:识别UPX加壳的PE文件特征。
    实现:通过脚本或专用工具如PEiD、LordPE扫描PE文件的节区信息和入口点特征,判定是否存在UPX壳。

  • 5.基于字符串特征检测
    原理:扫描系统中是否存在样本的特有字符串如RaDaC:\RaDa\bin、HKLM\Software\Microsoft\Windows\Current...
    实现:通过命令行工具如grep、findstr或专用检测脚本,对文件系统、内存中的字符串进行批量检索。

4.取证分析实践

(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC定义:Internet Relay Chat互联网中继聊天的简称,是一种基于文本的实时通信协议,用于多用户在线聊天。
加入消息:客户端申请加入IRC网络时,会发送JOIN消息,格式通常为JOIN #频道名或直接连接网络服务器的认证消息。
常用TCP端口:
6667:默认明文通信端口。
6697:SSL/TLS 加密通信端口。
其他可选端口:6660-6669、7000。

(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络定义:由大量被恶意软件感染的计算机组成的网络,受黑客远程操控,用户通常不知情。
常见用途:
发起分布式拒绝服务攻击(DDoS),瘫痪目标服务器。
批量发送垃圾邮件、钓鱼邮件,传播恶意软件。
窃取用户敏感信息如账号、密码、财务数据等。
进行挖矿、点击欺诈等获利性操作。

(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
蜜罐主机与IP地址为209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10的IRC服务器进行了通信。
在Wireshark中打开botnet_pcap_file.dat文件,通过命令ip.src==172.16.134.191 and tcp.dstport==6667,筛选源IP为172.16.134.191,目的端口为6667的数据包。
过滤后的包如图

屏幕截图 2025-11-10 211103

(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
有3461个不同的主机访问了这一僵尸网络,具体过程如下:

  • 1.在Kali虚拟机中需安装软件tcpflower,通过以下命令:
sudo apt update #更新软件包
sudo apt-get install tcpflow #下载软件
tcpflow --version #查看安装版本

屏幕截图 2025-11-10 211335

  • 2.通过命令tcpflow -r botnet_pcap_file.dat “host 209.196.44.172 and port 6667”将与IP为209.196.44.172且端口为6667的主机相关的所有TCP流量数据筛选出来,执行后,tcpflow会生成report.xml报告文件,包含了TCP流量的统计信息。

屏幕截图 2025-11-10 212343

  • 3.使用命令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,精确统计访问僵尸网络服务器的不同客户端数量。

屏幕截图 2025-11-10 212447

最后得到了3461台主机访问了僵尸网络

(5)哪些IP地址被用于攻击蜜罐主机?
共有165个IP地址被用于攻击蜜罐主机,具体IP地址如图所示

屏幕截图 2025-11-10 212827

屏幕截图 2025-11-10 212843

屏幕截图 2025-11-10 212855

屏幕截图 2025-11-10 212907

屏幕截图 2025-11-10 212917

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 > 20232429_1110.txt;wc -l 20232429_1110.txt,从botnet_pcap_file.dat文件中,找出所有向主机172.16.134.191发送数据包的源IP地址,保存并统计它们的具体数值。

屏幕截图 2025-11-10 212806

(6)攻击者尝试攻击了那些安全漏洞?
在Wireshark中打开botnet_pcap_file.dat文件,分析网络流量中各种协议的分布情况和层次结构。从结果中可以看出,攻击者大部分使用了TCP数据包(占比约99.7%),也有使用少量的UDP数据包(占比约0.3%)。

屏幕截图 2025-11-10 213434

在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发起的所有TCP连接的源端口号
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 #筛选主机172.16.134.191发送的所有UDP数据包的源端口号

屏幕截图 2025-11-10 213544

分析结果可知,使用的端口有135(RPC,Windows远程过程调用)、139/445(SMB,Windows文件共享)、25(SMTP,简单邮件传输协议)、4899(Remote Administrator,远程控制软件)、80(HTTP,网页服务)。对于UDP的分析结果可知,使用的端口为137(NetBIOS,Windows网络邻居功能)。

(7)那些攻击成功了?是如何成功的?

1.TCP连接135端口

屏幕截图 2025-11-10 213654

对于TCP连接的135端口,只有三次握手的数据包,而没有后续的恶意数据包,可见135端口未被利用

2.TCP连接139端口

屏幕截图 2025-11-10 213847

可以看到遭到拒绝访问,139端口未被利用

3.TCP连接25端口

屏幕截图 2025-11-10 213921

可以看出25端口链接成功但未被利用

4.TCP连接445端口

屏幕截图 2025-11-10 214018

屏幕截图 2025-11-11 111123

可以看到攻击者删除了C:\System32\PSEXESVC.EXE的文件。

5.TCP连接4899端口

屏幕截图 2025-11-10 214057

屏幕截图 2025-11-10 214416

攻击者通过HTTP请求,发送目录遍历攻击HEAD /cgi/../../../../../winnt/system32/cmd.exe?/c+dir。

6.TCP连接80端口

屏幕截图 2025-11-10 214516

屏幕截图 2025-11-10 214720

在正常的TCP三次握手后,攻击者向80端口发送了由大量字符“A”组成的数据包,这是一个缓冲区溢出的攻击载荷。且在攻击包发送后,服务器没有返回任何RST或ICMP错误信息,说明服务器接收并处理了这个恶意请求。
流量中存在对/scripts/check.bat、/index.asp的请求,通过../目录遍历拼接系统命令如/winnt/system32/cmd.exe?/c dir C:\。这是Web目录遍历+命令注入攻击,攻击者试图通过 Web服务执行系统命令,获取目标主机的文件系统信息,为后续植入木马、组建僵尸网络做准备。

7.UDP连接137端口

屏幕截图 2025-11-10 214820

虽然有很多NBNS服务,但137端口最终未被利用

5.问题及解决

(1)powershell中无法输出运行crackmeplease.exe+"I know the secret"的预期结果

解决:切换到cmd中成功解决,输出了预期结果

屏幕截图 2025-11-10 184007

屏幕截图 2025-11-10 184618

6.实验心得

这次实验利用IDA Pro软件对RaDa程序进行的一系列分析,让我对恶意程序是如何调用函数,如何侵害计算机系统有了清晰的认识,同时对crackme1.exe、crackme2.exe和改名后的crackmeplease.exe的分析让我认识到了程序运行时,在输入不同参数的情况下函数是怎样调用的,不同版本的程序对同一参数的函数调用也有不同,如改名后的crackme2.exe对"I know the secret"参数的不同输出。同时对第四部分僵尸网络的一系列抓包等分析,让我了解了恶意代码如何通过tcp链接后,用各种方法如缓冲区溢出如发送一长串"A"等和命令注入攻击、删除系统文件来隐蔽痕迹等对主机进行侵害,甚至分析得到了3461台主机曾访问过僵尸网络的可怕数据,让我对网络安全有了更深的认识,要努力学习网安知识,保护我们的网络空间安全。

posted @ 2025-11-10 22:07  20232429马成栋  阅读(0)  评论(0)    收藏  举报