windows 通過AppInit加載任意dll


windows操作系統允許將用戶提供的dll加載到所有的進程的內存空間中。該功能可以用來做后門持久化。有點類似於linux的ld_preload環境變量。在進程啟動的時候,操作系統會將用戶提供的dll加載。在設置該功能時,需要administrator權限。設置方法為修改注冊表中兩個選項


HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows

HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows

微軟默認阻止用戶通過appinit功能去加載未知的dll。不過,可以通過修改注冊表鍵值LoadAppInit_DLLs為1去關閉該功能。將待加載的dll保存在Program Files文件夾,並且將AppInit_DLLs鍵值修改為待加載dll的路徑,即可讓所有windows進程都加載該dll。
這是因為在“ AppInit_DLLs”注冊表項中指定的DLL是由user32.dll加載的,幾乎所有應用程序都使用該user32.dll。

Enable LoadAppInit_DLLs - 32bit and 64bit
 
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\LoadAppInit_DLLs - 0x1
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows\LoadAppInit_DLLs - 0x1
 
Registry Key for Arbitrary DLL via AppInit - 32bit and 64bit
 
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\WindowsAppInit_DLLs
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs

當然,每個進程都加載dll,並反彈shell的話,會很雜亂。所以,有人開發了一個dll工具https://www.didierstevens.com/files/software/LoadDLLViaAppInit_V0_0_0_1.zip,通過
LoadDLLViaAppInit.bl.txt文件來決定哪些應用程序去加載用戶指定的appinit dll。
f69c84a4edaa8eb3c6030f24039a7bca.png

67266a2fa0222941dd92245048ca1159.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM