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

1. 实验内容

1.1实验要求

(1)对恶意代码样本进行识别文件类型、脱壳、字符串提取操作。
(2)使用IDA Pro静态或动态分析所给的exe文件,找到输出成功信息的方法。
(3)分析恶意代码样本并撰写报告。
(4)对于Snort收集的蜜罐主机的网络数据源进行分析。

1.2 学习内容

掌握恶意代码、僵尸网络等概念,恶意代码及普通软件的静态或动态分析方法,PEID、IDA Pro、Process Explorer等软件的使用,对网络流量的分析方法。

2. 实验过程

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

2.1.1 分析RaDa样本的文件格式、运行平台和加壳工具

利用kali的file命令,分析可得文件的格式是可执行文件exe,运行平台是win32,文件运行时有图形界面,文件包含三个段。

分析RaDa

利用软件PEID对目标文件分析,我们可以发现文件使用了UPX加壳工具,通过PEID还可以得到UPX加壳的版本等信息。

PEID文件分析

2.1.2 对RaDa进行脱壳处理并分析

利用软件PEID自带的脱壳工具对RaDa.exe进行脱壳,该工具会自动检测入口点。

PEID脱壳

脱壳完成后,得到RaDa.exe.unpacked.exe文件。

2.1.3利用字符串提取工具对脱壳后的样本进行分析

使用IDA Pro,选择PE Executable选项,对Windows下的可执行文件进行分析,然后选择经过脱壳后的RaDa.exe.unpacked.exe文件进行分析,截图如下:

打开IDA pro

然后我们通过查看信息可以可以得到RaDa.exe可执行文件的作者名称及软件制作时间

IDA分析RaDa

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

2.2.1 分析crackme1.exe

我们尝试在物理机上直接运行crackme1.exe时,可以发现在只输入一个参数时会出现“Pardon?What did you say”的输出,其他情况会出现“I think you are missing something.”的输出。因此正确的输入方式应该就是输入一个参数,所以现在我们需要找到这个正确的参数

执行crackme1可执行文件

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

crackme1

点击View->Graphs->Function calls,打开函数调用图,发现sub_401280调用了strcmp、printf等这些有关字符串处理的函数,可以合理推测它在参数判断中有重要作用

crackme1

我们进入Functions页面,然后选取sub_401280进一步查看信息

sub_401280

sub_401280_view

我们通过流程图我们可以合理推测出,我们可以尝试输入参数“I know the secret.”

输入正确参数

如图,输入正确参数后,程序输出了正确结果

2.2.2 分析crackme2.exe

直接运行crackme2.exe可以发现,它和crackme1.exe有类似之处,就是同样需要输入一个参数,不同之处在于这里还有一个认证问题

执行crackme2可执行文件

按照同样的方式打开函数调用图,发现sub_401280调用了strcmp、fprintf、putchar、puts等函数,我们对其进行分析,截图如下,

crackme2

我们同样找到Function中的sub_401280分析函数调用流程,分析可以发现这里多了一个函数参数判断流程,需要我们把函数名改为特定名称“crackmeplease.exe”

输入正确参数_2

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

2.3.1 信息获取过程

使用file命令和md5sum命令,得到RaDa.exe的摘要和基本信息。

获取信息

打开process explorer,然后运行脱壳后的Rada,双击进程,查看Strings窗口。在Strings窗口中,可以看到如下图的一些重要信息。

进程查看

详细信息
我们详细分析这些命令可以得到:
①DDoS攻击:明确包含“Starting DDoS Smurf remote attack...”指令,可发起Smurf类型的远程DDoS攻击
②文件传输操控:集成upload.cgi/download.cgi组件,通过multipart/form-data协议实现本地文件上传、远程文件下载,支持指定临时目录(C:\RaDa\tmp)
③系统持久化:通过修改注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Run\添加“RaDa”项,指向C:\RaDa\bin\RaDa.exe,实现开机自启
④注册表操控:调用RegWrite/RegRead/RegDelete接口,可读写或删除系统注册表项,含VMware Tools安装路径查询功能
⑤网络信息探测:通过WMI查询Win32_NetworkAdapterConfiguration类,获取本地启用的IP地址、MAC地址等网络配置信息
⑥浏览器操控:创建InternetExplorer.Application对象,隐藏工具栏或状态栏,导航至指定URL,可模拟表单提交操作

