快捷搜索:  网络  CVE  渗透  后门  扫描  木马  黑客  as

一款通过寻觅以及串联Gadget来构建ROP漏洞行使的工具

今天给人人先容的是一款名鸣ROPGenerator的ROP漏洞行使开发工具,它能够自动寻觅gadget,并构建ROP漏洞行使链,该工具当前版本支持x86以及x64源码。

1.png

工具先容

ROPGenerator使用了ROPgadget工具来从二进制代码中提取出可行使的gadget,并行使barf-project来对它们进行反汇编。提取出gadget以后,数据库黑客,它将会对这些gadget进行阐发,并解析代码语义,最后根据它们的实用性来存储gadget信息。阐发实现以后,测试人员就可以行使ROPGenerator来自动化查询gadget,并通过语义查询来构建相干的ROP漏洞行使链。

ROPGenerator采用Python开发,该工具目前只支持Python 2环境。

注:ROPGenerator目前仍处于测试阶段,当前主分支版本为v0.5,目前我正在开发v1.0版本,这个版本的速率会更快,功能也会更强,大概几周以后就可以发布。

ROPGenerator的优势

1.   优秀的命令行接口:工具提供了一个流利且易于使用的命令行接口;

2.   基于语义的gadget查询:你可以通过指定语义来快速查询相干的gadget;

3.   Gadget链构建引擎:单个gadget没法餍足你的需求?没关系,ROPGenerator可以帮你构建ROP行使链;

4.   完全自动化完成:ROPGenerator能够帮你自动化构建出完备的漏洞行使链。

工具装置

装置ROPGenerator

你可以使用如下命令下载装置并运行ROPGenerator:

$ python setup.py install
$ ROPGenerator

装置依靠

ROPGenerator的运行需要ROPgadget、prompt_toolkit、enum、python-magic、pwntools以及barf v0.4.0:

1.   prompt_toolkit、enum、python-magic以及barf v0.4.0会在工具装置过程中自动实现添加;

2.   要是你没有装置ROPgadget的话,它一样会在工具装置过程中自动装置,然则该工具当前托管在pypi上的版本并不是最新版,所以你需要手动进行更新。

工具使用

ROPGenerator的使用无比简单,下面给出一些参考实例。

加载源码

第一步就是从你想要行使的源码中加载gedget,你可以使用“load”命令完成:

>>>load /your/binary/goes/here

这条命令将运行ROPgadget来从代码中提取gadget,接下来工具会对所有提取出来的gadget进行阐发,并计算语义,然后将阐发效果存储在一个gadget数据库中。

语义查询

你可以使用“find”命令查询gadget以及ROP行使链,你需要指定一个想要实现的操作,随后ROPGenerator将生成相应的ROP行使链,支持的抒发式以下:

reg =reg +/- cst
reg =mem(reg +/- cst)
mem(reg +/- cst ) = reg +/- cst

样例:

>>>find rax=rbx
>>>find mem(rax+0x18)=rbx
>>>find rbx = mem(rsp+8)

要是你不确定哪一个寄存器可用,你可以使用“registers”命令来进行查询。要是你想进行有针对性的查询,你还可以使用“find”命令提供的其他选项:

-b,--bad-bytes:指定gadget地址中禁止的字节数据;
-k,--keep-regs: 指定生成的ROP行使链不应修改的寄存器列表;
-f,--output-format: 指定ROP链的输出格式;

样例:

>>>find --bad-bytes 0F,0A,56  rcx=rdx
>>>find --keep-regs rax,rbx  mem(rax)=rdx
>>>find --output-format python  rax=mem(rsp)

构建漏洞行使代码

加载代码以后,你可以使用“exploit”命令来自动化构建漏洞行使代码,ROPGenerator提供了多种漏洞行使要领:

1.   run-payload:向可执行内存地区发送Payload,并跳转执行;

2.   call:通过中止或体系调用来调用体系函数;

3.   更多功能敬请期待!

可用的漏洞行使调试选项以下:

-v,--verbose:打印ROPGenerator在构建漏洞行使代码过程中的相干信息;
-f,--output-format: 指定漏洞行使的输出格式;

样例:

>>>exploit --verbose --output-format python run-payload

注:ROPGenerator提供了一个嵌入式Payload数据库,你也能够直接使用“payload”命令来治理以及调用其中的Payload。

“run-payload”要领

“run-payload”策略会尝试通过调用mprotect来制造.bss RWX,然后将payload拷贝进相应的内存地区,并跳转执行payload。你通过使用如下命令来使用“run-payload”策略:

>>>payload select        (select a payloadto execute)
>>>exploit run-payload   (build exploit withrun-payload strategy)

“call”要领

正在开发中,敬请期待:D

运行截图

启动ROPGenerator:

2.png

获取帮助信息:

3.png

从源码文件加载gadget:

4.png

快速查询gadget:

5.png6.png7.png8.png

自动化生成漏洞行使代码:

9.png

*参考来源:ropgenerator,Alpha_pck编译,

您可能还会对下面的文章感兴趣: