失效
一种基于多策略指令检测的ROP及变种攻击动态检测方法
詹静、张茜、赵勇、韩瑾、夏晓晴
北京工业大学
摘要
本发明公开了一种基于多策略指令检测的ROP及变种攻击动态检测方法,该方法基于二进制动态插桩技术拦截指令的方式,采用关键指令检测策略、攻击指令片段特征检测策略的两种策略判断方法来实现ROP攻击及变种攻击的检测。关键指令检测策略又根据指令地址及指令数量特征分析。攻击指令片断特征检测策略根据攻击功能及复杂度特征分析,包括攻击指令片段大小判断策略和攻击指令片段连续长度判断策略。本方法采用多层检测策略,从正常及异常指令特征两个角度、综合指令地址、数量、攻击功能、攻击复杂度等四类特征维度、结合确定性及不确定性两类检测方法综合实现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),当d>T0时能够判断以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_ret<S1,阈值S1设置为0,认为会发生ROP攻击;若Call_ret的值不小于阈值S1且不大于阈值S2时,无法通过关键指令数量平衡策略来检测出可能发生的ROP攻击,所以继续执行步骤4的攻击指令片段特征检测策略,进一步判断是否发生了ROP攻击;步骤4:执行攻击指令片段特征检测策略步骤4.1执行攻击指令片段大小判断策略判断gadget的大小是否小于阈值T1,如果Ins_count<T1,认为可能是一个有效的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:执行程序结束模块,结束检测到的恶意程序的执行,提供检测分析结果。
2.根据权利要求1所述的一种基于多策略指令检测的ROP及变种攻击动态检测方法,其特征在于:针对策略1.1中仅判断ret指令跳转的目标地址范围是否是库函数的开始地址从而导致:当ret目标地址跳转到非库函数地址时无法判断是否发生ROP攻击的问题,采用策略1.2:关键指令数量平衡策略进行ROP攻击的进一步检测;Δ<S1时,通过判断ret指令的数目多于call指令的数目来检测出典型的ROP攻击;Δ>S2时,程序正常,未发生ROP攻击;S1<=Δ<=S2,针对这种情况下,无法准确判断程序是发生了ROP攻击还是程序正常执行发生嵌套调用的问题,采用策略2:攻击指令片段特征检测策略进行ROP攻击的进一步检测;通过判断以ret指令结尾的gadget的大小和连续gadget的数目是否满足阈值条件来进一步检测ROP攻击。
3.根据权利要求1所述的一种基于多策略指令检测的ROP及变种攻击动态检测方法,其特征在于:针对策略1.1中jmp跳转的目标地址与jmp指令地址间的距离:d>T0时只能筛选出可能是有效的以jmp结尾的gadget,但无法确定是否发生JOP攻击的问题,为了更加准确的判断这些gadget是否是一个有效的gadget,从而判断典型的JOP攻击,此时采用策略2:攻击指令片段特征检测策略进行典型JOP攻击的进一步检测;通过判断以jmp指令结尾的gadget的大小和连续gadget的数目是否满足阈值条件来进一步检测出JOP攻击。
4.根据权利要求1所述的一种基于多策略指令检测的ROP及变种攻击动态检测方法,其特征在于:针对ROP攻击及其变种的各个特点,采用基于多策略指令检测的ROP及变种攻击的动态检测方法,能够提高检测ROP攻击及其变种攻击的正确率,降低误报率和漏报率。
5.根据权利要求1所述的一种基于多策略指令检测的ROP及变种攻击动态检测方法,其特征在于:针对return-into-libc攻击ret指令控制流程跳转到库函数、jmp指令控制程序流在不同函数与不同库间跳转、以call结尾的gadget构造的变种攻击中call指令不代表函数开头的特点;针对ROP攻击及其变种攻击中call与ret指令数目不平衡的特点;针对ROP攻击及其变种攻击中,指令片段特征即以关键指令结尾的gadget大小与连续gadget数目的特点,结合二进制动态插桩工具Pin执行关键指令检测策略、攻击指令片段特征检测策略的多策略检测方法防御“X”OP攻击。



