您好,登錄后才能下訂單哦!
如何防止惡意的第三方DLL注入到進程,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
第一種防止惡意第三方DLL注入到進程的方法就是使用UpdateProcThreadAttribute,這個屬性是PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY中一個我們可以自行設置的屬性。
下面的代碼段顯示了如何使用MITIGATION策略來創建一個新的記事本進程,而這個進程將阻止任意非微軟簽名的代碼注入其中。編譯并執行下列代碼后,將以進程緩解策略執行notepad.exe程序,并防止任意非微軟簽名的代碼注入其中。我們可以使用Process Hacker來進行檢查:
在下面這張GIF中,MITIGATION策略已經生效,任何非微軟簽名的代碼都將被屏蔽,但是其中有一段微軟代碼通過并成功執行了:
值得一提的是,這種特性實際上是Cobalt Strike的blockdlls在“作怪”。
在研究第一種方法的過程中,我偶然發現了一個名叫SetProcessMitigationPolicy的API,這個API將允許我們針對調用進程本身設置緩解策略,而不是像第一種方法那樣去為子進程設置緩解策略。mitigationpolicy.cpp的相關代碼如下:
PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY sp = {};sp.MicrosoftSignedOnly = 1;SetProcessMitigationPolicy(ProcessSignaturePolicy, &sp, sizeof(sp));
在我的測試過程中,使用SetProcessMitigationPolicy并不能防止已知的EDR解決方案將其DLL注入到我們的進程中。通過調試會話的分析,我們確認了原因,即在注入DLL之后,緩解策略將會立刻被應用。當一個進程被初始化并且運行之后,任何非微軟簽名的代碼都將無法注入到進程之中。
這里我有一個更好的辦法,就是使用PowerShell的一個“Get-ProcessMitigation”cmdlet命令來枚舉出使用了MicrosoftSignedOnly緩解策略的進程,然后對其進行分析調查,并設置基準線:
get-process | select -exp processname -Unique | % { Get-ProcessMitigation -ErrorAction SilentlyContinue -RunningProcesses $_ | select processname, Id, @{l="Block non-MS Binaries"; e={$_.BinarySignature|select -exp MicrosoftSignedOnly} } }
下圖顯示的是notepad.exe,它將允許微軟簽名的代碼注入到其進程中:
關于如何防止惡意的第三方DLL注入到進程問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。