20232903 2023-2024-2 《网络攻防实践》实践八报告

20232903 2023-2024-2 《网络攻防实践》实践八报告

一、实践内容

动手实践任务1

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。

动手实践任务2

分析Crackme程序。在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。

分析实践任务1

分析一个自制恶意代码样本rada。

分析实践任务2

Windows 2000系统被攻破并加入僵尸网络。分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。

二、实践过程

1.动手实践任务一

任务:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具

①在主机上下载解压rada压缩包,然后直接复制文件夹粘贴到虚拟机中。
在这里插入图片描述

②开始实验。先定位到对应文件夹,然后输入命令file Rada.exe,即可看到文件的类型。可看出这是一个32位的可执行程序(其实是一个勒索病毒-特洛伊木马变种)。
在这里插入图片描述

③查看其文件的内容,输入指令 cat Rada.exe,发现显示文件内容为乱码。
在这里插入图片描述在这里插入图片描述在这里插入图片描述查看老师在学习通上发的PDF《rada分析时间讲解》,发现其可能是加壳了。
在这里插入图片描述

④在WinXp中,使用PEiD对该文件查壳,从下图结果可看出Rada.exe加了UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo壳。
在这里插入图片描述

(2)既然我们知道了其加的壳,通过网络资料查询发现我们可以通过使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理。

从下图看出,这个壳支持脱壳,并且其脱壳的输出路径与Rada.exe在同一目录。
在这里插入图片描述

rada文件夹里也增加了RaDa_unpacked.exe这个文件(即脱壳后得到的文件)。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f670e41bba334456a88ba910ddf92488.png

(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

①查看脱壳后的RaDa.exe文件内容,输入代码strings rada_unpacked.exe,可看到大量函数调用名\字符串,但并无作者信息。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

②使用IDA Pro Free 工具,获取脱壳后Rada.exe的相关信息,如下图所示,成功找到作者邮箱(ida@datarescue.com)等信息。
在这里插入图片描述

2.动手实践任务二

任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。

(1)环境

仍使用虚拟机WinXp,所需的文件为crackme1.exe和crackme2.exe,仍和上个实践任务一样,在主机中下载资源,然后复制到虚拟机中去。
在这里插入图片描述

(2)分析crackme1.exe

①试探crackme1.exe的输入参数。假定它有0个、1个、2个、3个、4个、5个参数等等,直到回复重复。可看到只有在输入一个参数的时候它的回复和其他的不一致,因此猜测输入为一个参数。
在这里插入图片描述

②使用IDA Pro工具分析。点击Strings窗口发现一共有四个字符串,其中 I think you are missing something.和Pardon? What did you say?在进行参数猜测时出现过。

猜想如下:
1)I think you are missing something.是指输入的参数数量错误。
2)Pardon? What did you say?是指参数数量正确,但可能参数的内容或者范围错误。

在这里插入图片描述

③找到I know the secret,右击选择Edit function,发现是函数sub_401280中输出的这句话。
在这里插入图片描述

④查看此exe执行程序的函数调用图(在哪里会调用sub_401280函数)。

点击界面顶部目录中的View——Graphs——Function calls。
可以看到sub_401280函数调用了strcmp比较函数,fprintf、printf输出函数,以及sub_401510、sub_401840、sub_401250函数。
在这里插入图片描述

⑤查看sub_401280函数(汇编码为401280)的流程图

点击界面顶部目录中的View——Graphs——Flow chart。
由下图可知:

1) 若命令行输入参数个数为2(crackme1.exe也算一个参数),则跳转至loc_4012D2。然后比较第二个参数是否为”I know the secret”:若是,则跳转至loc_401310,并输出You know how to speak to programs, Mr. …;反之,走左边的false,输出Pardon? What did you say?
2)若命令行输入参数个数不为2,则输出I think you are missing something.。

在这里插入图片描述

⑥分析结果验证
输入一个分析正确的输入结构:crackme1.exe “I konw the secret”,可以发现返回的是You know how to speak to programs, Mr.Reverse-Engineer,即分析正确。
在这里插入图片描述

(3)分析crackme2.exe

