徐州新闻网

usdt线下交易(www.caibao.it):面向恶意软件研究职员的Ghidra剧本开发指南

来源:徐州新闻网 发布时间:2021-03-13 浏览次数:

USDT官网

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

Ghidra是市场上最受迎接的软件逆向工程套件之一,但它总是需要针对差异情形添加或自界说功效。幸运的是,Ghidra的剧本编写功效异常壮大,能够让用户在剖析程序时解决特殊的问题。例如,SentinelOne的VTgrep是一种自界说的Ghidra剧本编写工具,它对逆向工程恶意软件发生了伟大影响。在本文中,我们将先容若何安装GhidraDev,Ghidra的API,Building Scripts和我最主要的5个Ghidra剧本。

将Eclipse IDE集成到Ghidra

使用Ghidra编写剧本时,用于编辑或确立剧本的逻辑选择是Eclipse IDE。只管Ghidra预先安装了基本剧本编辑器,修改现有剧本是很好也很利便的操作,然则Ghidra与Eclipse IDE的集成异常适合开发和更庞大的编辑义务,由于Ghidra在Eclipse环境中有插件。在本节中,我们将先容若何安装Eclipse并使其为编写剧本做好准备。

安装步骤:

· 安装Eclipse

    · 浏览https://www.eclipse.org/downloads/packages/,并下载面向C / C 开发职员的Eclipse IDE。

    · 解压下载

· 安装PyDev

   · 要使用Eclipse更新治理器安装PyDev扩展,请选择Help >Install New Software,然后在Work with部门中输入以下链接:http://www.pydev.org/updates。

   · 要确认已安装PyDev,请选择Window-> Perspective-> Open Perspective-> Other,选择PyDev并单击Open。

· 安装GhidraDev: GhidraDev支持在Eclipse中开发剧本和模块

   · 浏览至Help->Install New Software

   · 单击Add按钮,然后单击Archive

   · 浏览Ghidra目录,选择GhidraDev-2.xxzip。

   · 单击 OK -> Check Ghidra种别

   · 单击下一步->下一步->完成

   · 确保单击Install anyway,然后单击Restart Now。

· 下一步是设置Ghidra的安装位置。

   · 浏览GhidraDev-> Ghidra Installations。

   · 单击Add按钮并导航到Ghidra的安装位置,然后单击Apply并Close。

为确保所有设置均准确无误,请执行以下操作:

· 打开Ghidra,然后打开代码浏览器窗口,导航到Script Manager Window->Script Manager,或单击图标栏上的绿色播放按钮。

· 接下来,选择AddCommentToProgramScriptPy.py并点击窗口右上角的Eclipse按钮。

· 在Eclipse应用程序中会打开一个窗口,用于确立New Ghidra Project。

· 单击下一步->下一步并启用Ghidra附带的Jython注释器,然后单击完成。

完成此操作后,您将能够查看刚刚打开的python剧本。

在左侧窗格中,单击GhidraScripts睁开按钮以查看已安装的Ghidra剧本:

Ghidra的API

Ghidra API的优点之一是它对Java和Python都一样,因此您可以使用Scripts Manager中的Java剧本作为指南,以领会若何使用函数以及若何挪用函数来让你的剧本事情。例如,在Eclipse中打开ShowCCallsScript.java。

让我们以该文件为例,研究若何剖析Ghidra的API。

打开Ghidra的代码浏览器,然后选择Window-> Python。在Ghidra的代码浏览器中进入注释器后,在这个剧本中currentProgram会返回一个包罗程序哈希的工具。

我领会Ghidra API的方式是在python注释器中使用help的下令。键入help(currentProgram)以显示挪用的功效。Ghidra的API文档异常有用。

让我们更深入地领会有关API的更多信息。键入相同的下令,但添加一个.并单击tab currentProgram。这使您可以查看可以在当前途序中挪用的内容。您可以看到currentProgram.getListing(),但让我们选择其他内容以领会其事情原理。

我将选择一个SHA256哈希,如下面的屏幕截图所示。实验按up按钮,然后选择您感兴趣的内容。

