[发明专利]基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法有效
申请号: | 201710417305.6 | 申请日: | 2017-06-06 |
公开(公告)号: | CN107229862B | 公开(公告)日: | 2019-11-12 |
发明(设计)人: | 刘小垒;张小松;牛伟纳;周旷;户宇宙 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F21/52 | 分类号: | G06F21/52 |
代理公司: | 成都弘毅天承知识产权代理有限公司 51230 | 代理人: | 李春芳 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 溢出 线程 攻击 目标进程 防护 指令 程序加载 恶意代码 防护机制 防护技术 攻击防护 监控目标 模拟目标 有效代码 远程线程 指令流程 进程 传统的 再使用 栈空间 串连 绕过 监控 检测 | ||
1.基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法,其特征在于,包括以下步骤:
步骤1、对目标进程注入远程线程,通过远程线程获得目标进程的指令流;
步骤2、通过目标进程函数的调用特征提取算法将指令流与受信的特征数据库进行比对,获得存在异常调用的指令序列;
步骤3、构建模拟栈并完成指令序列的拼接,然后在模拟栈中压入拼接的指令序列和金丝雀值,再利用函数进行模拟栈的指令调用,在函数进行返回前检测指令调用过程中金丝雀值,获得检测结果;
步骤4、根据检测结果通过远程线程回调控制目标进程的启停,并由检测结果选择地输出模拟栈上ROP攻击代码和溢出点;
所述的步骤1,还包括以下步骤:
步骤1.1、获得目标进程的句柄,用远程进程根据句柄索引出目标进程;
步骤1.2、在远程进程中开辟出一段内存并根据目标进程动态链接库名称长度确定内存区间,在该内存中写入动态链接库的名称;
步骤1.3、使用库加载函数和远程线程创建函数根据动态链接库的名称创建出远程线程;
步骤1.4、关闭目标进程的句柄,再通过远程线程获得目标进程的指令流;
所述的步骤2,其中,对cal l指令和ret指令之间的指令流进行比对。
2.根据权利要求1所述的基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法,其特征在于,所述的步骤1.3,注入远程线程时,结合远程线程创建函数参数使用/STACK开关指明已提交的堆栈大小值,重载向堆栈所提交地址空间的内存数量。
3.根据权利要求1所述的基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法,其特征在于,所述的步骤1.3,注入远程线程时,将递归类函数去除递归特征并将局部对象改为静态局部对象。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710417305.6/1.html,转载请声明来源钻瓜专利网。