①试探crackme2.exe输入的参数个数。可看到仍为输入一个参数时和输入其他数量的参数时不一,所以仍猜测输入的参数为1。
在这里插入图片描述

②使用IDA Pro工具分析crackme2.exe
Strings窗口发现五个字符串,其中 I think you are missing something.和I have an identity problem.在进行参数猜测时出现过,猜测:
1)I think you are missing something.是指输入的参数数量错误;
2)I have an identity problem.是指参数数量正确,但可能参数的内容或者范围错误。
在这里插入图片描述

③查看I know the secret的来源,发现仍在函数sub_401280中。
在这里插入图片描述

④查看sub_401280(汇编值为401280)的流程图。
首先找到这个函数,然后开始分析。

1)最上方的方格中的红框表示:判断输入的值是否为两个参数。若否,则跳转到左边false,输入左下的那段话, I think you are missing something;若是,则跳转右边true,右边需要比较第一个参数是否为crakmeplease.exe。
2)若输入第一个参数正确,则跳转右边true,然后比较第二个参数是否为:”I Know the secret”;若输入的第一个参数错误,则跳转左边false,并输出I have an identity problem.表示输入的参数个数正确,但输入的参数内容错误。
3)若输入的第二个参数正确,则输出"We have a little secret : Chocolate";若输入的第二个参数错误,则输出"Pardon? What did you say?"
在这里插入图片描述
⑤ 分析结果验证
如下图所示,前4个输入在前面讲过了,输入2个参数是正确的。

输入2个参数,第一个参数错误,第二个参数正确,输出判断是参数正确,内容错误。可知,直接输入crakmeplease.exe时,系统识别不了,会显示 ‘crackmeplease.exe’ 不是内部或外部命令,也不是可运行的程序或批处理文件。因此,我通过’copy crackme2.exe crackmeplease.exe’命令复制了一个crakmeplease.exe含有crackme2.exe的内容。
之后,输入的第一个参数正确,第二个参数错误,输出判断是第一个参数正确。
最后,输入 'crackmeplease.exe “I know the secret” ’ 命令,从结果可知,输入的参数是正确的,输出是正确的。
综上,猜测正确。
在这里插入图片描述

3.分析实践任务一

分析一个自制恶意代码样本rada,并撰写报告,回答问题:

分析具体内容如下:
使用md5sum RaDa.exe命令进行MD5摘要的获取,可得到MD5为:caaa6985a43225a0b3add54f44a0d4c7
在这里插入图片描述

打开Process Explorer软件,监听脱壳后的RaDa.exe文件,即RaDa_unpacked.exe。
在这里插入图片描述

点击本行内容,进行监听查看,然后点击Strings,由红框内的监听信息可知,该恶意软件先访问了http://10.10.10.10/RaDa这个网站,将RaDa_commands.html下载到了C:\RaDa\tmp。它还判断当前环境是否是在虚拟环境下,如果不是,就进行DDos泛洪攻击,占据目标主机的资源,然后还修改了注册表,用Wscript.Shell对象读写 Wscript.Shell有三个方法,分别是RegWrite、RegRead、RegDelete。
在这里插入图片描述

从下图信息可知,它将RaDa设置为了开机启动项,最后它还攻击了三大内网(192.168、172.16、10三个网段)。此外,还能在这里看到作者的信息(Raul Siles & David Perez在2004年编写了此恶意软件)。
在这里插入图片描述

回答问题如下:
问题1:提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
答:摘要为caaa6985a43225a0b3add54f44a0d4c7。

问题2:找出并解释这个二进制文件的目的。
答:
①DDos攻击
②连接http://10.10.10.10/RaDa网站,下载并留下后门
③修改注册表,设置RaDa开机自启动
④攻击了三大内网,即192.168、172.16、10三个网段

问题3:识别并说明这个二进制文件所具有的不同特性。
答:
①会在初次运行时,下载文件到C盘下,留下后门并修改注册表实现自己的开机自启
②启动DDos攻击

问题4:识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
答:在动手实践任务一中可知使用了这种加壳技术:UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo。

