1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 2413 --2 《网络与系统攻防技术》实验四实验报告

2413 --2 《网络与系统攻防技术》实验四实验报告

时间:2022-05-22 05:21:15

相关推荐

2413 --2 《网络与系统攻防技术》实验四实验报告

2413 --2 《网络与系统攻防技术》实验四实验报告

文章目录

2413 --2 《网络与系统攻防技术》实验四实验报告1.实验内容2.实验过程2.1 恶意代码文件类型标识、脱壳与字符串提取2.1.1 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具2.1.2 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理2.1.3 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁 2.2 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息2.2.1 分析crackme1.exe2.2.2 分析crackme2.exe 2.3 分析一个自制恶意代码样本rada,回答问题2.3.1 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息2.3.2 找出并解释这个二进制文件的目的2.3.3 识别并说明这个二进制文件所具有的不同特性2.3.4 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术2.3.5 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由2.3.6 给出过去已有的具有相似功能的其他工具2.3.7 可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下? 2.4 取证分析实践:Windows 2000系统被攻破并加入僵尸网络2.4.1 IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?2.4.2 僵尸网络是什么?僵尸网络通常用于什么?2.4.3 蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?2.4.4 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?2.4.5 哪些IP地址被用于攻击蜜罐主机?2.4.6 攻击者尝试攻击了哪些安全漏洞?哪些攻击成功了?是如何成功的? 3.问题及解决方案4.学习感悟、思考等参考资料

1.实验内容

恶意代码文件类型标识、脱壳与字符串提取

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下: 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁? 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。分析一个自制恶意代码样本rada,并撰写报告,回答以下问题: 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;找出并解释这个二进制文件的目的;识别并说明这个二进制文件所具有的不同特性;识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;给出过去已有的具有相似功能的其他工具;可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下? 取证分析实践:Windows 2000系统被攻破并加入僵尸网络

数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题: IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?僵尸网络是什么?僵尸网络通常用于什么?蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?哪些IP地址被用于攻击蜜罐主机?攻击者尝试攻击了哪些安全漏洞?哪些攻击成功了?是如何成功的?

2.实验过程

2.1 恶意代码文件类型标识、脱壳与字符串提取

2.1.1 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
kali下使用file命令查看文件格式和类型

file RaDa.exe

分析:RaDa.exe是一个Windows下的32位PE文件,由三个部分组成,并且有图形界面。

Windows下使用PE Explorer查看文件信息

软件下载:网上随便找个下载链接。

分析:根据描述字段,结论与上一步的分析一致

使用PEiD查看加壳工具

下载链接(提取码:zkaq)用win7的那个就行。

分析:使用UPX加了压缩壳,识别结果为“UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo”。

2.1.2 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理

直接用PEiD的插件就能脱壳。想体验超级巡警的网上随便找个下载链接就行。PEiD的插件里有个通用脱壳器,能脱大部分的壳。但我们使用unpacker for upx插件进行脱壳,因为专门针对某类壳进行脱壳效果更好:

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

在kali下使用strings命令分析脱壳后的rada恶意代码样本(unpacked.exe)

strings unpacked.exe

定位到有一行为“© Raul Siles && David Perez”,与编写作者相关。

接下来下载IDA Pro。用IDA Pro打开恶意代码样本,点击“视图”→“打开子视图”→“字串”查看字符串:

右键单击选择“设置”,更改“允许字串类型”为Unicode C-style,再次查看:

出现“Authors:Raul Siles & David Perez,”。该恶意代码为Raul Siles和David Perez于编写。

2.2 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息

2.2.1 分析crackme1.exe
kali下查看文件信息

file crackme1.exe

分析:crackme1.exe是一个Windows下的32位PE文件,由七个部分组成,并且由控制台操作。

kali下运行程序并试探输入格式

即试探命令行参数:

初步结论:需要给出一个参数,所需参数值暂时未知。

Windows下利用IDA Pro进一步分析

共有4种字符串,目前我们已经知道了其中的两种:

“I think you are missing something.” -> 参数数量不对

“Pardon? What did you say?” -> 参数数量对,但参数值不对

接下来选择“跳转”→“跳转到函数”→“_main”,按下F5进行反编译:

分析:main函数中首先会判断命令行参数个数,若个数不为2,输出“I think you are missing something.”,直接结束。若个数等于2,则判断第二个参数是不是“I know the secret”,若是则输出“You know how to speak to programs,Mr. Reverse-Engineer”,否则输出“Pardon? What did you say?”。

