Windows XP SP2針對緩衝區溢出攻擊引入多項底層防護,使傳統利用全域指標、結構化例外處理(SEH)的漏洞利用代碼(Exploit)難以穩定運作。本文深入解析四大核心機制:
進程環境塊(PEB)映射起始位址經隨機化處理。雖隨機熵值較低,但已足以讓依賴固定PEB位址的Exploit失效或不穩定。流程涉及_NtCreateProcessEx→_PspCreateProcess→MmCreatePeb→MiCreatePebOrTeb,最終由MmMapViewOfSection映射隨機基址。
線程環境塊(TEB)頂層的預設例外處理器(Top-level SEH)受到保護,防止攻擊者覆寫SEH鏈指向Shellcode。任何嘗試覆寫將導致進程終止。
向量化例外處理(VEH)鏈表頭指標_RtlpCalloutEntryList加入完整性校驗,阻止惡意註冊VEH處理器劫持控制流。
堆分配器在關鍵結構(如_HEAP_ENTRY)插入隨機Cookie,釋放時驗證。偽造堆塊或覆寫元數據將觸發檢查失敗,終止進程。
PAGE:004B43E5 lea eax, [ebx+1B0h] ; EPROCESS+1B0h = PEB指標位置
PAGE:004B43F1 call MmCreatePeb@12
; MmCreatePeb內部調用 MiCreatePebOrTeb
; 最終透過 MmMapViewOfSection 映射隨機基址的Section物件
此機制雖非完整ASLR(僅針對PEB),但顯著提升了漏洞利用難度,迫使攻擊者尋找資訊洩漏漏洞配合繞過。
理解這些防護原理,有助於開發人員編寫更安全的代碼,也為安全研究人員評估漏洞利用可行性提供基準。