當前位置:
首頁 > 新聞 > Windows 下的 7種DLL 劫持技術

Windows 下的 7種DLL 劫持技術

在本文中,我將列出半打可以在Windows運行用戶模式的進程中使用DLL注入技術。也許可能會有更多類似的技術,但我正在和你分享的是我所擁有的第一手的技術。

AppInit_DLLs

人們以前往往依賴於AppInit_DLLs註冊表項。它是操作系統載入程序查詢此值並載入創建進程時指定的DLL。我在很長一段時間沒有使用這種技術(最後一次我使用它在Windows XP上),而且我聽說現在受到惡意軟體的廣泛使用,所以它也受到限制或被停止使用了。

SetWindowsHookEx API

使用API函數SetWindowsHookEx()可以把一個應用程序定義的鉤子子程安裝到鉤子鏈表中。 SetWindowsHookEx函數總是在Hook鏈的開頭安裝Hook子程。當指定類型的Hook監視的事件發生時,系統就調用與這個Hook關聯的 Hook鏈的開頭的Hook子程。每一個Hook鏈中的Hook子程都決定是否把這個事件傳遞到下一個Hook子程。Hook子程傳遞事件到下一個 Hook子程需要調用CallNextHookEx函數。它支持各種各樣的鉤鏈(CBT,Journal,Window消息,鍵盤,滑鼠等)。

當使用SetWindowsHookEx API時,你就是在在指示操作系統將自定義HookDLL注入到其相關的其他進程中。當其他進程從USER32.dll導入/使用功能時,Windows Hook就會工作。

The Image File Execution Options (IFEO) key

該 IFEO註冊表項是非常方便的。它允許你指定OS載入程序在創建給定進程、啟動給定的AppVerifier插件、更改進程堆選項等情況時調用調試程序。

現在讓我們回過頭來說,我已經在IFEO鍵上做了一個小實驗,創建了一個AppVerifier插件,注入到我選擇的進程中。

Remote threads

這種技術依賴於將遠程線程創建到想要注入的所需進程中。遠程線程的代碼將會非常簡單地在該目標進程的上下文中調用LoadLibrary。請注意,許多防病毒軟體都會將創建遠程線程標記為惡意活動。

Implicitly tracking all processes

此方法往往會依賴於進程創建API的Hook,例如:kernel32.CreateProcess [Internal]或較低的API。通過跟蹤其他進程的創建,你就會有機會將DLL注入到新進程中。

該技術背後的基本思路如下:

1、枚舉所有現有進程

2、將你的DLLHook注入所有正在運行的進程。這很重要,並且也會使你的注射器可以在執行注射器之前執行的進程達到最高速度。

3、Hook k32!CreateProcessInternalW在每個進程中。如果你能hook到更好的那些就最好了。例如在ntdll!NtCreateProcess *

4、你注入的DLL必須明確的Hook進程create API,並在調用時執行以下操作:

1.暫停創建子進程2.注入你的Hook,這本質上是「跟蹤」3.恢複流程。現在這個子進程現在也將Hook任何新的進程

這種技術會給你一種你正在跟蹤所有流程的錯覺。不過它是有效的,我已經看到它被用於很多安全產品中了。通過hook Explorer.exe(shell),你可以跟蹤從「開始菜單」啟動的所有進程。

當然,這種技術是有限的,它是可以被躲避的,不過當你在只有用戶模式訪問時它很有用。

AppCompat shimming layer

其實,很長時間裡我都不知道這種注入方式,直到我在微軟工作時接觸到了EMET項目。

該程序的兼容性機制其實並不會真的記錄了第三方開發者,但當我在EMET項目中使用它時這一情況翻轉了。

其實質是有一個名為AppPatch.dll的系統DLL ,它讀取一個勻場資料庫(又稱SDB)。該資料庫是自定義格式,它可以描述各種應用程序兼容性調整/修補功能:

1、內存搜索/替換 - >補丁代碼在一個給定的模塊中,當該模塊載入

2、載入/注入一個給定進程的DLL。可以使用通配符等。

3、假API返回等。

EMET項目中我是使用方法第二種來注入DLL到所需的進程中。每個EMET重新配置時,基本思想就是在Fly中生成SDB。EMET嵌入了懂得如何生成SDB的代碼,然後在系統中註冊該SDB。

請注意,AppPatch機制被烘焙到操作系統的進程載入程序(在ntdll.dll內)。因此,它不是真正的「注入」,它更像是載入進程的一部分。

Kernel drivers

最後的這一種但並非是不重要的,只是它不是一種純粹的用戶模式下的方法,使用內核驅動程序是將代碼注入所有正在運行的進程的一種可靠方法。據我所知,現在有名氣的A / V軟體都使用了它。他們會在註冊圖像時創建通知,然後將在用戶模式下需要執行並注入的一些APC進行排隊。

結論

總而言之,DLL注入是一個非常引人入勝的主題,它具有各種注入技術可供選擇,對系統開發人員來說真的非常有幫助。而根據你的不同選擇,注入會有不同的彈性、安全性(不被殺毒軟體所捕獲)以及持續性。

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

2017年上半年最受矚目的黑客事件,你知道幾個?
如何使用SilentCleanup繞過UAC?
ImageMagick再爆嚴重漏洞,可導致雅虎郵箱用戶郵件內容泄漏
一次用 7個NSA 武器的新 SMB 蠕蟲——永恆之石

TAG:嘶吼RoarTalk |

您可能感興趣

Valve空間音頻系統正式支持AMD TrueAudio Next技術
Valve改進Steam音頻 增加AMD的TrueAudio Next技術
AMD 3D音頻技術TrueAudio Next中的CU Reservation是什麼
淺談Hybrid Log-GammaHLG技術農步祥
微軟Xbox One X/S即將支持AMD Freesync技術
AMD 3D音頻技術TrueAudio Next中的CU Reservation是什麼?
英特爾Dawson Canyon NUC支持vPro技術
逐鹿下一代屏幕技術 蘋果正生產Apple Watch尺寸microLED
Stratasys合作夥伴利用J750和HP Multi Jet Fusion 3D列印技術
在 Scale Up 中使用 Health Check-每天5分鐘玩轉 Docker 容器技術
Emagin OLED微顯示技術獲得蘋果LG和Valve的投資
谷歌推出光場技術實驗平台Welcome to Light Fields
Polymake公司使用Warp-Free技術製造出3D列印纖維材料——尼龍CoPA
Inside Xbox 新聞回顧:Xbox系統迎來AMD FreeSync技術
Xbox One S/X將很快支持AMD Freesync畫面防撕裂技術
Xbox One S與X將支持AMD FreeSync畫面防撕裂技術
iPhone X 的新解鎖技術:用 Python 編寫 Face ID!
解決畫面撕裂問題:Microsoft 微軟 Xbox One S/X 即將支持 AMD FreeSync「防撕裂」技術
搭載最新鞋面技術!OFF-WHITE x Mercurial Vapor 360 細節公開
深刻變革!移動端應用迎來WEB時代Google/Microsoft/Apple已全部支持PWA技術