成人在线你懂的-成人在线免费小视频-成人在线免费网站-成人在线免费视频观看-日韩精品国产一区二区-日韩精品国产一区

掃一掃
關(guān)注微信公眾號(hào)

關(guān)于vista-內(nèi)存安全保護(hù)漫談之safeseh
2007-10-31   網(wǎng)絡(luò)

最近開始折騰VISTA,上個(gè)月在SST的BIOS沙龍SP2上講過一點(diǎn)自己研究的心得加上收集到的一點(diǎn)資料混合起來的東西。會(huì)后幾個(gè)朋友要資料,說實(shí)話,第一是vista在內(nèi)存安全保護(hù)方面的改進(jìn)是比較大的,涉及面比較廣,而VISTA的研究也是才剛剛開始,關(guān)于vista的研究資料也是非常的少,每個(gè)改進(jìn)都需要自己慢慢的去分析對(duì)比和研究.第二就是vista的安全越來越需要安全環(huán)境特別是編譯器方面的配合,vista本身的庫(kù)代碼幾乎全部是用.net編譯器編譯的,我使用的.net 2003也缺乏一些vista下支持的安全特性(估計(jì)MS有新的針對(duì)vista的開發(fā)環(huán)境),而且以前對(duì).net的研究幾乎沒有,現(xiàn)在才開始找些.net的書來補(bǔ)習(xí)。第三就是目前我的工作也比較繁雜,研究vista的安全保護(hù)機(jī)制只是因?yàn)槟骋豁?xiàng)工作的需要,并非是這項(xiàng)工作的主題,而我這個(gè)人又比較懶散,覺得只是分析機(jī)制,缺乏新創(chuàng)意的東西懶得動(dòng)筆寫。
但是現(xiàn)在覺得好久沒有寫點(diǎn)東西出來了,又答應(yīng)過一些朋友要發(fā)布的,想想還是慢慢湊一些東西出來吧,只是關(guān)于VISTA的研究是長(zhǎng)期的工作,靠一人之力只能有一點(diǎn)研究就寫一點(diǎn)吧。所以學(xué)當(dāng)年小四的學(xué)習(xí)筆記形式寫寫,因?yàn)楫?dāng)然其中錯(cuò)誤與偏漏之處難免,只能姑稱之漫談。


1.什么是safeseh
以前堆棧溢出在的WINDOWS系統(tǒng)中一直都是安全問題的核心,其中覆蓋seh的技術(shù)早為人熟知。safeseh是一項(xiàng)保護(hù)和檢測(cè)和防止堆棧中的seh被覆蓋而導(dǎo)致利用的技術(shù)

2.safeseh是vista的新技術(shù)嗎?
safeseh并不是vista的新技術(shù),safeseh是xp sp2就已經(jīng)引入的技術(shù)。但是由于safeseh需要.net的編譯器編譯的image才支持,而xp sp2系統(tǒng)自身所帶的庫(kù)和執(zhí)行程序都是非.net的編譯器編譯的,所以使得safeseh在xp sp2上只能成為聾子的耳朵,xp sp2下,堆棧溢出只要覆蓋seh的地址就能輕松饒過所有的保護(hù)機(jī)制。因此在xp sp2時(shí)代,關(guān)于safeseh的研究從來不被重視,甚至對(duì)他的機(jī)理研究都存在很多錯(cuò)誤,認(rèn)為safeseh只是屏蔽了數(shù)據(jù)段的地址,只要是庫(kù)函數(shù)空間地址就是被許可的,一些safeseh的操作被誤解讀成函數(shù)地址保護(hù)的操作。

3.為什么vista下safeseh才開始發(fā)威
vista自身帶的系統(tǒng)庫(kù)。程序99%以上是用.net的編譯器編譯的,.net的編譯器默認(rèn)編譯時(shí)候就會(huì)在IMAGE里產(chǎn)生對(duì)safeseh的支持。因此vista下的應(yīng)用加載的系統(tǒng)庫(kù)幾乎全是帶有safeseh支持的IMAGE,堆棧溢出發(fā)生時(shí)覆蓋這些支持safeseh模塊的SEH都能被檢查出來,使得覆蓋堆棧中的SEH地址的技術(shù)不再可用。

4.safeseh的實(shí)現(xiàn)過程
safeseh本身的原理很簡(jiǎn)單,就是在編譯器生成二進(jìn)制IMAGE的時(shí)候,把所有合法的SEH函數(shù)的地址解析出來,在IMAGE里生成一張合法的SEH函數(shù)表,用于異常處理時(shí)候進(jìn)行嚴(yán)格的匹配檢查。基本過程如下(XP SP2和VISTA一樣):
加載過程:
加載IMAGE時(shí),定位和讀出合法SEH函數(shù)表的地址(如果該IMAGE是不支持safeseh的,則這個(gè)SEH函數(shù)表的地址為0),使用shareuser內(nèi)存中的一個(gè)隨機(jī)數(shù)加密。

