您的位置:首頁 > 菜鳥學(xué)院 > Win10安全特性之執(zhí)行流保護(hù)

Win10安全特性之執(zhí)行流保護(hù)

來源:互聯(lián)網(wǎng) | 時(shí)間:2015-02-12 15:09:01 | 閱讀:119 |    | 分享到:

0x00 背景


微軟在2015年1月22日公布了windows10技術(shù)預(yù)覽版,Build號:9926。電腦管家反病毒實(shí)驗(yàn)室第一時(shí)間對其引入的新安全特性進(jìn)行了深入分析。

眾所周知,漏洞利用過程中攻擊者若要執(zhí)行惡意代碼,需要破壞程序原有指令的的正常執(zhí)行。執(zhí)行流保護(hù)的作用就是在程序執(zhí)行的過程中檢測指令流的正常性,當(dāng)發(fā)生不符合預(yù)期的情況時(shí),及時(shí)進(jìn)行異常處理。業(yè)界針對執(zhí)行流保護(hù)已經(jīng)有一些相對成熟的技術(shù)方案,在微軟發(fā)布的windows10最新版本中,我們看到了這一防護(hù)思想的廣泛使用。

0x01 CFI


CFI即控制流完整性Control-Flow Integrity,主要是通過對二進(jìn)制可執(zhí)行文件的動態(tài)改寫,以此為其增加額外的安全性保障。


Win10安全特性之執(zhí)行流保護(hù)

這是Mihai Budiu介紹CFI技術(shù)時(shí)使用的例子。這里通過對二進(jìn)制可執(zhí)行文件的改寫,對jmp的目的地址前插入一個(gè)在改寫時(shí)約定好的校驗(yàn)ID,在jmp的時(shí)候看目的地址前的數(shù)據(jù)是不是我們約定好的校驗(yàn)ID,如果不是則進(jìn)入錯(cuò)誤處理流程。

同理在call 和 ret的時(shí)候也可以進(jìn)行改寫:

Win10安全特性之執(zhí)行流保護(hù)

左半部分就是一個(gè)對call的改寫,右半部分是對ret的一個(gè)改寫,在call的目的地址和ret的返回地址之前插入校驗(yàn)ID,然后改寫的call 和ret中增加了對校驗(yàn)ID的檢查,如果不符合預(yù)期,進(jìn)入錯(cuò)誤處理流程,這個(gè)思路和上邊對jmp的處理是完全一樣的。

0x02 CFG


實(shí)現(xiàn)CFI需要在jmp、call 一個(gè)寄存器(或者使用寄存器間接尋址)的時(shí)候,目的地址有時(shí)必須通過動態(tài)獲得,且改寫的開銷又很大,這些都給CFI的實(shí)際應(yīng)用造成了一定的困難。

微軟在最新的操作系統(tǒng)win10當(dāng)中,對基于執(zhí)行流防護(hù)的實(shí)際應(yīng)用中采用了CFG技術(shù)。CFG是Control Flow Guard的縮寫,就是控制流保護(hù),它是一種編譯器和操作系統(tǒng)相結(jié)合的防護(hù)手段,目的在于防止不可信的間接調(diào)用。

漏洞攻擊過程中,常見的利用手法是通過溢出覆蓋或者直接篡改某個(gè)寄存器的值,篡改間接調(diào)用的地址,進(jìn)而控制了程序的執(zhí)行流程。CFG通過在編譯和鏈接期間,記錄下所有的間接調(diào)用信息,并把他們記錄在最終的可執(zhí)行文件中,并且在所有的間接調(diào)用之前插入額外的校驗(yàn),當(dāng)間接調(diào)用的地址被篡改時(shí),會觸發(fā)一個(gè)異常,操作系統(tǒng)介入處理。

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)