一款構建ROP漏洞利用的工具

2022-09-23 16:48:07 字數 2788 閱讀 6157

今天給大家介紹的是一款名叫ropgenerator的rop漏洞利用開發工具,它能夠自動尋找gadget,並構建rop漏洞利用鏈,該工具當前版本支援x86和x64原始碼。

工具介紹

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:

獲取幫助資訊:

從原始碼檔案載入gadget:

快速查詢gadget:

自動化生成漏洞利用**:

一款好用的lnmp工具

恭喜,lnamp 已安裝成功 wdcp管理面板 http c48 whailun.houdunphp.com 8080 預設使用者密碼 admin wdlinux.cn 檢視伺服器web環境 探針資訊 phpinfo資訊 wdos官網 wdcp管理系統交流論壇 lanmp一鍵安裝包 wdos論壇討論...

foolbox 一款神奇的Python工具箱

原文 foolbox 翻譯 vincent foolbox是乙個python工具箱,它可以建立一些對抗樣本從而來迷惑神經網路。它需要python,numpy和scipy。pip install foolbox我們測試的時候使用的是python 2.7 3.5和3.6版本。當然python其它版本也可...

工具 推薦一款檢視dll依賴工具

很久沒寫一篇像樣的部落格了,最近乙個月一直忙於專案,也沒時間去總結了,回到家,也就是看看書,沒怎麼總結。不過還是挺興奮的,每天過得還算充實。這裡也算是對五月份的乙個總結吧。因為專案是乙個輪詢簽名系統,在呼叫c 動態鏈結庫的時候,同事給提供了兩個版本的dll,乙個32位的,乙個64位的,名字一樣,引用...