逆向工程系列 | Ghidra for Beginner I

admin 2022年7月1日19:21:55逆向工程系列 | Ghidra for Beginner I已关闭评论261 views字数 4315阅读14分23秒阅读模式

Ghidra是美国国家安全局NSA(National Security Agency)的项目,在逆向工程领域属于新秀工具,其开源免费的特性以及支持多种架构的逆向反编译能力,越来越受到国内外安全研究员的重视。国内目前相关资料较少,逆向工程人员使用的工具还是以IDAPro为主, 国内的唯一一本关于Ghidra逆向工具的指导书籍《Ghidra权威指南》(类似于《IDA Pro权威指南》),目前笔者的朋友杨超师傅正在翻译中。因此我们拟以《Ghidra Software Reverse Engineering for Beginners》这本书为学习材料,对Ghidra这个逆向分析工具进行简单的学习。


图片




关于本书作者


A.P.David是一名高级恶意软件分析师和逆向工程师。他有超过7年的 IT 行业从业经验,自己从事过的防病毒产品的开发设计,后来成为恶意软件分析师和逆向工程师。他开始为一家主要面向银行恶意软件的公司进行逆向分析工作
,并帮助实现逆向相关过程的自动化。在这之后,他加入了一家杀毒软件公司的恶意软件分析部门。他目前在加利西亚高级电信研究与发展中心(GRADIANT)担任安全研究员,同时攻读与恶意软件相关的博士学位。除此之外,他还利用业余时间为一些相关公司搜寻漏洞,包括微软(Microsoft)的 Windows 10和美国国家安全局(National Security Agency)的 Ghidra 项目。

本书对应github地址
https://github.com/PacktPublishing/Ghidra-Software-Reverse-Engineering-for-Beginners

本书包含内容

图片

图片

本书的前置要求
为了充分利用这本书,读者应该对汇编语言、 C 语言、 Python 语言和 Java 语言有足够的了解,以便能够阅读这本书中的代码。针对于了解操作系统的内部原理、调试器和反汇编程序对理解本书是有帮助的,但并不是必须的要求:

图片

所需的软件在适用章节的技术要求部分中列出。

第一节 Ghidra简介
章节旨在介绍 Ghidra 及其历史、项目结构、扩展开发、脚本,以及作为开源软件,用户如何做出贡献。

这一部分包含以下章节:

•第一章 开始使用Ghidra

•第二章 使用 Ghidra 脚本自动执行逆向任务

•第三章 Ghidra的调试模式

•第四章 使用 Ghidra 扩展插件


  • 开始使用Ghidra


在本章的引言部分,我们会介绍 Ghidra 在某些方面的概况。在开始之前,了解如何获取和安装该程序是十分必要的。如果您想要安装程序的发行版,这显然是一件简单但步骤繁琐的事情。如果您想要深入的了解Ghidra。可以从源代码中自行编译程序。

由于 Ghidra 的源代码已经开源,用户可以对感兴趣的代码结构、类型对其源码进行修改和扩展。从逆向工程的角度逆向分析 Ghidra 的主要功能也很有意思。这会引起您对这个工具的兴趣,因为它有其自己的特点,而这恰恰是关于 Ghidra 最有趣的事情。

在本章中,我们将讨论以下主要话题:

• WikiLeaks Vault 7

• Ghidra 与 IDA 以及许多其他竞争对手的对抗

• Ghidra 概述

  • 维基解密 Vault 7


2017年3月7日,维基解密(WikiLeaks)开始披露代号为Vault 7的敏感信息文档计划,此次事件成为美国中央情报局(CIA)最大的机密文件泄露事件。这次泄漏的内容包括了24个部分的秘密网络武器和间谍技术,分别命名为Year
Zero, Dark Matter, Marble, Grasshopper, HIVE, Weeping Angel, Scribbles,
Archimedes, AfterMidnight and Assassin, Athena, Pandemic, Cherry Blossom,
Brutal Kangaroo, Elsa, OutlawCountry, BothanSpy, Highrise, UCL/Raytheon,
Imperial, Dumbo, CouchPotato, ExpressLane, Angelfire, and Protego.
对应的翻译为元年、暗物质、大理石、蚱蜢、蜂巢、哭泣天使、涂鸦、阿基米德、午夜之后和刺客、雅典娜、流行病、樱花、残暴的袋鼠、艾尔莎、法外之地、博森间谍、海莱斯、伦敦大学学院/雷声公司、帝国、小飞象、沙发土豆、快车道、 天使之焰 和护卫。

尽管在2006年至2009年的美国中央情报局局长和1999年至2005年担任美国国家安全局局长的发言人迈克尔·文森特·海登(Michael
Vincent Hayden),没有证实或否认这一巨大泄密的真实性,但一些国家安全局的情报官员匿名确认,确实泄露了这些资料。

而Ghidra就存在于代号Vault 7:Year Zero 的第一部分泄漏。第一部分包括位于弗吉尼亚州的中情局网络情报中心窃取的大量文件和档案的泄露。泄漏的内容涉及中央情报局的恶意软件武器库,零日漏洞武器化的利用,以及苹果的iPhone,Google的Android,Microsoft的Windows设备,甚至是三星的电视都能将其变成隐蔽的麦克风。

