攻击者利用软件漏洞劫持程序的执行流向,将其导向恶意代码shellcode或组成恶意代码指令处并执行,最终达到控制整个系统行为的目的,这种恶意攻击方式称为控制流攻击.通过对控制流攻击原理的研究,提出了基于返回地址签名的控制流攻击检测方法.该方法首先在处理器执行程序调用指令call时,触发伪随机数发生器生成密钥K与压栈返回地址进行异或操作,利用MD5算法为异或后的压栈返回地址生成压栈签名值;然后在执行程序返回指令ret及返回地址弹出堆栈时,使用密钥K与出栈返回地址进行异或操作,异或后的出栈返回地址作为MD5算法的输入,生成出栈签名值;最后根据压栈签名值与出栈签名值是否匹配检测控制流攻击.实验结果显示:返回地址签名值具有良好的随机性且攻击者可用的控制流指令平均减少率达到81.27％,可以有效地检测因返回地址被恶意篡改而引起的控制流攻击.
控制流攻击 返回地址 签名值 MD5算法