20212903 2021-2022-2 《网络攻防实践》实践八报告
20212903 2021-2022-2 《网络攻防实践》实践八报告
1.实践内容
动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
2.实践过程
1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
1、首先利用file RaDa.exe
命令查看RaDa.exe
的文件类型,从下图结果可以看出,RaDa.exe
是一个32位Windows PE可执行文件,具有图形化窗口(GUI)。
2、使用PEiD工具(查壳)来查看RaDa.exe
加壳的类型,从下图中可以看到RaDa.exe
文件入口点、文件偏移、EP段、首字节等信息,点击右下方的扩展信息还可以看到检测文件为UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
其加了一个版本为0.89.6的UPX壳
3、strings RaDa.exe
查看RaDa.exe中可打印字符串,从下图可以看出,输出均为乱码
2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
1、打开超级巡警脱壳机,选择目标文件RaDa.exe
,点击按钮给我脱
(这个按钮的字符属实有点糟糕),就得到了脱壳后的文件
3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
1、打开IDA Pro Free
在这里选择PE
2、选择脱壳之后的文件
3、打开后会有一堆弹窗,不用 纠结,直接狂点下一步。然后就可以看到下图
从下图可以看到作者的信息为'(c) Raul Siles && David Perez
,后面有邮箱信息ida@datarescue.com
还可以看到程序里的内容
动手实践任务二:分析Crackme程序
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
1、分析crackme1.exe,首先执行crackme1.exe,进行参数猜测,通过下图可以发现,只有输入一个参数的时候,程序返回的结果内容是不一样的
依旧是利用IDA Pro
对该文件进行分析,步骤与实践任务一相同。
点击上方的string
窗口,可以看到有我们刚刚看到输出I think you are missing something.
以及Pardon? What did you say?
打开函数调用图(Function Call),找字符串操作相关的函数,以及输出函数 通过下图可以看到,字符串比较函数strcmp
和输出函数fprintf
和printf
均跟在sub_401280
这个函数下面
点击查看sub_401280
汇编代码
然后查看sub_401280
的Flow chart
从Flow chart
中可以看到有cmp
字段,也就是进行对比,查看与2是否相等,左侧为对比失败的后续操作,右边为对比成功的后续操作
如果对比不为2,则进行执行下图的操作,可以看到输出了我们之前的段英文
如果对比等于2则执行下图代码,可以看到又有一个字符换匹配函数strcmp
,是与I know the secret
进行匹配
从下图可以看到匹配失败,会输出Pardon? What did you say?
,匹配成功则会输出You know how to speak to programs, Mr. Reverse-Engineer
综上可知,我需要输入的参数为I know the secret
,从下图可以看到已经得到正确答案
2、分析crackme2.exe
,与分析分析crackme1.exe
类似,也是用IDA Pro进行分析,
查看call function,我们发现sub_401280
这个函数他与字符串比较函数strcmp
和输出函数fprintf
有联系,因此进一步查看sub_401280
这个函数
打开sub_401280
这个函数的Flow chart
从下图可以看到首先与2进行对比,匹配失败则输出I think you are missing something
,成功则进行下一轮对比
从下图可以看到,这里与crackmeplease.exe
进行了,在进一步查看汇编代码,查看是哪一个在这里面进行了对比,这里通过代码可以看到比对的是ebp+arg_4
,也就是程序的文件名称。因此这一判断步骤为判断的是文件名称是否为crackmeplease.exe
上面判断失败后,则会输出I have an identity problem.
文件名称判断成功则进行下一个判断
从下图可以知道,与字符串I know the secret
进行了对比,对比失败则会输出Pardon? What did you say?
通过以上分析可以知道想要得到最终输出需要更改文件名称为crackmeplease.exe
,然后运行crackmeplease.exe
输入参数"I know the secret"
利用命令copy crackme2.exe crackmeplease.exe
给程序改个名字
再利用命令crackmeplease.exe "I know the secret"
运行程序,得到最终输出We have a little secret: Chocolate
分析实践任务一:
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
通过命令md5sum Rada.exe
,可以得到Rada.exe
的md5为caaa6985a43225a0b3add54f44a0d4c7
还有通过PEID软件可以得到Rada.exe
文件的加壳方式为UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
通过以上两个信息(MD5值以及加壳方式)便可以用于识别是否为同一样本
2、找出并解释这个二进制文件的目的;
使用Process Explorer进行监听,运行脱壳后的Rada.exe
,在Process Explorer中点击String部分,也就是字符串部分,看到下图结果:
分析可以发现下载了一个文件保存到C:\RaDa\tmp
从下图可以看到还对主机注册表文件进行读写和删除操作
同时Rada.exe
还查询受害者主机上可用的网络适配器的数据库查询语句
3、识别并说明这个二进制文件所具有的不同特性;
它的不同特性在于访问了http://10.10.10.10/RaDa
并下载RaDa_Commend.html获得指令,再进行后续的一系列操作
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
防分析技术:加壳技术
利用IDA分析脱壳后Rada.exe
,可以看到通过HTTP
协议请求10.10.10.10\RaDa\RaDa_commands.html
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
可以远程发起攻击,但在分析过程中并没有发现该程序能自主进行传播和感染,其功能主要代码建立连接10.10.10.10
的后门,远程获取指令并执行。由此推断,是一个后门程序
6、给出过去已有的具有相似功能的其他工具;
特洛伊木马Setiri和oBobax
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
通过Process Explorer中的字符串模块可以找到作者是Raul siles
和David Perze
。
Windows 2000系统被攻破并加入僵尸网络
任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
因特网中继聊天(Internet Relay Chat),简称IRC。IRC的工作原理非常简单,客户端软件通过因特网以IRC协议连接到IRC服务器上即可。IRC特点是通过服务器中继与其他连接到这一服务器上的用户交流。
注册时需要发送的消息有三种,分别是口令,昵称和用户信息。格式如下:USER 、PASS 、NICK 。注册完成后,客户端就使用JOIN信息来加 入频道,格式如下:JOIN 。
IRC服务器明文传输通常在6667端口监听,也会使用6660—6669端口。SSL加密传输在6697端口。
注意:攻击者滥用IRC构建僵尸网络时,可能使用任意的端口构建IRC僵尸网络控制信道,那么基于端口识别服务不再可靠,要进行基于应用协议特征进行识别(如USER/NICK)。
2、僵尸网络是什么?僵尸网络通常用于什么?
- 僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。
- 僵尸网络通常用于分布式拒绝服务攻击(
DDoS
)、发送垃圾邮件、窃取秘密、滥用资源、僵尸网络挖矿。
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
由于IRC
协议使用的是TCP
连接,并且IRC
使用的是6667
端口
利用指令ip.src==172.16.134.191 and 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为服务器的僵尸网络?
利用指令tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
进行分析
输入命令后,产生了三个文件,3个文件分别为209.196.044.172.06667-172.016.134.191.01152、172.016.134.191.01152-209.196.044.172.06667、report.xml
再利用指令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
查看多少不同的主机访问了以209.196.44.172为服务器的僵尸网络
根据上图可以看出有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 > 20212903.txt;wc -l 20212903.txt
并将攻击蜜罐主机的ip筛选出输出至20212903.txt文件中
根据上图可以看到有165
个IP地址用于攻击蜜罐主机,并且在20212903.txt文件中可以看到165个详细的IP地址
6、攻击者尝试攻击了那些安全漏洞?
首先查看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网络查点,提供计算机的IP
地址查询服务。
7、那些攻击成功了?是如何成功的?
80端口
利用指令tcp.dstport==80 && ip.dst == 172.16.134.191 && http
进行过滤
通过下图可以看到null.ida为标识的WEB-IIS ISAPI、dafault.ida为标识的code red,是红色代码蠕虫攻击。但是
445端口
利用指令ip.dst==172.16.134.191 && tcp.dstport==445
进行过滤
从下图可以看到61.111.101.78
向蜜罐主机发送PSEXESVC.EXE
,该文件是一种Dv1dr32的蠕虫,当客户端执行该可执行文件后,攻击方就可以远程控制执行文件的主机,然后获取权限。
通过进一步分析,发现每个IP地址连入的连接都有响应的回应,并且返回信息中含有\PIPE\ntsvcs,这是一个远程调用,所以攻击者肯定是获得了权限,该端口攻击成功。
4899端口
利用指令91 and tcp.dstport==4899
进行过滤
从下图可以看到,只有210.22.204.101
与4899有通信,4899端口是radmin服务端监听端口
137端口
使用命令ip.dst == 172.16.134.191 and udp.port == 137
进行过滤
从下图可以看到所有数据包的data内容相同。在上题中写过,137端口是NetBIOS网络查点。
3.学习中遇到的问题及解决
- 问题1:在分析crackme1.exe时,输入参数后人就返回错误回答
- 问题1解决方案:参数两边加双引号,属实太尴尬。。。。。
- 问题2:虚拟机中没有安装tcpflow
- 问题2解决方案:
- 输入命令
sudo apt install tcpflow
、sudo apt install tcpflow-nox
进行安装
4.实践总结
发现自己打开了网络攻防的新大门,在本次实验中学会了使用很多软件,同时还发现自己需要进一步加强理论上的学习,对于端口以及各类攻击方法的知识还需要补充。