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