今天給大家介紹的是一款名叫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位的,名字一樣,引用...