20202413 2021-2022-2 《网络与系统攻防技术》实验四实验报告
文章目录
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,2004”。该恶意代码为Raul Siles和David Perez于2004年编写。
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,则先判断第一个参数是不是“