20242934 2024-2025-2 《网络攻防实践》第八周作业
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.1 恶意代码定义与分类
恶意代码定义:恶意代码指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。
恶意代码类型:根据执行方式、传播方式和对攻击目标的影响分为计算机病毒、蠕虫、恶意移动代码、特洛伊木马、后门、僵尸程序、内核程序等。
计算机病毒:一种能够自我复制的代码,通过将自身嵌入其他程序进行感染,而感染过程通常需要人工干预才能完成。
蠕虫:自我复制机制与计算机病毒类似,是一类自主运行的恶意代码,并不需要将自身嵌入到其他宿主程序中。
恶意移动代码:属于移动代码范畴,移动代码是指可以从远程主机下载并在本地执行的轻量级程序,不需要或仅需要极少的人为干预。
后门:指一类能够绕开正常的安全控制机制,从而为攻击者提供访问途径的一类恶意代码。
特洛伊木马:一类伪装成有用的软件,但隐藏其恶意目标的恶意代码。
僵尸网络:攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的攻击网络。僵尸程序:用于构建僵尸网络以形成一对多控制攻击平台的恶意代码形态。
内核套件:在用户态通过替换或修改系统关键可执行文件,或者在内核态通过控制操作系统内核,用以获取并保持最高控制权的一类恶意代码,分为用户态Rootkit和内核Rootkit两种。
1.2 恶意代码分析方法
恶意代码分析与针对良性代码和软件的程序分析技术,都可以采用通用的代码分析技术来作为基础,主要包括静态分析和动态分析方法,来对代码进行逆向工程(Reverse Engineering)来确定其功能。
1)恶意代码分析环境
恶意代码发烧友的分析环境
基于虚拟化构建恶意代码分析环境
(2)恶意代码静态分析技术
反病毒扫描
文件格式识别
字符串提取分析
恶意代码实例名
帮助或命令行选项
用户会话
后门口令
相关URL信息、Email地址
包含库文件和函数调用
二进制结构分析
反汇编与反编译
代码结构与逻辑分析
加壳识别与代码脱壳
(3)恶意代码动态分析技术
基于快照对比的分析方法和工具
系统动态行为监控方法:文件行为监控软件、进程行为监控软件、注册表监控软件、本地网络栈行为监控软件
网络协议栈监控方法
沙箱技术
动态调试技术
2.实践过程
2.1动手实践任务一:
解压下载的压缩文件,将RaDa放入虚拟机Windows attck的桌面,同时打开终端,先进入rada.exe所在的文件夹再输入file RaDa.exe,查看该文件类型,这是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序。
(1)为了进一步获取该PE文件的详细信息以便我们脱壳,我们使用PEiD打开RaDa.exe。可以发现,RaDa.exe使用了0.89.6版本的UPX压缩壳。
(2)然后我们使用超级巡警脱壳器进行脱壳,只需要指定RaDa.exe的位置然后点击”给我脱“便可以完成脱壳。根据程序的输出信息,可以发现脱壳后的RaDa.exe的文件名为RaDa_unpacked.exe。
在命令行中使用字符串提取工具,输入命令strings RaDa_unpacked.exe | more,将结果通过管道传送给more进行处理,如图六所示,但是通过查找并未发现作者。
这时候用 IDA Pro Free 打开这个文件,查看详细信息,可以找到作者为DataRescue sa/nv,邮箱为ida@datarescue.com。
2.2动手实践任务二:
首先检查一下两个文件的完整性,计算其 md5 值.
使用file命令查看其文件类型,可以看到这两个文件都是32位windows下PE文件.
对crackme1.exe进行分析,试探输入格式。在接受一个参数的时候输出信息与其他不同,猜测该程序接受一个参数。
接下来利用IDA Pro打开这个程序分析,打开我们打开通过Strings窗口可以查看该程序中出现的字符串。通过Strings窗口可以查看到该程序中出现的明文字符串,可以看到前面的两种输出信息,“I think you are missing something.” “Pardon? What did you say?”,还发现了“I know the secret”和“You know how to speak to programs, Mr. Reverse-Engineer”这两个字符串。由此我们可以猜测,前者就是我们需要的口令,后者就是输入口令正确时程序的输出信息。
接下来看函数调用图(Function Call)可以发现:关键的部分在sub_401280这里,程序是使用strcmp函数来输入的,然后利用print和fprint函数输出。
下面来看sub_401280流程图,看到cmp [ebp+arg_0],2,其用来判断程序是否有两个参数(第二张图倒数第三行)。
继续分析,可以看到其他几条口令。
猜测正确的口令应该是"I know the secret",输入命令运行改口令,可以得到这样一条回复"You know how to speak to programs,Mr.Reverse-Engineer"。成功。
程序crackme2.exe的分析过程与之类似,先打开Function call(函数调用图),发现关键的部分在sub_401280这里。
下面来看sub_401280,内容与上一个文件基本一致,大致可以判断出关键口令为I know the secret,只是从下图可以看到,代码逻辑中的程序名称改变了,变成了:crackmelpease.exe.因此需要对程序名称进行修改。
输入copy crackme2.exe crackmeplease.exe将程序复制并命名为crackmeplease.exe,输入crackmeplease.exe "I know the secret",得到的反馈信息为We have a little secret: Chocolate.成功。
2.3分析实践任务一:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
使用md5sum RaDa.exe的到rada摘要值
(2)找出并解释这个二进制文件的目的;
使用process explorer监视RaDa,然后查看其字符串内容,
可以发现,该程序会访问10.10.10.10/RaDa这个链接,并从RaDa_commands.html中获取相应的指令。在文件操作方面,该程序在系统的C盘根目录下创建了一个名为RaDa的文件夹,其中有tmp和bin两个文件,其中bin中的文件即为RaDa.exe,可以推测程序运行后会自动将自己复制到C:\Rada\bin目录中。此外 ,程序中还涉及了两个注册表项HKLM\Software\Microsoft\Windows\CurrentVersion\Run\和HKLM\Software\VMware, Inc.\VMware Tools\InstallPath,也就是说程序会将自己加入系统的自启动项,每次启动自动运行,而从三个函数名RegWrite、RegRead和RegDelete可以看出程序能够对注册表进行了相应的操作。最后,通过Starting DDoS Smurf remote attack...可以看出程序会根据远程攻击者的指令发动DDoS攻击。
根据以上的分析,可以判断该程序是一个后门程序。它能够使远程的攻击者控制系统,通过程序主动访问10.10.10.10/RaDa的方式获取攻击者的指令。
(3)识别并说明这个二进制文件所具有的不同特性
根据(2)的分析可知,Rada.exe在执行后会自动复制到C:\Rada\bin目录中并通过修改注册表的方式实现自启动,程序启动后,会自动获取10.10.10.10/RaDa中的RaDa_commands.html,这个网页中包含了攻击者的相关指令,程序拿到指令后对相应的IP进行DDos攻击。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
程序通过UPX加壳的方式对程序的机器指令进行了保护,这样在进行安全分析时实现需要进行脱壳然后才能够反汇编分析其中的内容。
程序主动通过HTTP协议和10.10.10.10的网站进行通信,获取相应的攻击指令,这样通过反弹连接的方式可以防止防火墙对攻击数据包进行过滤。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
这是一个后门程序,它采取了多种方法防止被分析或逆向工程。程序自动运行并从对应IP地址获取攻击指令并执行这些攻击指令。
之所以说它不属于病毒或蠕虫,是因为它们有传播、感染、隐藏的性质,而说它不是木马,则是因为它是一个独立的程序,并没有隐藏在正常的程序中欺骗用户运行。
(6) 给出过去已有的具有相似功能的其他工具
Bobax、Setiri和GatSlag等。
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以通过给程序传入参数--authors来调查开发作者
由此可知,2004年,由Raul siles和David Perze二人编写
2.4分析实践任务二:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC是因特网中继聊天(Internet Relay Chat)的简称。
申请加入时需要发送的消息有三种,分别是口令,昵称和用户信息。注册完成后,客户端就可以使用JOIN 信息来加入频道。
IRC通常使用6660-6669端口,其中一般使用6667端口进行明文通信,如果是使用SSL进行加密通信则使用6697端口。
(2) 僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
僵尸网络主要用于:发动DDOS攻击、发送垃圾邮件、 监听用户敏感信息、记录键盘输入信息、 扩散新的恶意软件 和 伪造点击量,骗取奖金或操控网上投票和游戏,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
首先通过Wireshark打开数据文件botnet_pcap_file.dat,并设置过滤条件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为服务器的僵尸网络?
首先我们在Kali上对捕获到的数据包进行分流,指令如下:
tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
由于需要的是多少不同的主机访问了以209.196.44.172为服务器的僵尸网络,我们使用如下命令获取访问该服务器的主机数量:
cat 209.196.044.172.06667-172.016.134.191.01152 | grep --text "^: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地址并输出到ipaddr.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 > ipaddr.txt;wc -l ipaddr.txt
cat ipaddr.txt
攻击的IP地址如图所示
(6)攻击者尝试攻击了那些安全漏洞?
我们将端口分为TCP端口和UDP端口两部分,分别查看它们受攻击的情况。
首先我们利用下述指令筛选出蜜罐主机被攻击的TCP端口:
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
得出结果如图所示,可以发现响应端口为
TCP:135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)
UDP:137(netbios-ns)
其中UDP的137端口是NetBIOS 名称服务器。使用者只需要向局域网或互联网上的某台计算机的137端口发送一个请求,就可以获取该计算机的名称、注册用户名,以及是否安装主域控制器、IIS是否正在运行等信息,所以访问这个端口进行了NetBIOS查点。
使用Wireshark过滤相关条件,过滤条件如下。
(tcp.dstport == 135 || tcp.dstport == 25)&& ip.dst == 172.16.134.191
可以发现,25端口和135端口仅仅进行了TCP三次握手,判断可能为测试端口开放情况
接下来看TCP的80端口,筛选命令如下:
tcp.dstport==80 && ip.dst == 172.16.134.191
可以发现24.197.194.106与蜜罐主机传送的数据包次数最多,并且进行了类似缓冲区溢出攻击的相关数据包,但都被蜜罐主机识别并发送RST数据包
接下来看TCP的139端口,筛选命令如下:
tcp.dstport==139 && ip.dst == 172.16.134.191
可以发现虽然多个IP尝试和蜜罐主机在此端口建立连接,但都被蜜罐主机识别并发送RST数据包,
接下来看TCP的445端口,筛选命令如下:
tcp.dstport==445 && ip.dst == 172.16.134.191
可以发现,在33280包有一个PSEXESVC.EXE。PsExec 是由 Mark Russinovich 创建的 Sysinternals Suite中包含的工具。最初,它旨在作为系统管理员的便利工具,以便他们可以通过在远程主机上运行命令来执行维护任务。后来因为太过方便,被利用到内网渗透之中。
再观察蜜罐主机回复reply数据包,如图所示,返回信息有“\PIPE\ntsvcs”。
命名管道 \Pipe\Ntsvcs是作为 SCM 和与特定服务交互的 SCP(服务控制进程)之间的远程过程调用接口。
最后看TCP的4899端口,筛选命令如下:
tcp.dstport==4899 && ip.dst == 172.16.134.191
可以发现只有210.22.204.101访问过这个端口,经查询可知该端口是Radmin远程控制工具,可能是被利用来控制蜜罐主机。
(7)那些攻击成功了?是如何成功的?
经过(6)分析可知,成功的攻击发起者是61.111.101.78,它是通过445端口使用蠕虫攻击实现的。
3.学习中遇到的问题及解决
- 问题1:对于IDA的使用不够熟练
- 问题1解决方案:通过上网查找获取IDA Pro的使用教程,完成了相关程序的分析。
- 问题2:开始无法解压RaDa并拖拽到虚拟机里面
- 问题2解决方案:换用新的解压工具
- 问题3:分析RaDa.exe所用的工具,如PEiD、超级巡警脱壳器找不到
- 问题3解决方案:利用搜索功能,在虚拟机中搜这些工具
4.实践总结
本次实验主要学习了关于恶意软件的知识,包括监听、脱壳、返汇编的方式来解析恶意软件,从而获取恶意软件的工作模式乃至开发者信息。其次也能抓取流量通过wireshark分析病毒,进一步分析其攻击流程和漏洞利用等。
总的来说这次试验加强了我对病毒木马和恶意软件的认识,也学习了如何用工具去分析。