新攻擊技術(shù)讓DEP形同虛設(shè)
【51CTO.com 獨(dú)家翻譯】一位名叫“JDuck”的黑客發(fā)現(xiàn)了首個(gè)惡意PDF文件,它使用了相對(duì)較新的返回導(dǎo)向編程(Return Oriented Programming,ROP)技術(shù)繞過(guò)數(shù)據(jù)執(zhí)行保護(hù)(Data Execution Prevention,DEP),這意味著通過(guò)DEP提供保護(hù)的氣數(shù)已盡,即使之前該技術(shù)甚至一度成為主流的安全技術(shù)。
最初,JDuck只是想將PDF利用程序集成到他的metasploit漏洞測(cè)試平臺(tái)中,但在此過(guò)程中,他發(fā)現(xiàn)即使Adobe Reader 9.3默認(rèn)開(kāi)啟了DEP保護(hù),該利用程序仍然可以完美地工作。通過(guò)進(jìn)一步檢查后發(fā)現(xiàn),該利用程序包含一個(gè)內(nèi)存地址列表,每一個(gè)地址都指向函數(shù)的末尾,也就是說(shuō),在一些機(jī)器代碼指令后跟著一個(gè)返回命令,這是一個(gè)相當(dāng)狡猾的新攻擊手段,至今尚未對(duì)外公開(kāi)。
利用程序通常包含注入隨機(jī)代碼充當(dāng)有效負(fù)載并操縱內(nèi)存,普通程序訪問(wèn)到的就是這些注入代碼。作為一種保護(hù)措施,現(xiàn)代操作系統(tǒng)都為數(shù)據(jù)存儲(chǔ)區(qū)域設(shè)置了訪問(wèn)權(quán)限,讓該區(qū)域只能讀不可執(zhí)行,在Windows中,這中保護(hù)技術(shù)就叫做數(shù)據(jù)執(zhí)行保護(hù)(DEP)。
傳統(tǒng)的繞過(guò)DEP的方法叫做返回到libc(return-to-libc),它不需要專(zhuān)門(mén)的代碼,使用已加載的系統(tǒng)功能觸發(fā)諸如程序啟動(dòng)的行為,但要求堆棧是通過(guò)巧妙的方式構(gòu)造的,例如,程序中的返回調(diào)用跳到exec函數(shù),exec函數(shù)然后找到堆棧上的參數(shù),讓它執(zhí)行一個(gè)程序,如notepad.exe。
2007年,Hovav Shacham就提出了這種概念,包括從內(nèi)存中已有的代碼片段組裝成攻擊程序,每個(gè)代碼片段后都跟有一個(gè)返回命令。在一篇論文中(http://cseweb.ucsd.edu/~hovav/papers/s07.html),作者解釋這種編程技術(shù)是在圖靈機(jī)環(huán)境下完成的,這意味著它允許執(zhí)行任意程序。原則上,可以通過(guò)特殊的ROP編譯器收集需要的代碼片段。2009年,研究人員證明,即使符合哈弗體系結(jié)構(gòu)的投票機(jī)也會(huì)被攻破。在今年的RSA大會(huì)上,Dino Dai Zovi做了一個(gè)關(guān)于“具有實(shí)用價(jià)值的返回導(dǎo)向編程”的演講。
迄今為止,大多數(shù)惡意文件都試圖利用程序漏洞安裝被DEP阻止的惡意軟件,這個(gè)新的攻擊技術(shù)出現(xiàn)在惡意文件中并不是一個(gè)好兆頭,它讓DEP不再有效。DEP目前僅在64位系統(tǒng)中是開(kāi)啟的,它為Intel架構(gòu)引入了“不執(zhí)行”位,在32位系統(tǒng)上也得到了廣泛使用,每個(gè)程序都允許決定是否要受DEP保護(hù)而運(yùn)行,這也包括64位硬件上的32位Windows版本。
原文名:Exploit's new technology trick dodges memory protection 作者:crve
【51CTO.COM 獨(dú)家翻譯,轉(zhuǎn)載請(qǐng)注明出處及作者!】
【編輯推薦】