网络攻防实验四
一、实验内容
(一)恶意代码文件类型标识、脱壳与字符串提取
对提供的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)那些攻击成功了?是如何成功的?
二、实验过程
(一)恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
1:使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
1.1使用 file 命令查看RaDa.exe的文件类型
可以看见RaDa.exe是一个Windows PE可执行文件,并且具有GUI(图形化界面)
1.2使用peid工具查看RaDa.exe的基本信息
可以看到该文件的入口点、文件偏移、EP段等类型
1.3使用strings命令查看RaDa.exe的可打印字符串
此时看见的基本都是乱码,这是因为该文件被upx加壳的缘故,正常字符无法显示
2:使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
2.1对RaDa.exe进行脱壳
3:使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
3.1再用strings命令查看脱壳后的RaDa.exe(RaDa_unpacked.exe)
这时就能看见正常的字符信息了。通过查找发现该恶意代码的作者为:Raul Siles和David Perez
(二)使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
1:使用file命令查看crackme的文件类型
Linux环境下自带file命令,
Windows 版本可以去 http://gnuwin32.sourceforge.net/packages/file.htm 下载
如图可知,这两个文件都是Windows PE可执行文件,但没有GUI,是命令行程序。
2:对crackme1.exe进行破解
尝试运行该程序,试探其输入格式
此时发现运行exe文件时,后面带一个参数的情况与其它几种情况不同,可能输入格式就是这种。
使用IDA pro工具打开该文件,尝试阅读分析:
新建一个PE Executable
点击strings页面进行查看:
在这里发现了之前运行产生的两种情况,同时还有额外的两种情况。
点击其中一个,查看出现提示语的汇编语言:
发现这些提示语都需要函数sub_401280。
点击functions页面找到sub_401280函数并双击:
倒数第二行cmp [ebo+arg_0],2 为判断程序是否有两个参数。
根据第二个参数匹配,进行相应的分支。可以看出当用户输入“I know the secret”的时候,程序口令输入正确,不为“I know the secret”则显示“Pardon? What did you say?”,其余情况则显示“I think you are missing something.”。
另一种方法:
点击Views->Graphs->Function calls查看整个程序的运行逻辑:
可以得出结论,1 程序是用 C 语言写的,2 程序估计是使用 strcmp 函数来比较口令
的,3 关键的部分在 sub_401280 这里。
接下来点击functions页面找到sub_401280函数,查看其汇编代码,其余的与上述一致。
3:对crackme.exe2进行破解
根据破解crackme.exe1的方法,发现主要函数还是sub_401280:
该文件的输入仍是两个参数的形式,
判断条件:
第一个参数是否是“crackmeplease.exe”,是则进行下一步比较,不是则显示"I have an identity problem."
第二个参数是否是"I know the secret",是则"We have a little secret:Chocolate"(这个结果是unk_403080 中的字符串分别与0x42h 进行异或运算得来的)否则显示 “Pardon? What did you say?”
其余则显示"I think you are missing something."
正确结果:
(三)分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1:提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
在线版:文件HASH计算(可以在线计算文件的hash值)
命令行版:
输入
//虚拟机内
md5sum RaDa.exe
sha1sum RaDa.exe
sha256sum RaDa.exe
sha512sum RaDa.exe
//计算sha3的话,需要用到openssl
//sudo apt-get install openssl
openssl dgst -sha3-256 RaDa.exe
openssl dgst -sha3-512 RaDa.exe
//主机内
certutil -hashfile RaDa.exe MD5
certutil -hashfile RaDa.exe SHA1
certutil -hashfile RaDa.exe SHA256
2:找出并解释这个二进制文件的目的
点击运行RaDa_unpacked.exe(它会出现弹窗,不要叉掉或者点击确定),再打开Process Explorer(主机或虚拟机都可以),找到运行的RaDa_unpacked.exe:
点击图片左侧的Strings页面查看文件的目的:
可以看出:运行该文件,会向http://10.10.10.10/RaDa发送请求,连接RaDa_commands.html进行上传或下载,放入文件C:\RaDa\tmp
运行RaDa.exe时,会自动复制该程序到C:\RaDa\bin中
Starting DDoSSmurf remote attack…说明还有分布式拒绝服务攻击
同时也会对注册表进行更改(读写和删除操作),相应的注册表(打开注册表编辑器)目录为HKLM\Software\Vlware, Inc.Vware ToolsiInstallPath和HKLM\Software"Hicrosoft\Windows\CurrentVersioniRun
控制电脑进行命令操作:get(下载),put(上传),screenshot(屏幕截屏),sleep(休眠)
3:识别并说明这个二进制文件所具有的不同特性
- 该文件运行会对注册表进行读写和删除操作
- 该文件能控制主机进行get、put、screenshot、sleep命令
- 该文件运行时会进行复制
4:识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
使用了upx加壳来防止被分析。再没脱壳前,strings下看到的都是乱码,但脱壳后就能正常识别了。
5:对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
带文件应该是一种后门。原因:1:它不会自主传播、复制 。2:它没有进行伪装来获取权限
6:给出过去已有的具有相似功能的其他工具
实验二的后门程序获取主机或虚拟机的shell,获取目标主机音频、摄像头、击键记录等内容。
7:可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
方法一:使用IDA pro
用IDA pro打开RaDa_unpacked.exe文件,点击strings页面,右键,点击setup,选择unicode:
找到author命令,并双击:
点击functions页面,找到sub_40B010函数,双击:
方法二:ProcessExplorer
运行RaDa_unpacked.exe,打开ProcessExplorer,找到运行中的该文件双击,再点击strings页面:
方法三:命令行(主机环境)
(四)取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
1:IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC:IRC是英文Internet Relay Chat的缩写,中文意为“互联网中继聊天”。它是一种基于互联网的即时通讯协议,通过客户端软件连接到服务器上,用户可以在不同的聊天室中进行实时交流。与其他即时通讯工具相比,IRC具有开放性、稳定性和安全性等优势。
通常,IRC客户端在申请加入网络时,会发送一系列的消息与服务器进行握手和认证。而IRC使用的TCP端口通常是6667,但也可能因服务器配置的不同而有所变化。
2:僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络(Botnet)是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。这个名称是为了形象地描述这类危害的特点:众多的计算机在不知不觉中如同中国古老传说中的僵尸群一样被人驱赶和指挥着,成为被人利用的一种工具。
僵尸网络通常由黑客、犯罪分子或恶意软件作者创建和维护,它们可以用于各种恶意活动,包括:
1.分布式拒绝服务攻击(DDoS攻击):僵尸网络可以同时操控大量受感染的计算机,以协同发动大规模的DDoS攻击,将目标网络或网站淹没在大量的流量中,导致服务不可用。
2.垃圾邮件传播:用于发送大量垃圾邮件,这些邮件可能包含恶意软件、钓鱼链接或其他诈骗活动。
3.数据盗窃:攻击者可以使用僵尸网络来窃取敏感数据,如个人身份信息、银行账户信息或商业机密。
4.恶意软件分发:传播恶意软件,包括勒索软件、间谍软件和其他恶意代码。
5.恶意挖矿:攻击者可以使用僵尸网络来挖掘加密货币,以获取非法收益。
为了组成僵尸网络,攻击者通常利用漏洞、恶意附件、恶意链接或社交工程攻击来感染大量计算机。一旦计算机感染,它们会与僵尸主机建立连接,等待命令执行恶意任务。
3:蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
将下载好的botnet_pcap_file.dat文件拖入打开的wireshark:
输入:
ip.src==172.16.134.191&&tcp.dstport==6667
发现蜜罐主机与5台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
tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172'
//-r 后是分析的文件,'host 209.196.44.172'是过滤器表达式
输入:
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 "\r" | grep -v "^$" | sort -u | wc -l
//搜索的结果不重复的
可以发现总共有3457个不同的主机访问了以209.196.44.172为服务器的僵尸网络。
5:哪些IP地址被用于攻击蜜罐主机?
输入:
tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more > 20212421.txt;wc -l 20212421.txt
vim 20212421.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 > 20212421_2.txt;wc -l 20212421_2.txt
vim 20212421_2.txt
所以又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
//tcp的
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的
所以tcp的端口有:
udp的端口有:137(该端口属于NetBIOS名称服务,主要用于在局域网或互联网上提供计算机名称、注册用户名、是否安装主域控制器以及IIS是否运行等信息的查询服务。当向某台计算机的137端口发送一个请求时,就可以获取这些相关信息。)
7:那些攻击成功了?是如何成功的?
tcp:
1:135端口
没有什么攻击。
2:80端口
可以看出该端口有一长串“C”字符的通信,点击详细查看,应该是用了缓冲区溢出攻击,使之获取cmd的权限。
3:139端口
没有什么特殊状况
4:25端口
没有什么特别的。无攻击行为。
5:445端口
有create andx request的情况,但并没有什么攻击行为。
6:4489端口
可以看出,该端口有很多的PSH数据发送行为,有攻击行为。
udp:
1:137端口
该端口的通信正常,没有攻击情况。
所以攻击成功的端口为:80和4489
没有攻击行为的端口为:135,137,25,445和139
三、问题及解决方案
问题1:没有tcpflow
解决方案:
sudo apt-get install tcpflow
问题2:命令行算摘要
解决方案:
//虚拟机内
md5sum RaDa.exe
sha1sum RaDa.exe
sha256sum RaDa.exe
sha512sum RaDa.exe
//计算sha3的话,需要用到openssl
//sudo apt-get install openssl
openssl dgst -sha3-256 RaDa.exe
openssl dgst -sha3-512 RaDa.exe
//主机内
certutil -hashfile RaDa.exe MD5
certutil -hashfile RaDa.exe SHA1
certutil -hashfile RaDa.exe SHA256
四、实验感悟
此次实验不同于前几个实验,没有那么多的命令和代码,主要是在于分析端口和是否有攻击行为。所以对结果的分析识别能力有较大的要求。像使用IDA pro和ProcessExplorer对RaDa_unpacked.exe的分析时,就需要理解汇编中的调用关系,strings中信息内容是什么含义。使用wireshark时也一样,怎样使用过滤器,如何看是否有攻击行为等,都是需要明白的,也就是能够从产生结果中辨别分析出相应的引发的原因(知果求因)。
五、实验参考
实践作业1
实践作业2