漏洞緩解技術(shù)

1.Security Cookie

  • 在函數(shù)調(diào)用發(fā)生時,向棧幀內(nèi)壓入一個額外的隨機 DWORD,這個隨機數(shù)被稱做Security Cookie
  • Security Cookie 位于 EBP 之前, 系統(tǒng)還將在.data的內(nèi)存區(qū)域中存放一個 Security Cookie的副本
  • 在函數(shù)返回之前,系統(tǒng)將執(zhí)行一個額外的安全驗證操作,被稱做 Security check
  • 在 Security Check 的過程中,系統(tǒng)將比較棧幀中原先存放的 Security Co okie 和.data 中副本的值,如果兩者不吻合,說明棧幀中的 Security Cookie 已被破壞,即棧中發(fā)生了溢出
  • 當檢測到棧中發(fā)生溢出時,系統(tǒng)將進入異常處理流程,函數(shù)不會被正常返回, ret 指令也不會被執(zhí)行

2.DEP:Data Execution Prevention

溢出攻擊的根源在于現(xiàn)代計算機對數(shù)據(jù)和代碼沒有明確區(qū)分這一先天缺陷,DEP(數(shù)據(jù)執(zhí)行保護, Data Execution Prevention)就是用來彌補計算機對數(shù)據(jù)和代碼混淆這一天然缺陷的。

DEP 的基本原理是將數(shù)據(jù)所在內(nèi)存頁標識為不可執(zhí)行,當程序溢出成功轉(zhuǎn)入 shellcode 時,程序會嘗試在數(shù)據(jù)頁面上執(zhí)行指令,此時 CPU 就會拋出異常,而不是去執(zhí)行惡意指令。

ROP的全稱為Return-oriented Programming,主要思想是在棧緩沖區(qū)溢出的基礎(chǔ)上,利用程序中已有的小片段 (gadgets) 來改變某些寄存器或者變量的值,從而控制程序的執(zhí)行流程。

3.ASLR:地址隨機化

無論是 JMP ESP 等通用跳板指令還是 ROP使用的各指令,我們都要先確定這條指令的入口點。
ASLR( Address Space Layout Randomization)技術(shù)就是通過加載程序的時候不再使用固定的基址加載,從而干擾 shellcode 定位的一種保護機制。
a.映像隨機化
映像隨機化是在 PE 文件映射到內(nèi)存時,對其加載的虛擬地址進行隨機化處理,這個地址是在系統(tǒng)啟動時確定的,系統(tǒng)重啟后這個地址會變化。
b.堆棧隨機化
在程序運行時隨機的選擇堆棧的基址,與映像基址隨機化不同的是堆棧的基址不是在系統(tǒng)啟動的時候確定的,而是在打開程序的時候確定的,也就是說同一個程序任意兩次運行時的堆?;范际遣煌?,進而各變量在內(nèi)存中的位置也就是不確定的。
c.PEB 與 TEB 隨機化
PEB 與 TEB 隨機化在 Windows XP SP2 中就已經(jīng)引入了,微軟在 XP SP2 之后不再使用固定的 PEB 基址 0x7FFDF000 和 TEB 基址 0x7FFDE000,而是使用具有一定隨機性的基址,這就增加了攻擊 PEB 中的函數(shù)指針的難度。

Heap sp ray 本來就是為了應(yīng)對堆空間隨機分配的問題產(chǎn)生的, ASLR 本質(zhì)也是隨機化處理,所以直接使用 Heap spray 繞過 ASLR 也是可能的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容