R0Ak:一款針對Windows 10的核心模式程式碼讀取、寫入和執行的測試工具
對於研究人員來說,今天介紹的這款工具就相當於他們的“瑞士軍刀”,因為這款名叫R0ak的命令列工具可以幫助研究人員在Windows 10作業系統上讀取、寫入和執行任意程式碼,用於進一步測試。
r0ak
r0ak是一款Windows平臺下的命令列工具,它可以幫助我們在命令列介面下輕鬆讀取、寫入和執行核心模式程式碼,而且除了管理員許可權之外,不需要其他額外的東西。
快速使用
r0akv1.0.0 — Ring 0 Army Knife
ofollow,noindex" target="_blank">http://www.github.com/ionescu007/r0ak
Copyright(c) 2018 Alex Ionescu [@aionescu]
http://www.windows-internals.com
USAGE:r0ak.exe [--execute <Address |module.ext!function> <Argument>] [--write<Address | module.ext!function><Value>] [--read<Address | module.ext!function><Size>]
基礎架構:
支援的命令
在使用–execute選項時,這個功能和引數由使用者提供。
在使用–write時,需要使用一個自定義小公舉來修改核心記憶體中任意位置的32位元組值。
在使用–read時,需要使用一個寫入小公舉來修改系統中HSTI緩衝區指標和大小。
接下來,需要使用HSTI查詢API來將資料重新拷貝至工具的使用者模式地址空間內。
工具使用
由於工具需要使用到Windows符號引擎,所以我們需要安裝Windows軟體開發套件(SDK)或Windows驅動套件(WDK),以及Windows除錯工具。工具安裝完成後會自動查詢安裝路徑,並使用目錄中的DbgHelp.dll和SymSrv.dll,由於這些檔案是無法多次使用的,因此工具中無法內建這些檔案。
或者說,如果你想使用你自己的程式碼庫,你也可以修改工具的原始碼。
在使用符號時,需要聯網,除非你在本地預先快取好資料。除此之外,你還需要設定_NT_SYMBOL_PATH變數,並指向正確的符號伺服器和快取地址。
工具限制
本工具需要使用正確的Windows 10核心變數以及函式功能,並且只能在64位作業系統上使用。雖然在x86架構的作業系統上沒有這些限制,但是這種平臺有很多傳統的方法可以使用,因此這款工具主要針對的是64位的的Windows 10。
限制條件:
1. 讀取:一次只能讀取4GB資料; 2. 寫入:一次只能寫入32位長度的資料; 3. 執行:函式的執行只能接收1個標量引數;
很明顯,我們可以利用其它的程式設計手段或方法來繞過這些限制。需要注意的是,所有的命令執行(包括讀取和寫入命令)都需要在一個系統Worker執行緒(PASSIVE_LEVEL)環境下執行,因此使用者模式地址不應該以引數進行傳遞。
* 參考來源: r0ak ,FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf.COM