一、实验内容
(一)恶意代码文件类型标识、脱壳与字符串提取
对提供的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.1 恶意代码文件类型标识、脱壳与字符串提取
2.1.1 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
首先将RaDa.exe放到Kali虚拟机中,可以使用winsSCP连接后传输,不过Kali也可以直接将文件拖入。然后使用file指令查看RaDa.exe的文件格式。
如图所示:
同时使用PEiD软件,能获取到rada的加壳信息。这里使用的PEiD软件可以从学习通直接下载解压使用。不过这里使用PEiD是在Windows主机下,不要使用错误,如果在Kali下双击并不会运行。
在Windows主机中运行PEiD然后在其中选择RaDa.exe文件进行分析。
如图:
2.1.2 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
从学习通里下载超级巡警脱壳工具的压缩包,解压并安装,对RaDa.exe文件进行脱壳操作,并生成新的已脱壳文件。
如图:
2.2.3 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者
首先需要了解字符串提取工具,在Windows主机中可以只用strings指令进行字符串的提取,可看到脱壳后rada存在的字符串样本。在windows中,strings命令在对象文件或二进制文件中查找可打印的字符串。字符串是4个或更多可打印字符的任意序列,以换行符或空字符结束。 strings命令对识别随机对象文件很有用。
同样在网上查找后,发现在Kali虚拟机中也有同样的字符串提取指令,并且和Windows中的指令相同。
如图:
2.2 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
2.2.1 下载IDA Pro,利用IDA Pro分析文件
从学习通发的资料里可以找到IDA pro的文件,直接解压并运行。解压得到的是IDAfree,并将crackme1.exe放入IDApro中检测。
如图:
2.2.3 分析crackme1.exe
如图:
重新安装成功。
然后,对crackme1.exe进行测试:
如图:
然后使用IDApro打开crackme1.exe
然后再使用“View”→“Open subviews”→“Generate pseudocode”进行反编译。
得到main函数的伪代码:
分析这个伪代码可以得知,如果输入的参数有两个就会调入一个循环里面,如果此时第二个参数正好是I know the secret ,则触发目标语句 You know how to speak to programs, Mr. Reverse-Exgineer。这下就分析清楚了。
如图:
输入的第二个参数为“I know the secret”时便会返回“You know how to speak to programs, Mr. Reverse-Engineer”至此完成解析。
如图:
注意,输入的参数中,第一个只能是程序名字!比如上面成功的例子中,第一个参数是程序名,第二个参数是"I know the secret"。
分析crackme2.exe
同样先使用IDApro打开crackme2.exe。
其结构如下图:
然后使用“View”→“Open subviews”→“Generate pseudocode”对crackme2.exe进行反汇编。得到结果如图:
分析主函数的结构,只有满足三个条件:
1.输入的命令个数为2。
2.第一个命令是:crackmeplease.exe
3.第二个命令是:I know the secret
才可以触发正确的结果。
如图:
2.3 分析一个自制恶意代码样本rada
2.3.1 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
在Kali虚拟机的linux环境,md5sum命令是求文件摘要的命令。
如图:
2.3.2找出并解释这个二进制文件的目的
在Kali虚拟机中尝试运行RaDa.exe程序,发现并不能运行成功。
如图:
因为Linux与Windows的内核不同,exe可执行文件并不能在Linux系统下执行。
但是可以通过在Linux上安装wine来运行exe程序。
我选择在IDA的字符串窗口中,通过查找字符串信息,来分析这个程序的目的。如图是一些关键字符串的分析。
如图:
1.通过HTTP协议请求10.10.10.10\RaDa\RaDa_commands.html。
2.download.cgi和upload.cgi上网搜索得到如下解释。
download.cgi:这是一个用于实现文件下载功能的CGI脚本。当用户访问该脚本并提供要下载文件的信息时,脚本会读取服务器上相应的文件并将其发送给用户的浏览器,从而实现文件的下载。
upload.cgi:这是一个用于实现文件上传功能的CGI脚本。当用户使用该脚本来上传文件时,脚本会接收用户上传的文件,并将其保存到服务器上的指定位置,从而实现文件的上传功能。
3.在C盘中创建一个RaDa文件夹,里面创建了tmp文件夹。
4.添加了一个注册表项:
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\,这个注册表项是控制计算机启动的信息,这样实现了开机自启动rada。
5.在RaDa文件夹中,创建了bin文件夹,将RaDa.exe复制在bin文件夹中。
6.添加了一个注册表项:
HKLM\Software\VMware, Inc.\VMware Tools\InstallPath
该位置的注册表项可控制远程桌面上的客户端驱动器重定向行为。猜想这个操作是为了实现远程控制桌面。
7.该位置的字符串显示发起DDOS Smurf远程攻击。
8.注册表读写删除操作,符合上面的4、6操作。
9.get put screenshot sleep操作,都是入侵系统的操作
2.3.3识别并说明这个二进制文件所具有的不同特性
1.可以修改系统。根据上面的分析,改程序可以通过修改注册表的方式修改系统设置,比如通过修改HKLM\Software\Microsoft\Windows\CurrentVersion\Run\,很可能是实现开机自启动。
2.可以远程控制。比如请求10.10.10.10\RaDa\RaDa_commands.html,有可能是让主机被一个特定的远程终端所控制。
3.具有侵略性。修改系统后,会触发截屏、挂起等操作,属于恶意程序。
4.可能会破坏用户在正常的行为,因为可能可以直接控制用户电脑关机,破坏正常的工作
2.3.4识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
主要的操作是upx加壳。我们用同样的方式打开原来的RaDa.exe文件,查看字符串,得到如下结果:
发现加壳时直接使用IDApro解析时什么内容都没有,但是脱壳后就能查看内容:
2.3.5对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
后门程序。首先它不具备自我复制的机制,所以排除蠕虫和病毒,其次它没有伪装成良性程序进行欺骗,所以排除木马。
最后,其具备操控靶机、提取权限的操作,是典型的后门程序的特点。
2.3.6 给出过去已有的具有相似功能的其他工具
实验二中使用的msf控制台可以生成后门程序,可以控制主机进行截图等操作,也是这样的工具。
2.3.7 可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以的,在上述逆向分析的过程中,很多地方都查出了该程序的作者,比如通过IDA pro逆向分析等。
另外,在windows环境下,直接输入RaDa.exe --authors 也可以查看,如下:
2.4 取证分析实践 Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
2.4.1 - IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC(Internet Relay Chat)是一种实时的互联网聊天协议,允许用户通过 IRC 客户端在 IRC 网络上进行即时通讯。
IRC 客户端通常用于加入 IRC 频道或与其他用户进行私聊。是一种使用客户端-服务器架构的多用户聊天系统。
特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。
1.IRC(Internet Relay Chat)是一种实时的互联网聊天协议,允许用户通过 IRC 客户端在 IRC 网络上进行即时通讯。
2.IRC 客户端通常用于加入 IRC 频道或与其他用户进行私聊。是一种使用客户端-服务器架构的多用户聊天系统。
3.特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。
在 IRC 中,用户可以注册一个账户,并在加入 IRC 网络时发送一些消息来完成注册和加入频道的过程。
注册账户:要注册一个账户,用户需要发送一条 PASS 消息(口令)、一条 NICK 消息(昵称)和一条 USER 消息(用户信息)。
其中,
加入频道:要加入一个 IRC 频道,用户需要发送一条 JOIN 消息。
1.在 IRC 中,用户可以注册一个账户,并在加入 IRC 网络时发送一些消息来完成注册和加入频道的过程。
2.注册账户:要注册一个账户,用户需要发送一条 PASS 消息(口令)、一条 NICK 消息(昵称)和一条 USER 消息(用户信息)。
3.其中,
4.
5.加入频道:要加入一个 IRC 频道,用户需要发送一条 JOIN 消息。
IRC 可以使用 TCP 端口 6665 至 6669,通常在6667端口监听。
1.IRC 可以使用 TCP 端口 6665 至 6669,通常在6667端口监听。
2.4.2 - 僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络(Botnet)是由一组受感染的计算机组成的网络,这些计算机被远程控制,通常是通过恶意软件(例如僵尸程序或恶意软件)感染。攻击者可以通过控制这些受感染的计算机来执行各种恶意活动,而这些计算机的所有者通常并不知情。
1.僵尸网络(Botnet)是由一组受感染的计算机组成的网络,这些计算机被远程控制,通常是通过恶意软件(例如僵尸程序或恶意软件)感染。攻击者可以通过控制这些受感染的计算机来执行各种恶意活动,而这些计算机的所有者通常并不知情。
僵尸网通常用于:
分布式拒绝服务(DDoS)攻击:攻击者可以利用僵尸网络的大量计算机向特定目标发动 DDoS 攻击,使目标服务器过载,导致服务不可用。
传播恶意软件:攻击者可以利用僵尸网络向更多计算机传播恶意软件,进一步扩大僵尸网络规模。
信息窃取:僵尸网络可以被用来窃取个人信息、银行账号、密码等敏感信息,用于非法目的。
点击欺诈:攻击者可以利用僵尸网络来增加广告点击率,从而获取不当利益。
恶意挖矿:攻击者可以利用僵尸网络的计算能力进行加密货币挖矿,从而获取加密货币。
1.僵尸网通常用于:
2.分布式拒绝服务(DDoS)攻击:攻击者可以利用僵尸网络的大量计算机向特定目标发动 DDoS 攻击,使目标服务器过载,导致服务不可用。
3.传播恶意软件:攻击者可以利用僵尸网络向更多计算机传播恶意软件,进一步扩大僵尸网络规模。
4.信息窃取:僵尸网络可以被用来窃取个人信息、银行账号、密码等敏感信息,用于非法目的。
5.点击欺诈:攻击者可以利用僵尸网络来增加广告点击率,从而获取不当利益。
6.恶意挖矿:攻击者可以利用僵尸网络的计算能力进行加密货币挖矿,从而获取加密货币。
2.4.3 - 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
首先了解什么是蜜罐主机,蜜罐是一个攻击诱骗系统,通过使用蜜罐模拟一个或多个易受攻击的主机和服务,给攻击者提供一个容易被攻击的目标,伪装成用户的业务应用,使攻击者误认为是欲攻击的目标对象。
使用wireshark,将实验提供的.bat文件拖入打开后,将端口设置为IRC端口,ip源设置为蜜罐主机的ip地址,设置的过滤语句如下:
1.ip.src == 172.16.134.191 && tcp.dstport == 6667
2.ip.src == 172.16.134.191:过滤器指定源IP地址为172.16.134.191的数据包。
3.&&:逻辑运算符“与”,用于同时指定多个条件。
4.tcp.dstport == 6667:过滤器指定目标TCP端口为6667的数据包。
如图:
不难发现该主机和五个IRC服务器进行了通信,分别是:
209.126.161.29
66.33.65.58
63.241.174.144
217.199.175.10
209.196.44.172
2.4.4 - 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
由于这个数据量太过巨大,所以需要借助软件来实现统计。首先需要我们再Kali中下载tcpflow
TCP flow是一个用于分析TCP流量的工具,它可以帮助用户监视和分析网络上的TCP连接。TCP Flow可以捕获和显示TCP连接的各种信息,包括源地址、目标地址、端口号、数据包数量、数据包大小、传输速率等。用户可以使用TCP Flow来识别网络中的异常流量、排查网络问题、监控网络性能等。
TCP Flow通常以命令行工具的形式提供,用户可以通过命令行界面输入相应的命令来启动和使用TCP Flow。它可以与其他网络分析工具结合使用,如Wireshark等,从而提供更全面和深入的网络分析能力。TCP Flow的输出通常以文本形式呈现,用户可以根据需要对结果进行进一步处理和分析。
如图:
然后利用TCP flow进行数据包分析,所需指令如下:tcpflow -r botnet_pcap_file.dat ‘host 209.196.44.172 and port 6667’ # 进行抓包,-r读取该数据包
如图:
可以得到三个文件:209.196.044.172.06667-172.016.134.191.01152、
172.016.134.191.01152-209.196.044.172.06667、
report.xml。
根据需要我们 选择打开209.196.044.172.06667-172.016.134.191.01152文件,情况如下
如图:
输入后运行直接可以得到结果
如图:
2.4.5 - 哪些IP地址被用于攻击蜜罐主机?
由于蜜罐具有引诱攻击的属性,因此所有进入蜜罐的流量都视为可疑流量,都是攻击。用下列命令将所有连接蜜罐主机的IP地址输出到20222304.txt。可知共有165个IP地址被用于攻击蜜罐主机,具体IP见20222304.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 > 20212408.txt;wc -l 20212408.txt
tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191':使用 tcpdump 从 pcap 文件中提取目标地址为 172.16.134.191 的数据包,并显示源IP地址。选项 -n 和 -nn 用于禁用域名解析,加快处理速度并避免可能的网络请求。
awk -F " " '{print $3}':使用 AWK 提取每行的第三列,即源IP地址。
cut -d '.' -f 1-4:使用 cut 命令以 . 为分隔符提取源IP地址的前四个字段,这样可以将源IP地址转换为网络前缀形式。
sort | uniq:对结果进行排序并去重,以获取唯一的网络前缀。
more > 20222304.txt:将结果输出到名为 20222304.txt 的文件中。
wc -l 20222304.txt:统计 20222304.txt 文件中行的数量,即唯一网络前缀的数量。
如图:
由图可知,一共有165个IP被利用对蜜罐系统进行了攻击。
2.4.6 - 攻击者尝试攻击了那些安全漏洞?
想要查看使用了哪些安全漏洞,可以直接使用wireshark自带的统计功能(统计->协议分级)
如图:
可以发现UDP协议有186个包,TCP协议有54350个包,他们在ip层的协议都是ipv4。重点筛选tcp端口和udp端口。
2.4.6.1对于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
tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191 and tcp[tcpflags]== 0x12':使用 tcpdump 从 pcap 文件中提取源地址为 172.16.134.191 且 TCP 标志字段为 0x12 的数据包。选项 -nn 禁用了域名解析,加快处理速度并避免可能的网络请求。
cut -d ' ' -f 3:使用 cut 命令提取每行的第三列,即目标地址和端口号的组合。
cut -d '.' -f 5:使用 cut 命令以 . 为分隔符提取端口号字段,获取目标端口号。
sort | uniq:对结果进行排序并去重,以获取唯一的目标端口号。
从图中可以发现135(rpc)、139(netbios-ssn)、25(smtp)、445(smb)、4899(radmin)、80(http)端口是开放并相应的。
135:Microsoft NetBIOS服务,用于文件和打印机共享等功能。
139:NetBIOS Session服务,通常与SMB(Server Message Block)一起使用,用于文件共享。
25:SMTP(Simple Mail TransferProtocol),用于电子邮件传输。
445:Microsoft-DS服务,用于文件共享和打印机共享等功能,是 SMB 在 TCP/IP上的实现。
4899:通常用于被恶意软件(如木马)利用的端口,需要谨慎对待。
80:HTTP(HyperText Transfer Protocol),用于传输网页等超文本信息。
2.4.6.2同理,对于udp协议端口的扫描
1.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
2.具体语法作用和TCP端口扫描的作用相同。
如图:
UDP端口为137端口,此端口在局域网中提供计算机的IP地址查询服务,处于自动开放状态,可用于NetBIOS查点。
2.4.7 逐个分析
2.4.7.1 tcp.port == 135
如图:
2.4.7.2 tcp.port == 139
如图:
再图中可以看到一些Tree Connect AndX Request(树连接和请求)数据报,分析这个数据报的含义。
“Tree Connect AndX Request” 是 SMB(Server Message Block)协议中的一种请求数据报。SMB 是一种用于在局域网中共享文件、打印机和其他资源的通信协议。在 SMB 协议中,“Tree Connect AndX Request” 用于请求与远程共享资源的连接。
当客户端想要访问远程共享资源(如文件夹或打印机)时,它会向远程服务器发送一个"Tree Connect AndX Request" 请求。该请求中包含要连接的共享资源的路径和其他连接信息。服务器收到请求后,会验证客户端的身份和权限,并在连接成功后向客户端发送确认响应。
通过"Tree Connect AndX Request",客户端可以访问共享资源并执行读取、写入等操作。这个请求在 SMB 协议中扮演着连接到共享资源的关键角色。
但是每有一次Tree Connect AndX Request都会收到一个rst的拒绝包,所以攻击失败了,并没有成功共享。
2.4.7.3 tcp.port == 25
如图:
发现这只是握手时的数据包,并没有进行攻击。
2.4.7.4 tcp.port == 445
如图:
首先发现了大量重复的共享请求,而每次都会返回logoff andx request中有大量的Bad Userid,“Logoff AndX Request” 中出现大量的 “Bad Userid” 错误,通常表示客户端尝试使用无效的用户标识符(Userid)进行注销操作。推测可能有暴力口令破解的嫌疑。
2.4.7.5 tcp.port == 4899
如图:
4899端口通常用于被恶意软件(如木马)利用的端口,需要谨慎对待。作为远程控制软件(remote administrator)服务端监听的端口,他不能算是一个木马程序,但是具有远程控制功能。通常杀毒软件是无法查出它来的。
有这么多的流量,且双方通信正常,一堆ACK,可以知道已经形成了控制和被控制的关系了。
2.4.7.6 tcp.port == 80
如图:
80端口的包中的"NotWorm" 是指一种不具备自我传播能力的计算机恶意软件(Malware),通常是一种独立的恶意软件程序,不会自动传播到其他计算机。
2.4.7.7 udp.port == 137
如图:
这里的NBNS是NetBIOS name service的缩写,是NetBIOS的命名服务。可知此处是在进行NetBIOS查点。
综上,没有攻击行为的端口:
135 139 25 137
有攻击行为,但是并没有攻击成功的端口:
80
有攻击行为,并且攻击成功(有效攻击)的端口:
445 4899
三、遇到的问题及解决
问题一:IDApro使用时无法进行反汇编
解决方案:
开始进行实验使用的IDApro时从学习通上面直接下载进行使用的,但是可能时版本太老,或者是版本不匹配的原因,不能再view目录下找到对文件进行反汇编的按钮,于是我选择将老版本卸载,并从网上获取了最新版本的IDApro进行安装,之后便能正常使用反汇编的操作。
并且,在使用老版本的IDA时,函数图表中的main函数并不是英文的main,而是汇编代码中的sub_40800,新版本则是能够直接显示main函数。
问题二:尝试确定二进制文件目的时,无法顺利查找到对应的语句
解决方案
在进行对二进制文件的目的判断时,需要查看文件中的函数内容,我根据学长的报告进行实验,需要在打开脱壳后的RaDa.exe后打开string视图来查找10.10.10.10\RaDa\RaDa_commands.html等内容,但是我发现打开string视图后仍没有匹配的语句,于是对IDApro进行探索后发现可以直接在汇编语言后面看到对应的内容,便不需要再打开string视图。
问题三:分析端口时无从下手
解决方案
由于对于TCP和udp的知识以及一些恶意攻击的内容不够了解,导致开始进行分析时无从下手,不知道如何去判断这个端口是不是被攻击,或者存在潜在的被攻击的风险,于是再学习了学长的实验报告后得到了一个比较适用的结论,就是先通过命令扫描tcp协议端口和udp协议端口,然后再依次分析各个端口的行为。
在分析某个端口的过程中,可能会面对非常多的包,大部分是看不出什么情况的,这个时候需要很耐心地依次分析,直到找到一些线索。比如出现连续的无意义的字符串,猜想很有可能是缓冲区溢出攻击,等等。
四、心得体会
这次实验对我来说确实是一次挑战,因为它强调了系统防御和恶意代码分析等方面的技能。恶意代码分析和逆向工程是网络安全领域中非常重要的技能,能够帮助我理解攻击者的行为和意图,从而提高系统的安全性。通过这次实验,我不仅学会了如何分析恶意代码的性质和行为,还掌握了一些重要的工具和技术,如脱壳、提取字符串、分析函数调用关系等。
在未来的学习和工作中,这些技能将会为我打下坚实的基础。网络安全领域的知识和技术是不断发展的,所以我需要不断学习和提升自己的技能,以应对不断变化的网络环境。加油,继续努力!
标签:exe,恶意代码,端口,网络,2024,2025,20222323,如图,IRC From: https://www.cnblogs.com/amlyl/p/18530224