基于ARMv8架构ROP自动构造框架
2017-08-12赵利军
赵利军 彭 城
(徐州工程兵学院作战实验中心 江苏 徐州 221000)
基于ARMv8架构ROP自动构造框架
赵利军 彭 城
(徐州工程兵学院作战实验中心 江苏 徐州 221000)
为了在ARM公司最新发布的首款支持64位处理器的ARMv8架构上实现ROP(Return_Oriented Programmig)技术,提高ROP攻击效力,设计了ARMv8架构上的ROP 自动构造工具。首先对已有的ARM架构下gadget搜索工具进行扩展,使之支持ARMv8架构下可用指令序列的搜索,并把这些指令序列存储在gadget库中,其次采用优化策略对gadget库进行优化。然后利用语义等价性找出与shellcode语义相同的gadget链,并利用寄存器连通性解决语义断层和寄存器冲突等问题。最后完成gadget的自动串联形成具有特定行为的ROP链。通过利用ROP自动构造工具对网站”exploit.db”中大量的shellcode进行自动构造,证明了工具具有良好的攻击效力,增强了ROP攻击的实用性。
ROP 指令序列 ARMv8 寄存器连通性 语义断层 寄存器冲突
0 引 言
数据执行保护和签名等技术有效地阻止了代码注入式攻击。2005年Krahmer等提出了一种借用代码攻击方法,该方法不再需要向内存中注入恶意代码,而是利用代码段中的代码实现攻击。return-into-libc[1]技术是一种典型的借用代码攻击,通过劫持控制流,跳转到C语言函数库libc,复用libc中已有的函数。但是return-into-libc攻击只能顺序调用函数,不能实现图灵完备的行为,如分支操作、循环操作等。
为了弥补return-into-libc攻击的局限性, 2007年Shacham[2]第一次提出了X86平台上的返回导向编程技术ROP。返回导向编程攻击的方式不再局限于将漏洞程序的控制流跳转到库函数中,而是利用库函数或可执行文件的指令代码片段实现攻击,将复用的代码粒度从return-to-libc的函数级别缩小到指令序列。……
