freeBuf
主站

分類

漏洞 工具 極客 Web安全 系統安全 網絡安全 無線安全 設備/客戶端安全 數據安全 安全管理 企業安全 工控安全

特色

頭條 人物志 活動 視頻 觀點 招聘 報告 資訊 區塊鏈安全 標準與合規 容器安全 公開課

官方公眾號企業安全新浪微博

FreeBuf.COM網絡安全行業門戶,每日發布專業的安全資訊、技術剖析。

FreeBuf+小程序

FreeBuf+小程序

Cow注入器-濫用COW機制進行全局hook與注入 金幣
2021-01-01 19:46:46

首先的首先 2021年各位新年好 這是我2021年第一篇帖子

0x0 我們要實現什么

1 啟動時無驅動程序運行
2 沒有線程創建時注入作弊游戲
3. 當我們完成注入時,內存中沒有私有標志
它將最小化內部檢測的檢測向量

0x1 背景

關于COW:

系統中存在一個叫做cow的機制 國外大神@can1357的perfect injecter帖子說的很清楚了:

CoW是操作系統用來節省內存的一種技術,它使進程共享某些物理內存區域,直到它們真正被編輯。
我們知道這一點ntdll.dll為每個進程加載,并且它的代碼(.text)區域很少被修改(如果有的話),那么為什么要為它一次又一次地為數百個進程分配物理內存呢?這正是現代操作系統使用CoW技術的原因。
實現非常簡單:
當一個PE文件被映射時,如果它也被映射到其他進程,并且它的VA在當前進程上也是空閑的,那么只需復制PFN并將標志設置為只讀。
當由于指令試圖在頁上寫入而發生頁錯誤時,請分配新的物理內存,設置PTE的PFN并刪除只讀標志。

綜上所述:當我們更改了cow標志時,物理內存將比更改應用于全局,直到重新啟動系統

關于反作弊如何阻止dll:
大多數反游戲(除了EAC)使用minifilter來過濾游戲加載文件。當一個PE文件被游戲訪問時,minifilter回調將被激活, 然后反作弊驅動程序將文件路徑和信息反饋給R3 anticheat(EasyAntiCheat.exe以及BEService.exe)R3反作弊會調用CreateFile讀取要訪問的PE文件并檢查簽名,如果不是白名單簽名,它將被阻止加載.

0x2 實現COW注入器

首先定位cow物理內存:

獲取cow模塊地址和空間

現在我們有了kernel32.dll、kernelbase.dll、ntdll.dll地址。當我們改變內存時,它將通過cow機制實現全局應用


3. 寫shellcode


我寫一個簡單的createfileW hook,游戲開始時候會調用createfileW,此時我們會loadlibrary我們的dll 之后R3反作弊也會調用createfileW去檢查文件數字簽名,這個時候我們把createfilew讀的文件換成ntdll.dll:你可以看到這里面有一些是 0x1234567812345678 這種無效地址,這種是給接下來定位用的

我不想濫用像perfect inject這樣的windows地址限制機制,所以我們需要找到一個可用內存(VAD中需要執行標志),并使用它保存shellcode:

如果一切順利,我們可以得到一個空閑內存,可以容納我們的shellcode和cow標志模塊地址。
請注意,我嘗試將外殼代碼直接放入只讀地址(因為它更大)并對其進行修改PTE.noexcute=0嘗試使頁可執行,但是發現沒軟用。因為似乎即使物理地址相同,PTE屬性也不同
現在讓我們獲取導出函數以滿足hook的需要:然后,最重要的是,自己手寫hook:
我們需要手寫hook,這是非常痛苦的
在win7中kernel32.createfileW是一個函數,但在win10中它是一個jmp origin_to_kernelbase.dll 這個代碼困擾了我很長時間,直到我發現兩個系統之間的差異。
用一張圖片來解釋我們要鉤什么:

代碼:

然后我們將在shellcode中找到地址并傳遞正確的函數地址(這就是為什么我們需要寫 0x123456789地址):

最后 hook:

總結一下:
0 手寫shellcode
1 加載我們的驅動程序
2 獲取kernelbase ntdll kernel32地址
3 通過遍歷pe頭查找導出函數
4 找到一個空間來保存我們的shellcode
5 重新定位shellcode函數地址
6 鉤子Kernelbase.CreatefileW文件
7 當游戲開始時,shellcode調用并加載我們的外掛dll,當反作弊調用createfilew時,給出一個假的ntdll路徑

"Now they will be afraid of you:"(doom的梗)



地址:https://github.com/huoji120/CowInjecter?

注意事項:
可以看出,濫用cow機制不僅可以實現注入,而且具有很大的潛力,包括不局限于繞過硬件禁止,修改簽名檢查功能,甚至劫持句柄, 你想怎么搞就怎么搞
請注意:
你不能只是復制一個函數作為shellcode,gcc會破shellcode,所以你需要像這樣在R3中生成shellcode并把它放到驅動程序中:

本文作者:, 轉載請注明來自FreeBuf.COM

# 游戲安全 # Windows內核 # Windows系統 # 系統安全 # 游戲反作弊
被以下專輯收錄,發現更多精彩內容
+ 收入我的專輯
評論 按熱度排序

登錄/注冊后在FreeBuf發布內容哦

相關推薦
  • 0 文章數
  • 0 評論數
  • 0 關注者
登錄 / 注冊后在FreeBuf發布內容哦
收入專輯
四月天小说网