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

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

1.实验内容

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

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

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

1.4取证分析实践。

2.实验要求

2.1对 rada 恶意代码进行类型识别、脱壳、字符串提取与分析。

2.2用 IDA Pro 分析两个 exe 程序,寻找成功输入。

2.3撰写 rada 恶意代码分析报告。

2.4基于 Snort 数据,完成 Windows 2000 系统取证分析。

3.实验过程

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

3.1.1 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具

在Kali Linux终端中使用file命令对Rada.exe文件进行分析,得到文件格式为Portable Executable 32-bit,是32位 Windows 系统编译的,文件是一个图形用户界面(Graphical User Interface)程序,运行时会显示窗口界面
image
用PEID可以发现文件使用了UPX加壳工具,开发者是Markus&Laszlo。
image

3.1.2 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理

用软件“超级巡警之虚拟机自动脱壳器”对RaDa.exe进行脱壳处理,生成RaDa_unpacked.exe文件
image

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

打开IDA Pro,选择第一个选项PE Executable,选择脱壳之后的样本,一直点击确定,然后打开Strings界面
image

在该界面发现疑似作者名称的字符串[c] Raul Siles && David Perez,同时也可以发现软件制作时间为2004年9月
image

3.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe

3.2.1 分析crackme1.exe

使用./crackme1.exe命令运行文件,在输入少于或多于一个参数时会输出“I think you are missing something.”在输入一个参数时会输出“Pardon?What did you say”,由此可以推断应该输入一个正确的参数。
image

打开IDA Pro,选择选项PE Executable,选择crackme1.exe,打开IDA View-A页面。
image

点击View->Graphs->Function calls,打开函数调用图,发现sub_401280调用了strcmp、printf等这些有关字符串处理的函数,很可能是crackme程序的注册验证核心模块——通过strcmp比对用户输入的注册码与正确值,再通过printf输出验证结果
image

点击View->Graphs->Flow chart,打开函数流程图,对函数流程图进行分析。
image

sub_401280是通过判断参数arg_0和字符串比较(strcmp)来验证用户输入是否合法,合法则输出成功提示,否则输出错误信息。观察loc_401202块,发现是strcmp比较输入字符串与"I know the secret"。若比较结果相等,则跳转到成功分支;否则进入失败分支
按分析输入相应的参数,程序输出了成功信息。
image

3.2.2分析crackme2.exe

运行crackme2.exe,发现它像上一个exe文件一样.
image

打开函数调用图,发现sub_401280调用了strcmp、fprintf、putchar、puts这些字符串处理函数,说明sub_401280是通过strcmp比对用户输入的注册码与正确值,再通过各类输出函数反馈验证结果
image

image

sub_401280是通过多轮字符串比较(strcmp)对用户输入进行分级验证,输入匹配 “crackmeplease.exe”进入 loc_401305 块,执行字符串比较逻辑;输入匹配 “I know the secret”:进入 loc_401353 块,再次通过 strcmp 验证。若匹配则进入成功分支;否则进入失败分支。若匹配则进入下一级验证;否则跳转到失败提示分支合法则触发成功逻辑,否则输出不同的错误提示
image

3.3分析恶意代码样本rada,并撰写报告

3.3.1信息获取过程

通过输入以下命令对RaDa文件的进行文件类型识别、完整性验证以及时间戳分析
image

文件类型分析(file RaDa.exe)
输出显示 RaDa.exe 是 PE32 格式的 Windows 可执行程序,属于 32 位图形界面(GUI)程序,运行于 Intel x86 架构,包含 3 个程序段(sections)。这说明它是为 Windows 系统开发的桌面应用程序,而非命令行工具或其他平台程序。
 完整性校验(md5sum RaDa.exe)
生成的 MD5 哈希值为 caaa6985a43225a0b3add54f44a0d4c7。MD5 是一种哈希算法,用于验证文件的完整性和唯一性—— 如果文件内容被修改(哪怕只有一个字节),哈希值会完全不同。
编译时间戳(exiftool RaDa.exe | grep "Time Stamp")
输出显示时间戳说明该程序编译于 2004 年 10 月 29 日

3.3.2分析文件的目的

在IDA Pro中分析脱壳后的RaDa文件。打开函数调用图
image

打开函数流程图
image

查看sub_404FB0流程图发现,该文件主要通过修改注册表和定义恶意路径,以实现恶意软件的持久化驻留与远程控制。
image

