iT邦幫忙

2023 iThome 鐵人賽

DAY 12
1
Security

Windows Security 101系列 第 12

[Day12] The End of The Party: Defeat Defense Evasion

  • 分享至 

  • xImage
  •  

如果你對前面的技術細節沒什麼興趣的話可以直接來看這篇XD

這篇要來總結解析前面5篇介紹的攻擊手法的流程和如何有效偵測。

前幾篇提到的5種手法其實更像是 Process Defense Evasion 而不是 Process Injection,因為實際上必不會以此取得其他 process 的權限。

不過這5種攻擊手法的目的都是偽裝成其他 process,這點就和 Process Injection 呈現的效果一樣。

Defeat Defense Evasion

對於以上5種攻擊手法該如何有效偵測?關鍵在於不能只依賴一種偵測手法。這邊歸納有出現的手法可以使用的偵測手段:

  • CreateSection / MapViewOfFile
    • Kernel 提供的 callbacks 中有 PsSetLoadImageNotifyRoutine 可以註冊 callback
  • File Operations
    • 所有對於檔案的操作(應該)都會有 IRP (I/O request packet) 的產生,M$爸爸還是有提供一套好用的 filter IRP 的機制叫做 MiniFilter,但這東西還是有一些盲點,尤其是一些奇妙的機制可以被濫用。
  • Open Processes (Write Process Memory)
    • 在寫入 Process Memory 前,一定要先對目標 Process 有存取權限並且取得 Process Object 的 handle。
    • Kernel 提供的 callbacks 中有 ObRegisterCallbacks 可以註冊 callback,在 Process/Thread/Desktop Object 被 reference 時會觸發
  • Create Thread
    • 這邊指的是真正的Create Thread,也就是生成第一條 Thread 加入 Process 的結構中。Kernel 提供的 callbacks 中有 PsSetCreateProcessNotifyRoutine 可以註冊 callback。
  • Syscall Hooking
    • 如果還能有效搭配 system call hooking,那麼對於整個惡意程式的執行流程會有更好的能見度
  • ETW
    • Windows 內建了一套 Event 機制,ETW 和 Windows 的各個元件有密切的整合,因此能見度甚至能超越 Syscall Hooking,但是會需要使用者進行設定

Analysis

其實這5種攻擊手法都是我在過去就有看過並實驗過了,但是再次複習並分析程式碼的細節後,我覺得可以將他們拆成這幾種階段:

  • Pre-CreateProces
    • 在 Process 形成前,攻擊者可以布置一些將來要執行的環境,像是 Memory 或 File
    • 在這個階段, LoadImageNotifyRoutine 會是主要的偵測手法。
  • CreateProcess
    • CreateProcess 會只侷限在建立 Process 的 Syscall 本身,像是 NtCreateUserProcess 或 NtCreateProcessEx。
    • 如果是使用 NtCreateUserProcess 的話,會觸發 CreateProcessNotifyRoutine ,因此攻擊者在這使用 NtCreateUserProcess 的狀況下,會在這階段之後才修改 process 的內容
  • Pre-Execute
    • 在 Process 建立後和 Execute 前,攻擊者可以利用布置好的環境將 Process 設定成符合攻擊者目的的樣態。
    • 在這個階段, ObRegisterCallbacks 有機會被觸發,因為攻擊者可能會對建立好的 process 進行修改。
    • 如果在這邊就已經偽裝完畢,那麼下個階段觸發的 CreateProcessNotifyRoutine 會抓到的是攻擊者布置的偽裝。
  • Execute
    • Execute 會只侷限在執行第一條 Thread 的 Syscall 本身,像是 NtCreateThreadEx 和 ResumeThread
  • Post-Execute
    • 在 Execute 後,攻擊者還可以將攻擊痕跡抹除,很有可能會有一小段的 Time Window 可以做這件事,尤其是當端點防護產品的策略是非同步的狀態下(從 detected 到 terminated 的時間差),就有可能成功

https://ithelp.ithome.com.tw/upload/images/20230925/20120098Vt527X8Csj.png

最後,透過分析這些攻擊手法和發想可能的偵測方式,可以讓我們更清楚知道如何使用 Windows 提共的偵測方式,並且能避開一些潛在被攻擊的風險,使用者也有所依據可以判斷自己使用的防護產品是否足夠安全。

下一篇,我要介紹的是 Dark LoadLibrary,一個 Reflective Loader 的改良版!

References


上一篇
[Day11] Process Injection Party (Part 5): Process Ghosting
下一篇
[Day13] Dark LoadLibrary
系列文
Windows Security 10130
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言