close

關於ROPR

ROPR是一款速度極快且功能強大的ROPGadget查找工具,該工具支持多線程運行,可以幫助廣大研究人員快速尋找和定位目標ROPGadget。

ROP(Return Oriented Programming),即返回導向編程,而ROPGadget是一些包含匯編指令的代碼段,通常以ret指令結尾,這些指令已經作為可執行代碼存在於每個源碼文件或代碼庫中,而這些小工具可用於二進制攻擊,並破壞易受攻擊的可執行文件。

當許多ROPGadget的地址寫入緩衝區時,就形成了ROP鏈。如果攻擊者可以將堆棧指針移動到此ROP鏈中,則控制權將會完全轉移給攻擊者。

大多數可執行文件包含足夠的小工具來編寫ROP鏈一旦我們知道了地址,就可以使用包含在同一地址空間(如libc)中的動態庫。

而使用ROPGadget的好處在於,無需在任何地方編寫新的可執行代碼,攻擊者可以僅使用程序中已經存在的代碼來實現其目標。

工具要求

工具需要使用cargo(Rust構建系統)來構建和使用ROPR。

工具下載源碼安裝

廣大研究人員可以使用下列命令將該項目源碼克隆至本地,並構建項目代碼:

gitclonehttps://github.com/Ben-Lichtman/roprcdroprcargo build --release

(向右滑動,查看更多)

此時,應用程序將會安裝到target/release/ropr路徑下。或者,下列命令同樣可以安裝ROPR:

gitclonehttps://github.com/Ben-Lichtman/roprcdroprcargo install --path .

(向右滑動,查看更多)

此時,應用程序將會安裝到~/.cargo/bin路徑下。

Cargo安裝

cargo install ropr

此時,應用程序將會安裝到~/.cargo/bin路徑下。

工具使用

USAGE:ropr[OPTIONS]<BINARY>ARGS:<BINARY>待檢查的文件路徑OPTIONS: -b, --base-pivot 用於更改基指針的ROPGadget過濾器 -c, --colour <COLOUR> 開啟輸出顏色高亮和明文顯示 -h, --help 打印工具幫助信息 -j, --nojop 移除"JOP Gadgets" -m, --max-instr <MAX_INSTR> 一個小工具中的最大指令數量[默認: 6] -n, --noisy 包含潛在的低質量小工具 -p, --stack-pivot 過濾堆棧指針後的小工具 -r, --norop 移除普通的"ROP Gadgets" -R, --regex <REGEX> 執行正則表達式搜索 --range <RANGE> 搜索地址範圍(十六進制),例如 `0x1234-0x4567` --raw <RAW> 將輸入文件當作代碼段 -s, --nosys 移除系統調用和其他中斷 -V, --version 打印工具版本信息

(向右滑動,查看更多)

工具使用演示

比如說,如果我們想要使用其他註冊表鍵值來填充rax,我們就可以使用正則表達式「^mov eax, ...;」來選擇過濾器:

❯ropr/usr/lib/libc.so.6-R"^moveax,...;">/dev/null==> Found 197 gadgets in 0.118 seconds

(向右滑動,查看更多)

現在,我們就可以在命令行添加某些過濾器來獲取高質量的處理結果了:

❯ ropr /usr/lib/libc.so.6 -m 2 -j -s -R "^mov eax, ...;"0x000353e7: mov eax, eax; ret;0x000788c8: mov eax, ecx; ret;0x00052252: mov eax, edi; ret;0x0003ae43: mov eax, edx; ret;0x000353e6: mov eax, r8d; ret;0x000788c7:moveax,r9d;ret;==> Found 6 gadgets in 0.046 seconds

(向右滑動,查看更多)

接下來,我們可以查看到mov小工具的地址為0x00052252。

項目地址

ROPR:https://github.com/Ben-Lichtman/ropr



精彩推薦





arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()