Ghidra Software Reverse Engineering Framework逆向工具分析

Ghidra是由NSA的研究理事会为NSA的网络安全任务开发的软件逆向工程(SRE)框架。 主要用于分析恶意代码和病毒等恶意软件,并可以让网络安全专家更好地挖掘网络和系统中潜在的安全漏洞。美国国家安全局(NSA)在今年3月举行的2019年RSA会议上首次公开,将Ghidra作为开源项目发布给公众。

背景

2017年3月7日,维基解密在Vault7披露的中情局(CIA)内部文件(Vault 7: CIA Hacking Tools Revealed)中首次提到了GHIDRA逆向工具。

关于此次披露的文件内容详细解读可以参考:

https://techcrunch.com/2017/03/09/names-and-definitions-of-leaked-cia-hacking-tools/

https://www.freebuf.com/news/129569.html

这里主要关注GHIDRA逆向分析工具,泄露文档中有三处提及该工具,文档地址分别为:

https://wikileaks.org/ciav7p1/cms/page_23593064.html

https://wikileaks.org/ciav7p1/cms/page_51183656.html

https://wikileaks.org/ciav7p1/cms/page_9536070.html

泄露的这批文档中Ghidra逆向工具的当前最终版本是ghidra_7.0.2,历史版本包括ghidra-6.0.10,ghidra-5.6.3。

Vault7泄露的上述文档只能简单看出该款工具是一款逆向分析工具,没有披露更多详细的信息。

2019年1月7日NSA提交了相关安全议题给RSAC2019安全大会,将免费公开Ghidra逆向工具。

2019年3月5日RSAC2019安全会议上,国家安全局(NSA)免费发布了其使用长达十年之久的逆向工具Ghidra,其免费公开发布的版本为ghidra_9.0。

RSAC2019安全大会的相关议题地址:

https://www.rsaconference.com/writable/presentations/file_upload/png-t09-come-get-your-free-nsa-reverse-engineering-tool_.pdf。

Ghidra逆向工具的官网:https://ghidra-sre.org/。

简介

Ghidra是由NSA的研究理事会为NSA的网络安全任务开发的软件逆向工程(SRE)框架。 主要用于分析恶意代码和病毒等恶意软件,并可以让网络安全专家更好地挖掘网络和系统中潜在的安全漏洞。

美国国家安全局(NSA)在今年3月举行的2019年RSA会议上首次公开,将Ghidra作为开源项目发布给公众。 有关更多NSA工具详情,请查看开源的CODE.NSA.GOV和其他技术的NSA技术转让计划。

Ghidra的主要特点

 

安装运行

由于Ghidra逆向工程框架是基于Java开发的,其平台兼容性非常好,能够运行在Windows,Mac OS和Linux等主流的操作系统上;

运行环境

硬件:

  • 4 GB RAM
  • 1 GB storage (for installed Ghidra binaries)
  • Dual monitors strongly suggested

软件:

  • Java 11 Runtime and Development Kit (JDK) (see Java Notes)
    • OpenJDK distributed from jdk.java.net is suggested

运行程序

  1. 下载软件,下载地址:https://ghidra-sre.org/ghidra_9.0_PUBLIC_20190228.zip
  2. 直接解压到本地;
  3. 运行ghidra程序。
    1. Windows系统平台下运行bat;
    2. Linux/Mac OS系统平台下运行ghidraRun。

(更多的安装细节可参考ghidra_9.0/docs/InstallationGuide.html中的详细介绍。)

程序菜单

(参考ghidra_9.0/docs/CheatSheet.html中的详细介绍)

Ghidra特性

Ghidra并没调试模块,不过作为一款免费的逆向工具,已经非常优秀了,尤其是其强大的反编译功能和灵活丰富的插件模块。

支持的格式

安装的处理器模块

丰富的内置插件

用户还可以使用Java或Python开发自己的Ghidra插件组件或者脚本。其内置了大量(237个)辅助的插件。

强大的反编译功能

下面是Radare2官方对比的各大逆向分析工具的反编译功能对比表格,可以看出商用的IDA Pro在反编译方面也是捉襟见肘的;Ghidra在该方面表现出了强大的能力(逆向工程师的福利)。

反汇编 == 反编译(支持反汇编即支持反编译)

下面是一款MIPS病毒样本的示例,可以看出其反编译功能之强大。

 

 

 

使用示例

下面以Windows平台下使用为例简单介绍应用步骤:

运行bat后的启动加载页面;

File->New Project(新建项目);

File->Import File(导入待分析的程序);

Ghidra框架会识别待分析程序的文件格式,并根据具体格式选择相应的反汇编/反编译器以及相应的分析插件对待分析的应用程序进行处理。

导入成功后的相关提示信息:

使用CodeBrowser打开待分析的应用程序;

可以直接双击打开,也可以将程序拖拽到CodeBrowser图标( )进行打开查看;

(显示窗口可以根据具体需求来定制,具体内容参考菜单说明)

定位程序入口(Function->entry)

Enjoy it(工欲善其事,必先利其器)

根据具体需求开始享受程序分析的过程,比如病毒分析,漏洞挖掘,漏洞分析等。

以上面的crackme.exe为例简单说明分析过程;

  1. 通过Window->Defined Strings窗口,查看提示相关信息:

  1. 通过XREF引用定位关键代码;

  1. 分析关键代码。

这里是一个简单的crackle程序示例。

总结

GhidraSREF(Ghidra Software Reverse Engineering Framework)作为美国国家安全局(NSA)内部开发,主要目的是为病毒分析,漏洞挖掘等逆向工程相关工作提供一个高效(all in one)的工作环境,从技术方面来看是非常强大的一款逆向工程框架,尤其在反编译方面的表现更是十分优秀。

现阶段唯一的缺憾就是该框架不支持调试模式,一方面NSA表示会在后续考虑添加支持调试模式,另一方面由于GhidraSREF是开源的,众多开源社区优秀的安全研究者也可以自行定制开发自己的调试组件。

相对于商业软件昂贵的价格来说,GhidraSREF给从事逆向工程相关的研究人员、安全专家、病毒分析师、漏洞挖掘分析人员、CTFer在工作中提供了一项不错的选择。

NSA后续将会在GhidraSREF中加入如下功能, GhidraSREF将会成为一个比较强大的逆向分析工具。

逆向工程技术,没有银弹,工具永远只是辅助。

 

 

 

 

 

 

Spread the word. Share this post!

Meet The Author

1 Comments

Leave Comment