這篇會介紹這個系列的文章所專注要說明的範圍,以及學習 Windows Kernel 的重要性,還有在讀完所有文章後預期大家會學到的知識與技能。
在 Windows 中,Ring3 是應用層,Ring0 是 Kernel 層,Ring1、Ring2 大部分都處於保留的狀態。
其實在 Ring0 之下還有 VM 層的 Ring -1 與最近比較新的研究提出在硬體層的 Ring -2,不過這個系列的文章還是會專注說明 Ring3 與 Ring0 的部分。
一般使用者在操作應用程式(Process)、檔案(File)、登錄碼(Registry)、網路(Network),在作業系統提供的桌面上執行程式、開啟檔案、上網等等,都是從 Ring3 操作。而在 Ring0 也有各種類型的驅動程式運行著,它們除了可以控制 Ring0 的記憶體之外,Ring3 的各種操作也做得到。因此如果驅動程式有漏洞,造成的後果也十分嚴重。
這個系列的文章主要針對上圖左下角的 WDM(Windows Driver Model)類型的驅動程式。因為這個類型的驅動程式在市面上目前佔多數,以學習 Kernel 層安全來說我認為也是比較容易入手的。
這個系列的文章將圍繞 Windows Kernel 的漏洞及其利用,從最基礎的開發與除錯環境建置和工具使用到找漏洞並且寫攻擊腳本。
以下是這個系列的目錄,所有文章與講解的程式都會備份在我的專案 zeze-zeze/2023iThome。有任何問題、發現錯字(typo)、程式有誤,或是任何建議都可以在留言區提出,也可以在 GitHub 發 Issue 或是發 PR 成為 Contributor,我有看到且有空就會回覆。另外如果覺得我寫得不錯也請多多 Like 我的文章和幫我的 GitHub 專案按 Star,我看到了會很開心:D
文章的內容主要來自網路上蒐集的專案、部落格、研討會簡報等等,還有我自己找到的漏洞與寫成的攻擊腳本。所有文章皆是以教育為目的,希望大家可以透過這些文章更容易理解系統底層的知識,切勿應用於違法行為。