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