Windows恶意代码剖析
成绩 |
《实验2:Windows恶意代码剖析》实验报告
目录
《实验2:Windows恶意代码剖析》实验报告 1
1. 实验目的 3
2. 实验工具 3
3. 实验过程与结果 3
① 检查文件完整性 3
② 使用 file 命令查看 crackme 的文件类型。 4
③ 首先,我们先对 crackme1.exe 进行破解。 4
④ 我们对 crackme2.exe 进行破解。 7
⑤ 对rada分析,获取作者信息。 9
4. 感想收获 12
实验目的
锻炼利用OD工具和IDA工具对代码分析能力实现Windows恶意代码剖析实验
实验工具
OD(动态分析工具)、IDA(静态分析工具)、PEid(查壳工具)
实验过程与结果
2.1实践内容:
目标是通过使用 IDA pro 等反汇编工具,猜测出 crackme 的口令,从而通过 crackme 的测试。Crackme 字面意思是“破解我”,是人工构造用于练习破解的小程序。这次实践需要有汇编语言基础,以及函数调用时参数在栈的位置等知识。通过这次实践,你能够熟悉 IDA pro反汇编工具,对逆向工程达到一定的了解。
问题:
对给定的两个 crackme,通过使用 IDA pro 工具或者其他调试工具,猜测出其口令,通过其测试。对rada分析,获取作者信息。
- 1.计算两个 crackme 的 md5 值,检查文件完整性。
crackme1: 4357BF8C20FABB642FAFC0B73FB0ABFB
crackme2: 46AA577172D8F37AE2AE281515C99AFB
- 2.使用 file 命令查看 crackme 的文件类型。
Linux 环境下自带 file 命令,
Windows 版本可以去 http://gnuwin32.sourceforge.net/packages/file.htm下载
- 3.对于每个 crackme,尝试运行,根据提示信息,使用工具,猜测出口令,通过测试。
- 4.对rada分析,获取作者信息。
2.2分析与解答:
- 检查文件完整性
下载两个 crackme,计算其 md5 值,验证文件的完整性。
crackme1: 4357BF8C20FABB642FAFC0B73FB0ABFB
crackme2: 46AA577172D8F37AE2AE281515C99AFB
- 使用 file 命令查看 crackme 的文件类型。
可以知道这两个 crackme 都是 32 位 windows 下 PE 文件,没有图形界面,是命令行程序。
- 首先,我们先对 crackme1.exe 进行破解。
一开始是尝试运行该程序,试探其输入格式。
我们可以发现,在接受 1 个参数时,程序的反馈与众不同,所以我们猜测该程序接受一个参数。目前为止,我们已经发现了程序的两种反馈信息。一种是“I think you are missing something.”,这个猜测是参数数目不对的提示;另一种是“Pardon? What did you say?”,对于这种反馈信息,我们猜测是参数错误的提示。
接着我们使用 IDA pro 工具来打开文件,尝试阅读其汇编语言,验证我们的猜想。
通过 Strings 页面可以查看到该程序中出现的明文字符串,我们发现了前面的两种反馈信息,“I think you are missing something.” “Pardon? What did you say?”,还发现了“I know the secret”和“You know how to speak to programs, Mr. Reverse-Engineer”这两个字符串。有内容我们可以猜测,前者就是我们需要的口令,后者就是输入口令正确时程序的反馈信息。
通过查看整个程序的 call flow
用F5查看这个程序的高级代码语言,分析代码。
通过分析代码,找到答案。可以发现,在整个程序中是使用strcmp函数来比较口令,且通过比较是否有两个参数,当参数为crackme1.exe,字符串为”I know the secret”可得结果。
输入”I know the secret”,成功得到结果。
- 我们对 crackme2.exe 进行破解。
对crackme2进行查看,确认其进入的密码的方式。
使用IDA对crackme2进行分析
String window界面,明文字符串“I know the secret”和“crackmeplease.exe”
查看代码结构,以便于对代码的含义进行分析
用F5查看此程序的高级语言,进行分析
该程序通过参数个数的判断后,接着用strcmp函数对argc里面的第一个字符串,即程序名,和“crackmeplease.exe”进行判断。通过程序名判断后,用户输入的口令与”I know the secret”判断。
输入分析得到的结果。
先将crackme2 copy为crackmeplease.exe,再输入口令”I know the secret”
- 对rada分析,获取作者信息。
使用file命令,strings命令,以及文件脱壳器等对恶意程序RaDa.exe进行基本检测
说明:由于file命令和strings命令是Linux命令,在windows下可使用cygwin(www.cygwin.com)进行对Linux命令的模拟,或者下载专用的为windows使用的file和strings库
使用file命令查看RaDa.exe的文件类型
看到RaDa.exe是一个Windows PE可执行文件,并且有图形化窗口
使用PEiD工具查看RaDa.exe的基本信息
这里可以看到文件的入口点、偏移、文件类型、EP短、汇编程序以及加壳类型
使用strings命令查看RaDa.exe中可打印字符串
出现乱码的原因是因为文件被加壳,正常字符无法显示
我们可以采用PEid的插件功能
脱完UPX壳后,得到干净的rada文件
对脱壳后的rada文件进行分析获得作者信息。
再用strings查看脱壳后的RaDa.exe(RaDa_unpacked.exe)
4. 感想收获
通过本次实验,我熟悉了 IDA Pro 和ollbug这两款反汇编工具的基本使用方法,并掌握了如何通过反汇编和调试破解程序(crackme)的技巧。在这个过程中,理解了函数调用及其参数在栈中的位置,以及如何通过汇编代码追踪程序的执行流。这次实践让我对逆向工程有了更深入的了解。