在这次泄露中,Ghidra 被引用了三次(https://wikileaks.org/ciav7p1/cms/index.html) ,其中展示了如何安装它,一个关于如何使用 Ghidra 执行64位内核缓存的手动分析的分步教程(带屏幕截图) ,以及当时可用的最新 Ghidra 版本为 Ghidra 7.0.2。

  • 美国国家安全局正式发布


2019年在旧金山举行的美国国家安全局会议上宣布,美国国家安全局网络安全高级顾问罗布 · 乔伊斯(Rob Joyce),他在一次名为“获取免费的美国国家安全局逆向工程工具”的会议上解释了 Ghidra 的独特能力和其特点,并发布了 Ghidra 程序的二进制文件。

在这次会议中,阐释了Ghidra的一些特性:

•团队可以在单一项目进行协作

•Ghidra具备扩展功能

•采用通用处理器模型,也被称为 SLEIGH

•具备两种工作模式: 交互式和非图形用户界面

•Ghidra 的强大分析特性


最终,在2019年4月4日,美国国家安全局在 GitHub ( https://GitHub.com/nationalsecurityagency/Ghidra )以及 Ghidra 网站上发布了 Ghidra 的源代码,您可以在这里下载已经准备好使用的 Ghidra 发布版本: https://Ghidra-sre.org。本网站提供的第一个 Ghidra 版本是
Ghidra 9.0。Ghidra 的网站可能不对美国以外的访问者开放,如果是这样的话,您可以通过 VPN 或者像 HideMyass (
https://www.HideMyAss.com/)这样的在线代理访问它。

不幸的是,几小时后,Matthew Hickey(也称为@hackerfantastic)于2019年3月6日凌晨1:20发布了首个关于Ghidra漏洞。他在推特上说:
Ghidra opens up JDWP in debug
mode listening on port 18001, you can use it to execute code remotely (Man
facepalming). to fix change line 150 of support/launch.sh from * to 127.0.0.1
https://github.com/hackerhouse-opensource/exploits/blob/master/jdwp-exploit.txt.


之后,就出现了许多关于美国国家安全局和Ghidra的质疑。但是,考虑到国家安全局的网络间谍活动的侦测能力,国家安全局是否需要在自己的软件中加入一个后门来攻击其用户?

显然,NSA不需要这么做,因为他们已经有相对应的网络武器。

既然Ghidra的存在被维基解密所泄露,美国国家安全局只是想做些体面的事情来改善自身的形象,没有什么比在RSA大会上将其作为开源软件并发布的更好方法。因此用户使用Ghidra时,用户体验较好。

即使用户已经掌握了如IDA、Binary Ninja或Radare2这些强大的逆向工程框架,也有很好的理由开始学习Ghidra。没有一个单独的逆向工程框架是完美的。每个逆向工程框架都有自己的优缺点。其中一些甚至无法相互比较哪一个逆向工具谁跟优秀,因为它们是以不同的理念来构思的(例如,是基于GUI开发的框架或者基于命令行开发的框架)。

另一方面,用户将看到这些产品如何一直与彼此竞争,并相互学习进步。例如,IDA Pro 7.3合并了撤消功能,该功能以前是由其竞争对手Ghidra提供的。

在下面的屏幕截图中,您可以看到@Ghidra_Re_re官方Twitter帐户对IDA
Pro的撤消功能的回复:

图片

图1.1 - IDA
Pro 7.3添加了一个撤消功能以与Ghidra竞争


框架之间的差异很容易因竞争而发生变化,就目前而言,Ghidra的一些优势:

•开源和免费的(包括其反编译器)。

•支持很多架构(可能您使用的框架还不支持这些架构)。

•可以在一个项目中同时加载多个二进制文件。此功能允许您轻松地对许多相关二进制文件(例如,可执行二进制文件及其库)进行逆向。

•允许通过计划沟通进行协同逆向工程。

•对比较大的固件镜像(1 GB以上)的逆向分析支持没有任何问题。

•有完善详细的官方文档,包括示例和课程

•允许对二进制文件进行版本跟踪,允许用户在二进制文件的不同版本之间进行函数匹配和数据的标记。


总之,建议逆向分析人员学习尽可能多的逆向框架,以了解并利用好每一个框架。从这个意义上讲,Ghidra是一个必须要了解的强大逆向分析框架。

  • Ghidra概述


我们将以类似于RSA大会分享的方式对Ghidra进行概述,以展示该工具及其功能。您很快就会意识到Ghidra有多么强大,以及理解Ghidra为什么不仅仅是另一个开源的逆向工程框架。在撰写本书时,Ghidra的最新版本为9.1.2[现在官网最新的版本为10.1.4],用户可以从官方网站上下载。

  • 总结


通过本章节我们了解到,作为一个新兴的逆向工程工具,Ghidra最开始是美国国家安全局的秘密项目。在维基解密将其公开之后,NSA可能为了自身颜面,将这个强大的逆向分析工具开源化,我们了解了其历史以及该工具的相关特性,在下一章节我们将进行工具的安装及主要功能的介绍。

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月1日19:21:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   逆向工程系列 | Ghidra for Beginner Ihttp://cn-sec.com/archives/1150197.html