20222401 2024-2025-1 《网络与系统攻防技术》实验四实验报告
1.实验内容
1.1基本概念
1.1.1什么是恶意代码
首先,恶意代码是一串实现特定功能的代码,而特定功能在这里特指具有恶意目的的功能实现,可以理解为按照攻击者的意愿进行运行的代码。
按照特征以及行为的不同,大概分为以下几类:
- 计算机病毒
- 蠕虫(病毒)
- 后门
- 木马
- 僵尸网络
- RootKit
1.1.2恶意代码分析技术
分为静态分析和动态分析两种方式。
- 静态分析主要是分析诸如特征码,关键词等,或者是分析内部结构,运行逻辑等来判定代码段是否为恶意代码。
- 动态分析是在可控的环境下运行未知代码,然后观察行为是否满足恶意代码的要求。
1.2实验内容
1.2.1恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
- 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
- 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
- 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
1.2.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
1.2.3分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
- 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
- 找出并解释这个二进制文件的目的;
- 识别并说明这个二进制文件所具有的不同特性;
- 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
- 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
- 给出过去已有的具有相似功能的其他工具;
- 可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
- 给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
1.2.4取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
- IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
- 僵尸网络是什么?僵尸网络通常用于什么?
- 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
- 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
- 哪些IP地址被用于攻击蜜罐主机?
- 攻击者尝试攻击了那些安全漏洞?
- 那些攻击成功了?是如何成功的?
2.实验过程
2.1恶意代码文件类型标识、脱壳与字符串提取
2.1.1文件格式和类型识别
基础的解压操作和文件导入省略。
首先,我们输入下列命令
file RaDa.exe

这个结果告诉我们,RaDa.exe 是一个PE格式的32位可执行文件,有GUI界面,基于Intel 80386处理器,可以直接在Windows操作系统上运行,包含三个节。
接下来输入以下命令:
binwalk RaDa.exe

没有更多的可用信息,剩下的信息需要我们脱壳才能看到。
2.1.2脱壳处理
使用脱壳软件对RaDa.exe进行脱壳,得到RaDa_unpacked.exe

2.1.3文件分析
接下来把这个文件放到IDA中进行分析。

我们可以看清楚的看到作者的名字是Raul Siles和David Perez,时间是2004年9月
2.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
将crackme1.exe安放在kali以及Windows的过程就省略了,只要保证路径正确就行。
首先在kali中使用file命令来查看基本信息(上面用过)

很明显,这个是一个32位的Windows程序,我的电脑虽然是64位的,但是也兼容32位程序。
接下来,我们在IDA中打开程序的反汇编。

我自己没看懂反汇编和运行逻辑,但是我们可以根据函数名进行猜测。由于在前期的运行中,I think you are missing something.和Pardon? What did you say?均已出现,那么我们有理由认定剩下的两句是我们要找的东西。再根据语义,我们猜测I know the secret是我们需要的参数,下面进行验证。

验证成功,同理,我们也可以得出第二个程序的口令是crackmeplease.exe "I know the secret"

2.3分析一个自制恶意代码样本rada
2.3.1基础分析
首先运行ProcessExplorer中看到已经存在的软件。

然后运行脱壳之后的rada.exe,弹出提示框之后不要点确定。

然后就可以在ProcessExplorer中看到已经存在的rada.exe进程了。

然后我们点击右上角的Strings,就会出现下面的文字

