20232815 2023-2024-2 《网络攻防实践》实践八报告
1.实践内容
恶意代码: 指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。 恶意代码可以根据其执行方式、传播方式利对攻击目标的影响分为计算机病毒、蠕虫、 恶意移动代码、特洛伊本马、后门、僵尸程序、内核套件等。
网络蠕虫: 网络蠕虫(Worm)是一种通过网络自主传播的恶意代码,这是一种可以自我复制的代码,并且通过网络传播,通常无须人为干预就能传播。如果没有外界干扰,蠕虫会一直对脆弱的系统进行感染,传播速度可能是指数形式,对互联网的危害十分巨大。网络蠕虫的基本特性是通过网络的自主传播,利用目标系统上存在的安全缺陷,进而用一种自动的方法来占据目标主机。这也是和计算机病毒最大的区别之处。
僵尸程序: 僵尸网络(Botnet),是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序),从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
2.实践过程
2.1 动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
将老师提供的rada.rar解压,解压密码为rada,将解压后的两个文件拖入winXP虚拟机中。
首先利用file RaDa.exe
命令查看RaDa.exe的文件类型,可知这是一个32位Windows PE可执行文件,并且有图形化窗口。
输入命令strings RaDa.exe
查看RaDa.exe中的可打印字符
输入命令RaDa --authors
可以查看作者信息
打开PEiD工具,可以查看该文件是否加壳。根据截图可以看到这是一个版本为0.89.6的UPX壳。还可以看到文件的入口点、EP段、偏移、文件类型等信息
接下来使用脱壳工具将文件进行脱壳。
可以发现在桌面上得到一个RaDa_unpacked.exe的文件。使用string RaDa_unpacked.exe
可以查看字符串。
再次使用PEiD工具来查看脱壳后的程序,可以看到编写该程序所使用的语言和开发工具为VB6.0
使用IDA对其进行分析,结果如下:
在string窗口中,右键setup,将Unicode勾选上。
发现作者为Raul Siles & David Perez与命令行中得到的authors信息一致。
2.2 动手实践任务二:分析Crackme程序
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
2.2.1 分析crackme1.exe
首先使用file命令来分析该恶意程序的大概信息,切换到恶意程序所在目录,分别执行file crackme1.exe
和file crackme2.exe
来查看两个文件信息,两个文件均为windows系统下运行的32位可执行程序,且没有图形界面,仅使用控制台操作
运行crackme1.exe文件,通过输入不同的数字和字符串,观察其输出,只有两种,当输入为一个值时,输入是一样的;当输入多个值时输出反馈是一致的,可以断定该程序的输入为一个参数,但是不清楚输入值数据类型为字符还是数字。
使用IDA打开此文件,打开Strings窗口:
分析该恶意程序字符串信息,可以看出来除了上面输出反馈的两句话,还有另外两句,但是当我们输入参数时,一直不显示,此外,可以看到有“GCC”,说明该恶意程序是用C语言编写的。
点击view->Graphs->Functions call,可以查看函数调用图。可以看到输出函数printf被sub_401280调用,sub_401280还调用了strcmp函数,应该是用于判断输入与密码是否一致。
打开此程序,View->Graphs->Flow chart查看汇编代码
通过对其进行分析,得知sub_401280会先判断参数个数,如果参数个数不为一个则直接跳转到false打印I think you are missing something.
,如果参数个数为一个但是密码不对则会打印Pardon?...
字样。
现在再次运行crackme1.exe文件,命令为crackme1.exe "I know the secret"
。注意在输入密码时要加双引号。
2.2.2 分析crackme2.exe
同样的,首先对参数进行猜测。
使用IDA对其进行分析。
查看函数调用图发现fprintf,strcmp函数等被sub_401280调用。
查看代码流程图。
通过对流程图分析,发现应该现将其改名为crackmeplease.exe,然后输入密码才能得到正确结果。
2.3 分析实践任务一:
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
使用MD5对该恶意程序进行摘要信息分析:md5sum Rada.exe
。执行file RaDa.exe
分析该恶意程序的运行环境。
打开Process Explorer,点击运行恶意程序脱壳后的RaDa_unpacked.exe。在Process Explorer 中,查看strings进行分析。
发现其使用http连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页上,然后下载上传文件,并且在靶机上创建一个文件夹“C:/RaDa/tmp”来保存其下载的文件。同时该恶意程序中可执行DDos拒绝服务攻击。
该恶意程序对主机注册表进行了读写和删除操作:
还发现了一条和数据库查询语句相关的信息
下面回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
摘要为caaa6985a43225a0b3add54f44a0d4c7
2、找出并解释这个二进制文件的目的;
这是一个http后门程序,当连接上互联网时,该程序就会通过http请求连接到指定主机,攻击者可以完全控制该系统。
3、识别并说明这个二进制文件所具有的不同特性;
该程序运行后会在C盘下创建了一个RaDa目录,里面包含bin和tmp文件夹,tmp前面分析过是用来临时存储从目标主机下载到受害主机的文件和从受害主机获取的文件信息,在bin文件夹发中有一个RaDa.exe可执行文件,运行时没有任何提醒信息,具有隐蔽性。
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
使用了UPX加壳技术,不进行脱壳会显示乱码。
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
本恶意程序为后门程序,使用DDoS攻击使主机瘫痪,该程序执行需要通过攻击者远程发送指令且该程序没有自我复制和传播,也没有将伪装成其他程序。
6、给出过去已有的具有相似功能的其他工具;
木马Bobax,Setiri等,使用HTTP协议从指定的服务器下载命令文件,然后解析并执行其中的指令。
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,命令行输入RaDa.exe --authors
,使用脱壳软件脱壳,反编译脱壳文件RaDa_unpacked.exe,使用Process Explorer进行监听。
2.4 分析实践任务二:
Windows 2000系统被攻破并加入僵尸网络
任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
(1)因特网中继聊天(Internet Relay Chat),一般称为互联网中继聊天,简称:IRC。
(2)IRC上的信息交流采用请求与应答的模式. 请求是由服务器或客户端发出的,其目的是请求(另)一个服务器执行某个操作或提供某些信息; 应答是服务器对一个请求的回应信息。注册时需要发送的消息有三种,分别是口令USER ,昵称PASS 和用户信息NICK 。注册完成后,客户端就使用JOIN信息JOIN 来加入频道。
(3)IRC服务器明文传输通常在6667端口,SSL加密传输在6697端口。
2、僵尸网络是什么?僵尸网络通常用于什么?
(1)僵尸网络是由攻击者通过各种途径传播僵尸程序(bot程序)病毒,感染互联网上的大量主机,并通过一个控制信道接收攻击者的指令,形成的一个可一对多控制的网络。这种网络并不是指物理意义上具有拓扑结构的网络,而是具有一定的分布性,随着bot程序的不断传播而不断有新位置的僵尸计算机添加到这个网络中来。
(2)组成的僵尸网络可以用来当做二级服务器进行病毒样本的散播,也可以用来进行一些DDoS攻击、CC攻击等一些需要大量服务器进行的大规模分布式攻击。
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
使用Kali的Wireshark打开数据文件,已知IRC通过6667端口,则设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667
。
观察到共五个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 -r /home/ahril/Desktop/botnet_pcap_file.dat "host 209.196.44.172 and port 6667"
分流得到两个分流后的数据文件。172.016.134.191.01152-209.196.044.172
和209.196.044.172.06667-172.016.134.191
和一份报告report.xml
。
输入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
查看多少不同的主机访问了以209.196.44.172为服务器的僵尸网络。
5、那些IP地址被用于攻击蜜罐主机?
输入tcpdump -n -nn -r /home/ahril/Desktop/botnet_pcap_file.dat 'dst host 172.016.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more >1.txt; wc -l 1.txt
共有148个。
输入tcpdump -n -nn -r /home/ahril/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
,共有165个。
6、攻击者尝试攻击了那些安全漏洞?
使用Tcpdump工具筛选出蜜罐主机有哪些端口是响应的。输入命令tcpdump -r /home/ahril/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
可以看到有135、139、25、445、4899、80端口。使用wireshark筛选出源地址为172.16.134.191,tcp端口为135、139、25、445、4899、80的数据包进行分析。
-
135端口:
tcp.port==135
在筛选后的数据包中只有一些TCP三次握手过程的数据包,没有数据的交互。 -
139端口:
-
25端口:
端口135、139、25上虽有很多数据包但是没有什么数据传输,多为在建立连接,可能是在查点或者扫描。
- 445端口:
在筛选后的数据包中发现了可执行文件PSEXESVC.EXE
,这是一种蠕虫病毒的特征码,攻击者对系统注入了蠕虫病毒并成功获取了远程调用。
- 4899端口
包中也没有数据交互。
- 80端口
端口80上的数据包比较复杂,其中210.22.204.101发送了三个很大的的数据包,大概是在做缓冲区溢出攻击。
此外在80端口上,还发现24.197.194.106发送的消息包好像已经进入了主机,使用了cmd.exe
,可能正在输入什么命令获得蜜罐的机密消息。
7、那些攻击成功了?是如何成功的?
445端口和80端口。445端口通过可执行文件PSEXESVC.EXE
对系统注入了蠕虫病毒并成功获取了远程调用。80端口通过发送包使用了cmd.exe
3.学习中遇到的问题及解决
分析包时因为kali改名为ahril,故不能直接使用视频中所给的命令,需将kali改为ahril。
- 问题2:tcpflow下载失败
- 问题2解决方案:kali设置为了手动修改IP地址,将IP地址修改为手机热点相同字段联网成功。
4.实践总结
通过对恶意代码的分析,我学会了反编译等软件的使用,理解了脱壳等原理,同时加深了对网络安全必要性的理解,还加深了我对数据分析筛选的能力。