1.实验内容
一、恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
二、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.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)那些攻击成功了?是如何成功的?
2.实验过程
一、恶意代码文件类型标识、脱壳与字符串提取
任务一:恶意代码文件类型标识、脱壳与字符串提取
kali虚拟机通过file 命令查看文件类型,这是微软 Windows平台、英特尔80386处理器的一个32位PE文件,并且是GUI文件;脱壳前有很多乱码
file RaDa.exe
Strings RaDa.exe
用PEID查看,发现用了UPX的压缩壳
超级巡警脱壳机脱壳
使用ida pro,可找到作者和时间
作者:
时间:
二、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
查看crackme1.exe函数调用关系,发现如果输入"I Know the secret“,则程序可以顺利执行,弹出“you know how to ”
同理分析crackme2.exe:
验证:
三、分析一个自制恶意代码样本rada
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息:
用MD5生成RaDa.exe的摘要信息
二进制文件的摘要及其他信息:caaa6985a43225a0b3add54f44a0d4c7,是Windows平台下32位的可执行文件,使用upx加壳
(2)找出并解释这个二进制文件的目的:
执行RaDa.exe,发现它改动开机自启动,并且将文件 RaDa.exe 复制到了 C:\RaDa\bin 目录下:
使用process explorer,查看脱壳后的rada程序的执行信息:
二进制文件的目的:生成文件,反弹连接到10.10.10.10,方便攻击者进行后续攻击。
(3)识别并说明这个二进制文件所具有的不同特性:
可以修改系统,并且添加了注册表,实现了开机自启动
可以远程控制。运行远程连接被攻击者连接
可以控制桌面,并且可以进行读写删操作,使得计算机完全陷入攻击者的掌控当中,属于具有强大攻击性的恶意代码
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
采用的防止被分析或逆向工程的技术:UPX
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由:
该程序并没有自主传播,也没有伪装成正常程序,因此它既不是病毒和蠕虫也不是木马,而是一个后门程序,绕过了安全性控制而获取对系统的访问权限。
(6)给出过去已有的具有相似功能的其他工具:
2013年Sercomm在一些采用其硬件的DSL网关被发现有后门后采取的做法。 这个后门被发现是厂商自己加进去的,利用32764端口进行远程访问。
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
Raul siles和David Perze,2004。先脱壳,通过ida pro查看。
四、取证分析实践
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?
①IRC(Internet Relay Chat)是一种即时通讯协议,允许用户通过互联网进行实时文本通信。它采用了分布式客户端/服务器模型,允许用户加入不同的聊天室(频道),进行私密对话或群聊。IRC最初由芬兰学生Jarkko Oikarinen于1988年创建,作为一个用于在互联网上实时交流的系统。
在IRC中,用户通过IRC客户端连接到IRC服务器,然后可以加入不同的聊天频道或者与其他用户进行私密对话。每个IRC服务器可以连接到其他IRC服务器,形成一个IRC网络,使得用户可以跨服务器进行通信。
②当IRC客户端连接到一个IRC网络时,通常会发送一条消息以建立连接和进行身份验证。这条消息一般为:
其中,各项的含义如下:
username:客户端用户的用户名,用于标识用户。
hostname:客户端的主机名,即客户端所在的计算机的主机名。
servername:客户端所连接的服务器名,即用户要加入的IRC服务器的名称。
realname:客户端用户的真实姓名,用于显示给其他用户。
这条消息的发送旨在建立与服务器的连接,并向服务器提供用户的身份信息,以便服务器对用户进行识别和授权。
③至于TCP端口,IRC一般使用TCP协议进行通信。标准的IRC端口是6667。在某些情况下,IRC网络可能会使用其他端口,但通常情况下,客户端连接到服务器时会使用6667端口。如果服务器使用不同的端口,客户端需要在连接时指定该端口。
总之,IRC是一种通过互联网进行实时文本通信的协议,用户可以通过客户端加入不同的聊天频道或与其他用户进行交流。在连接时,客户端会发送特定的消息以建立连接和进行身份验证,而通信则通常使用TCP端口6667。
IRC的特点是通过服务器中继与其他连接到这一服务器上的用户交流。注册时需要发送的消息有三种,分别是:口令,昵称和用户信息。格式如下:USER 、PASS 、NICK 。注册完成后,客户端就使用JOIN信息来加入频道,格式如下:JOIN 。
IRC服务器明文传输通常在6667端口监听,也会使用6660—6669端口。SSL加密传输在6697端口。
2、僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是指攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络,通常被黑客用来发起大规模的网络攻击,如DDoS、海量垃圾邮件等。
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
①蜜罐(Honeypot)是一种安全机制,旨在诱使攻击者入侵、攻击或探测计算机系统、网络或应用程序,从而收集有关攻击者行为和策略的信息,以及提高对抗网络攻击的能力。蜜罐通常是一个看似有漏洞或价值的系统、网络或应用程序,但实际上是由安全专家部署和监控的虚拟或实体资源。攻击者可能会对蜜罐进行攻击,试图入侵、获取权限或进行其他恶意活动,而安全团队则可以监视并分析这些攻击行为。
②用wireshark打开botnet_pcap_file.dat文件,设置过滤条件“ip.src == 172.16.134.191 && tcp.dstport == 6667 || tcp.dstport == 6697”,得到如下结果:
经过分析,可以得出,蜜罐主机与如下的服务器进行通信:
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,使用命令tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"
,查看report.xml,找到ip,端口,通信时间等信息(没有tcpflow的需要先用命令apt-get install tcpflow
进行安装)
在kali虚拟机安装tcpflow,使用命令tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667
,查看report.xml,找到ip,端口,通信时间等信息
使用命令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地址用于攻击蜜罐主机?
使用命令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
查看用于攻击蜜罐主机的ip
6.攻击者尝试攻击了那些安全漏洞?
使用Wireshark打开数据源botnet_pcap_file.dat,选择“统计”→“协议分级”,可以看到TCP数据包占99.7%,UDP包只占0.3%,非常少
筛选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 //对TCP进行筛选
筛选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 //对UDP进行筛选
7.哪些攻击成功了?是如何成功的?
我们分别对TCP的各个端口使用Wireshark进行抓包分析,得到以下的结果。
查看25和135端口:
(tcp.dstport == 135 || tcp.dstport == 25)&& ip.dst == 172.16.134.191
135端口:只有连接,无数据交互
25端口:[FIN ACK],很多重传,并且长度都是0,应该是没有成功
查看80端口:
tcp.dstport==80 && ip.dst == 172.16.134.191
80端口:发现缓冲区溢出攻击及蠕虫
查看139端口:
tcp.dstport==139 && ip.dst == 172.16.134.191
139端口:大部分是普通连接
查看445端口:
tcp.dstport==445 && ip.dst == 172.16.134.191
445端口:发现PSEXESVC.EXE,查找资料发现这是一种Dv1dr32蠕虫,说明在进行蠕虫攻击,并且返回信息中含有\PIPE\ntsvcs,这是一个远程调用,因此推断攻击者获得了权限,攻击成功的
查看4899端口:
tcp.dstport==4899 && ip.dst == 172.16.134.191
4899端口:是远程控制工具Radmin的监听端口,不是木马但可能是攻击者攻击成功后装来方便控制,只有210.22.204.101访问
缓冲区溢出攻击攻击和PSEXESVC蠕虫攻击没成功:返回css http/1.1
SVCCTL服务漏洞成功:返回\PIPE\ntsvcs
3.问题及解决方案
-
问题1:虚拟机始终没网,apt更新不了
-
问题1解决方案:在同学的帮助下更改了一下虚拟机设置
-
问题2:tcpflow和snort命令都用不了
-
问题2解决方案:都需要先安装对应包
-
问题3:在控制台运行crackme2.exe "I know the secret"是,会提示I have an identity problem.
-
问题3解决方案:复制一个crackme2.exe文件,重命名为crackmeplease.exe ,然后运行crackmeplease.exe "I know the secret",即可得到正确结果。
4.学习感悟、思考等
经过这一系列复杂的恶意代码分析与取证分析实践,我深刻体会到了信息安全领域的重要性和挑战性。从识别恶意代码的文件类型到深入剖析其内部机制,每一步都需要严谨的态度和扎实的专业知识。同时,通过IDA Pro等工具进行静态和动态分析,我学会了如何寻找特定输入以触发恶意行为。此外,取证分析实践也让我对网络安全事件有了更深入的理解。这次实验不仅锻炼了我的技术能力,更培养了我面对复杂问题的分析和解决能力。