RSA 2019 | 快来下载NSA 内部开源反汇编工具集 Ghidra

NSA 发布了内部开源逆向工程工具 Ghidra,可用于从应用程序中搜查安全漏洞和其它问题。

剧透预警:它受 Apache 2.0 许可,现在已可下载,并要求 Java 运行时。NSA 保证称并未在其中安装任何后门。

著名的“圣诞节灯光黑客”兼NSA 局长网络安全顾问 Rob Joyce RSA 大会上发表演讲,披露了这款代码分析软件。NSA 希望该开源代码助力安全软件研究工作,并向与会者确保其中并不暗藏任何不可告人的伎俩。

他宣布称,“Ghidra 中并不存在任何后门。对于寻找拆解这些东西的人来说,这是你想要发布含有后门的东西的最后一个地方。”

然而,英国安全厂商 Hacker House 的研究员Matthew “HackerFantastic” Hickey 表示,这个项目中存在一个奇怪的地方。当你以调试模式运行该代码时,它会向本地网络开放端口 18001,从能够连接的机器上执行远程命令。调试模式默认并未激活,尽管这是已提供的功能。

不过不要失去理智。如果你打算改进或修正问题的话,要注意这一点,要在启动调试的情况下启动它。因此这个问题更像是一个 bug,而不是后门,可通过更改启动程序 shell 脚本中断,这样该软件仅监听主机的调试连接,而不是通过网络监听任何计算机。

NSA 的一名发言人表示,这个开放的端口允许团队进行协作并和共享信息以及同时在网络上互相提醒。然而,Hickey 表示该功能是由另外一个网络端口提供的。

Hickey 表示,“这个共享的项目使用了不同的端口 13100,因此它并非同一个功能。他们犯了一个错误,在为 Ghidra 启用调试模式时使用了 * 而非本地主机。”

细节和关键功能

Joyce 在演讲中表示,Ghidra 是由 NSA 内部开发的,目的是为了拆解包括恶意软件在内的软件,并且找出潜伏在可执行二进制文件中的内容。网络间谍通过使用这类工具来查找产品中的安全弱点以攻击情报目标。

该项目由120万行代码组成,旨在逆向编译器进程、将可执行代码反编译为汇编列表,最后转换为近似的 C 代码。它还有助于通过函数绘制控制流,检查符号和引用,识别变量、数据和其它信息,等等。如果你习惯使用类似的逆向工程工具如 IDAHopperRadareCapstoneSnowman 等,那么你会对它非常熟悉。

该平台独立于处理器,能够分析 x86ArmPowerPCMIPSSparc32/64 和其它处理器的代码,并且能够在 WindowsmacOS Linux 上运行。虽然是用 Java 构建的,但该代码也能处理基于 Python 的插件以及用 Java编写的插件,Joyce 表示这样做的原因是 NSA 分析师不喜欢 Java 因此添加了 Python 支持。

用户能够在具有或没有图形用户界面的情况下使用 Ghidra,并可编写脚本。如上所述,用户不仅能够使用自己的注释来注释代码,还可以通过网络协作从其它团队成员那里获取注释。

对于新用户而言,NSA 还提供了大量的帮助文档。Joyce 表示他希望社区能够添加更多的功能和脚本并进行分享,因为 NSA 想要使其成为广泛使用的工具。

他表示,Ghidra 开源了,但这并非结果。NSA 已在 GitHub 上建立了存储库,并表示接受贡献。

Joyce 承诺将在未来发布一款集成的调试器、一款强大的仿真器以及改进后的分析工具。他表示这些工作花的是美国纳税人的钱,一旦纳税人能够赶上内部工具的速度,那么它可能能够帮助公民进入 NSA

不过,话说回来,一直想问个问题:NSA 到底为什么会向全球所有人免费开放这款工具?或许 NSA 的对手具有更好的或类似的工具,也有可能 NSA 内部已经转向了更加复杂的工具集,正是公开发布 Ghidra 工具集的好时机。

工具集下载地址:https://ghidra-sre.org/

GitHubhttps://github.com/NationalSecurityAgency/ghidra

(完)