这个程序的攻击流程如下:
首先,该程序利用HTTP协议连接到指定的网页(10.10.10.10/RaDa/RaDa_commands.html),可能是为了下载恶意软件组件或接收远程指令。通过cgi-bin目录下的download.cgi和upload.cgi脚本,程序能够下载并上传文件,这表明它具有一定的网络通信和文件操作能力。
接着,程序在目标主机的C盘中创建一个名为C:/RaDa/tmp的文件夹,用于存放临时文件或恶意软件组件。同时,它将RaDa.exe文件复制到C:\RaDa\bin目录中,这是恶意软件的主要可执行文件。
为了确保恶意软件能够在系统启动时自动运行,程序添加了一个注册表项:HKLM\Software\Microsoft\Windows\CurrentVersion\Run\。通过将RaDa.exe的路径添加到该注册表项中,恶意软件能够在Windows启动时自动执行。
此外,程序还添加了一个与VMware Tools相关的注册表项:HKLM\Software\VMware, Inc.\VMware Tools\InstallPath。
除了上述操作外,该程序还具有执行DDoS攻击的能力。通过利用特定的网络协议和漏洞,程序可以发动分布式拒绝服务攻击,导致目标系统瘫痪或无法访问。
2.3.2补充说明
- 识别并说明这个二进制文件所具有的不同特性
这个文件能够修改注册表,复制文件到C盘,实现远程控制以及DDoS攻击。 - 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
这个文件采用了UPX加壳,尽管我们已经对文件进行过脱壳,但是还是存在很多乱码。 - 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
这个样本是典型的后门程序。从最终的目的来看,样本就是要获取本机的控制权限。 - 给出过去已有的具有相似功能的其他工具
msfvenom,之前用来做监听的。 - 可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
没有问题,我们在前面的实践中就已经得到作者的名字了。但是前提是要对文件进行脱壳,这样才能看到作者的名字。 - 给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
- 基于特征码的检测方法
特征码检测是一种通过扫描文件内容,查找与已知恶意软件样本中特有的字符串或代码片段(即特征码)相匹配的方法。通过提取恶意软件样本中的独特字符串,如“RaDa”、“RaDa.exe”、“C:\RaDa\bin”等作为特征码,并利用现有的安全软件,如杀毒软件,将这些特征码加入其数据库中。当安全软件扫描系统文件时,若检测到与特征码匹配的内容,则判定为恶意软件。 - 基于行为分析的检测方法
行为分析是通过监控和分析软件在运行过程中的行为,如文件操作、网络活动、进程创建等,来判断其是否为恶意软件。通过监控系统中所有进程的活动,特别是那些涉及创建、修改或删除关键系统文件(如C:\RaDa\目录及其子文件)的行为。此外也需要分析网络流量,寻找与10.10.10.10的HTTP通信,特别是下载和上传文件的活动,监控进程间通信,特别是那些与RaDa.exe进程相关的活动。 - 基于网络流量的检测方法
通过分析网络流量中的数据包内容,寻找与恶意软件通信相关的特征。利用网络监控工具,如入侵检测系统(IDS)或入侵防御系统(IPS),对进出网络的数据包进行实时分析。设置规则来匹配与RaDa恶意软件通信相关的HTTP请求和响应,如特定的URL路径(/RaDa/RaDa_commands.html)、文件上传和下载请求等。对可疑流量进行深度包检测(DPI),以进一步确认其是否为恶意软件通信。 - 基于系统日志的检测方法
通过分析系统日志,如Windows事件查看器中的日志,来寻找与恶意软件活动相关的痕迹。通过定期查看系统日志,特别是与安全相关的日志条目,如登录失败、文件访问异常等。搜索与RaDa恶意软件相关的日志条目,如C:\RaDa\目录的创建、修改或删除操作记录。分析进程创建和终止日志,查找与RaDa.exe相关的活动。 - 基于沙箱环境的检测方法
将未知或可疑软件放入一个隔离的虚拟环境中运行,以观察其行为并判断其是否为恶意软件。使用沙箱工具(如沙箱模拟器、虚拟机等)来运行RaDa恶意软件的样本或可疑文件。监控沙箱环境中的文件操作、网络活动、进程创建等行为。分析沙箱环境生成的报告,以确认软件是否为恶意软件及其具体行为。
2.4Windows 2000系统被攻破并加入僵尸网络的取证分析
2.4.1IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC是一种网络聊天协议,允许用户通过因特网进行实时聊天。它基于TCP/IP协议,使用特定的端口进行通信,并支持多种聊天功能,如创建聊天室、发送和接收消息等。
当IRC客户端申请加入一个IRC网络时,它会发送一个特定的消息来请求连接到IRC服务器。这个消息通常包括客户端的标识信息、要连接的服务器地址和端口号等。具体的消息格式和内容可能因不同的IRC客户端和服务器实现而有所不同。在成功连接到服务器后,客户端还需要发送一系列的消息来注册用户、加入聊天室等。
IRC默认使用TCP端口6667进行通信。这是IRC协议的主要通讯端口,用于客户端与服务器之间的数据传输。如果端口6667被阻塞或无法使用,IRC客户端和服务器可能会尝试使用其他TCP端口进行连接。这些备用端口可能因不同的IRC网络和服务器配置而有所不同。
2.4.2僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是指由大量被恶意软件感染的计算机(Bots)组成的网络,这些计算机通常由一个或多个远程攻击者(Botmaster)控制。
僵尸网络的常见用途有DDoS攻击,发送垃圾邮件,加密货币挖矿,作为恶意软件的分发平台等。
2.4.3蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
使用wireshark打开botnet_pcap_file.dat文件。
设置过滤命令为ip.src == 172.16.134.191 && tcp.dstport == 6667

