[发明专利]一种基于多策略指令检测的ROP及变种攻击动态检测方法有效

专利信息
申请号: 201910057386.2 申请日: 2019-01-19
公开(公告)号: CN109766690B 公开(公告)日: 2021-01-08
发明(设计)人: 詹静;张茜;赵勇;韩瑾;夏晓晴 申请(专利权)人: 北京工业大学
主分类号: G06F21/52 分类号: G06F21/52;G06F21/56
代理公司: 北京思海天达知识产权代理有限公司 11203 代理人: 沈波
地址: 100124 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 策略 指令 检测 rop 变种 攻击 动态 方法
【权利要求书】:

1.一种基于多策略指令检测的ROP及变种攻击动态检测方法,其特征在于:该方法基于二进制动态插桩技术拦截指令的方式,从正常及攻击角度综合分析,采用关键指令检测策略、攻击指令片段特征检测策略的两种策略判断方法来实现ROP攻击及变种攻击的检测;其中关键指令检测策略又根据指令地址及指令数量特征分析,包括了关键指令跳转策略和关键指令数量平衡策略;攻击指令片断特征检测策略根据攻击功能及复杂度特征分析,包括攻击指令片段大小判断策略和攻击指令片段连续长度判断策略;

其中,多策略判断逻辑如下:首先,采用关键指令地址跳转策略,能够检测出return-into-libc攻击和能够检测出以call指令结尾的gadget构造的攻击,且能够初步判断以jmp结尾的gadget是否是一个有效的gadget;第二,在关键指令地址跳转策略检测到关键指令跳转正常的情况下执行关键指令数量平衡判断策略,通过判断call_ret平衡条件,即当ret指令数目多于call指令数目时,能够检测出一部分典型ROP攻击;第三,由于上述策略不能检测出call指令数目多于ret指令数目时,可能发生的ROP攻击;因此在采用关键指令数量平衡判断策略未检测到攻击的情况下,继续执行攻击指令片段的大小与连续长度特征判断策略,能够进一步判断是否是典型或者特殊构造的ROP攻击;第四,在关键指令跳转策略检测到jmp指令跳转异常,即检测到jmp指令的跳转地址与源地址间的距离过远的基础上,继续执行指令片段特征检测策略,通过判断当前目标程序执行的以jmp结尾的gadget包含的指令数、判断当前连续执行的以jmp结尾的gadget的个数是否同时满足相应阈值条件,能够进一步判断是否是特殊的JOP攻击;

策略1:关键指令检测策略

策略1.1关键指令跳转策略

(1)检测连续两次:ret跳转的目标地址是否是库函数的地址;

(2)检测call指令跳转的目标地址是否是函数的开始地址;

(3)检测jmp跳转地址与源地址间的距离d是否小于阈值T0;

策略1.2:关键指令数量平衡策略;

Δ=call_number–ret_number

策略2:攻击指令片段特征检测策略;

策略2.1攻击指令片段大小判断策略

策略2.2攻击指令片段连续长度判断策略

通过执行策略1中的策略1.1,能够进行return-into-libc攻击、以call指令结尾的gadget构造的XOP变种攻击的检测;通过执行策略1.1中的(1)能够判断是否发生了return-into-libc攻击;执行策略1.1中的(2)判断能够判断是否发生了以call指令结尾的gadget构造的XOP变种攻击;执行策略1.1中的(3),当dT0时能够判断以jmp结尾的指令序列是否可能是一个有效的gadget,从而判断典型的JOP攻击;

步骤如下:

步骤1:准备阶段:使用二进制动态插桩工具加载目标程序;

步骤2:拦截指令,判断指令类型;

步骤2.1如果是不含ROP攻击特征的指令,执行基于指令的分析模型;

步骤2.2如果是call、ret、jmp指令,则跳转到步骤3,执行关键指令检测策略;

步骤3:执行关键指令检测策略

步骤3.1执行关键指令跳转策略;

关键指令跳转策略包括ret指令跳转地址判断策略、call指令跳转地址判断策略、jmp指令跳转地址判断策略;