2.3.2 问题回答

  问题一:提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
  回答一:该可执行文件md5摘要为caaa6985a43225a0b3add54f44a0d4c7。基本信息包括:RaDa.exe是一个32位Windows GUI可执行文件,它是针对Intel x86处理器设计的,内部包含3个段

  问题二:找出并解释这个二进制文件的目的。
  回答二:核心目的是创建一个可控的僵尸网络,主要用于DDoS攻击和远程系统控制,同时通过系统持久化和隐蔽通信确保长期控制,这是一个典型的 "远程访问木马",结合了多种恶意功能

  问题三:识别并说明这个二进制文件所具有的不同特性。
  回答三:这是一个多功能远程控制工具,具备DDoS发起、文件上传下载、远程系统操控等核心恶意功能,通过修改注册表实现系统持久化自启,依赖Windows脚本宿主、VB6运行时及IE等原生组件隐蔽运行,支持命令行与图形界面交互,还能收集本地网络配置信息,兼具安全研究练习与实际攻击工具的双重特性。

  问题四:识别并解释这个二进制文件中所采用防止被分析或逆向工程的技术。
  回答四:采用UPX加壳技术。

  问题五:对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
  回答五:属于远程访问木马。理由是:其核心功能聚焦于为攻击者提供对受感染系统的远程控制能力,包括执行命令、文件上传下载、注册表操作、浏览器操控、发起DDoS攻击等,且通过修改注册表实现持久化驻留;同时,未体现病毒“依附其他文件传播”或蠕虫“自我复制并主动扩散至其他系统”的特性

  问题六:给出过去已有的具有相似功能的其他工具。
  回答六:BackOrifice、SubSeven

  问题七:可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
  回答七:该二进制文件的开发者是Raul Siles && David Perez。在IDA Pro和Process Explorer中均可以找到开发作者的信息。

  问题八:给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
  回答八:我认为可以采用基于特征码的检测,基于启发式的检测,沙箱检测,基于网络流量分析的检测,基于日志分析的检测的方式检测该恶意软件。
  方法一: 基于特征码的检测方法。通过分析恶意软件的二进制代码提取唯一标识特征,建立特征数据库进行比对检测。静态分析恶意软件样本,提取关键特征序列(如特定API调用序列、字符串常量)或者使用哈希算法(MD5、SHA-256)生成文件数字指纹
  方法二:行为动态分析检测。在受控环境中运行可疑程序,监控其系统行为特征。例如文件操作(如创建、修改、删除系统关键文件等)、进程行为(如进程注入、远程线程创建、进程伪装等)、网络活动(如异常外联、DNS查询模式、端口扫描行为等)、权限提升(如特权操作等)
  方法三:启发式分析检测。通过代码结构分析和行为模式识别预测恶意意图。具体技术如静态启发:反汇编分析控制流图(CFG),检测可疑代码模式
  方法四:内存取证检测。直接分析物理内存镜像,检测进程隐藏、代码注入等高级威胁。具体技术如进程列表对比:对比PSAPI与EPROCESS结构体,发现隐藏进程
  方法五:机器学习异常检测。使用机器学习算法建立正常行为基线,检测统计异常。检测资源特征,如CPU使用模式、文件访问频次、网络连接周期

2.4 取证分析实践

2.4.1 IRC

  问题:
  (1)IRC是什么?
  (2)当IRC客户端申请加入一个IRC网络时将发送哪个消息?
  (3)IRC一般使用那些TCP端口?
  回答:
  (1)IRC是互联网中继聊天(Internet Relay Chat)的缩写,是一种基于服务器-客户端架构的文本即时通信协议,用户可通过IRC客户端连接到IRC服务器,加入聊天频道或进行一对一实时文本交互,曾广泛应用于在线交流、技术讨论及早期黑客协作等场景。
  (2) 客户端申请加入IRC网络时,需发送两类关键注册消息:一是NICK<昵称>格式的NICK消息,用于指定用户在网络中的唯一昵称;二是USER<用户名><主机名><服务器名>:<真实姓名>格式的USER消息,用于提供用户身份信息,这两条消息是服务器验证通过并允许客户端接入网络的必要前提。
  (3)IRC常用的TCP端口主要包括:默认明文传输端口6667(最常用的标准端口)、SSL/TLS加密传输端口6697(用于安全通信场景),以及早期常用的6660-6669端口段(部分服务器仍支持该段明文端口连接)。

2.4.2 僵尸网络

  问题:
  (1)僵尸网络是什么?
  (2)僵尸网络通常用于什么?
  回答:
  (1)僵尸网络是指由攻击者通过恶意软件(如远程访问木马、蠕虫等)感染大量计算机或智能设备,再通过命令控制服务器集中操控这些“僵尸主机”形成的受控网络,被感染设备的用户通常不知情,整个网络由攻击者秘密掌控,可按照指令协同执行各类操作。
  (2)僵尸网络通常用于发起分布式拒绝服务(DDoS)攻击、大规模发送垃圾邮件或钓鱼邮件、窃取用户隐私信息、非法挖矿获取虚拟货币、传播勒索软件或其他恶意程序,部分还会被用于出租给第三方,成为网络犯罪的“工具平台”。