一共发现以下5个IP地址。
66.33.65.58
63.241.174.144
217.199.175.10
209.196.44.172
209.126.161.29
2.4.4在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
输入apt install tcpflow

然后把刚才的数据包文件拖入虚拟机,并输入以下命令
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 --text "^: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个主机。
2.4.5哪些IP地址被用于攻击蜜罐主机?
输入下列命令来获取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 > ipaddr.txt;wc -l ipaddr.txt

然后输入下列命令查看文件情况
cat ipaddr.txt

2.4.6攻击者尝试攻击了那些安全漏洞?
主要是TCP和UDP的安全漏洞。
2.4.7那些攻击成功了?是如何成功的?
TCP端口下的445的蠕虫攻击是成功的。
输入tcp.dstport==445 && ip.dst == 172.16.134.191

可以观察到,数据包内含有一个名为PSEXESVC.EXE的文件。PsExec是Sysinternals Suite中的一个工具,由Mark Russinovich开发。该工具最初的设计目的是为系统管理员提供便利,使他们能够通过在远程主机上执行命令来完成维护任务。然而,由于其高度的便捷性,它后来被不法分子利用于内网渗透攻击中。具体来说,它被视为一种Dv1dr32蠕虫,且每个接入的IP地址返回的信息中都包含有“\PIPE\ntsvcs”。这里的“\Pipe\Ntsvcs”是一个命名管道,它作为服务控制管理器(SCM)与特定的服务控制进程(SCP)之间进行远程过程调用的接口。正是通过这一接口,攻击者成功实现了攻击。
3.问题及解决方案
- 问题1:binwalk损坏
- 问题1解决方案:https://blog.csdn.net/mengmeng0510/article/details/120812017
4.学习感悟、思考等
经过本次实验,我对恶意代码的分析与取证有了更为深入的理解和实践经验。从最初的恶意代码文件类型识别、脱壳与字符串提取,到使用IDA Pro进行静态或动态分析,再到自制恶意代码样本的详细分析,每一步都让我感受到了信息安全领域的复杂性。
在使用IDA Pro进行静态或动态分析时,我感受到了逆向工程的魅力。尽管看不懂反汇编,但是通过仔细分析crackme1.exe和crackme2.exe,我还是逐渐找到了特定输入,使其能够输出成功信息。在取证分析实践中,我感受到了网络安全的重要性。通过对Snort收集的蜜罐主机网络数据源的分析,我了解了IRC、僵尸网络等网络攻击手段的基本概念和原理,并掌握了如何识别和分析网络攻击的方法。
浙公网安备 33010602011771号