当前位置:主页 > 管理论文 > 移动网络论文 >

GDL:一种通用型代码重用攻击gadget描述语言

发布时间:2021-09-29 13:10
  由于代码重用攻击的方式方法多样,相应的gadget在结构上也不尽相同,目前尚没有一种通用的方法能够用来描述多种代码重用攻击下的gadget。结合几种常见代码重用攻击的攻击模型和图灵机模型,文中提出了一种代码重用攻击的通用模型,为了能够对代码重用攻击中的gadget进行结构化的描述,设计了一种用于代码重用攻击的gadget描述语言(Gadget Description Language,GDL)。首先,介绍了代码重用攻击的发展历程,总结了代码重用攻击的攻击模型和gadget特征;然后,以此为基础设计了GDL,给出了GDL中的关键字和各种约束类型的语法规范;最后,在ply和BARF等开源项目的基础上,实现了基于GDL的gadget搜索原型系统GDLgadget,并描述了GDLgadget的执行流程,通过实验验证了GDLgadget的可用性。 

【文章来源】:计算机科学. 2020,47(06)北大核心CSCD

【文章页数】:10 页

【部分图文】:

GDL:一种通用型代码重用攻击gadget描述语言


ROP攻击模型

模型图,模型,函数,功能


在JOP攻击模型(见图2)中,gadget链的顺序执行依赖于一种名为调度gadget的特殊gadget。在JOP中,功能gadget不再是以ret指令结尾,因此不能通过栈布局和ret指令结合的方式链接gadget,渗透测试人员通过引入调度gad-get作为跳板,使得功能gadget能够按照指定的顺序执行。在此过程中,调度gadget需要从渗透测试人员可控的目标区域加载地址,功能gadget需要在结束时让程序执行流再次转移到调度gadget中。在LOP攻击模型(见图3)中,gadget链的顺序执行依赖于一种名为循环gadget的特殊gadget。在LOP中,功能gadget是一个完整的函数,函数在返回后会跳转到函数调用指令的下一条指令,渗透测试人员通过引入循环gadget,使得功能gadget能够按照指定的顺序执行。为了保证LOP的顺利执行,循环gadget需要包含一个循环结构,该循环结构能循环加载函数地址并调用函数。

模型图,模型,函数,虚函数


在LOP攻击模型(见图3)中,gadget链的顺序执行依赖于一种名为循环gadget的特殊gadget。在LOP中,功能gadget是一个完整的函数,函数在返回后会跳转到函数调用指令的下一条指令,渗透测试人员通过引入循环gadget,使得功能gadget能够按照指定的顺序执行。为了保证LOP的顺利执行,循环gadget需要包含一个循环结构,该循环结构能循环加载函数地址并调用函数。在COOP攻击模型(见图4)中,修改C++对象中的成员数据能够实现特定虚函数的调用,整个攻击则是通过修改多个C++对象中的成员数据来实现的,其主要过程是利用C++程序中的Main-loop gadget。Main-loop gadget在程序中原本的功能就是循环调用多个对象的某一虚函数,渗透测试人员通过篡改这些对象实现gadget链的顺序执行。这种攻击方法本质上与JOP和LOP并无不同,但使用了C++的语言特性,因此更加隐蔽和难以利用。


本文编号:3413764

资料下载
论文发表

本文链接:https://www.wllwen.com/guanlilunwen/ydhl/3413764.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户3ff04***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com