登录  | 加入社区

狐狸游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 1113|回复: 0

NSA开源逆向工具Ghidra入门利用教程

[复制链接]

172

主题

172

帖子

0

现金

狐狸小白

Rank: 1

积分
0
发表于 2019-3-8 09:11:02 | 显示全部楼层 |阅读模式
配景

昨天,在刚刚举行的RSA大会上,NSA发布了一款功能强盛、免费的开源逆向分析工具:Ghidra。该反汇编工具雷同于我们常用的IDA,不外其基于JAVA开辟,是一款实用于WindowsMacLinux的跨平台反汇编工具,用户还可以利用JavaPython开辟本身的Ghidra插件大概脚本。2017年维基解密在Vault 7中初次曝光了Ghidra,该信息来自于中心谍报局(CIA)的内部文件,Ghidra在已往数年里不停被用于NSA相干的网络安全使命当中。
360威胁谍报中央第一时间对该工具举行了具体分析,梳理了相干阐明文档、详细的安装利用方法,以及该软件的相干妙闻解读,带你具体相识这款强盛而秘密的安全工具。



Ghidra下载地点

可以通过Ghidra的项目主页大概GitHub举行下载:
    http://Ghidra-sre.org
    http://github.com/NationalSecurityAgency/Ghidra



整理的一些官方阐明

360威胁谍报中央对Ghidra的官方阐明文档举行了梳理,将一些须要的安装留意事项、文件目次先容、利用方法、相干插件的利用等等逐一举行先容,方便读者对照安装利用。


支持平台

Windows 7/Windows 1064位)
Linux64位,最好是CentOS 7
MacOS10.8.3


安装条件

硬件条件:4GB内存;1GB硬盘空间

软件条件:Java 11+



安装方法

通过解压缩工具解压下载的压缩包(7-zipWinZIPWinRAR)即可利用。
安装留意事项


  • Ghidra直接通过压缩包解压即可利用,如许的利益就是可以不消修改各种体系设置,如Windows下的注册表,便于删除,弊端是不能直接在桌面上或开始菜单设置快捷方式。
  • 特定盘符,如C:\必要Administrator权限。
  • Ghidra会利用体系尺度的TEMP目次来存储相干数据,用户也可以通过修改support/launch.properties来举行修改。


Java情况留意事项


  • Ghidra会通过path主动定位相干的java runtimedevelopment kit版本
  • 设置Windows下相干JDK path设置
 

  • 解压JDK
  • 打开体系情况变量设置选项
  • path中增长\bin

P7Vv0ODfnos2G70i.jpg
qXkEXXiX5x2U5XSC.jpg
q47rHJx4fH1AMc4H.jpg

  • Linux下下相干JDK path设置
    1.解压JDK
    2.编辑~/.bahsrc
    Vi ~/.bashrc
    3.export PATH=/bin:$PATH
    4.生存
 
固然用户大概有利用特定版本java的需求,可以通过support/launch.properties中的JAVA_HOME_OVERRIDE来举行设置。不外假如该版本不符合Ghidra的需求,Ghidra是不会运行的。
yr7Rv6N6lZiRs2Z0.jpg



运行Ghidra

GUI 模式

切换到GhidraInstallDir目次,运行GhidraRun.batWindows)或GhidraRunlinus macOS),即可在GUI模式下启动Ghidra
usOK7y7YkFRb4g7O.jpg

启动界面如下:
gfz0u65J65U1p536.jpg

Ghidra Server


Ghidra支持多人协作完成一个逆向项目,各种研究职员在本身装备上举行相干的逆向使命,并将其修改提交到公共的存储库中,相干设置在Ghidra Server中有细致的阐明。
下令行模式


有别于传统的GUI模式,利用者可以通过下令行模式举行批量化的反编译工作。
独立的JAR包模式

Ghidra答应将此中的部门文件打包为JAR包并单独运行,以便于更方便的通过下令行模式举行启动,也方便于作为单独的Java逆向工程库。利用者可以通过 / support / buildGhidraJar创建单独的Ghidra.jar文件并利用。


扩展

拓展是Ghidra的可选组件,可以实行以下操纵:

  • 用于编写拓展Ghidra相干的功能
  • 将别的的工具和Ghidra集成,如eclipseIDA
 
其默认附加了以下的拓展项,可在 /Extensions中找到:

  • Eclipse:用于在eclipse中安装GhidraDev eclipse插件
  • GhidraGhidra扩展
  • IDAPro:和IDA互动的插件


插件留意


  • 可以通过前端的GUI举行安装卸载
    文件->安装拓展
    选择必要安装/卸载的拓展步伐
    重启见效
  • 必要对GhidraInstallDir具备写入权限
  • 也可以不利用GUI前端目次,直接将扩展解压到 / Ghidra / Extensions即可


开辟相干插件

用户可以通过自界说的Ghidra脚本、插件、分析器来扩展其功能,Ghidra通过提供一个名为GhidraDev的自界说Eclipse插件来支持Eclipse中的开辟,该插件可以在 / Extensions / Eclipse目次中找到。



详细利用过程

项目创建

通过自带BAT脚本启动GUI模式:
uxP5t55L5aqNJAJW.jpg

进入之后,会有一个Tip提示,如下所示:
nD7Uifc1sdX1WmKs.jpg

Ghidra是按项目举行管理的,利用者必要起首创建一个项目:
djLuZYlzR8RRRhmH.jpg

输入项目名:
KdrvrRDd7dzfKdl7.jpg