命令mov edx, offset aHttp10_10_10_1 是 32 位 x86 架构下的 “地址加载指令”,作用是 将http://10.10.10.10/RaDa的内存偏移量(地址)赋值给 EDX 寄存器,为后续网络操作或字符串处理做准备。
这些mov edx, offset指令分别将字符串"RaDa_commands.html"、"cgi-bin"、"download.cgi"、"upload.cgi"的内存偏移地址加载到edx寄存器,为后续通过__vbaStrCopy函数进行字符串复制操作提供源地址,是程序构建与http://10.10.10.10/RaDa服务器交互的URL路径组件,以实现指令列表访问、CGI 目录操作及文件下载上传等网络功能的关键步骤。
image

1. mov edx, offset aCRadaTmp ; "C:\RaDa\tmp"
功能解析:该指令将字符串 "C:\RaDa\tmp" 的内存偏移地址加载到 edx 寄存器,用于指定程序的临时文件存储目录,为后续的临时文件创建、读写等本地文件操作提供路径依据。
2. offset aSoftwareMicros ; "Software\Microsoft\Windows\CurrentVersion"
功能解析:此偏移操作指向的字符串 "Software\Microsoft\Windows\CurrentVersion" 是 Windows 注册表的一个关键路径,用于程序访问或修改系统注册表中与 Windows 当前版本相关的配置项,实现系统级的配置读写或状态标记。
3. mov edx, offset aCRadaBin ; "C:\RaDa\bin"
功能解析:该指令将字符串 "C:\RaDa\bin" 的内存偏移地址加载到 edx 寄存器,用于指定程序的二进制文件或资源存储目录,为程序自身组件的加载、调用或更新等本地目录交互提供路径支持。
这些指令分别将本地目录路径 "C:\RaDa\tmp"“C:\RaDa\bin” 和系统注册表路径 "Software\Microsoft\Windows\CurrentVersion" 的内存偏移地址加载到寄存器或用于偏移操作,是程序实现本地文件系统管理(临时目录、程序目录操作)和系统注册表交互(配置读写)的关键步骤,为其本地资源调度与系统级配置操作提供了路径基础。
尝试运行脱壳后的RaDa进程,无法正常运行。
image

3.3.3回答问题

