20222310 2024-2025-1 《网络与系统攻防技术》实验四实验报告
一、实验内容
(一)恶意代码文件类型标识、脱壳与字符串提取
对提供的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恶意代码样本的文件格式、运行平台和加壳工具
file RaDa.exe
查看RaDa.exe的文件类型
可知RaDa.exe是一个Windows PE可执行文件,并且具有GUI(即图形化界面)
使用peid工具查看RaDa.exe的基本信息
脱壳前我们先strings RaDa.exe
来分析
可见有许多乱码,这是因为其被upx加壳,无法正常显示
使用超级巡警之虚拟机自动脱壳器,对RaDa.exe进行脱壳
file RaDa_unpacked.exe
查看脱壳后恶意代码的基本类型
可见sections变为4,多了1个节
strings RaDa_unpacked.exe
,对脱壳后的恶意代码进行分析
可以看见正常的字符信息,往下找,发现该恶意代码的作者为Raul Siles和David Perez
(二)使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
file crackme1.exe
file crackme2.exe
查看crack的文件类型
可见这两个文件都是Windows PE可执行文件,但没有GUI(图形化界面),是命令行程序。
windows主机命令行下依次输入
.\crackme1.exe
.\crackme1.exe 1
.\crackme1.exe 1 2
.\crackme1.exe 1 2 3
.\crackme1.exe 1 2 3 4
尝试运行此程序,试探其输入输出
使用IDA pro工具打开该文件,准备进行分析
可知crackme1.exe含有四个关联语句。分别是“Pardon? What did you say?”,“I think you are missing something.”,“You know how to speak to programs, Mr. Reverse-Engineer”,“I know the secret”,而且只有“I know the secret”没有换行符,其他都有,推测其为输入的关键语句
打开View-Graphs-Function calls,查看一下函数调用关系
点开一条语句,查看出现提示语的汇编语言
发现出现提示语都关联一个函数sub_401280
打开Jump-Jump to function,打开sub_401280函数
其中倒数第二行cmp [ebp+arg_0],2 为判断程序是否有两个参数
可见程序共有四种特定输出。_mian函数中存在一条条件语句,判断是否满足条件语句的布尔值会产生两种输出,某一种输出还会存在另一条条件语句,同样会因判断是否满足条件语句的布尔值会产生两种输出。
根据第二个参数匹配,进行相应的分支。当用户输入“I know the secret”的时候,程序口令输入正确,不为“I know the secret”显示“Pardon? What did you say?”,其余情况显示“I think you are missing something.”。
回到windows命令行,.\crackme1.exe "I know the secret"
验证我们的分析
我们使用类似的方法,对crackme2.exe进行分析,发现其主要函数还是sub_401280函数
该文件的输入仍是两个参数的形式。
判断条件:
第一个参数是否是“crackmeplease.exe”,是则进行下一步比较,不是则显示"I have an identity problem."
第二个参数是否是"I know the secret",是则显示"We have a little secret:Chocolate",否则显示 “Pardon? What did you say?”
其余情况显示"I think you are missing something."
回到windows命令行,验证一下我们的分析
(三)分析一个自制恶意代码样本rada
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
kali输入:
md5sum RaDa.exe
sha1sum RaDa.exe
sha256sum RaDa.exe
sha512sum RaDa.exe
(2)找出并解释这个二进制文件的目的
回到windows点击运行RaDa_unpacked.exe(会出现弹窗,不要叉掉或者点击确定),再打开Process Explorer,找到运行的RaDa_unpacked.exe
点开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)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
该文件应该是一种后门。
原因①它不会自主传播、复制②它没有进行伪装来获取权限
(6)给出过去已有的具有相似功能的其他工具
实验二的后门程序获取主机或虚拟机的shell,获取目标主机音频、摄像头、击键记录等内容。
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以。
方法一:比如我们在第一部分脱壳后使用指令strings来查看该文件
方法二:在Process Explorer点开该文件后查看其Strings
(四)取证分析实践
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?
IRC(Internet Relay Chat)互联网中继连接,是一种实时的文本聊天协议,允许用户通过互联网进行交流。它通过服务器和客户端的结构,用户可以加入不同的频道进行讨论
当IRC客户端申请加入一个IRC网络时,它通常会发送一个“CONNECT”消息来请求连接到指定的IRC服务器
RC使用的TCP端口通常是6667
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络(Botnet)是由大量被恶意软件感染的计算机(通常称为“僵尸”或“bot”)组成的网络,这些计算机在未经过用户同意的情况下被黑客控制。黑客可以通过控制这些感染的设备执行各种任务。
僵尸网络通常用于以下目的:
1.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为服务器的僵尸网络?
先给kali安装tcpflow,sudo apt-get install tcpflow
把botnet_pcap_file.dat传入虚拟机,tcpflow -r botnet_pcap_file.dat '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
有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> 20222310ip.txt;wc -l 20222310ip.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端口
可见TCP的相应端口有:135、139、25、445、4899、80
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端口
可见UDP的相应端口有:137
(7)哪些攻击成功了?是如何成功的?
tcp135端口:
未发现攻击
tcp80端口:
可见该端口有一长串“C”字符的通信,应该是用了缓冲区溢出攻击,使之获取cmd的权限
tcp139端口:
未发现攻击
tcp25端口:
未发现攻击
tcp445端口:
有create andx request的情况,但没有攻击行为
tcp4899端口:
可见该端口有很多的PSH数据发送行为,有攻击行为
udp137端口:
未发现攻击
所以攻击成功的端口为:80和4899
三、问题及解决方案
问题1:教室网络tcpflow下载失败
问题1解决方案:更换流量下载
四、学习感悟、思考等
此次实验比较简单,但我的收获也不少。通过此次实验,我学会了使用peid,超级巡警自动脱壳机,IDA,tcpflow等软件。学会了如何使用脱壳工具对恶意代码进行脱壳处理,提高了字符串提取和分析的能力,提高了静态和动态分析的能力,加深了对程序逻辑和流程的理解,掌握了多种工具和方法在恶意代码分析中的应用,掌握了网络流量分析和日志分析的方法。
总的来说,通过这次实验,我不仅掌握了多种工具和方法在恶意代码和网络取证分析中的应用,还提高了自己的逆向分析、网络安全和取证分析的能力。这些知识和技能对于我未来的学习和工作都将产生积极的影响。同时,我也深刻认识到了网络安全的重要性和复杂性,需要不断学习和提高自己的能力来应对各种网络安全威胁。