【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 独家翻译,转载请注明出处及作者!】
【编辑推荐】