2.4.3 蜜罐主机

  问题:蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?
  回答:通过Wireshark打开botnet_pcap_file.dat文件,输入筛选ip.src == 172.16.134.191 and tcp.dstport == 6667查看6667端口IRC明文传输情况,可以看到蜜罐主机和5个IRC服务器通信,这些服务器IP分别是:209.126.161.29;66.33.65.58;66.241.174.144;217.199.175.10;209.196.44.172.

蜜罐主机与IRC交互

2.4.4 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

为了获得不同主机访问数,我们需要实用工具tcpflow,我们通过以下命令下载:

sudo apt update 
sudo apt-get install tcpflow
tcpflow --version

tcpflow下载成功

然后我们使用工具tcpflow,筛选目的ip为209.196.44.172 目的端口为6667的数据

tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"

筛选数据包

接下来我们通过以下命令来计算不同主机的访问数,命令如下

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

获得访问的主机数

2.4.5 哪些IP地址被用于攻击蜜罐主机?

接下来我们提取并整理所有向目标主机172.16.134.191发送数据的源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 > 20232321_test.txt

提取地址

接下来我们查看存放源IP地址的文档,查看部分源IP地址

more  20232416_test.txt

查看部分源IP地址

2.4.6 攻击者尝试攻击了那些安全漏洞?

在Wireshark中打开将botnet_pcap_file.dat文件,选择点统计->协议分级。分析各种协议的分布情况从分析结果中可以看出99.7%是TCP传输,0.3%通过UDP传输。

查看UDP、TCP占比

接下来我们查看TCP、UDP攻击端口

#TCP攻击端口
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
#UDP攻击端口
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

查看TCP、UDP

2.4.7 那些攻击成功了?是如何成功的?

(1)135端口,未成功。因为在进行TCP三次握手的过程中,发送[FIN, ACK]包主动断开连接。

135端口

(2)139端口,未成功。因为在端口连接过程中,主机发送RST包中断连接。

139端口

(3)25端口,未成功。因为主机在建立连接后又迅速断开,无稳定通道。

25端口

(4)445端口,攻击成功。因为我们可以观察到数据包中存在NT Create AndX(文件创建)、Write AndX(数据写入)等操作,说明攻击者已获取目标主机的操作权限,可执行文件读写。

445端口

(5)4899端口,攻击成功。因为我们可以观察到流量中出现大量[PSH, ACK]包。这是远程控制工具传输指令或数据的典型特征,说明攻击者已经建立控制信道,可向目标主机发送操作指令。

4899端口

(6)80端口,攻击成功。因为我们能看到攻击者可以与该端口建立完整的HTTP 协议请求与响应,可以用于信息收集等操作。

80端口

(7)137端口,未成功。因为我们只能看到攻击者对目标的信息侦察。

137端口

3. 遇到的问题解决方案

问题:无法正确运行crackmeplease.exe可执行文件,

问题1

解决方案:在PowerShell中运行可执行文件的命令为.\crackmeplease.exe,这就与正确的参数不同,所以我们需要在cmd命令行中执行该命令

4. 实验体会及感悟

  通过本次恶意代码分析与网络取证实验,我不仅初步掌握了PEID脱壳、IDA Pro静态/动态分析、Wireshark流量抓取等工具的实操技巧,还更深入地理解了恶意代码的加壳防护、持久化驻留、远程控制等核心机制,以及僵尸网络、IRC协议在网络攻击中的应用逻辑。从对RaDa样本的文件标识、功能拆解,到破解crackme系列程序的参数验证逻辑,再到对蜜罐主机网络数据的取证分析,每一步操作都让我感受到理论与实践结合的重要性——原本抽象的恶意代码分类、检测方法,在亲手完成脱壳、字符串提取、端口攻击分析后变得清晰可感。实验中解决PowerShell与CMD运行命令差异的小插曲,也让我意识到细节对实验成败的影响,培养了严谨排查问题的思维。此次实验更让我深刻认识到网络安全领域的复杂性与重要性,未来我将继续夯实工具使用与技术分析能力,树立主动防御意识,为应对各类网络安全威胁积累实战经验。

posted @ 2025-11-10 21:50  问我回家发给我  阅读(6)  评论(1)    收藏  举报