指令类型如果是ret指令,则执行ret指令跳转地址判断策略;其中ret指令跳转地址判断策略中,判断ret指令跳转的目标地址是否是libc中关键函数的地址;如果连续两次ret指令的目标地址是libc库中关键函数的地址,认为会发生return-into-libc攻击,跳转到步骤5,警告发生return-into-libc攻击,终止进程;否则跳转到步骤3.2,继续执行执行关键指令数量平衡策略继续判断是否发生ROP攻击;

指令类型如果是call指令,则执行call指令跳转地址判断策略;在call指令跳转地址判断策略中,判断call指令跳转的目标地址是否是函数的开始地址;搜集call指令跳转到的目标地址处的三条指令,并判断这三条指令的指令类型是否与push%rbp;mov%rsp,%rbp;sub$0x8,%rsp三条指令类型匹配,若匹配,认为call指令跳转的目标地址是函数的开始地址,认为未发生攻击,跳转到步骤3.2执行关键指令数量平衡判断策略;否则认为发生了以call结尾的gadget构造攻击,跳转到步骤5,警告发生以call结尾的gadget构造的攻击,终止进程;

如果是Jmp指令,则执行Jmp指令跳转地址判断策略;在Jmp指令的跳转地址判断策略中,判断jmp指令的源地址与jmp跳转的目标地址之间的距离;检测jmp指令的目标跳转地址与jmp指令地址的距离是否不小于阈值T0,如果jmp指令的目标跳转地址与jmp指令的距离小于T0,认为jmp在同一函数中跳转,未发生JOP攻击;若距离不小于T0,认为jmp不在同一函数和程序中跳转,可能发生JOP攻击,跳转到步骤4,继续执行攻击指令片段特征检测策略,进一步判断是否发生攻击了JOP攻击;

步骤3.2:执行关键指令数量平衡策略

设置call_ret变量判断call指令与ret指令是否平衡,在拦截到call指令时,变量加1,拦截到ret指令时变量减1;

正常程序中call指令和ret指令平衡,而在ROP攻击中,利用以ret结尾的指令序列来构造gadget链完成攻击,所以ROP攻击中,call与ret不平衡,call_ret是一个负值;因此在关键指令数量平衡策略中,判断call_ret的值是否小于阈值S1,如果call_retS1,阈值S1设置为0,认为会发生ROP攻击;若Call_ret的值不小于阈值S1且不大于阈值S2时,无法通过关键指令数量平衡策略来检测出可能发生的ROP攻击,所以继续执行步骤4的攻击指令片段特征检测策略,进一步判断是否发生了ROP攻击;

步骤4:执行攻击指令片段特征检测策略

步骤4.1执行攻击指令片段大小判断策略

判断gadget的大小是否小于阈值T1,如果Ins_countT1,认为可能是一个有效的gadget;若指令类型是ret指令,则将以ret结尾的gadget的数目加1,跳转到执行步骤4.2,执行攻击指令片段连续长度判断策略,判断是否发生了ROP攻击;若指令类型是jmp指令,则将以jmp结尾的gadget的数目加1,跳转到执行步骤4.2,执行攻击指令片段连续长度判断策略,判断是否发生了JOP攻击;

步骤4.2执行攻击指令片段连续长度判断策略

如果是ret指令,判断连续以ret结尾的gadget的数目是否大于阈值T2,如果大于阈值T2,认为发生了ROP攻击,跳转到步骤5,警告发生了ROP攻击,终止进程;否则,认为未发生ROP攻击,跳转到步骤2,继续拦截下一条指令;如果是jmp指令,判断连续以jmp结尾的gadget的数目是否大于阈值T3,如果大于阈值T3,认为发生了JOP攻击,跳转到步骤5,警告发生了JOP攻击,终止进程;否则,认为未发生JOP攻击,跳转到步骤2,继续拦截下一条指令;

步骤5:执行程序结束模块,结束检测到的恶意程序的执行,提供检测分析结果。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201910057386.2/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top