结论:将字符串“I know the secret”作为第二个参数即可得到正确输出。

2.2.2 分析crackme2.exe
kali下查看文件信息

file crackme2.exe

分析:同crackme1.exe。

kali下运行程序并试探输入格式

即试探命令行参数:

初步结论:需要给出一个参数,所需参数值暂时未知。

Windows下利用IDA Pro进一步分析

选择“视图”→“打开子视图”→“字串”,在设置中勾选“允许字串类型”C-style,查看字符串:

共有5种字符串,目前我们已经知道了其中的两种:

“I think you are missing something.” -> 参数数量不对

“Pardon? What did you say?” -> 参数数量对,但参数值不对

接下来选择“跳转”→“跳转到函数”→“_main”,按下F5进行反编译:

分析:main函数首先会判断命令行参数个数,若个数不为2,输出“I think you are missing something.”,直接结束。若个数等于2,则先判断第一个参数是不是“crackmeplease.exe”,若不是则输出“I have an identity problem.”,直接结束。若是,则接着判断第二个参数是不是“I know the secret”,若是则输出成功信息,否则输出“Pardon? What did you say?”。

结论:将“crackmeplease.exe”作为第一个参数,“I know the secret”作为第二个参数,即可得到成功信息。那我们就得在windows下测试执行效果了:

2.3 分析一个自制恶意代码样本rada,回答问题

2.3.1 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
Windows下使用Certutil来计算RaDa.exe的摘要

certutil -hashfile Z:\下载\rada\RaDa.execertutil -hashfile Z:\下载\rada\RaDa.exe MD5certutil -hashfile Z:\下载\rada\RaDa.exe SHA256

kali下通过file命令来识别基本信息

前面识别过了,不识别了:

RaDa.exe: PE32 executable (GUI) Intel 80386, for MS Windows, 3 sections

同时查看文件属性:

2.3.2 找出并解释这个二进制文件的目的

在IDA Pro下打开unpacked.exe,选择“视图”→“打开子视图”→“字串”,查看字符串,据此进行静态分析:

通过反弹式连接目标为10.10.10.10的主机下的一个名为RaDa_commands的网页上,可能获取了某些指令信息等,猜测是后面三行cgi的内容。

在C盘下创建RaDa文件夹,并包含tmp和bin两个子文件夹。下载了一些文件到tmp目录下,将RaDa.exe复制到bin目录下。

添加了2个注册表项。其中HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run是控制计算机启动项的注册表信息,在这里rada修改注册表实现了开机自启动,修改内容为REG_SZ字符串类型

可能发起DDoS Smurf远程攻击(唬人的玩意)。

调用了user32.dll和kernel32.dll内核文件。

出现了Wscript.Shell(其创建的WshShell对象可以操作注册表)

这一步猜测是修改了注册表,接着读取数据到变量中,最后删除对注册表的修改。

从navigate开始可能是进入了一个导航栏,查看了里面Document、Forms等内容块。

可以进行截屏、休眠等操作

给出了Usage。可以查看一下作者信息、GUI等等:

给出了数据库查询语句,查询的内容和网络适配器配置相关,根据后面的内容猜测与MAC地址有关。

2.3.3 识别并说明这个二进制文件所具有的不同特性

该二进制文件能修改注册表,开机自启动,自我复制到C盘,进行截图等操作。并且能从指定的web服务器请求指定的web页面,进而获取指令(通过CGI程序)。

2.3.4 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术

使用了UPX加壳。直接用strings命令查看会发现全是乱码。同时也有虚张声势,比如它说它要发起DDoS Smurf远程攻击,其实并没有。

2.3.5 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由

分类:后门程序

理由:不能自主进行传播和感染,没有伪装成正常程序进行欺骗。其功能主要是建立连接远端服务器的后门,远程获取指令并执行,伪装性强,具有持续性。

2.3.6 给出过去已有的具有相似功能的其他工具
Bobax(TrojanProxy.Win32.Bobax.a)同样使用http协议从指定的服务器下载命令文件,然后执行指令Setiri木马,由两部分代码组成:Connection Broker Code和后门。Connection Broker Code就是安装在任何一台web服务器上的CGI程序脚本,这一点很相似
2.3.7 可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

可以,很多地方都能看到,前面分析过了。

2.4 取证分析实践:Windows 2000系统被攻破并加入僵尸网络

