如果你對前面的技術細節沒什麼興趣的話可以直接來看這篇XD
這篇要來總結解析前面5篇介紹的攻擊手法的流程和如何有效偵測。
前幾篇提到的5種手法其實更像是 Process Defense Evasion 而不是 Process Injection,因為實際上必不會以此取得其他 process 的權限。
不過這5種攻擊手法的目的都是偽裝成其他 process,這點就和 Process Injection 呈現的效果一樣。
對於以上5種攻擊手法該如何有效偵測?關鍵在於不能只依賴一種偵測手法。這邊歸納有出現的手法可以使用的偵測手段:
PsSetLoadImageNotifyRoutine
可以註冊 callbackMiniFilter
,但這東西還是有一些盲點,尤其是一些奇妙的機制可以被濫用。ObRegisterCallbacks
可以註冊 callback,在 Process/Thread/Desktop Object 被 reference 時會觸發PsSetCreateProcessNotifyRoutine
可以註冊 callback。其實這5種攻擊手法都是我在過去就有看過並實驗過了,但是再次複習並分析程式碼的細節後,我覺得可以將他們拆成這幾種階段:
LoadImageNotifyRoutine
會是主要的偵測手法。CreateProcessNotifyRoutine
,因此攻擊者在這使用 NtCreateUserProcess 的狀況下,會在這階段之後才修改 process 的內容ObRegisterCallbacks
有機會被觸發,因為攻擊者可能會對建立好的 process 進行修改。CreateProcessNotifyRoutine
會抓到的是攻擊者布置的偽裝。最後,透過分析這些攻擊手法和發想可能的偵測方式,可以讓我們更清楚知道如何使用 Windows 提共的偵測方式,並且能避開一些潛在被攻擊的風險,使用者也有所依據可以判斷自己使用的防護產品是否足夠安全。
下一篇,我要介紹的是 Dark LoadLibrary,一個 Reflective Loader 的改良版!