问题5:对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
答:
该文件通过修改注册表实现开机自启,通过连接网站下载文件,留下后门,并实现DDos攻击。由此可知,它的目的是让主机瘫痪,无法提供服务。同时,它不复制感染,不属于病毒和蠕虫,也没有伪装成可用程序欺骗用户运行。而后门程序是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。因此这个恶意代码样本是后门程序。

问题6:给出过去已有的具有相似功能的其他工具。
答:
①特洛伊木马Setiri
②僵尸程序Gatslag
③僵尸程序Zeus

问题7:可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
答:
可以,作者为Raul Siles & David Perez。
环境条件如下:
①直接输入RaDa -authors命令
②直接反编译该脱壳文件
③使用监听工具Process Explorer

4.分析实践任务二

Windows 2000系统被攻破并加入僵尸网络

任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。

首先,打开Kali虚拟机,使用Wireshark对学习通上的检测日志文件进行分析。从下图看出,各种IP地址和包均存在。
在这里插入图片描述

问题1:IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
答:
(1)IRC(Internet Relay Chat),即因特网中继聊天。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。经过十年的发展,世界上有超过60个国家提供了IRC的服务。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为Channel(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)。

(2)当IRC客户端(连接到IRC网络的程序)想要加入IRC网络时,会向IRC服务器发送一系列命令。初始命令通常包括以下内容,发送这些命令后,客户端等待IRC服务器回应欢迎信息和可用频道列表:
1)NICK 命令:设置客户端在网络上的昵称(用户名)。 例子:NICK 我的昵称
2)USER 命令:设置客户端的用户名和真实姓名。例子:USER 我的用户名 0* : 我的真实姓名
3)MODE 命令:设置客户端的用户模式(例如,+i 隐身模式)。 例子:MODE 我的昵称+i

(3)IRC通常使用以下TCP端口:
6665 - 6669:常规IRC通信端口
6697:IRC连接的备用端口(有时用于SSL/TLS加密连接)
7000:另一个IRC连接的备用端口

问题2:僵尸网络是什么?僵尸网络通常用于什么?
答:
(1)僵尸网络(Botnet)是由攻击者通过各种途径传播僵尸程序(bot程序)病毒,感染互联网上的大量主机,并通过一个控制信道接收攻击者的指令,形成的一个可一对多控制的网络。

(2)僵尸网络通常用于恶意活动,例如:

1)分布式拒绝服务(DDoS)攻击:从多个感染的计算机对网站或网络进行流量攻击,使其不可用。
2)垃圾邮件和钓鱼:从感染的计算机发送大量垃圾邮件或钓鱼邮件。
3)恶意软件传播:从感染的计算机传播恶意软件、病毒或勒索软件。
4)加密货币挖矿:使用感染的计算机挖矿加密货币,而不需要计算机所有者的知情或同意。
5)数据盗窃和间谍:从感染的计算机窃取敏感信息,如登录凭证、信用卡号或机密数据。

问题3:蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
答:
常用的是6665 - 6669端口,所以得用以下命令,将IRC服务器的端口和蜜罐主机的ip作为过滤条件,对Wireshark日志进行包的筛选。

命令如下:
ip.src172.16.134.191 && tcp.port == 6665
ip.src
172.16.134.191 && tcp.port == 6666
ip.src172.16.134.191 && tcp.port == 6667
ip.src
172.16.134.191 && tcp.port == 6668
ip.src172.16.134.191 && tcp.port == 6669
ip.src
172.16.134.191 && tcp.port == 6697
ip.src==172.16.134.191 && tcp.port == 7000

发现,只有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为服务器的僵尸网络?
答:
先使用 sudo apt-get install tcpflow 命令安装TCPflow工具。
在这里插入图片描述

首先,使用 sudo tcpflow -r botnet_pcap_file.dat “host 209.196.44.172 and port 6667” 命令进行wireshark日志进行分析,再利用管道命令sudo 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 -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命令,重新利用tcpflow来进行分析,它将生成一个名为IP.txt的文件(文件名自定义),文件中是被用于攻击蜜罐主机的所有IP地址。

生成的IP.txt文件如下,且输出165表示共有165个IP被用于攻击蜜罐主机。
在这里插入图片描述在这里插入图片描述