我将给出的关于Ghidra API的最后一个示例,是若何在使用剧本时获取用户输入。该askBytes()函数有两个参数。第一个参数是弹出框的题目,第二个参数是显示在输入字段旁边的新闻。我经常使用自己编写的askBytes()插件,由于当我需要添加一些器械时,这会异常利便。我将在下一部门中对此举行演示。

网上有许多资源展示有关若何使用Ghidra API的示例。在本节的最后一部门,我将先容一些我常用的Ghidra API method。

· currentProgram.getExecutablePath():网络有关项目中当前途序的信息

· currentProgram.getName():返回已加载程序的名称

· currentProgram.getMemory().getBlocks():返回包罗给定局限内任何地址的所有内存块的列表

· getFirstFunction():检索已加载的二进制文件中的第一个函数

· currentProgram.getFunctionManager():治理程序中的所有函数

,

usdt收款平台

菜宝钱包(www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

· getGlobalFunctions(String Name):返回具有给命名称的全局名称空间中所有函数的列表

· DirectedGraph():确立种种图形结构,包罗偏向图等

· DecompInterface():单个反编译历程的自包罗接口,适用于单个程序的不限数目的函数反编译。我强烈建议您查看API文档以对此举行更深入的研究。

构建Ghidra剧本

在我从事逆向工程的早期,有一位导师给了我一个建议,那就是对于任何你发现自己做过三遍的义务,都必须找出一种使之自动化的方式。从那以后,他与我共享的器械就一直困扰着我。在导师提出建议之后,我一直习惯于构建脚原本辅助我完成一样平常的义务。在本节中,我们将构建一些简朴但有用的剧本,这些剧本将有助于举行逆向工程时的一样平常义务。

添加到现有剧本

对于该示例,您将需要安装binwalk工具并确保它位于$path中。对于Ubuntu,请使用apt-get install binwalk;对于Mac用户,请使用sudo port install binwalk(对于MacPorts)或brew install binwalk(对于Homebrew);Windows用户应单击此链接以获取更多说明。

浏览github上的binwalk插件repo并下载或复制文本,然后将其添加到您的Python scripts文件夹/GhidraScripts/Ghidra Python Scripts。下载随机固件二进制文件。若是您不知道将固件下载到那里,则简朴的网络搜索“固件下载”将返回许多选项。

将binwalk.py文件添加到Ghidra Python剧本文件夹中,然后打开Eclipse IDE->Ghidra Python scripts->binwalk.py。

加载所选的已下载的固件,接着打开代码浏览器,然后打开剧本并查找binwalk.py并运行剧本。

若是您查看该剧本,子历程挪用将运行-c开关(将效果纪录为CSV花样)和-f开关(将效果纪录到文件)。如下图所示,这个有用的剧本用种别名称“binwalk”、形貌和位置来为它找到的器械添加书签。

接下来,我们将确立一个函数,该函数允许逆向工程师为binwalk指定一个开关以读取和执行输入。除了编写代码,我还会向您展示屏幕截图,这样您凭证在本文中所阅读的内容,就应该能够自力完成剧本而无需我的辅助了。

下面的屏幕快照是一个弹出窗口,用于输入开关-e,该开关提取在固件映像中找到的所有文件。接下来要做的就是将其指向文件所在的目录,并将所有文件保留到该文件夹中。

探索现有的Ghidra剧本

太棒了!我们已经看到,添加和编辑剧本很容易就能做到了,然则Ghidra中已经包罗了许多有用的剧本。没有人愿意虚耗时间举行这个无谓的重复事情,以是让我们看看有没有什么可以行使的。

让我们从文件夹结构最先:

· JUnit4是一个开放源代码单元测试框架,用于用Java编写可重复的测试。

· JRE System Library是确立Java项目后会自动添加的文件夹。

· Referenced Libraries是与Ghidra关联的库

· Ghidra是Ghidra安装的位置

· Ghidra * scripts,在这里您可以找到现有剧本的聚集,这里有跨越100个剧本,其中许多剧本异常有用。因此如上所述,在花时间编写内容之前,请先查看此处的内容阻止虚耗时间!

我以为这个历程很主要,现在我也是这么做的,然则若是要确立新剧本,我通常只是到Ghidra Python scripts文件夹确立一个python文件,或者可以转到GhidraDev-> New-> Ghidra剧本,它允许您输入剧本名称,剧本类型,剧本作者,剧本种别和剧本形貌。确立Ghidra剧本项目可以输入项目名称、选择项目根目录并确立运行设置。若是要确立多个剧本,此功效很有用。

最后一个是确立一个Ghidra Module Project,该项目从Ghidra Module模板网络代码并将其添加到您新确立的模块中。

让我们编写一个完整的Ghidra剧本

说到这里,查看您的Ghidra Python Scripts文件夹,右键单击该文件夹,确立一个文件并将其命名os_command.py。

剧本的元数据对于剧本的最终用户很主要,因此我们要添加的第一件事是在python剧本的开头添加一些行。

第一行是将添加有关若何使用剧本的元数据注释的地方,这将使最终用户可以通过在“剧本治理器”窗口中单击脚原本阅读注释。

接下来,您可以选择添加作者的姓名。

第三行是种别,它可以让您在剧本治理器窗口中设置剧本将要的保留位置。

menupath是剧本的顶级路径菜单,要添加的最后一个选项是工具栏,它允许您可以为剧本确立图标。该图像将作为启动剧本的按钮泛起在工具栏上。

下一步是编写要确立的剧本,我们要为该剧本编写一个在内陆运行的下令。在反向恶意软件时,我通常会在找到的域和IP地址上运行whois。以下屏幕截图展示了带有注释的代码,以便您可以明白每一行的用途。

保留此代码后,若是查看到Ghidra中的“剧本治理器”窗口,则将看到该os_command.py文件,并显示您在第1-6行中提供的元数据信息。

要使用该剧本,请输入您选择的OS下令,Ghidra剧本将运行它并在控制台窗口中输出效果。

前5的Ghidra剧本

这是一个简短的先容,可辅助您最先使用Ghidra剧本编写异常有用的器械!

就像我在上面说的那样,自动化现实上是成为一名更有用和更具生产力的恶意软件剖析师的要害,而Ghidra剧本编写是您的工具库中必不能少的工具。

通过上面的内容,我们还领会到Ghidra安装中默认提供了许多剧本,这意味着您不必重新最先开发所有内容,您可以从提供的剧本中学习。

最后,我想以使用Ghidra举行恶意软件研究的最佳剧本末尾。毫无疑问,您会发现它们就如我说的一样异常有用:

1.VTGrep:https://github.com/SentineLabs/VTgrepGHIDRA
此插件将VirusTotal Web服务的功效集成到GHIDRA的用户界面中。当前版本为v0.1,此插件尚未投入生产,而且不清扫发生意外的情形。此版本将VTGrep集成到GHIDRA中,便于搜索类似的代码、字符串或字节序列。您可以旁观视频(https://assets.sentinelone.com/ghidra/GHIDRA?lb-mode=overlay&lb-width=100%&lb-height=100%)领会若何使用VTGrep。

2.Binwalk:https://github.com/ghidraninja/ghidra_scripts/blob/master/binwalk.py

在当前途序上运行binwalk并将效果符号为书签。要求binwalk位于$ PATH中。

3.Yara:https://github.com/0x6d696368/ghidra_scripts/blob/master/YaraSearch.py 

此Ghidra剧本提供了YARA搜索,它将在每次匹配前放置一个PRE_COMMENT,并未为每次匹配设置书签。

4.Golang Renamer:https://github.com/ghidraninja/ghidra_scripts/blob/master/golang_renamer.py
从剥离的Go二进制文件中还原函数名称。

5.Daenerys:https://github.com/daenerys-sre/source
Daenerys是一个互操作框架,它允许您运行Ghidra下的IDAPython剧本和IDA Pro下的Ghidra剧本,险些不需要做任何修改。

本文翻译自:https://labs.sentinelone.com/a-guide-to-ghidra-scripting-development-for-malware-researchers/:
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片