20212821 2021-2022-2 《网络攻防实践》实践八报告

1.实践内容

1.1 动手实践任务一

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

1.2 动手实践任务二:分析Crackme程序

任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。

1.3 分析实践任务一:

分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:

1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;

2、找出并解释这个二进制文件的目的;

3、识别并说明这个二进制文件所具有的不同特性;

4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;

5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;

6、给出过去已有的具有相似功能的其他工具;

7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

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动手实践任务一

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体的实验过程如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
首先,下载并解压RaDa文件,在kali虚拟机中使用终端运行file命令,命令执行结果如下:

从图中可以看出该文件是一个Windows PE32类型的可执行文件,GUI表示该程序具有图形界面,运行平台为32位英特尔80386CPU;
打开winxpattacker虚拟机,使用PEiD软件识别该程序的加壳工具,识别结果如下图所示,可以看到加壳工具为UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo

(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
首先打开超级巡警虚拟机脱壳器,并选中目标文件:

点击脱壳按钮进行脱壳处理,结果如下:

可以看到脱壳成功的信息,并且可以看到输出路径,根据路径我们可以找到进行脱壳后的程序,如下图所示:

(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
继续使用kali虚拟机终端中的strings命令进行分析,命令运行结果如下:

从上图中可以看到很多关于该程序的信息,上下翻页进行查找,最终疑似找到了该恶意代码的编写作者为Raul Siles 和David Peres,如下图所示:

2.2动手实践任务二:分析Crackme程序

任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。

2.2.1 静态或动态分析crackme1.exe

首先在winxpattacker虚拟机中使用IDA Pro软件打开该程序,如下图所示:

首先找到该程序的主函数开始处的代码,可以看到该程序所接受的正确参数为两个,如下图所示:

如果所输入的参数为两个,则跳转到local_4012D2函数处继续执行;
否则,则输出“I think you are missing something.\n”;
接下来我们来看local_4012D2函数:

可以看到,该函数会将字符串“I know the secret”与第二个参数进行比较,如果两个字符串相同,则跳转到local_401310函数处执行;
否则,则输出“Pardon? What did you say?\n”;
函数local_401310的汇编代码如下:

该语句的功能为输出字符串“You know how to speak to programs, Mr.”等;
下面为输入一定的参数所获得的程序运行结果截图,如下图所示:

由上图可知程序运行结果与我们之前的分析一致。

2.2.2 静态或动态分析crackme2.exe

程序的结构图如下图所示:

程序主函数刚开始和上述crackme1.exe同样,也是接受两个参数,当判断为两个参数时程序跳转到local_4012D2处执行,代码如下:

可以看到该函数首先会将第一个参数与“crackmeplease.exe”进行比较,如果相同的话则跳转到local_401313函数执行;
否则的话则输出“I have an identity problem.\n”并结束程序的运行;
接下来我们来看local_401313函数的代码:

该函数首先会将“I know the secret”与第二个参数进行比较,如果相同的话,则跳转到local_401351函数处继续执行;
否则会输出语句“Pardon? What did you say?\n”并结束程序的执行;
local_401351函数会输出“We have a little secret: Chocolate\n”;
由于第一个参数变为了“crackplease.exe”,因此我们想要程序正确输出必须将该程序的名称改为“crackplease.exe”,如下图所示:

接下来使用不同的参数运行程序来检测程序的输出结果,如下图所示:

由上图可知,程序的输出与我们之前的分析基本一致。

2.3分析实践任务一:

分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:

1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;

2、找出并解释这个二进制文件的目的;

3、识别并说明这个二进制文件所具有的不同特性;

4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;

5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;

6、给出过去已有的具有相似功能的其他工具;

7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
具体的实践过程及回答问题如下:
首先打开winxpattacker虚拟机,然后在cmd命令行中使用md5sum命令查看二进制文件RaDa.exe的摘要信息,如下图所示:

由上图可知,该二进制文件的md5摘要为caaa6985a43225a0b3add54f44a0d4c7
接下来使用file命令可以看到该二进制文件的文件类型及运行平台等信息,如下图所示:

由动手实践一可以知道该恶意程序经过加壳处理;
打开wireshark进行监听并且双击运行经过脱壳后的程序RaDa_unpacked.exe;
之后打开监视工具process explorer:

在process explorer中找到RaDa_unpacked.exe并鼠标右键单击选择properties查看详细信息如下:

点击查看该程序的strings内容:

查看如下图片:

可以发现该程序会自动连接到目标为10.10.10.10/RaDa的主机下一个名为RaDa_commands.html的网页上;
分别下载和上传某些文件,并且在受害主机C盘目录下创建一个文件夹“C:/RaDa/tmp”来保存其下载的文件;
在注册表编辑器中,增加了bin/目录下的RaDa.exe,说明该程序已经成为自启动项,还试图从一个HTML页面获取并解析命令;
最后还可以发现该恶意程序中可执行DDos拒绝服务攻击;
故猜测这应该是一个后门程序或僵尸网络程序;
接着往下翻页,可以看到该程序对注册表的操作,包括写入、读取和删除操作,如下图所示:

在cmd中输入regedit打开注册表:

并没有查找到有关RaDa.exe的信息,可能该程序已经将有关信息删除;
接着往下翻页,还可以看到一些我们熟知的指令,如get、put、sleep、screenshot等,如下图所示:

如下图所示为该程序的作者名称:

打开wireshark使用如下过滤条件查看在此期间所捕获的数据包,可以发现运行该程序的主机和IP地址为10.10.10.10的主机的数据交互情况,如下图所示:

由上述分析回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
该二进制文件的md5摘要为caaa6985a43225a0b3add54f44a0d4c7
2、找出并解释这个二进制文件的目的;
该程序会自动连接到目标为10.10.10.10/RaDa的主机下一个名为RaDa_commands.html的网页上;
分别下载和上传某些文件,并且在受害主机C盘目录下创建一个文件夹“C:/RaDa/tmp”来保存其下载的文件;
在注册表编辑器中,增加了bin/目录下的RaDa.exe,说明该程序已经成为自启动项,还试图从一个HTML页面获取并解析命令;
最后还可以发现该恶意程序中可执行DDos拒绝服务攻击;
故猜测这应该是一个后门程序或僵尸网络程序;
3、识别并说明这个二进制文件所具有的不同特性;
该程序会自动连接到目标为10.10.10.10/RaDa的主机下一个名为RaDa_commands.html的网页上;
分别下载和上传某些文件,并且在受害主机C盘目录下创建一个文件夹“C:/RaDa/tmp”来保存其下载的文件;
在注册表编辑器中,增加了bin/目录下的RaDa.exe,说明该程序已经成为自启动项,还试图从一个HTML页面获取并解析命令;
最后还可以发现该恶意程序中可执行DDos拒绝服务攻击;
可以看出该程序具有一定的隐蔽性的同时具备强大的攻击能力。
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
进行加壳处理;
并且通过查看网卡地址判断系统是否运行在虚拟机上,若是则隐藏作者信息;
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
它不属于病毒和蠕虫,因为此二进制程序不具有自主传播模块;又因为该程序未进行伪装,所以也不是木马;
若攻击者仅仅用此程序进行远程控制,那么就是后门程序;若再次基础上加入僵尸网络,则就是僵尸程序。
6、给出过去已有的具有相似功能的其他工具;
从服务器下载指令并执行具备组件僵尸网络的能力:Setiri、GatSlag
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可能调查出,由上述分析可知经过脱壳后的strings里就可以查看到该二进制文件的开发作者:Raul Siles & David Perez, 2004
条件:网卡的MAC地址必须属于VM公司系列,例如使用VMware虚拟机运行并查看就可以。

2.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、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC:因特网中继聊天(Internet Relay Chat),一般称为互联网中继聊天。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)。
申请加入一个IRC网络时会发送服务器的域名,TCP申请端口和昵称,一般端口号为6667,或者6660-6669范围的端口,该端口为明文传输,SSL加密传输在6697端口。
2、僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络:攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。众多的计算机在不知不觉中如同僵尸群一样被人驱赶和指挥着,成为被人利用的一种工具,常见的僵尸网络攻击如分布式拒绝服务攻击(DDoS)、海量邮件垃圾等,黑客还可以控制和利用这些网络中主机所保存的信息。
僵尸网络主要用于:发动DDOS攻击、发送垃圾邮件、 监听用户敏感信息、记录键盘输入信息、 扩散新的恶意软件 和 伪造点击量,骗取奖金或操控网上投票和游戏
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
首先下载云班课中用于本实验的botnet_pcap_file.dat文件,并复制进虚拟机kali,如下图所示:

之后使用wireshark打开该文件:

由第一问可知,IRC服务器明文传输通常在6667端口监听;
故设置过滤条件ip.src == 172.16.134.191 and tcp.dstport == 6667,过滤结果如下:

之后打开statistics-conversations查看统计信息:

之后打开all addresses如下:

并使用如下图所示的过滤信息进行过滤,过滤的结果如下图所示:

由上图可知,我们可以找到五个IRC服务器,分别为:
209.126.161.29
209.196.44.172
217.199.175.10
63.241.174.144
66.33.65.58
4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
首先在kali虚拟机上使用如下命令安装tcpflow:

安装成功后使用命令tcpflow -r /home/lvxiuwei/Desktop/botnet_pcap_file.dat "host 209.196.44.172 and port 6667"读取文件,并筛选host和端口6667后进行分流:

接下来执行如下两条指令:
export LC_COLLATE='C'
export LC_CTYPE='C'
避免出现字符编码问题,导致计数不准确,指令执行如下图所示:

如图所示为输出的结果文件:

接下来利用如下指令进行搜索有多少主机连接:
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
grep获取昵称输出,sed去除前缀,tr将空格转换为换行,tr -d删除\r,grep -v去除空行,sort -u排序并去除重复,wc -l输出行数
指令执行结果如下图所示:

从图中可以看到共有3457个主机连接。
5、那些IP地址被用于攻击蜜罐主机?
首先使用如下指令找出所有连接主机的IP地址:
tcpdump -n -nn -r /home/lvxiuwei/Desktop/botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 2.txt;wc -l 2.txt
cut -d是指定字段的分隔符,uniq命令用于删除文本文件中重复出现的行,将结果输出到2.txt文件中,wc -l 2.txt显示行数
指令执行结果如下:

由上图可知共查找到165个被攻击的端口。
6、攻击者尝试攻击了那些安全漏洞?
首先使用命令sudo snort -r /home/lvxiuwei/Desktop/botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii指令查看网络流分布情况如下:

由上图可知,大部分都是TCP包,极少部分是UDP包;
接下来进一步筛选出响应的TCP和UDP包,命令如下:
tcpdump -r /home/lvxiuwei/Desktop/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 /home/lvxiuwei/Desktop/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;
接下来使用wireshark打开pcap文件;
首先查看TCP的135和25端口,设定筛选条件tcp.port == 135 or tcp.port == 25,如下图所示:

从上图中可以看到端口135和端口25只是进行了连接,并没有数据的交互,猜测攻击者对这两个端口进行了connect扫描
接下来接着分析445端口,445端口是SMB端口,设置过滤条件ip.dst == 172.16.134.191 and tcp.dstport == 445,过滤结果如下:

之后在61.111.101.78发起的请求中发现了PSEXESVC.EXE,这是一种Dv1dr32蠕虫,通过IRC进行通信,如下图所示:

为判断是否成功,查找从蜜罐发往61.111.101.78的信息;
设置过滤条件ip.dst == 61.111.101.78,过滤结果如下图所示:

由上可以发现每个IP地址连入的连接都有响应的回应,并且返回信息中含有\PIPE\ntsvcs,这是一个远程调用,所以攻击者肯定是获得了权限,攻击是成功的。
之后我们查看80端口;
设置筛选条件为ip.dst == 172.16.134.191 and tcp.dstport== 80 and http,过滤结果如下:

由上图中可以看到210.22.204.101向蜜罐发送了很多的C,可能在进行缓冲区溢出攻击

此外,24.197.194.106发起了很多次连接,这是不停地使用脚本在攻击IIS服务器的漏洞,从而获取系统权限,如下图所示:

218.25.147.83也访问了80端口:

跟踪该数据包的TCP流,从中发现了C:\notworm,这是一个红色代码蠕虫攻击,如下图所示:

接下来再看4899端口,使用过滤条件ip.dst == 172.16.134.191 and tcp.dstport == 4899,结果如下图所示:

从上图中可知这个端口只有IP地址为210.22.204.101的主机访问过,可以查得4899端口是一个远程控制软件radmin服务端监听端口;
我们接下来分析UDP的137端口
这个端口是NetBIOS相关协议,设置过滤条件ip.dst == 172.16.134.191 and udp.port == 137,过滤结果如下图所示:

从这里可以发现所有IP地址进行访问的负载都是相同的,都是同样的形式,这里推测应该是在进行NetBIOS查点。
7、哪些攻击成功了?是如何成功的?
由上述分析可知,针对TCP445端口的普通查点、口令猜测、MSRPC-SVCCTL服务枚举漏洞以及PSEXESVC等攻击成功了;
由上述分析可知,这些攻击是通过向对TCP445端口发送含有PSEXESVC.EXE的数据包,且将PSEXESVC.EXE地址改到系统目录下攻击成功的。攻击成功后通过利用SVCCTL漏洞获取目标主机服务。

3.学习中遇到的问题及解决

  • 问题1:对程序动态分析的流程不清楚
  • 问题1解决方案:这里主要用脱壳工具先对程序脱壳,然后用IDA工具对程序文件进行反编译,一般简答的程序可以通过String windows来查看定位关键函数,而一般的程序则需要分析函数结构图,这里其实还可以显示单个函数的汇编流程,需要现在Function window选中函数,然后才可以从View菜单栏中的Graph显示。

4.实践总结

本周的实践内容很丰富,并且大多数内容还都是关于网络攻防原理的分析;在本次实践中,首先进行了动手实践任务一,对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者;之后又进行了动手实践任务二,分析Crackme程序:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。最后又进行了两个分析实践任务;通过对这些一系列实践人物的进行,大大提高了我对网络攻防技术及其原理的理解,并且提高了我的动手实践能力,对网络攻防技术及其原理有了更加深入的认识,为将来进行更进一步的网络攻防实践打下了坚实的基础。

参考资料

《网络攻防技术与实践》

posted @ 2022-05-07 12:41  ~嘉然今天吃什么  阅读(39)  评论(0编辑  收藏  举报