(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
该文件为RaDa.exe,PE32格式32位Windows GUI可执行程序,运行于Intel x86架构,含3个程序段。核心识别信息包括MD5哈希值caaa6985a43225a0b3add54f44a0d4c7、编译时间戳2004年10月29日、UPX加壳特征,以及字符串标识“[c] Raul Siles && David Perez”“otM 32 - September 2004”,可通过这些信息精准识别同一样本。
(2)找出并解释这个二进制文件的目的;
文件核心用途是实现恶意软件的持久化驻留与远程控制。通过修改Windows注册表关键路径(如 HKLM\Software\Microsoft\Windows\CurrentVersion)实现开机自启,定义本地目录(C:\RaDa\tmp、C:\RaDa\bin)存储恶意组件与临时文件,同时与远程服务器http://10.10.10.10/RaDa建立通信,通过 RaDa_commands.html、cgi-bin 等组件实现指令接收、文件上传下载等远程操控功能。
(3)识别并说明这个二进制文件所具有的不同特性;
持久化机制:通过注册表修改实现开机自动运行,确保恶意功能持续生效。
远程通信:内置固定远程服务器地址,支持指令交互与文件传输。
本地资源管理:创建专属目录结构,规范存储恶意组件与临时数据。
图形界面特性:作为 GUI 程序,可能包含交互界面用于配置或控制。
加壳保护:采用 UPX 加壳技术,增加逆向分析难度。

(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
加壳保护:使用 UPX 0.89.6-1.02/1.05-2.90 加壳工具对程序进行压缩与加密,隐藏原始代码结构,阻碍静态分析。
字符串混淆:核心功能相关字符串虽未完全加密,但通过代码逻辑封装,降低直接关联分析效率。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
属于远程控制木马(RAT)。理由如下:
核心功能是通过网络连接接收远程服务器指令,实现对目标主机的控制。
具备持久化驻留能力,符合木马 “长期潜伏、隐蔽控制” 的核心特征。
不具备自我复制与传播功能,区别于蠕虫;未以感染其他文件为目的,区别于病毒。
(6)给出过去已有的具有相似功能的其他工具;
NetBus:具备远程桌面控制、文件传输、命令执行等功能,同样依赖客户端 - 服务器架构。
Poison Ivy:专注于远程控制与数据窃取,支持注册表修改实现持久化,与 RaDa 功能逻辑高度相似。
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以调查到开发作者。
环境条件:需结合字符串提取结果 “[c] Raul Siles && David Perez”,通过网络安全数据库、恶意代码样本库检索该作者组合的相关记录。
限定条件:需确保字符串为真实作者标识而非伪造;依赖公开的恶意代码溯源数据、开发者历史披露信息或执法机构共享的溯源线索;若作者未在其他样本或公开渠道留下关联痕迹,则调查难度会显著增加。
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
1、基于特征码检测:提取脱壳后程序的 MD5 哈希值(caaa6985a43225a0b3add54f44a0d4c7)、UPX 加壳特征码及关键字符串(如 “Raul Siles && David Perez”“http://10.10.10.10/RaDa”),构建特征库,通过杀毒软件或 IDS 匹配检测。
2、注册表监控检测:监控 HKLM\Software\Microsoft\Windows\CurrentVersion 等关键路径的修改行为,若发现指向 C:\RaDa\bin\RaDa.exe 的自启项,触发告警。
3、网络流量检测:捕获目标主机与 10.10.10.10 的通信流量,或包含 RaDa_commands.html、cgi-bin 等关键词的 HTTP 请求,识别异常连接。
4、目录与文件检测:监控系统中是否创建 C:\RaDa\tmp、C:\RaDa\bin 等可疑目录,或存在名为 RaDa.exe、RaDa_unpacked.exe 的未知文件。
5、行为分析检测:通过沙箱环境运行程序,监控其是否存在注册表修改、远程连接、目录创建等组合恶意行为,基于行为特征判定威胁。

3.4取证分析实践

3.4.1回答问题

(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC是一种基于TCP/IP协议的实时通信协议,允许用户通过客户端连接到IRC服务器,加入频道进行多人聊天或一对一通信。
加入IRC网络的消息:客户端需发送两个核心消息——NICK(设置用户名)和 USER(提供用户标识信息,格式为 “用户名 主机名 服务器名 真实姓名”)。
常用TCP端口:默认端口为 6667(明文传输),其他常用端口包括 6668、6669、7000(SSL 加密传输)。
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是由攻击者控制的大量受感染计算机(僵尸机)组成的分布式网络,这些僵尸机被植入恶意代码后,可在攻击者指令下协同执行特定操作。
主要用途:发送垃圾邮件、发起 DDoS 攻击、窃取目标主机数据、挖矿、传播恶意代码等非法活动,攻击者通过控制服务器(C&C 服务器)向僵尸机下发指令。
(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.src172.16.134.191 and tcp.dstport6667,筛选源IP为172.16.134.191,目的端口为6667的数据包。经过分析可知,蜜罐主机与4台IRC服务器进行通信,IRC服务器的IP分别是209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10。
image

(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
有3461个不同的主机访问了这一僵尸网络
在Kali虚拟机中安装软件tcpflower,输入命令apt-get install tcpflow即可下载成功
image

通过命令tcpflow -r botnet_pcap_file.dat “host 209.196.44.172 and port 6667”,使用tcpflow,从botnet_pcap_file.dat文件中,筛选出与IP为209.196.44.172且端口为6667的主机相关的所有TCP流量数据。
image

该目录下新增了三个文件
image

image

看第一个文件,使用命令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 服务器通信日志(209.196.044.172.06667-172.016.134.191.01152)中提取irc5.aol.com服务器返回的#x相关频道用户列表,经过滤、去重、排序后统计唯一用户数量,具体逻辑为:先筛选含:irc5.aol.com 353(IRC 频道用户列表响应标识)的行,剔除前缀冗余字符,将用户名按空格拆分换行,去除回车符和空行,去重排序后最终输出唯一用户总数
image

从输出中可以看到有3461个不同的主机访问了这一僵尸网络。
(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 > 20222408.txt;wc -l 20232418.txt,将攻击蜜罐主机的ip筛选出来并输出至文件中。该命令先通过 tcpdump 从 botnet_pcap_file.dat 数据包文件中筛选出目标主机为 172.16.134.191 的网络流量,再用 awk 提取源 IP 字段、cut 截取完整 IP 地址,经排序去重后将结果保存到 20232418.txt,最后通过 wc -l 统计该文件行数(即与目标主机通信的唯一源 IP 数量),核心用于分析 botnet 相关数据包中指向特定目标的独立通信源。
image

总计有165个IP地址用于攻击蜜罐主机
image
image

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

在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数据包的源端口号。
image

对于TCP的分析结果可知,使用的端口有135(RPC,Windows远程过程调用)、139/445(SMB,Windows文件共享)、25(SMTP,简单邮件传输协议)、4899(Remote Administrator,远程控制软件)、80(HTTP,网页服务)。对于UDP的分析结果可知,使用的端口为137(NetBIOS,Windows网络邻居功能)。
(7)那些攻击成功了?是如何成功的?
成功的攻击有:TCP连接得到445端口、4899端口、80端口。
(1)135端口
image

对于TCP连接的135端口,只有三次握手的数据包,而没有后续的恶意数据包,且客户端很快发送FIN请求断开连接。因此135端口虽被成功连接,但未被成功利用。
(2)139端口
image

对于TCP连接的139端口,具有三次握手的数据包,且攻击者尝试访问共享目录\PC0191\c,但服务器返回RST拒绝访问,后续也没有恶意数据包。因此139端口虽然被成功连接,但未被成功利用。
(3)25端口
image

对于TCP连接的25端口,具有三次握手的数据包。但接建立后,没有后续的恶意数据包,且服务器很快发送FIN,ACK请求断开连接。因此25端口虽然被成功连接,但未被成功利用。
(4)445端口
image

对于TCP连接的445端口,已被攻击者成功利用。攻击者的具体攻击方式为:初始连接→认证→权限扩张→恶意文件操作。且攻击者能够删除System32目录下的文件,说明它可能通过漏洞利用或则和弱口令攻击的方式获得了管理员权限。这属于SMB漏洞利用。
(5)4899端口
image

有大量的PSH包,表现出攻击行为。
(6)80端口
image

有大量包含一长串“c”的包,表现出缓冲区溢出攻击的行为。此后也有大量数据交互包,表现出攻击成功。
(7)UDP连接137端口
image

对于UDP连接的137端口,虽然具有大量的NetBIOS服务扫描活动,但数据包内容均为正常的名称查询与响应,未包含任何攻击载荷,应当未被攻击者成功利用。

4.问题及解决方案

4.1脱壳失败问题

问题:初始尝试使用IDA Pro自带脱壳功能,未成功识别UPX壳的具体版本,脱壳后程序无法正常加载分析。
解决方案:更换“超级巡警之虚拟机自动脱壳器”,该工具明确支持UPX0.89.6-1.02/1.05-1.22 版本,成功生成脱壳后的 RaDa_unpacked.exe 文件,后续IDA分析正常。

4.2IDA Pro函数流程图分析混乱问题

问题描述:分析crackme2.exe的sub_401280函数时,因多轮字符串比较逻辑嵌套,流程图分支复杂,难以快速定位核心验证逻辑。
解决方案:先通过Strings功能提取程序中所有字符串,筛选出疑似验证关键词(如 “crackmeplease.exe”“I know the secret”),再在流程图中通过字符串交叉引用,快速定位对应的 strcmp 比较节点,简化分析路径。

5.学习感悟、思考等

本次免杀原理及实践实验,让我系统掌握了恶意代码分析、逆向工程与网络取证的核心方法,收获颇丰。在恶意代码分析部分,从文件类型识别、脱壳到 IDA Pro 静态动态分析,我深刻体会到 “层层拆解、抽丝剥茧” 的分析思路——UPX 脱壳让我理解了恶意代码常用的反分析手段,字符串提取与函数流程图分析则教会我如何定位核心恶意功能。
在 crackme 程序分析中,通过strcmp函数交叉引用快速找到验证关键词的方法,让我意识到逆向分析并非 “盲目浏览代码”,而是要结合程序运行反馈与工具功能精准突破。而网络取证部分,Wireshark的数据包筛选、tcpflow的流量提取与tcpdump的命令行分析,让我熟悉了从海量数据中挖掘攻击痕迹的技巧,尤其是成功定位IRC服务器通信、SMB 漏洞利用等攻击行为,让我对僵尸网络的工作原理有了直观认知。
实验中也遇到了不少挫折,如脱壳工具选择不当导致分析受阻、流程图复杂难以梳理逻辑等,但通过查阅资料、更换工具、优化分析思路,最终都成功解决。这让我明白,网络攻防技术的掌握离不开实践积累,只有在不断解决问题的过程中,才能提升技术熟练度与应急处理能力。

posted @ 2025-11-09 21:24  淮南溪  阅读(3)  评论(0)    收藏  举报