20222413 2024-2025-1 《网络与系统攻防技术》实验四实验报告
1.实验内容
本周学习内容
这一周中我学习到了多种恶意代码的定义、用途造成的影响,以及恶意代码的静态和动态分析技术。在实验中,我学会了使用工具分析恶意代码的攻击意图和构成,能够通过分析抓取的网络数据包判断端口是否被攻击。
实验目标:
1.1恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
1.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
1.3分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
(2)找出并解释这个二进制文件的目的;
(3)识别并说明这个二进制文件所具有的不同特性;
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
(6)给出过去已有的具有相似功能的其他工具;
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
1.4取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
(2)僵尸网络是什么?僵尸网络通常用于什么?
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
(5)哪些IP地址被用于攻击蜜罐主机?
(6)攻击者尝试攻击了那些安全漏洞?
(7)那些攻击成功了?是如何成功的?
2.实验过程
2.1恶意代码文件类型标识、脱壳与字符串提取
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
①使用 file 命令查看RaDa.exe的文件类型
通过分析结果可以判断出,RaDa.exe文件格式为PE32,是Windows上的可执行文件,并且具有图形化界面。
②使用peid工具分析RaDa.exe,可以看到RaDa使用upx加壳工具加壳
③使用strings命令查看RaDa.exe的内容,文件被加壳,其中大部分为乱码
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
得到脱壳后的文件RaDa_unpacked.exe
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
①对脱壳后的RaDa进行提取字符串操作
②往下翻,寻找到RaDa的作者为Raul Siles && David Perez
2.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
①使用file命令分析文件
crackme1和crackme2与RaDa的文件格式与运行平台相同,但是控制台应用程序,能够在命令行中进行输入与输出
②尝试运行crack1
猜测程序输出内容与输入参数个数有关,并且输入特定内容时会有特定输出
③使用IDA pro工具分析crack1
能够发现刚才的运行情况与函数sub_401280相关
④打开sub_401280
首先判断输入的内容有几个参数,若为两个则判断输入内容是否正确,其他数量则输出“I think you are missing something”
若输入两个参数但输入错误信息,则输出“Pardon?What did you say”。若为两个参数且第一个为“I know the secret”,则回复
函数调用图:
左半:
右半:
⑤使用同样方法分析crackme2,运行crackme2,尝试输入并检查返回结果
⑥使用IDA pro分析crackme2
⑦进入函数sub_401280
判断输入的参数个数
判断程序名是否为crackmeplease.exe
判断输入内容是否正确
⑧crackme2与crackme1基本相同,但多了判断文件名,将crackme2改名为crackmeplease后输入正确内容,所得结果如下
2.3分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
在https://www.lddgo.net/encrypt/filehash中查看RaDa的摘要值
(2)找出并解释这个二进制文件的目的;
①运行脱壳后的RaDa_unpacked.exe,使用Process Explorer找到正在运行的RaDa进程,点击后查看进程属性
②从strings中可以看到RaDa的目的有:
向http://10.10.10.10/RaDa发送请求
在C盘创建RaDa文件夹
连接RaDa_commands.html进行上传或下载到C:\RaDa\tmp
将RaDa复制到C:\RaDa\bin中
starting DDos smurf,文件还有DDos攻击功能
注册和删除注册表
下载、上传、屏幕截图、休眠
(3)识别并说明这个二进制文件所具有的不同特性;
①开机时启动,复制文件到制定路径
②对注册表进行注册和删除
③控制主机进行上传、下载、截图、休眠
④与10.10.10.10连接后将下载的内容保存在指定路径
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
使用upx加壳技术进行免杀
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
后门程序。该文件不会自主传播,且能够获取主机的相应权限,在开机时自动启动。
(6)给出过去已有的具有相似功能的其他工具;
实验二中生成的后门程序,
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,在脱壳后使用strings工具分析文件字符串,找到作者的对应信息。
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
一、基于特征码的检测方法
建立病毒特征数据库,该数据库包含了已知的恶意软件特征,如特定的字节序列、指令模式或签名等。在扫描过程中,恶意软件检测软件会对计算机系统中的文件和程序进行特征匹配,与数据库中的恶意软件特征进行比对。如果匹配成功,则判断该文件或程序为恶意软件,并采取相应的清除措施。
二、行为监测方法
通过分析计算机系统的行为和操作记录来检测恶意软件。恶意软件在感染计算机后,通常会表现出一些特定的行为模式,如修改系统文件、创建新文件、发送垃圾邮件、窃取敏感信息等。在rada进行注册删除注册表、复制文件下载文件的过程中,行为监测方法能够监视这些行为活动,识别出恶意行为,并判断rada是否是恶意软件。
三、网络流量监测方法
恶意软件常常需要通过网络与外部服务器进行通信,以传输有害信息或接收远程指令。网络流量监测方法通过监测计算机与外部服务器的网络流量,可以检测出是否存在恶意软件。rada在与10.10.10.10进行链接下载文件时或进行DDos攻击时,异常的网络流量可以被检测出来从而判断rada是否为恶意代码
四、启发式扫描方法
启发式扫描方法是一种基于恶意软件行为特征的动态分析方法。该方法通过模拟运行可疑文件或程序,观察其行为并评估其风险。启发式扫描方法不依赖于已知的病毒特征,而是基于恶意软件的执行路径、系统调用、文件操作等信息进行判断。如果可疑文件或程序表现出与恶意软件相似的行为特征,如修改注册表、格式化磁盘、长时间大量读写文件等,则可能被判定为恶意软件。rada的行为一经模拟即可判断出是恶意代码。
五、沙盒分析方法
沙盒分析方法是一种将可疑文件或程序运行在隔离环境中的检测方法。该方法将待检测文件置于一个模拟的、可控的虚拟环境中运行,通过分析其行为以及函数调用来判断其是否存在恶意行为。由于沙盒环境是隔离的,因此即使可疑文件或程序包含恶意代码,也不会对实际计算机系统造成损害。通过监测沙盒环境中的行为活动,如文件的创建、注册表的修改、网络通信等,可以判断是否存在恶意行为。
2.4取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
①IRC(Internet Relay Chat)是一种基于客户端-服务器模型的即时通讯协议,它允许用户通过互联网进行实时文本交流。这种协议定义了客户端和服务器之间的通信规则和消息格式,并使用TCP作为传输协议。IRC服务器提供了一种分布式的聊天环境,用户可以加入不同的频道(channels)进行交流。
②客户端使用特定的命令并附上服务器地址和端口号来连接到IRC服务器。需要选择一个昵称(nickname)来标识自己,通常通过发送“/nick nickname”命令来实现。
使用“/join #channel”命令来加入一个特定的频道,从而与其他用户进行交流。
③使用的tcp端口一般为6667。
(2)僵尸网络是什么?僵尸网络通常用于什么?
①僵尸网络(Botnet)是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
②发起分布式拒绝服务(DDoS)攻击,发送垃圾邮件、投放勒索软件、窃取数据等
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
①使用wireshark分析botnet_pcap_file.dat
在文件中可看到主机与以下服务器进行通讯
209.126.161.29
66.33.65.58
63.241.174.144
217.199.175.10
209.196.44.172
(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
①下载tcpflow,输入指令分析botnet_pcap_file.dat
sudo apt-get install tcpflow//下载tcpflow
tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172'
所得文件:
②检索不重复的主机数量
可以看到共有3461个主机访问了僵尸网络
(5)哪些IP地址被用于攻击蜜罐主机?
tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more > 20222413.txt;wc -l 20222413.txt
vim 20222413.txt
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 > 20222413_2.txt;wc -l 20222413_2.txt
vim 20222413_2.txt
文件中为全部的攻击ip地址
(6)攻击者尝试攻击了那些安全漏洞?
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//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//udp端口
tcp响应的端口有135、139、25、445、4899、80
udp响应的端口有137
①135端口和25端口
均为正常的tcp连接,其中25端口重传多次但长度均为0,没有攻击行为
②80端口
在80端口中发现大量HTTP包,包含多个A或C,可能在进行缓冲区攻击
发现C:\notworm,是一个红色代码蠕虫攻击。
③139端口
正常链接,没有攻击
④445端口
发现PSEXESVC.EXE,是一种Dv1dr32蠕虫,说明在通过Dv1dr32蠕虫进行攻击
⑤4899端口
有大量tcp连接,但无攻击行为
⑥137端口
NBNS是NetBIOS name service的缩写,是NetBIOS的命名服务。未发现攻击行为。
(7)那些攻击成功了?是如何成功的?
通过(6)问中对端口内容的分析,80端口和445端口发现了攻击行为
①80端口:通过主机80端口向外的流量进行分析,发现蜜罐主机做的回应均为一个iis服务器的默认页面,80端口的攻击均失败
②445端口:每个IP地址连入的连接都有响应的回应,并且返回信息中含有\PIPE\ntsvcs。攻击者将包含PSEXESVC.EXE的数据包发送到主机,蠕虫利用SCM与SCP之间进行远程调用的窗口获取目标主机的权限,攻击成功。
3.问题及解决方案
- 问题:使用Process Explorer寻找不到RaDa_unpacked.exe进程
- 问题解决方案:以管理员身份运行Process Explorer
4.学习感悟、思考等
本次实验中,我学习到了如何使用工具分析恶意代码文件,获取到恶意代码的特性、作者等信息。在通过捕获数据包分析主机遭受了什么攻击时,需要耐心翻看大量的数据包,通过数据包的内容的类型判断攻击方式和是否成功。在分析的过程中我直观的看到了攻击过程,加深了对于恶意代码攻击的理解。
参考资料
IDA使用:https://blog.csdn.net/qq_29647709/article/details/142381933