20222321 2024-2025-1 《网络与系统攻防技术》实验四实验报告
一、实验内容
1、恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:=
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
2、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
3、分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
(2)找出并解释这个二进制文件的目的;
(3)识别并说明这个二进制文件所具有的不同特性;
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
(6)给出过去已有的具有相似功能的其他工具;
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
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)那些攻击成功了?是如何成功的?
二、实验过程
1、恶意代码文件类型标识、脱壳与字符串提取
(1)关闭windows主机病毒与威胁防护,便于接下来的实验:
(2)Winscp远程连接kali虚拟机,将下载的RaDa.exe文件传到虚拟机上:
(3)对RaDa进行解压:
(4)使用file RaDa.exe指令查看RaDa文件的格式:
PE32:是一种32位的可执行文件格式
GUI:有图形用户界面
Intel 80386:适用于使用Intel 80386处理器的计算机
for MS Windows:该文件用于Microsoft Windows操作系统的
3 sections:该文件分为了三个部分或段,通常是代码段、数据段和堆栈段
(5)使用PEID工具查看RaDa.exe的基本信息:
可以看到文件的入口点、文件偏移、连接器版本、EP段、首字节、子系统、以及加壳类型
(6)使用strings RaDa.exe指令分析RaDa.exe文件中的可打印字符串:
如图所示,有很大一部分可打印字符串都是乱码,这种情况的原因是文件被加壳了,后续需要进行脱壳处理
(7)使用超级巡警脱壳工具对RaDa文件进行脱壳处理:
(8)将生成的脱壳文件RaDa_unpacked.exe通过WinSCP传到虚拟机,使用strings RaDa_unpacked.exe指令查看脱壳后文件的可打印字符串:
脱壳后文件前一部分内容还是跟RaDa.exe一样,没有被更改,但后面的乱码部分已经变成了可以读取的内容,不过没有找到作者的相关信息
(9)使用Process Explorer工具查看脱壳后文件的相关信息
运行RaDa_unpacked.exe文件(需要以管理员身份运行),使用Process Explorer进行查看:
找到脱壳后的文件,右键Properties查看详细信息,进入Strings页面:
如图,可以看到该程序编写时间为2004年,作者是Raul siles和David Perze
2、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
(1)将下载的crackme1.exe和crackme2.exe文件传到虚拟机,使用指令file crackme1.exe和file crackme2.exe查看文件信息:
console表示这是一个控制台程序,for MS Windows则表示这是一个为Microsoft Windows操作系统设计的可执行文件
(2)试探crackme1.exe的输入输出格式:
输入1个参数时,回复“Pardon? What did you say?” ,猜测参数个数正确,但输入参数错误;
参数个数不为1时,输出“I think you are missing something.” ,猜测其为参数个数出错
(3)使用IDA pro分析crackme1.exe:
打开“View-Open subviews-strings”,查看字符串:
可以看到前面试探出来的两句,猜想剩下的两句“I know the secret”和“You know how to speak to programs, Mr. Reverse-Engineer”对应正确的输入指令以及正确输入后的反馈。
通过“View-Graphs-Function calls”,查看程序的函数调用结构:
可以看到主函数下包含了_strcmp、_fprintf、_printf等函数,猜测主函数中会对输入内容进行比对,并基于比对结果进行选择输出:
查看main函数并进行反汇编:
通过"Jump"->“Jump to function”->"_main"查看main函数:
可见,参数个数为2
查看参数为2时的分支:
分析可知,主函数先将字符串"I know the secret"压入栈,再将输入的数据压入栈,调用_strcmp后分出两条分支,红色的分支猜测为参数匹配失败,输出"Pardon? What did you say?“,绿色分支猜测为匹配成功,输出"You know how to speak to programs, Mr. Reverse-Engineer”。"I know the secret"为需要输入的参数。
(4)使用IDA pro分析crackme2.exe:
使用IDA PRO打开crackme2.exe,进入strings页面:
注意到crackme2.exe比crackme1.exe多了一个“crackmeplease.exe”
通过"Jump"->“Jump to function”->"_main"查看main函数:
查看当参数个数为2时的分支:
如图所示会将第一个参数存入eax中,再调用_strcmp对exa和“crackmeplease.exe”进行比较。
比较第二个参数与"I know the secret",推测特定输入为crackmeplease.exe “I know the secret”
修改crackme2.exe的文件名为crackmeplease.exe,进行验证:
推测正确
3、分析一个自制恶意代码样本rada
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
1.使用md5sum RaDa.exe指令对二进制文件采用md5进行摘要:
更改文件名,再次进行md5摘要:md5sum 20222321zy.exe
可见,结果没有发生变化,故MD5摘要值可以作为帮助识别同一样本的信息
2.使用file 20222321zy.exe指令查看文件基本信息:
(2)找出并解释这个二进制文件的目的
打开Process Explorer工具并运行RaDa_unpacked.exe,查看该文件中的字符串:
(3)IDA打开RaDa_unpacked.exe
进入strings页面,右键打开setup strings window并选择允许的字符串类型为Unicode:
查看程序的作者以及发布时间:
还发现一个网页地址和两个本地地址、upload和download的功能:
还有三个私有网段的信息:
(4)打开Wireshark进行抓包:
可以看到,目标程序运行的时候向10.10.10.10的地址发送了大量的TCP包并返回了大量的ICMP包,这些TCP包和ICMP包都是空的,推测是DDoS拒绝服务攻击和ICMP洪泛攻击
(5)回到IDA PRO的Strings页面:
经查询,这些字符串的意义是命令行参数
(6)双击私有网段的字符串内容来查看详细这一段字符串所在的位置:
找到对应的函数:sub_4052C0,并双击打开,然后查看Flot Chart:
这三个私有网段出现的意义就是判断目标主机的IP地址是否在私有网段内,如果是,就访问10.10.10.10,并进行之后的操作。
(7)查看注册表编辑器来判断bin文件夹和tmp文件夹的作用:
bin目录下新建了一个RaDa.exe文件,说明这里的bin文件夹是将RaDa.exe放进去,并加入自启动项
(8)识别并说明这个二进制文件所具有的不同特性
1.修改注册表以实现随系统开机自启动的功能
2.能访问网址http://10.10.10.10/Rada/Rada_command.html
3.能进行拒绝服务攻击
(9)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
该文件采用的是UPX加壳技术
(10)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
由分析可知,该恶意代码不能进行自我复制和自我传播,故不是病毒或蠕虫;同时该代码能在目的主机上执行来获取目的主机的Shell,故该代码样本为后门
(11)给出过去已有的具有相似功能的其他工具
MSF meterpreter
(12)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
能;在对文件进行脱壳处理并且作者将自己信息写入文件的情况下
(13)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法
1.基于特征码的检测:
原理:通过检测二进制文件中是否含有恶意代码特征值来判断文件是否存在威胁。这些特征值,通常是16进制码,是恶意代码的唯一标识。
实现方式:杀毒软件等安全工具会维护一个包含已知恶意代码特征码的病毒库。当扫描文件时,这些工具会将文件内容与病毒库中的特征码进行比对,如果匹配成功,则判定该文件为恶意软件。
2.基于签名的扫描技术:
原理:基于恶意代码签名的检测技术并没有对文件进行分析,只是对文件进行了签名计算,通过比较文件的签名与已知恶意软件的签名来判断文件是否为恶意软件。
实现方式:通常用于静态分析,通过计算文件的签名并与已知恶意软件的签名库进行匹配来检测恶意软件。
3.基于行为的监测方式
原理:恶意软件在感染计算机后会表现出一些特殊的行为,如修改系统文件、创建新文件、发送垃圾邮件等。行为监测通过分析计算机的行为和操作记录,检测出是否存在异常行为,从而判断是否有恶意软件的存在。
实现方式:行为监测工具会实时监控计算机系统的运行,包括文件操作、网络活动、系统调用等。当检测到异常行为时,这些工具会发出警报或采取其他响应措施。
4.沙盒模拟方法
原理:沙盒模拟方法将待检测文件置于一个模拟的、可控的虚拟环境中运行,通过分析其行为以及函数调用来对其威胁性打分。
实现方式:在沙盒环境中,恶意软件的行为会被记录下来,并与已知恶意行为进行比较。如果检测到与恶意行为相似的行为模式,则判定该文件为恶意软件。
5.启发式分析
原理:启发式分析是一种依据经验、直觉或启发式策略来选择解法的方法。它不同于传统的精确算法,不追求找到全局最优解,而是试图在可接受的时间内找到一个足够好的近似解。
实现方式:在启发式分析中,分析员会利用自己的知识和经验,或者依据某些启发式规则,来指导分析过程,从而快速找到问题的解决方案。
4、取证分析实践
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC是Internet Relay Chat的缩写,一般称为互联网中继聊天。是一种多用户、多频道的讨论系统,允许任意的因特网用户之间做即时的交谈;当IRC客户端申请加入一个IRC网络时,它会发送一个JOIN消息给服务器请求加入指定的频道;IRC一般使用TCP 6667端口作为默认登录端口。
(2)僵尸网络是什么?僵尸网络通常用于什么?
定义:僵尸网络是由大量被恶意软件感染并遭到恶意用户控制的计算机组成的网络。这些被感染的计算机被称为“僵尸计算机”或“机器人”,它们通过接收来自控制者的指令来执行各种恶意行为。
常见用途:1.发动分布式拒绝服务(DDoS)攻击 2.发送垃圾邮件 3.投放勒索软件 4.进行网络钓鱼
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
将botnet_pcap_file.dat文件用WinSCP传到虚拟机中并用wireshark打开,输入过滤条件:ip.src == 172.16.134.191 && tcp.dstport == 6667 || tcp.dstport == 6697
发现蜜罐主机通信的IRC服务器有五个:66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172和209.126.161.29。
(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
使用指令apt-get install tcpflow安装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 -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
可知,一共有3461台主机访问了僵尸网络
(5)哪些IP地址被用于攻击蜜罐主机?
使用如下指令将ip输入到20222321.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> 20222422ip.txt;wc -l 20222422ip.txt
可知,有165个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
(7)那些攻击成功了?是如何成功的?
使用Wireshark进行抓包:
TCP25:
未成功攻击
TCP135:
成功建立三次攻击,但未实施攻击
TCP139:
有NBSS协议和SMB协议的数据包,但未攻击
TCP445:
不仅有SMB协议,而且进行了数据传输,并给蜜罐主机的445端口发送了PSEXESVC.EXE,说明进行了攻击
TCP4899:
有一个HTTP包使用了windows的cmd命令并使用了dir指令,受到攻击
TCP80:
发现一些文件路径,说明受到攻击
UDP137:
没有进行攻击
综上,
成功:TCP80、TCP445、TCP4899
失败:TCP135、TCP25、TCP139、TCP137
三、问题与解决方案
未遇到明显问题
四、学习感悟、思考
此次实验不仅加深了我对恶意代码分析原理的理解,还让我掌握了多种检测恶意软件的方法和取证分析技巧,如基于特征码的检测、基于签名的扫描技术、基于行为的监测方式等。同时掌握了如何使用IDA Pro等工具进行逆向工程分析,通过对具体案例的分析也了解了僵尸网络的工作原理以及如何进行取证分析。