將加密的SEH函數(shù)表的加密地址,IMAGE的開始地址,IMAGE的長(zhǎng)度,合法SEH函數(shù)的個(gè)數(shù) 作為一條記錄放入ntdll的加載模塊數(shù)據(jù)內(nèi)存中。
異常處理過程:
* 根據(jù)堆棧中SEH的地址,確認(rèn)是否屬于一個(gè)IMAGE的地址空間。
> 如果屬于
讀取ntdll的加載模塊數(shù)據(jù)內(nèi)存對(duì)應(yīng)的“SEH函數(shù)表的加密地址,IMAGE的開始地址,IMAGE的長(zhǎng)度,合法SEH函數(shù)的個(gè)數(shù)"記錄
讀出shareuser內(nèi)存中的一個(gè)隨機(jī)數(shù),解密SEH函數(shù)表的加密地址,讀出真實(shí)的SEH函數(shù)表地址
* 如果該地址不為0,代表該IMAGE支持safeseh
根據(jù)合法SEH函數(shù)的個(gè)數(shù),依次計(jì)算合法合法SEH函數(shù)的地址并和當(dāng)前SEH地址進(jìn)行比較,如果符合執(zhí)行SEH函數(shù),如果全不符合則不執(zhí)行當(dāng)前SEH指定的地址,跳出不執(zhí)行。
* 如果該地址為0,代表該IMAGE不支持safeseh,
只要該內(nèi)存屬于該IMAGE .code范圍內(nèi)的代碼都可以執(zhí)行
> 如果不屬于
檢測(cè)該地址的內(nèi)存特征。一般屬于內(nèi)核空間的未加載用戶數(shù)據(jù)地址可以執(zhí)行(但是其實(shí)等效于無法執(zhí)行的,這塊不可能加載用戶數(shù)據(jù),可能是MS為了迷惑一些研究者吧,看見代碼能跳轉(zhuǎn)到如0xcccccccc地址上,以為能饒過safeseh.)


5.vista下的safeseh的安全性
safeseh是非常強(qiáng)悍的,如果一個(gè)進(jìn)程加載的所有模塊都是支持safeseh的image,覆蓋seh獲得利用就根本不可能。至少VISTA下99%的系統(tǒng)庫(kù)是支持safeseh的image。而xp sp2 99%的系統(tǒng)庫(kù)是不支持safeseh的image,因此safeseh雖然是xp sp2就開始使用的技術(shù),但應(yīng)該算是在vista下才開始發(fā)揮作用的技術(shù)。
當(dāng)然如果進(jìn)程存在一個(gè)不支持safeseh的IMAGE就等于整個(gè)safeseh的機(jī)制失效,不過由于vista下支持進(jìn)程空間隨機(jī)技術(shù),可以深層抵御這種情況下的seh覆蓋利用。

當(dāng)然一個(gè)思路是:是否可以通過覆蓋shareuser內(nèi)存中的隨機(jī)數(shù)字和ntdll的SEH函數(shù)表的加密地址使得計(jì)算出來的SEH函數(shù)表的地址為0饒過safeseh的保護(hù)。不過這很困難:因?yàn)橐_(dá)到這個(gè)目的除非存在下面的情況:
情況A。知道shareuser內(nèi)存中加密隨機(jī)數(shù),并能修改SEH加密地址,則需要知道ntdll加載的地址(隨每次啟動(dòng)不同),且能通過漏洞獲取shareuser內(nèi)存中加密隨機(jī)數(shù),通過計(jì)算獲得為0的加密地址再寫入到SEH加密地址中
情況B. 知道SEH加密地址的數(shù)值,并能修改shareuser內(nèi)存中加密隨機(jī)數(shù),則需要知道ntdll加載的地址(隨每次啟動(dòng)不同),且能通過漏洞獲取SEH加密地址的數(shù)字,通過計(jì)算獲得為0的加密KEY,再寫入到shareuser內(nèi)存中
情況C. 需要知道ntdll加載的地址,并能夠改寫修改SEH加密地址和shareuser內(nèi)存中加密隨機(jī)數(shù)。
以上3種情況都需要特定的復(fù)合條件,很難具備

6.可能的問題
依然存在著一些可能的問題.
第一就是支持safeseh需要.net的編譯器支持,且程序所有加載的IMAGE都需要支持safeseh,否則容易導(dǎo)致失效,但依然有大量的第三方程序和庫(kù)不是使用.net編譯的
第二就是我使用的.net 2003只對(duì)c++的windows應(yīng)用的默認(rèn)編譯中就支持safeseh安全特性,在.net的應(yīng)用編譯中,對(duì)于運(yùn)行時(shí)生成的托管代碼,即使打開安全選項(xiàng)也不會(huì)支持一些安全特性,不知道.net 2005或者M(jìn)S是否有最新的支持vista的.net出來

熱詞搜索:

上一篇:五大要點(diǎn)制定合適的備份策略保證高效備份3
下一篇:Oracle數(shù)據(jù)庫(kù)的空間使用和管理

分享到: 收藏
主站蜘蛛池模板: 我的冠军男友在线看全集完整| 视频欧美| 黄网站免费观看视频| 世界赋予我的 二声部合唱谱| 正宗辅星水法九星断语| 电影宝贝| 眼皮下垂手术费用多少钱| accesscode在线播放| 柳晋阳| 小镇姑娘高清播放| 电影《一闪一闪亮星星》| 米莎巴顿| 阮经天新电影| 电影壮志凌云女版满天星法版在线看| 山上的小屋免费阅读小说全文 | 岳虹| 伊丽莎白·亨斯屈奇| 吴承轩主演的电视剧| 张国强个人简历| 2024生物中考真题试卷| 美女网站视频免费| 新三国第95集完整版| 电影《正青春》| 一句话让男人主动联系你| 藏地奇兵| 英国经典电影| 挠中国美女丝袜脚心| 男同性恋| 人民的利益电视剧在线观看| nhk| 郭馨钰| 马维| 《重紫》电视剧| 葫撸娃| 谍影 电视剧| 神探狄仁杰1电视剧| 调教 打屁股 鞭打 拍击视频| smc压力表| 探索频道| 啊嗯啊嗯嗯| 93夜之女|