项目创建完毕之后天生一个详细的目次,留意项目文件删除的时间好像不能直接通过GUI删除,必要手动删除:
PDRS4hxtsxSCpddH.jpg

创建好项目之后就可以导入必要反编译的文件了:
eFlwW8W8VRLFR02r.jpg

如下所示我们反编译测试了calc.exe盘算器步伐:
OAE2Q9ttAUvG2ixq.jpg

开始反编译,速率相比于IDA照旧慢了不少:
vqJqM9pDp9GsFApD.jpg

完成之后,项目文件下会创建对应的项目,双击进入:
Pc4pt0PFhF1tJCZa.jpg

进入之后会提示是否举行分析:
f17737vA77Z3DNPF.jpg

点击确认后,可以控制相应的分析选项:
sAKmB8hA1Ymh6IKM.jpg

开始分析之后,右下角会有相干的进度条展示:
z3m346dkmv4Xbm0A.jpg

现在来看Ghidra是无法主动下载符号的,必要对PDB相干设置举行设置:
hCQBURxmZUw5425b.jpg

完身分析之后的团体界面如下所示,很有一股浓浓的JAVA风范:
yL1CgaeXZLk7La1K.jpg

由于是基于项目标,因此Ghidra中可以同时打开多个反编译的项目,只必要直接往项目中导入文件即可:
afB5zfKbtQFZwf7k.jpg



重要功能先容

360威胁谍报中央整理了一些Ghidra反汇编界面中常见且有效的一些功能选项,并举行相干先容:

  •  Navigation菜单

该菜单下是一些重要操纵选项:
QV7rR7uXU7h17RxM.jpg


  • Window菜单
该菜单下是其重要支持的功能窗口,雷同于IDAview->opensubview
Oy90Ey31yEzOpMy0.jpg

此中的Python功能提供了雷同IDAPython的功能,可以通过help()或直接按F1检察对应的功能阐明:
cpzKOoD6Z7ya2Y29.jpg


  • 脚本管理菜单
脚本管理菜单下有大量的JAVA扩展脚本,这也是现在为止笔者以为能带来惊喜的一个地方:
K9BjYVuzyfewEzv1.jpg

这些脚本选中后是可以直接运行的,如下所示的是字符串搜刮功能:
BbLbNbYFJ8AyHN8G.jpg


  • 反编译项目对比功能
由于是以项目为单元的,因此支持对同一个项目中的反编译项目举行对比:
CKsy6Hys99Y3132e.jpg

详细选项如下:
Cr1glK98jln1Ly18.jpg

不外现在看来其结果一样平常:
eXqN4QnGkCn4CUGU.jpg



常用快捷键

Ghidra也支持快捷键功能,360威胁谍报中央整理了一些Ghidra中常见且有效的快捷键举行先容:

  •  双击

IDA同等,直接双击可以进入之后的地点函数:
A3t0oM1a9MIiSyGS.jpg

 


  • 搜刮(Ctrl+SHIFT+E
该快捷键用于举行搜刮,雷同于IDA中的alt+t
OjZbEqJAP8eKWmz8.jpg

结果如下,速率对比IDA照旧要慢上不少:
Xkk259o7ZkLT127o.jpg

 


  • 书签(Ctrl+D
该快捷键启用书签功能:
Q8XUr3nX15RP5FZZ.jpg

 

  • 反编译Ctrl+E
相称于IDA中的F5,展示反编译后的代码:
pN3We2I2ZnkFWx99.jpg

 


  • 右键检察引用
雷同于IDA中的Ctrl+X
vwDFsQfeQmBJq37S.jpg




更多操纵

更多具体的快捷键和操纵可看法压后docs文件夹中的CheatSheet.html文件:
B8CPD4JPYRD3p29q.jpg

e5Vv5HsN885544w4.jpg




一些妙闻:关于JDWP长途代码实行

Ghidra发布后不久,HackerFantastic就在Twitter发布了Ghidra存在JDEWP的长途代码实行题目:
Ly5nO7yYNYLyYJjJ.jpg



JDWP是指开放了一个调试端口,可以长途访问:
MG7y0H7GOiZ4GIdk.jpg
笔者默认的情况下可以看到这个JAVA的调试端口并没有启动:
Npf2AR29HqD25a12.jpg

笔者在对应的support下看到了对应的launch.sh脚本,这个脚本确实会开启一个对应的端口,但必要通过debugdebug-supend参数启动:
OFr3rc9qI33N62n2.jpg

现实上我们利用的GhidraRun也是通过launch.bat举行启动的:
c4loDG4Io0DiPEx8.jpg

只是GhidraRun利用的是bg参数,并不会激活对应的调试模式:
r6QZkOXzkh0oxQCc.jpg

因此从现在来看正常的GUI启动时不会激该死功能,但是由于launch自己是重要的启动入口,在没有具体深入分析前,不清除有其他方式通过debugdebug-supend参数举行调用,因此发起手动patch代码。



总结

现在来看Ghidra具有反编译功能,检察、定位反编译后的代码相较于IDA有上风。不外在利用过程中发现其处置惩罚某些肴杂子女码的本领还比力短缺,在一些界面功能上也另有较大的差距,别的基于JAVA开辟的缘故原由也使得其在性能上有一些短缺。



参考链接

http://Ghidra-sre.org/CheatSheet.html
http://Ghidra-sre.org/InstallationGuide.html
http://github.com/NationalSecurityAgency/Ghidra




上一篇:关系型数据库MySQL之InnoDB体系布局
下一篇:centos7安装supervisor具体教程
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2020-10-25 07:05 , Processed in 0.066566 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表