Windows安全機制---地址隨機化:ASLR機制
阿新 • • 發佈:2018-12-15
Windows安全機制
微軟關於記憶體保護機制
- GS編譯技術
- SEH的安全校驗機制
- Heap Cookie,Safe Unlinking等一系列堆安全機制
- DEP資料執行保護
- ASLR載入地址隨機
- SEHOP SEH的覆蓋保護
地址隨機化:ASLR機制
原理
地址隨機化需要程式自身和作業系統的雙重支援,會在PE頭中設定IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE標識來說明支援ASLR。 編譯器可以在這裡設定,其中地址隨機化包含了映像隨機化,堆疊隨機化,PEB與TEB隨機化
映像隨機化
在PE檔案對映到記憶體時,對載入虛擬地址進行隨機化處理,系統重啟這個地址是變化的。 出於相容性考慮,這個選項也可以通過登錄檔關閉 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\MoveImages 當為-1時,強制隨機化
堆疊隨機化
堆疊的基址是開啟程式的時候確定的,同一個程式任意兩次執行時的堆疊基址是不同的。
PEB與TEB隨機化
微軟在xp sp2之後不再使用固定的PEB基址0x7FFDF000和TEB基址0x7FFDE00
mov eax,FS:[0x18]
mov teb,eax
mov eax,dword ptr[eax+0x30]
mov peb,eax
這樣也可以快速確定TEB和PEB的地址
繞過
對於映像隨機化,雖然模組的載入地址變了,但低2個位元組不變。 對於ASLR堆疊隨機化,可以使用JMP esp和heap spray等繞過限制 對於PEB和TEB的隨機化,也是可以通過FS的偏移來定位的