建BlobRunner:Windows下編譯Shellcode調(diào)試加載器的分步指南)
3分鐘從零構(gòu)建BlobRunnerWindows下編譯Shellcode調(diào)試加載器的分步指南【免費(fèi)下載鏈接】BlobRunnerQuickly debug shellcode extracted during malware analysis項(xiàng)目地址: https://gitcode.com/gh_mirrors/bl/BlobRunnerBlobRunner 是一款開(kāi)源的 Shellcode 調(diào)試加載器專(zhuān)為惡意軟件分析場(chǎng)景設(shè)計(jì)它把你提取出的 shellcode 文件讀入內(nèi)存、分配可執(zhí)行內(nèi)存區(qū)域然后直接跳轉(zhuǎn)到 shellcode 入口讓分析人員在調(diào)試器中零配置地進(jìn)入目標(biāo)代碼。下面這份 Windows 編譯教程將帶你用 Visual C 命令行在 3 分鐘內(nèi)從零構(gòu)建 BlobRunner 調(diào)試加載器并快速上手調(diào)試你的第一段 shellcode。一、認(rèn)識(shí) BlobRunnerShellcode 調(diào)試加載器解決什么痛點(diǎn)調(diào)試從惡意樣本中提取的 shellcode通常要手動(dòng)建內(nèi)存、寫(xiě)跳板代碼繁瑣易錯(cuò)。BlobRunner 用約 200 行的 blobrunner.c 把這些步驟全做了讀取文件把你提供的 shellcode 二進(jìn)制文件讀入緩沖區(qū)分配內(nèi)存通過(guò)VirtualAlloc申請(qǐng) RWX可讀寫(xiě)可執(zhí)行內(nèi)存并復(fù)制數(shù)據(jù)跳轉(zhuǎn)入口32 位版本直接jmp到 shellcode 入口64 位版本創(chuàng)建一個(gè)掛起線(xiàn)程供你先下斷點(diǎn)整個(gè)工具只有一個(gè) C 源文件無(wú)第三方依賴(lài)編譯即得。二、環(huán)境準(zhǔn)備安裝 Visual C 編譯工具最快方法在 Windows 上編譯 BlobRunner 只需要 Microsoft 的 C 編譯器cl準(zhǔn)備步驟如下下載并安裝Microsoft Visual C Build Tools或直接安裝 Visual Studio勾選C 桌面開(kāi)發(fā)工作負(fù)載從開(kāi)始菜單打開(kāi)Visual Studio Command Promptx86 與 x64 兩個(gè)版本都可用輸入cl驗(yàn)證編譯器可用 小技巧不要使用普通 cmd 窗口Developer Command Prompt 已自動(dòng)配置好編譯器環(huán)境變量省去 PATH 折騰。三、克隆倉(cāng)庫(kù)并查看源碼git clone https://gitcode.com/gh_mirrors/bl/BlobRunner cd BlobRunner項(xiàng)目結(jié)構(gòu)非常精簡(jiǎn)核心就兩個(gè)文件blobrunner.c—— 全部邏輯文件讀取、內(nèi)存分配、參數(shù)解析、跳轉(zhuǎn)/建線(xiàn)程changelog.txt—— 版本記錄當(dāng)前版本 0.0.5新增了--jitJIT 調(diào)試支持并修復(fù)了--offset默認(rèn)按十六進(jìn)制解析的問(wèn)題四、一鍵編譯最快編譯 BlobRunner 的步驟編譯 32 位版本推薦新手先跑通這個(gè)在x86 版本的 Visual Studio Command Prompt中依次執(zhí)行cl blobrunner.c完成后當(dāng)前目錄會(huì)生成blobrunner.exe全程不到 10 秒。編譯 64 位版本x64x64 版本用的是x64 Native Tools Command Prompt命令只多兩個(gè)輸出參數(shù)cl /Feblobrunner64.exe /Foblobrunner64.out blobrunner.c/Fe指定生成的 exe 名為blobrunner64.exe。由于 x64 編譯器不支持內(nèi)聯(lián)匯編64 位版本改用CreateThread創(chuàng)建掛起線(xiàn)程的方式進(jìn)入 shellcode方便你在恢復(fù)線(xiàn)程前于線(xiàn)程入口下斷點(diǎn)。五、快速上手調(diào)試你的第一段 Shellcode拿到編譯好的blobrunner.exe后用法只有一個(gè)核心形式——把 shellcode 文件作為第一個(gè)參數(shù)BlobRunner.exe shellcode.bin標(biāo)準(zhǔn)調(diào)試流程用你喜歡的調(diào)試器x64dbg、WinDbg、IDA Pro 等打開(kāi)blobrunner.exe以shellcode.bin為參數(shù)運(yùn)行在跳轉(zhuǎn)到 shellcode 之前下斷點(diǎn)單步進(jìn)入開(kāi)始分析常用參數(shù)速查表參數(shù)作用示例--offset 偏移從指定偏移處進(jìn)入 shellcode支持0x十六進(jìn)制BlobRunner.exe shellcode.bin --offset 0x0100--nopause跳轉(zhuǎn)前不暫停?? 務(wù)必提前下好斷點(diǎn)BlobRunner.exe shellcode.bin --nopause--jit移除執(zhí)行權(quán)限觸發(fā) AccessViolation交由系統(tǒng)配置的 JIT 調(diào)試器接管BlobRunner.exe shellcode.bin --jit--debug輸出詳細(xì)調(diào)試日志—--version查看版本并退出—沒(méi)有參數(shù)時(shí)會(huì)打印幫助信息說(shuō)明缺少必需的文件參數(shù)。六、進(jìn)階玩法JIT 調(diào)試與 x64 Shellcode用 --jit 讓 JIT 調(diào)試器自動(dòng)接管加--jit后BlobRunner 會(huì)把 shellcode 入口處的頁(yè)保護(hù)改為不可執(zhí)行VirtualProtect程序執(zhí)行到該處時(shí)觸發(fā)0xC0000005訪(fǎng)問(wèn)違例異常Windows 隨即拉起你預(yù)先配置的 JIT 調(diào)試器。調(diào)試器附加后把該區(qū)域權(quán)限改回可讀寫(xiě)可執(zhí)行即可繼續(xù)單步例如在 x64dbg 中使用setpagerights region, ExecuteReadWrite。調(diào)試 x64 Shellcode 的原理x64 版本會(huì)在跳轉(zhuǎn)前提示你到線(xiàn)程入口下斷點(diǎn)按任意鍵恢復(fù)線(xiàn)程。掛起線(xiàn)程 入口斷點(diǎn)的組合正是繞過(guò) x64 無(wú)內(nèi)聯(lián)匯編限制的經(jīng)典做法也是changelog.txt中 0.0.2 版本引入的重要能力。七、常見(jiàn)問(wèn)題速答找不到 cl 命令請(qǐng)確認(rèn)是在 Visual Studio Command Prompt 中執(zhí)行而不是普通終端。x64 編譯產(chǎn)物名不對(duì)加上/Feblobrunner64.exe參數(shù)顯式指定輸出名。哪里找測(cè)試用的 shellcode可用 Metasploit 的 msfvenom 快速生成例如生成一個(gè) x86 的windows/exec計(jì)算器載荷存為test2.bin即可拿來(lái)練手。遠(yuǎn)程調(diào)試怎么辦流程與本地一致只需把 shellcode 文件拷到遠(yuǎn)程機(jī)器并把遠(yuǎn)程路徑作為參數(shù)傳入。八、總結(jié)你現(xiàn)在已經(jīng)掌握了 BlobRunner 從源碼到可執(zhí)行文件的完整鏈路安裝 Visual C Build Tools → 克隆倉(cāng)庫(kù) → 一條cl命令完成 32 位或 64 位編譯 → 配合--offset、--jit等參數(shù)進(jìn)入調(diào)試實(shí)戰(zhàn)。作為一個(gè)單文件、零依賴(lài)的 Shellcode 調(diào)試加載器BlobRunner 值得放進(jìn)每一位惡意軟件分析人員的工具箱里 ?【免費(fèi)下載鏈接】BlobRunnerQuickly debug shellcode extracted during malware analysis項(xiàng)目地址: https://gitcode.com/gh_mirrors/bl/BlobRunner創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考