双击打开:
在这里插入图片描述在这里插入图片描述

即总共165个IP被用于攻击蜜罐主机。

问题6:攻击者尝试攻击了那些安全漏洞?
答:
使用命令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 udp | cut -d ’ ’ -f 3 | cut -d ‘.’ -f 5 | sort | uniq
利用tcpflow工具进行筛选,筛选的是TCP端口和UDP端口。
在这里插入图片描述在这里插入图片描述

可以看到,TCP端口有135(rpc)、139(netbios-ssn)、25(smtp)、445(smb)、 4899(radmin)、 80(http)被攻击
UDP端口有137(NetBIOS Name Service)号端口(安全漏洞)被攻击。

问题7:那些攻击成功了?是如何成功的?
答:
445端口的PSEXESVC.EXE攻击成功了。

它首先伪装了一个蠕虫病毒文件PSEXESVC.exe,并通过开放的445端口将其植入到目标主机,然后逐步拿下了admin、administrator的管理员权限,实现了远程连接,掌控了目标主机。

攻击需要逐个来分析判断是否成功:
①135端口
使用 ip.addr == 172.16.134.191 && tcp.port ==135 命令在wireshark中查询。
在这里插入图片描述只有一些TCP数据包,只是一些握手连接

②139端口
使用 ip.addr == 172.16.134.191 && tcp.port ==139 命令在wireshark中查询。
在这里插入图片描述发现了TCP、SMB和NBSS等等数据包。

③25端口
使用 ip.addr == 172.16.134.191 && tcp.port ==25 命令在wireshark中查询。
在这里插入图片描述只有一些TCP数据包,只是一些握手连接。

④445端口
使用 ip.addr == 172.16.134.191 && tcp.port ==445 命令在wireshark中查询。
在这里插入图片描述

可看到PSEXESVC.EXE这一可疑的exe可执行文件(是一个恶意远控程序、蠕虫病毒)

PSEXESVC.EXE 是一个服务,在使用 PsExec 连接到远程系统时安装在远程系统上。此服务允许 PsExec 在远程系统上执行过程并与本地系统通信。

攻击者拿下admin:
在这里插入图片描述

攻击者拿下administrator:
在这里插入图片描述该攻击成功,被攻击者拿下了权限,导致被远程控制。

⑤4899端口
使用 ip.addr == 172.16.134.191 && tcp.port ==4899 命令在wireshark中查询。
在这里插入图片描述

只有一些TCP数据包,只是一些握手连接。
发现了一个http包,通过查找资料、和同学交流也没有很清楚它是什么来头。
在这里插入图片描述

⑥80端口
使用 ip.addr == 172.16.134.191 && tcp.port ==80 命令在wireshark中查询
在这里插入图片描述

又发现了一个http包,与上述4899端口出现的一致。
在这里插入图片描述

发现了CCCCC等填充数据(在做缓冲区溢出)。
在这里插入图片描述

跟踪数据流发现,一切正常。此处shell未被拿下,即缓冲区溢出攻击失败。
在这里插入图片描述

⑦137端口(UDP)
使用 ip.addr == 172.16.134.191 && udp.port ==137 命令在wireshark中查询
在这里插入图片描述只有一系列的NBNS包。网络基本输入/输出系统 (NetBIOS) 名称服务器 (NBNS) 协议是 TCP/IP 上的NetBIOS (NetBT) 协议族的一部分,它在基于 NetBIOS 名称访问的网络上提供主机名和地址映射方法。

综上,只有445端口的PSEXESVC.EXE攻击成功,获取了权限,进行了远程控制。

三、学习中遇到的问题及解决

  • 问题1:靶机无法链接桥接网络
  • 问题1解决方案:关闭虚拟机,重启电脑,重新配置该虚拟机的ip地址

四、实践总结

学习了恶意软件检测的知识,学会了监视工具Process Explorer、脱壳和加壳工具“超级巡警虚拟机脱壳器”的使用,进一步熟练了Wireshark的使用,运用反汇编IDA和Wireshark来分析病毒,受益匪浅。但是,本次实验也暴露出我相关专业知识的匮乏,我将在之后深入学习掌握相关技能。

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值