2.4.1 IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?
IRC即Internet Relay Chat,因特网中继聊天。其工作原理就是客户端软件通过因特网以IRC协议连接到IRC服务器上。IRC的特点是通过服务器中继与其他连接到这一服务器上的用户交流。IRC客户端申请加入一个IRC网络时将发送JOIN信息。IRC服务器明文传输通常在6667端口监听,也会使用6660—6669端口。SSL加密传输在6697端口。但是当攻击者滥用IRC构建僵尸网络时,可能使用任意的端口构建IRC僵尸网络控制信道,此时基于端口识别服务不再可靠,要进行基于应用协议特征进行识别(如USER/NICK)。
2.4.2 僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络 (Botnet) 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。僵尸网络通常用于拒绝服务攻击、发送垃圾邮件、窃取用户敏感信息等秘密、耗费网络资源。
2.4.3 蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?

kali下使用Wireshark打开数据源botnet_pcap_file.dat,设置过滤条件:

ip.src == 172.16.134.191 && tcp.dstport == 6667 && tcp.flags == 0x2#蜜罐主机尝试连接6667端口的SYN包

结论:蜜罐主机与5台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为服务器的僵尸网络?

由于每个IRC的使用者都有一个昵称Nick,我们可以通过观察不同昵称出现个数来确认访问的主机数。

首先安装tcpflow:

sudo apt install tcpflow

接着导出访问209.196.44.172:6667的所有包的信息:

tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'#-r: read packets from tcpdump output file

主机加入IRC频道后,频道会将当前频道中所有主机的信息发送过来,从而计算当前频道共有多少主机。因此我们选择209.196.044.172.06667-172.016.134.191.01152这个文件进行分析。

不难发现,6中给出了主机名。

往后看,从31到98都是汇总了所有加入频道的主机名。我们考虑通过grep正则匹配进行筛选:

cat 209.196.044.172.06667-172.016.134.191.01152| grep -a "^: 353" \ #符号^表示只匹配给定模式开头的字符串| sed "s/^: 353 rgdiuggac @ #x[^x]*x ://g" \ #匹配前缀并用空串取代| tr ' ' '\n' \ #将空格转换为新行| tr -d "\r" \ #删除回车符| grep -v "^$" \ #去除空行| sort -u \ #去重| wc -l #获得行数#sed 's/要被取代的字串/新的字串/g'

虽然得到了3461这个答案,但是实际上这个答案是错误的。由于文件编码的原因,grep命令会出问题。如果在macOS下尝试就会有更直观的发现:

直接报错了,连结果都出不来。解决方案:

#终端输入export LC_COLLATE='C'export LC_CTYPE='C'#然后再次执行cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^: 353" | sed "s/^: 353 rgdiuggac @ #x[^x]*x ://g" | tr ' ' '\n' | tr -d "\r" | grep -v "^$" | sort -u | wc -l

现在得到了正确答案3457。

2.4.5 哪些IP地址被用于攻击蜜罐主机?

使用网络数据采集分析工具tcpdump进行分析:

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 > mwm.txt;wc -l mwm.txt#将所有连接蜜罐主机的IP地址输出到mwm.txt#awk -F指定分隔符,可指定一个或多个,print后面做字符串的拼接#cut -d是指定字段的分隔符#tcpdump输出的内容结构是有规律的,第三个字符串是点分十进制表示的发送方的ip地址+端口号#uniq会检查并删除文本文件中重复出现的行列

结论:共有165个IP地址被用于攻击蜜罐主机。

2.4.6 攻击者尝试攻击了哪些安全漏洞?哪些攻击成功了?是如何成功的?

要想知道尝试攻击了哪些安全漏洞,首先要了解攻击了哪些端口:

方法一:snort抓包分析

apt install snortsnort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii

方法二:wireshark直接看

结论:大部分都是TCP包,少数是UDP包。故首先应该筛选出响应的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

结论:TCP响应端口为135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)。

#筛选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响应端口为137(netbios-ns)。

分析:

udp 137号端口:

137端口主要用于“NetBIOS Name Service”(NetBIOS名称服务),使用者只需要向局域网或互联网上的某台计算机的137端口发送一个请求,就可以获取该计算机的名称、注册用户名,以及是否安装主域控制器、IIS是否正在运行等信息,处于自动开放状态。

tcp 135号端口:

#筛选规则tcp.port == 135

发现只进行了连接,没有数据的交互,所以攻击者可能是对该端口进行了connect扫描。

tcp 139号端口

#筛选规则tcp.port == 139 && ip.dst == 172.16.134.191

