第1章 基础工具
本章主要介绍逆向和漏洞分析过程中需要使用的基础工具,按照逆向和漏洞分析的流程,先后介绍预处理工具、文件对比工具、动态分析工具、静态分析工具、漏洞挖掘工具、漏洞分析工具、漏洞利用工具的使用。读者学习完相关工具的使用后,可对二进制程序进行基本的逆向分析。
1.1 工具概述
软件逆向和漏洞分析过程中,需要借助分析工具完成一些辅助分析操作。涉及的工具较多,包括预处理工具、文件对比工具、动态分析工具、静态分析工具、漏洞挖掘工具和漏洞分析工具,在分析之后可以通过漏洞利用工具获取系统权限等。预处理工具包括脱壳工具、地址定位工具和地址计算工具;文件对比工具主要以 BinDiff和 Beyond Compare为例,类似工具的使用方法基本一致;动态分析工具介绍使用频率较高的 WinDbg、OllyDbg、x64Dbg和 Immunity Debugger;静态分析工具主要以 IDA Pro和 Hopper Disassembler为例;漏洞挖掘工具分为模糊测试类和符号执行类挖掘工具,模糊测试类代表工具包括 Peach、Sulley、AFL、 AFL-Go、Simple Fuzzer,符号执行类代表工具包括 KLEE、MAYHEM、Driller、Clang等;主流漏洞分析工具包括 BAP、BitBlaze、Intel Pin、Triton、BinNavi等;漏洞利用工具包括 Metasploit、Mona、Pompem等。本节主要对常用工具进行简单介绍,实际操作与案例分析会在第 6章中详细介绍。
1.1.1 预处理工具
预处理工具完成对待分析对象的预处理,通常包括分析目标对象是否存在加壳,然后进行脱壳,以及对待分析对象进行简单的地址关系计算等。
1.脱壳工具
目前有很多可用的加壳工具,加壳如同给软件加盾,脱壳即为击破该盾。软件脱壳方式有手动和自动两种,其中手动脱壳是用 TRW2000、TR、SoftiCE等调试工具进行的,涉及较多的汇编语言和软件调试方面的知识,需要使用者具备一定的逆向分析能力。自动脱壳是使用专门的脱壳工具进行的。对于特定的加壳软件,通常会有对应的脱壳软件存在,如 UPX Shell(既可用于加壳,也可以用于自身脱壳)或者 ASPack(用 UnASPack来脱壳)。
脱壳工具一般分为通用和专用两种。通用脱壳工具根据壳的类型,通过模拟执行进行脱壳,支持的壳类型较多,但效果有限。专用脱壳工具通常只能针对某一类壳(甚至是某一个壳的具体版本)进行脱壳,虽然支持范围小,但针对性强,脱壳效果好。下面介绍两种通用的脱壳工具。
1)linxerUnpacker
linxerUnpacker由国内病毒专家姚纪卫编写发布,是全球首款基于反病毒虚拟机的通用脱壳软件。该工具完全基于虚拟机,将壳特征和编译器特征保存在 PEid_Sign.txt里,支持数十种主流的壳。如果识别不准确,该工具允许用户手动增加壳特征到配置文件中,扩展脱壳方式。对于已知特征的壳,基本上都有对应的脱壳函数;对于未知特征的壳,可以用 OEP(Original Entry Point)侦测来脱壳。该工具的使用界面如图 1-1所示,操作简单易上手。
图 1-1 linxerUnpacker工具界面
2)FFI
FFI(File Format Identifier)工具是一款病毒分析的辅助工具,具备多种文件格式识别功能,使用了超级巡警的格式识别引擎,集查壳、虚拟机脱壳、 PE文件编辑、PE文件重建、导入表抓取(内置虚拟机解密导入表)、进程内存查看、附加数据处理、文件地址转换、PEiD插件支持、MD5计算等功能于一体,适合在病毒分析过程中对一些病毒木马样本进行脱壳等处理,如图 1-2所示。
图 1-2 FFI工具界面
2.地址定位工具
1)Dependency Walker
Dependency Walker为一款免费应用程序,在Windows操作系统上运行,可扫描任意 32位或 64位 Windows程序文件( .exe、.dll、.ocx、.sys等),并构建其从属模块的层次树状图,对找到特定模块的地址有较大帮助,该工具可列出当前模块导出的所有功能及其他模块实际正在调用的功能,也可以显示文件集和相关文件的详细信息,包括文件的完整路径、基地址、版本号、计算机类型、调试信息等,如图 1-3所示。
图 1-3 Dependency Walker工具界面
2)LordPE
LordPE是一款功能强大的 PE文件分析修改工具,使用该工具用户可以查看 PE文件的格式并修改相关信息。具体功能为:①可对 PE文件头结构的内容进行查看,解析 PE文件结构;②可以解析各字段特征值的含义,并对特征值进行更改;③可解析 PE文件导入导出表结构,分析 PE文件的导入函数及导出函数信息,如图 1-4所示。
图 1-4 LordPE工具界面
3)Stud_PE
Stud_PE是一款功能强大的 PE文件格式编辑工具,该工具可以解析 PE文件格式,进行文件格式的比较和壳的识别。此外,该工具还提供了插件支持功能,内置十六进制编辑器,可对资源进行修改,包含可视化资源查看器,可修改、替换、导出文件,以及添加函数、修改区段、查看程序进程等,如图 1-5所示。
图 1-5 Stud_PE工具界面
3.地址计算工具
逆向工程计算器( Reversers’Calculator)是一款 32位十六进制基础逆向计算工具,支持十六进制逻辑运算和数学运算,可将十六进制数和二进制数转换为十进制数(有 /无符号)与八进制数,也可将字符串转换为十六进制值,如图 1-6所示。
图 1-6 逆向工程计算器工具界面
1.1.2 文件对比工具
1)BinDiff
BinDiff为一款图形化的二进制文件对比检查工具,其功能是将两个文件进行对比,为用户提供两个文件的对比分析结果,并找出其中的不同之处。此外,该工具还可进行文件反编译操作,常用于补丁对比分析等环节,如图 1-7所示。
2)Beyond Compare
Beyond Compare是一个专业的文件对比工具,主要用于对大型文件的对比,包含多种数据类型的内置比较引擎,只需更改对比要求,即可实现除文本之外的表格、图片、二进制文件、注册表之间的比较,如图 1-8所示。
图 1-7 BinDiff工具主界面
图 1-8 Beyond Compare工具主界面
1.1.3 动态分析工具
1)WinDbg
WinDbg是一款在 Windows平台下的强大的用户态和内核态调试软件,是逆向分析过程中必不可少的工具,该工具能够通过 .dmp文件快速地定位到问题根源,可用于蓝屏、程序崩溃(如 IE崩溃)等原因的分析,熟练使用该工具可有效提升解决问题的效率和准确率,如图 1-9所示。
图 1-9 WinDbg工具主界面
2)OllyDbg
OllyDbg(简称 OD,是由 Oleh Yuschuuk(www. ollydbg.de)编写的一款具有可视化界面的用OllyDbg户态调试器,运行在 Windows操作系统上。OllyDbg结合了动态调试和静态分析的功能,包含GUI,容易上手,并且对异常的跟踪处理相当灵活,通常 OllyDbg作为调试 Ring 3级程序的首选工具。该工具的反汇编引擎也很强大,可识别数千多种被 C语言和 Windows频繁使用的函数,并能将相关参数注解出来。该工具也可用于自动分析函数过程、循环语句、代码中的字符串等功能,如图 1-10所示。
图 1-10 OllyDbg工具主界面
展开