20231901 黄丁韫 2023-2024-2 《网络攻防实践》第八周作业
1.第一部分
1.1实践内容
动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
- (1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
- (2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
- (3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
动手实践任务二:分析Crackme程序
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
分析实践任务一:
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
- 1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
- 2、找出并解释这个二进制文件的目的;
- 3、识别并说明这个二进制文件所具有的不同特性;
- 4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
- 5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
- 6、给出过去已有的具有相似功能的其他工具;
- 7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
分析实践任务二:
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.2实验过程
1.2.1 动手实践任务一
任务:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。
1.2.1.1 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(1) 环境准备,实验环境为:winX的攻击机,下载rada压缩包,这里遇到了几个问题,首先是该虚拟机没有网络,解决方法为改成桥接模式上网成功,其次,能上网后搜索超星学习通没有问题,但是点击对应登陆链接就显示网络有问题,如下图所示,这里换谷歌浏览器也是,猜测学习通网站xp不适用。
但是也不是没有办法解决下载rada压缩包,只需要在主机上先下载解压,然后直接复制文件夹粘贴到虚拟机中即可,如果做不到的话可以试试打开共享文件设置。
(2)开始实验,首先查看文件类型,先cd到对应文件夹,然后输入命令file Rada.exe
,就可看到文件的类型啦,可以看到这是一个32bit的可执行程序,通过网络搜索发现这是一个勒索病毒-特洛伊木马变种。
(3)其次查看其文件的内容,输入指令 cat Rada.exe
,可以看到显示文件内容为乱码。
通过查看相关的资料发现,其可能是加壳了。
(4)通过网络资料发现,再xp中我们可以使用PEiD对该文件查壳,如下图,可以看到Rada.exe加了UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo壳。
1.2.1.2 既然我们知道了其加的壳,通过网络资料查询发现我们可以通过使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理。(这名字还挺有意思的)
如下图所示,这个壳是支持脱壳的,并且其脱壳的输出路径与Rada.exe在同一目录。
1.2.1.3最后一步,使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
(1)首先我们查看脱壳后的RaDa.exe文件内容,输入代码strings RaDa_unpacked.exe
,可以看到有大量函数调用名以及其他字符串,但是并未查找到作者信息。
(2)最后,通过资料查找发现还可以使用IDA PRO Free 工具,获取脱壳后Rada.exe的相关信息,如下图所示,成功找到作者信息和发布时间,还有邮箱等。
1.2.2 动手实践任务二
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
1.2.2.1 首先还是环境,这里虚拟机仍然使用的是winxp,所需的文件有crackme1.exe和crackme2.exe,仍然是和上一个实践任务一样,在主机中下载资源,然后复制到虚拟机中去。
1.2.2.2 首先分析crackme1.exe
(1)让我们先对crackme1.exe输入参数进行试探一下,假设它有0个、1个、2个、3个参数…,直到出现重复的回复。可以看到只有在输入一个参数的时候它的回复和其他的不一致,所以猜测输入应该为一个参数。
(2)然后按照实验给的提示,我们使用IDA Pro工具,进行分析,如下图,点击Strings窗口发现一共有四个字符串,其中 I think you are missing something.和Pardon? What did you say?在进行参数猜测时出现过。
此时我认为对应:
I think you are missing something.
是输入的参数数量不正确的情况;Pardon? What did you say?
是参数数量正确,但可能参数的内容或者范围不正确。- 还有两个字符串由于没有出现,因此需要继续分析。
(3)现在我们要做的是找到I know the secret
,右击选择Edit function去看是哪里输出的这句话。
如下图所示,是函数sub_401280中的输出。
(3)接下来我们应该看看这个exe执行程序他的函数调用图,在哪里会调用sub_401280函数。
点击ida veiw——veiw——Gragh——Function calls。
可以看到sub_401280函数调用了strcmp比较函数,fprintf、printf输出函数,以及sub_401510和sub_401840函数。
(4)接着我们继续查看sub_401280函数的流程图
首先查看sub_401280函数的汇编源码,容易知道其汇编码就是401280,如图所示。
其次点击ida veiw——veiw——Gragh——Flow Chat,查看流程图,如图所示
最后如下401280流程图所示,可以知道:
- 如果命令行输入两个参数,其中crackme1.exe也算一个参数,也就是crackme1.exe + 一个参数,则跳转至第一个红色箭头指向的loc_4012D2。
-
- 然后比较第二个参数是否是”I know the secret”,是的话,则指向第二个红色箭头,并输出红框中的You know how to speak to programs, Mr. …;
-
- 否则,走左边的false,输出Pardon? What did you say?
- 如果命令行输入参数个数不为2(图二箭头),则输出I think you are missing something.。
(5) 最后验证我们上述的分析结果
如图所示,在之前猜测的基础上,输入一个我分析正确的输入结构:crackme1.exe “I konw the secret”
,可以发现返回的是You know how to speak to programs, Mr.Reverse-Engineer
,也就是说我们的分析是正确的。
1.2.2.3然后分析crackme2.exe
(1)和上一步类似,我们先对crackme2.exe输入的参数个数进行测试,可以看到仍然是输入一个参数的时候,和输入其他数量的参数时不一致,因此还是猜测输入的参数是1个。
(2)继续使用IDA Pro工具,进行分析crackme2.exe
可以发现Strings窗口发现五个字符串,其中 I think you are missing something.和I have an identity problem.在进行参数猜测时出现过,猜测:
- I think you are missing something.是输入的参数数量不正确的情况;
- I have an identity problem.是参数数量正确,但可能参数的内容或者范围不正确。。
- 另外3句没有出现过,还是和上一步一致,接下来应该找
i know the secret
。
(3)查看i know the secret
的来源可以发现,还是在函数sub_401280中。
(3)和之前一样,查看sub_401280的汇编值,可以发现仍为401280。
(4)查看sub_401280的流程图。
首先找到这个函数,然后开始分析
- 第一张图:
- 首先第一个方格中的红框表示,输入的值是否为两个参数,如果不是则跳转到左边false,输入左下的那段话,
I think you are missing something
。 - 如果是为两个参数,则跳转右边true,右边需要比较第一个参数是否为crakmeplease.exe。
- 首先第一个方格中的红框表示,输入的值是否为两个参数,如果不是则跳转到左边false,输入左下的那段话,
- 接下来如第二张图
- 如果输入的第一个参数不正确,则跳转左边false,并输出I have an identity problem.表示输入的参数个数正确,但是输入的参数内容不正确。
- 如果输入第一个参数正确,则跳转右边true,然后比较第二个参数是否为:”I know the secret”。
- 第三张图:
- 如果输入的第二个参数正确,则输出We have a little secret : Chocolate
- 如果不正确,则输出,Pardon? What did you say?
(5)最后是验证上述猜测:
如下图所示,前4个输入在前面讲过了,输入2个参数是正确的。
- 绿色是输入了2个参数,第二个参数正确,第一个错误,输出判断是参数正确,内容错误
- 黄色是,这里有一个问题,就是系统识别不了crakmeplease.exe,因此我们要复制一个crakmeplease.exe含有crackme2.exe的内容
- 蓝色箭头表示输入的第一个参数正确,第二个错误,输出判断是第一个参数正确。
- 红色框表示输入的参数是正确的,输出是正确。
可以发现这个输出结果,验证猜测正确!
1.2.3分析实践任务一:分析一个自制恶意代码样本rada
1.2.3.1首先我们先查看Rada.exe文件摘要
通过网络资料学习到,md5sum命令用于生成和校验文件的md5值,是一种逐位校验文件内容的算法,这里我们输入指令md5sum
。
如下图所示,摘要为caaa6985a43225a0b3add54f44a0d4c7
由任务一知道,RaDa.exe使用了UPX加壳工具进行了加壳处理,加壳方式: UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
1.2.3.2 然后运行RaDa.exe,同时我们使用监视工具 process explorer 和 wireshark 开启监听,用以分析该恶意代码的目的
如下图所示,第一张图是对脱壳前的RaDa.exe,查看内容发现无法得到什么有用的东西;
第二张图是对脱壳后的RaDa.exe进行分析,可以看到:
- (1)这个可执行程序通过HTTP协议请求http://10.10.10.10/RaDa,连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页,之后又下载和上传文件到 C:\RaDa\tmp。
- (2)其将文件 RaDa.exe复制到了C:\RaDa\bin目录下,并将其自我复制到主机系统盘,还激活了自启动,还试图从一个HTML页面获取并解析命令,因此猜测这应该是一个后门程序。
- (3)再往下看可以发现该恶意程序对主机实行了DDos拒绝服务攻击。
- (4)如图3中,我们可以看到这个程序对主机的注册表进行了读写和删除操作。
- (5)在图4中,发现这个程序还在主机中进行了get下载,put上传,screenshot截屏,sleep休眠等操作。
- (6)在图5中,使用wireshark分析,可以看到主机向目标主机 10.10.10.10 发送了大量的数据包。
- (7)然后我们查看(2)中是否复制了,如图6可知主机C:\RaDa\bin目录下确实存在RaDa.exe。
问题回答:
-
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
答:摘要为caaa6985a43225a0b3add54f44a0d4c7;使用了UPX加壳工具进行了加壳处理,加壳方式: UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo -
(2)找出并解释这个二进制文件的目的。
答:由对上图中的分析可知,这个文件其目的是在连接互联网时,通过请求http://10.10.10.10/RaDa,连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页,之后又下载和上传文件到 C:\RaDa\tmp。作,并且其可以完全控制该系统,所以这应该是一个后门程序。 -
(3)识别并说明这个二进制文件所具有的不同特性。
答:这个在程序启动之后会将自己复制到C:\RaDa\bin,并且每过一段时间就会尝试与10.10.10.10建立tcp连接。 -
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
答:其使用UPX加壳;通过查看网卡的 MAC 地址以及查看 VMware Tools 的注册表项来判断操作系统是否运行在 VMware 虚拟机上,如果是,则使用–authors参数时将不会输出作者信息;一些干扰字符串Starting DDoS Smurf remote attack,让分析者误认为是程序执行 DDoS 攻击,实际上并没有。 -
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
答:通过网络资料查询了解到,这种样本并不会传播到其他的主机中,所以不是病毒;同时其也没有伪装成一些的程序以欺骗用户运行,所以他也不属于木马;因此这个应该是一个后门程序。 -
(6)给出过去已有的具有相似功能的其他工具。
答:通过查询资料发现,Bobax——2004也是使用HTTP协议从指定的服务器下载命令文件,然后解析并执行其中的指令。 -
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
答:输入指令Rada.exe -authors
,可以看到,作者是Raul siles和David Perze,他们在2004年编写完成,环境和限定条件是不在虚拟机 VMware 中运行。
1.2.4分析实践任务二:Windows 2000系统被攻破并加入僵尸网络
任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。
回答问题:
- (1)1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
答:- IRC是Internet Relay Chat的英文缩写,中文称为“互联网中继聊天”。它是一种公开的协议,采用TCP和SSL协议。一个IRC服务器可以连接其他的IRC服务器以扩展为一个IRC网络。
- 当IRC客户端申请加入一个IRC网络时,发送nickname
- 一般使用6667(6660~6669)端口建立连接
- (2)僵尸网络是什么?僵尸网络通常用于什么?
答:- 在问题1的基础上,也就是IRC环境下的僵尸网络是指IRC机器人连接成的IRC网络。其采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
- 通常用于DDos攻击、分布式扫描、暴力密码破解等。
- (3)蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?
答:通过资料查询可知IRC协议使用TCP连接,要找出与蜜罐主机通讯的IRC主机,可以利用建立TCP连接的三次握手过程进行分析,也就是找出蜜罐主机向哪些机器的IRC端口发送过SYN即可。- 如下图所框选出的,蜜罐主机与5台IRC服务器进行了连接,分别是:209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172。
- 如下图所框选出的,蜜罐主机与5台IRC服务器进行了连接,分别是: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分流筛选指定host与端口6667,输入指令tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"
- 注意要先下载tcpflow
- 这里由于我tcpflow了两次所以产生了一个后缀为c1的相同文件,实际上如图所示,一共是产生了三个文件,分别是:209.196.044.172.06667-172.016.134.191.01152、172.016.134.191.01152-209.196.044.172.06667、report.xml
- 然后我们查看配置文件report.xml,可以看到两个主机互相通信的时间、IP、mac地址、使用端口、包裹数等信息。
- 最后获取僵尸网络上的主机数,使用管道命令进行筛选,输入代码如下:
- 注意要先下载tcpflow
# grep搜索获取昵称输出行;sed:去除前缀;tr:将空格转换为换行;tr -d删除\r;grep -v:去除空行;sort -u排序并去除重复;wc -l:输出行数
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台主机访问了以209.196.44.172为服务器的僵尸网络。
- (5)哪些IP地址被用于攻击蜜罐主机?
答:使用tcpdump查找可能连接蜜罐主机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 > ip.txt;wc -l ip.txt
- 可以看到一共有165个IP地址可能连接蜜罐主机,具体IP值存储在文件ip.txt中。
- (7)攻击者尝试攻击了哪些安全漏洞?
答:通过输入指令,筛选有响应的TCP端口,即SYN/ACK标志为1,指令如下:
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
- (8)哪些攻击成功了?是如何成功的?
答:由上一问知道,有udp137号端口,对其进行分析,通过网络资料了解:
udp 137号端口,这个是在局域网中提供计算机的IP地址查询服务,处于自动开放状态,所以访问这个端口肯定就是 NetBIOS 查点了。 - 然后再分析有tcp的:
(1)首先是135号端口数据包,通过网络可知135是Microsoft NetBIOS服务,用于文件和打印机共享等功能。
(2)139号端口数据包,NetBIOS Session服务,通常与SMB(Server Message Block)一起使用,用于文件共享。
(3)分析25号端口数据包,SMTP(Simple Mail TransferProtocol),用于电子邮件传输。
由上图中内容可以发现,攻击者只是对135、139和25号端口都进行了连接,并没有数据传输,因此是对端口进行了查点或connect扫描。
(4)继续分析445号端口数据包,Microsoft-DS服务,用于文件共享和打印机共享等功能,是 SMB 在 TCP/IP上的实现。
如下图可以看到这个端口连接的非常多,有很多 \samr,\srvsvc 字符串。其中61.111.101.78向蜜罐放了PSEXESVC.EXE,通过资料得知,这是一种Dv1dr32蠕虫病毒的特征码,而它正是通过IRC进行通信。
因此攻击者对系统注入了蠕虫病毒并成功获取了远程调用。对445端口实施的攻击是成功的。
(5)继续分析4899号端口数据包,通常用于被恶意软件(如木马)利用的端口,需要谨慎对待。
如下图,可以看到只有 IP 地址 210.22.204.101 访问过。4899 端口是一个远程控制软件 radmin 服务端监听端口,这个软件不是木马。
(6)继续分析80号端口数据包,HTTP(HyperText Transfer Protocol),用于传输网页等超文本信息。
如下图,可以看到连接最多的IP是24.197.194.106,其在不停的使用脚本攻击 IIS 服务器的漏洞,从而获取系统权限。
然后是210.22.204.101访问80端口,可以看到其注入了很多的c,猜测是想通过缓冲区溢出攻击来获得一个命令行。
最后是218.25.147.83访问80端口
如下图,这里看到了一个c:\notworm.html,说明这是一个蠕虫攻击。通过网络资料查找发现是红色代码(red code)病毒。
通过分析80端口向外的流量,可以发现蜜罐主机做的回应均为一个 iis 服务器的默认页面,所以80端口的这些攻击均失败。
2、学习中遇到的问题
问题1:该虚拟机没有网络,无法打开网页。
解决方法: 解决方法为改成桥接模式上网成功
问题2:能上网后搜索超星学习通没有问题,但是点击对应登陆链接就显示网络有问题,导致无法通过网页下载rada等资源
解决方法: 在主机上下载资源,然后可以直接复制到虚拟机。
问题3:图片格式和文字位置不匹配,主要体现在图片不知道怎么居中
解决方法: 通过网络资料发现只需要在图片后面添加#pic_center即可,如.png#pic_center,具体可见参考资料。
3.学习感悟、思考等
本次实验内容非常之多,主要是对恶意程序进行检测和分析,学习到可以猜测输入的参数个数,怎么去验证正确性,内部结构如何去查看,通过使用一些小工具,如巡警工具完成脱壳处理,通过数据流分析端口是否异常、提取字符串、分析函数调用关系等等,总之这个实验是真的太多啦!!!做了得有4-5个小时~die。
4.参考资料
Linux命令之md5sum的作用以及使用方法
markdown图片居中
TCPflow:在Linux中分析和调试网络流量的利器(转)