发现大部分都是SMB连接,有很多空会话。

tcp 25号端口:

#筛选规则tcp.port == 25

发现只进行了连接,没有数据的交互,所以攻击者可能是对该端口进行了connect扫描。

tcp 445号端口:

#筛选规则tcp.dstport == 445 && ip.dst == 172.16.134.191

接下来为了方便,在wireshark中采用strings查询相关的字符串进行查找分析(参考资料):

发现在No.1649的报文中出现了\WINNT\System32\raddrv.dll文件。

发现在No.1688的报文中出现了\WINNT\System32\admdll.dll文件。

发现在No.20975的报文中以管理员身份访问了Windows文件共享。

发现在No.33280的报文中第一次出现“PSEXESVC.EXE”。该可执行文件可以在远程主机上运行命令,经常被利用到内网渗透之中。

接下来判断是否攻击成功。该攻击是由61.111.101.78发起的,那么我们寻找出口流量即可:

#筛选规则tcp.srcport == 445 && ip.src == 172.16.134.191

发现每个连接都有相应的响应报文,并且在No.34676的报文中出现\PIPE\ntsvcs,与RPC远程调用有关,故猜测攻击者获得了权限,这个攻击成功。

#筛选规则

tcp 4899号端口:

tcp.dstport == 4899 && ip.dst == 172.16.134.191

发现只有一个IP:210.22.204.101访问过。4899端口是一个远程控制软件服务端监听的端口,具有远程控制功能。可能是被用来控制蜜罐主机了。

tcp 80号端口:

#筛选规则tcp.dstport == 80 && ip.dst == 172.16.134.191

一眼缓冲区溢出攻击。攻击方:210.22.204.101。

发现攻击方24.197.194.106不停的用autoexec.bat脚本在攻击IIS服务器的漏洞,从而获取cmd.exe的执行权限。

在No.22741的报文中发现了cgimail.exe。此文件的某些版本容易受到远程利用漏洞的影响。攻击者可利用此缺陷获取机密数据的访问权限或进一步提升其特权。

在No.22684的报文中发现了c32web.exe。该文件也存在漏洞。参考 CVE--5253。

除此之外还有不少利用的漏洞,这里不再赘述。

在No.32889的报文中发现疑似缓冲区溢出攻击的情况。但查看报文内容发现了一个的网站,还有c:\notworm这个目录,甚至还有攻击成功以后会显示的内容。

那么这些针对80端口攻击是否成功了呢?接下来分析蜜罐主机80端口向外的流量:

#筛选规则tcp.srcport == 80 && ip.src == 172.16.134.191 && http

发现并没有什么可疑的数据包。因此判断这些攻击都失败了。

3.问题及解决方案

问题1:win10虚拟机安装好IDA pro打开以后发现不能使用,控制台报了一堆与python脚本有关的错误问题1解决方案:一开始我的想法是给win10虚拟机安装配置python环境,配置好以后才发现这个破解软件有个安装说明,并且给出了特定版本的绿化版python,直接双击他给的初始化脚本就能自动配置。结论:我脑子有点问题。问题2:统计有多少不同的主机访问了以209.196.44.172为服务器的僵尸网络时,遇到了文件编码导致grep正则匹配结果出错问题2解决方案:已在前面的实验过程中给予说明。

4.学习感悟、思考等

本次实验流程比较长,涉及到很多全新的工具与命令的使用,我感觉要想完全弄懂还是非常困难的。分析crackme.exe的时候我还想着力大砖飞直接看汇编代码,结果发现高估了自己的能力。分析rada.exe的时候我针对该可执行文件的行为查找了大量的资料,结果还是似懂非懂的样子。而最后的取证分析实践更是逆天,我特地去学习了正则匹配的语法规则,结果在文件编码问题上卡半天;分析数据包的时候看到最后都感觉有点神志不清了,一堆乱七八糟的数据看得人眼花。建议更改实验内容,别再祸害下一届学生了。

参考资料

免杀|PEiD查壳、脱壳+汉化+工具打包vbscript Registry 注册表操作实现代码(读写删除)Wscript.shell 详解什么是CGI程序Linux grep 命令Linux sed 命令Linux tr命令Linux sort 命令Linux wc命令tcpflow 抓包正则表达式 - 匹配规则全网最详细的 tcpdump 使用指南如何使用Wireshark进行 关键字搜索过滤/搜索报文关键字/字符串查找内网渗透——PSExec工具

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。