20231909 2023-2024-2 《网络攻防实践》实践八报告
1.实践内容
1.1 追踪rada恶意代码
- 使用文件格式和类型识别工具,对rada恶意代码样本进行分析。
- 对rada恶意代码样本进行脱壳处理。
- 对脱壳后的rada恶意代码样本进行分析,以发现编写该代码的作者
1.2 分析Crackme程序
- 使用IDA Pro进行静态或动态分析crackme1.exe和crackme2.exe在WinXP Attacker虚拟机上,以找到特定的输入,从而实现成功信息的输出。
1.3 分析恶意样本rada
- 提供该二进制文件的摘要信息,分析并解释该二进制文件
- 尝试辨识并说明该二进制文件,同时解释该二进制文件中采用的防止分析和逆向工程技术。
- 对该恶意代码样本进行分类
- 提供与该二进制文件具有相似功能的其他已知工具。
- 在特定环境和限定条件下,尝试追踪到该二进制文件的开发作者
1.4 分析数据源并回答一下信息
- IRC相关信息
- 僵尸网络和用途
- 蜜罐主机与哪些IRC服务器通信?
- 不同主机访问僵尸网络的数量?
- 攻击蜜罐主机的IP地址是哪些?
- 攻击者尝试攻击的安全漏洞?
- 成功的攻击和攻击方式。
2.实践过程
2.1 动手实践任务一
(1)文件格式和类型识别
首先需要把待查看文件放到cmd目录下;
输入file rada.exe使用file命令查看文件信息;
可以看到Rada.exe为一个32位Windows的可执行文件,其的标识符代表改文件有GUI图形界面。
打开开始菜单,在winxp系统内找到PEiD工具,使用该工具可以看到文件的入口点为0000FD20、文件偏移为00004120、EP段为JDR1,加壳类型为UPX壳
输入strings RaDa.exe查看RaDa.exe中可打印字符串,但是发现都是乱码,说明还需要做进一步的脱壳处理
使用超级巡警脱壳机工具对rada.exe进行脱壳处理,看到“脱壳成功”的字样后,会发现在当前目录下生成了rada_unpacked.exe文件:
输入strings RaDa_unpacked.exe,查看脱壳后的rada.exe中可打印的字符串,发现有大量的函数调用名
使用IDA工具打开rada_unpacked.exe文件,在string界面中选择Unicode编码
找到Authors:Raul Siles & David Perez,2004,此处信息即编写作者
2.2 动手实践任务二
输入file crackme1.exe和file crackme2.exe;
可以判断这两个文件均为windows系统下运行的32-bit可执行程序,是命令行程序,但是与Rada.exe不同,这两个软件没有图形界面。
在cmd中输入crackme1.exe,尝试运行该程序。但是却弹出了缺乏相关口令的提示
使用IDA进行分析;
在Strings页面可以看到两个字符串“I know the secret”和“You know how to speak to programs, Mr.Reverse-Engineer”;
因此猜测I know the secret是我们需要的口令,You know how to speak to programs, Mr.Reverse-Engineer是口输入令正确时的程序反馈信息;
进入到IDA View界面里,选择view—graphs—function calls;
发现包含函数fprintf和printf ,猜测sub_401280即为我们要找的核心函数
在view—graphs中打开sub_401280函数的流程图,可以看到入口那里会比较判断输入的参数个数是否为2,若参数个数不为2时输出I think you are missing something,若参数个数为2则会将第二个输入与I know the secret作比较,正确则输出You know how to programs
输入crackme1.exe “I know the secret”验证刚刚口令为“I know the secret”的猜想,得到了程序反馈信息“You know how to speak to programs, Mr.Reverse-Engineer”,验证猜想正确。
同理,验证crackme2.exe
可知如果命令行输入两个参数,则跳转至loc_4012D5;
比较第一个参数是否为”crackplease.exe”。
是的话,比较是否为第二个参数”I know the secret”;
是的话,输出We have a little secret : Chocolate;
否则,输出Pardon? What did you say?;
否则,输出I have an identity problem.
如果命令行输入参数个数不为2,则输出I think you are missing something.
输入copy crackme2.exe crackmeplease.exe;
输入crackmeplease.exe “I know secret”;
得到结果We have a little secret:Chocolate。
2.3分析实践任务一
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
输入命令md5sum Rada.exe,得到md5摘要为“caaa6985a43225a0b3add54f44a0d4c7”,加壳方式: UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
(2)找出并解释这个二进制文件的目的;
用radaprocess explorer软件监测rada.exe与radaunpacked.exe
可见脱壳后的通过HTTP协议连接到10.10.10.10主机下RaDa的网页上;
该文件下载后门到目标主机,发动DOS攻击,与10.10.10.10主机进行了通信,并查询了Mac地址。
可见查询了数据库相关信息、对应Mac地址等等;
发现执行了读写、删除、下载,上传,截屏,休眠等操作。
(3)识别并说明这个二进制文件所具有的不同特性;
该文件会添加注册列表、移动文件位置至C盘,并与10.10.10.10建立相关连接,接收相关指令并执行相关指令。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
采用了UPX加壳技术,直接对文件进行解析会呈现乱码形式。
干扰字符串Starting DDoS Smurf remote attack使分析者误认为是程序执行 DDoS 攻击。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
首先,由于不具有传播传染属性,所以判断其不是病毒或蠕虫;
其次,该程序没有附加在邮件等,所以判断不是木马;
攻击者利用该程序远程接收执行命令,判断为后门程序或者僵尸程序。
(6)给出过去已有的具有相似功能的其他工具;
Bobax、Setiri
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
输入Rada.exe -authors查询作者相关信息,可知Raul siles和David Perze于2004年编写的。
2.4 分析实践任务二
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
申请加入前要先注册,注册时需要发三种信息:用户信息USER、口令PASS 以及昵称NICK、注册完成后,客户端就可以使用JOIN 信息来加入频道。
IRC通常使用6660-6669端口,其中一般使用6667端口进行明文通信,如果是使用SSL进行加密通信则使用6697端口。
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是指攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。下图是IRC僵尸网络的工作机制,其僵尸控制器是IRC聊天服务器。
通常用于发动分布式拒绝服务攻击(DDoS)、发送垃圾邮件、窃取隐私信息、刷点击量等。
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
用wireshark打开botnet_pcap_file.dat文件,输入筛选条件
ip.src == 172.16.134.191 && tcp.dstport == 6667,筛选源地址为蜜罐主机,目的端口为6667的包。可得到五个地址:
209.126.161.29
66.33.65.58
63.241.174.144
217.199.175.10
206.196.44.172
(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
输入apt-get install tcpflow,安装tcpflow;
输入tcpflow -r botnet_pcap_file.dat “host 209.196.44.172 and port 6667”,将分析的结果输出到report.xml文件中;
打开report.xml文件,查看有关TCP流的信息;
输入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 /home/kali/Desktop/botnet_pcap_file.dat ‘dst host 172.16.134.191’ | awk -F " " ‘{print $3}’ | cut -d ‘.’ -f 1-4 | sort | uniq | more > tcpdump.txt;wc -l tcpdump.txt,可见共有165个IP地址可能连接蜜罐主机。
打开输出的文件,可以看到有165个IP地址被用于攻击蜜罐主机。
(6)攻击者尝试攻击了那些安全漏洞?
输入tcpdump -r /home/kali/Desktop/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);
输入:tcpdump -r /home/kali/Desktop/botnet_pcap_file.dat -nn ‘src host 172.16.134.191’ and udp | cut -d ’ ’ -f 3 | cut -d ‘.’ -f 5 | sort | uniq
筛选响应的TCP端口;
发现137端口,说明攻击者成功访问了137号端口;
137端口主要用于“NetBIOS Name Service”,属于UDP端口。
(7)那些攻击成功了?是如何成功的?
打开wireshark,分别输入ip.addr == 172.16.134.191 && tcp.port ==端口号
①135端口:进行数据连接
②139端口:TCP协议、SMB协议和NBSS协议
③80端口:相关攻击的信息包括null.ida为标识的WEB-IIS ISAPI、dafault.ida为标识的code red,是一个红色代码蠕虫攻击:
④25端口:进行数据连接
⑤445端口:发现可疑程序PSEXESVC.exe,\PIPE\ntsvcs,这是一个远程调用,攻击者应该拿到了访问权限,说明这次攻击是成功的。除此以外还有针对IPC$ \samr \svcctl \r_server.exe admdll.dll raddrv.dll进行的普通查点、口令猜测、MSRPC-SVCCTL服务枚举漏洞等攻击:
⑥1434端口:只有210.22.204.101 访问过。4899 端口是一个远程控制软件 radmin 服务端监听端口,不是木马。
总结:针对TCP445端口的PSEXESVC攻击-(IP:61.111.101.78)是成功的,其他均失败。
3.学习中遇到的问题及解决
- 问题1:未找到逻辑图选项
- 问题1解决方案:通过查阅相关资料进行解决
- 问题2:Kali安装tcpflow未成功连接官网
- 问题2解决方案:重启后安装成功
4.实践总结
通过这次实践,我掌握了对恶意代码进行分析的相关操作,如使用识别工具、脱壳软件、字符串提取工具等,增加了我的网络攻防实践能力。