《网络与系统攻防技术》实验四 恶意代码分析
实践目标
- 恶意代码文件类型标识、脱壳与字符串提取。对提供的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地址被用于攻击蜜罐主机?
- 攻击者尝试攻击了那些安全漏洞?
- 那些攻击成功了?是如何成功的?
实验准备
本次实验需要使用以下几种工具:IDA Pro、Peid、超级巡警脱壳器(VMUnpacker)V1.3、Process Explorer等。
实验环境为Windows 10、辅助环境为Kali
实验过程
实践一:恶意代码文件类型标识、脱壳与字符串提取
该部分实践为对文件Rada进行分析,首先使用Linux环境下的file指令对文件进行分析;
分析可得,文件类型为:PE32 executable (GUI) Intel 80386, for MS Windows
尝试分析文件字符串,使用 strings 文件名
来分析文件,得到如下结果:
证明该文件有壳,需要使用脱壳文件,但首先需要分析壳的特征码,得到壳信息,这里使用peid对壳进行分析:
通过peid分析得到壳信息,接下来使用脱壳程序进行脱壳:
接下来对我们脱壳后的程序进行验证,使用strings 文件名
查看文件字符串,结果如下图:
表面我们脱壳成功!
使用PE(Process Explorer)打开我们的脱壳的程序,这里需要使用管理员权限打开,然后在PE中找到我们的脱壳程序的进程,双击打开详情,选择Strings找到字符串列,在里面可以找到程序的一些信息,这里我们找到了程序的作者信息:
实践一完成!
实践二:使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
首先分析crackme1,我们使用IDA Pro打开该exe文件,可以看到程序的汇编语言:
这里可以点击视图-->图表-->函数调用
打开查看函数调用的关系,不过因为程序会调用许多内置函数,这个图对我们分析程序代码帮助不大,下面是我们crackme1.exe文件的函数调用表:
点开IDA Pro中的functions一栏,选择我们的main函数,也可以直接进行反编译:
反编译后的代码一目了然,可以清楚的看到程序中的逻辑内容部分。最终我们得到该程序的key值为:"I know the secret",将其加在程序名后作为参数启动,即可输出成功信息: