Page 278 - 《软件学报》2020年第11期
P. 278
李威威 等:基于硬件分支信息的 ROP 攻击检测方法 3593
的 “ 短 ” 或 “ 违规 ”gadget 、 “ 长 ”gadgets-chain 特征进行 检测 . 设定两 个阈值 :gadget 指令片段最长长度
(maxGadgetLength)以及 ROP gadgets-chain 最短长度(minChainLength).
• Gadget 的“短”特性
如果从上一个检测分支入口到当前分支的指令的长度低于 maxGadgetLength 阈值,则将该指令片段识别为
gadget,即
isGadget=LBR(cur).from_ip−LBR(last).to_ip<maxGadgetLength (1)
其中,LBR(cur)和 LBR(last)分别表示当前检测分支的 LBR 信息和上一次进行检测时保存的 LBR 信息.
• gadget 识别方法
从 LBR 中获取当前分支的 from_ip 信息,和保存的上一次分支 to_ip 信息进行比较,如果满足上述条件,那么
将当前指令片段识别为 gadget;在 gadget 检测后,从 LBR 中获取当前检测分支的 to_ip 信息进行保存(用于下一
次检测).
• Gadget 的“违规”特性
正常情况下,ret 指令会返回到 call 指令的下一条指令处,而 ROP 攻击过程中使用的 gadget 通常会破坏这个
特性.
对于所有的 ret 指令,如果其分支目标的上一条指令不是 call 指令,则将该指令片段识别为 gadget,即
isGadget=Cur_instr(LBR(cur).from_ip)==“RET” && Last_instr(LBR(cur).to_ip))!=“CALL” (2)
其中,Cur_instr(addr)和 Last_instr(addr)分别表示地址 addr 对应的指令和它的上一条指令.
• gadget 识别方法
利用硬件 LBR 中的分支地址(from_ip 和 to_ip)访问应用内存,分别获取当前分支指令信息以及目标地址上
一条指令信息,然后对它们进行动态反汇编来判断指令类型,如果满足上述条件,那么将当前指令片段识别为
gadget.
• gadgets-chain 的“长”特性
当 gadgets-chain 长度超过 minChainLength 阈值时,那么该 gadgets-chain 判定为用于 ROP 攻击的 gadgets-
chain,受保护程序遭受了 ROP 攻击,即
isROPAttack=gadgetsChainLength>minChainLength (3)
• ROP 攻击判定方法
在每次检测到 gadget 时 , 累计连续的 gadgets(gadgets-chain) 长度 gadgetsChainLength, 如果
gadgetsChainLength 大于 minChainLength,那么认为程序遭受了 ROP 攻击.
2.5.2 Gadgets-chain 长度累计优化
gadgetsChainLength 记录连续的 gadget 数目.常规 ROP 攻击中采用的每个 gadget 都具备一定功能,gadgets-
chain 长度统计实际上就是对连续的各种子功能片段进行统计.
然而在深度递归调用返回时,单个 ret 指令片段如果较短,那么就有可能被 MIBChecker 识别成 gadget,那么
重复的递归返回就可能构成超长的 gadgets-chain,导致误报.
本文将这种连续重复使用的 gadget 称为递归 gadget.由于连续重复的 gadget 实际上只能实现单一功能,因
此,MIBChecker 对常规的 gadgets-chain 累计方法进行了优化,在 gadgets-chain 长度统计中仅需要将第一个
gadget 纳入统计,即不对递归 gadget 进行统计,这样既符合我们统计 gadgets-chain 长度的初衷——统计连续的
子功能片段的个数,又可以避免深度递归调用中重复递归返回引起的误报问题.
如果当前 gadget 和上一 gadget 一致,那么将当前 gadget 识别为递归 gadget,即
isRecusiveGadget = isGadget (cur ) & & isGadget (last ) & & ⎫
⎬ (4)
).
LBR (cur from ip = ). _ LBR (last from ip & & LBR (cur ). _to ip = LBR (lastto ip ⎭
). _
_
其中,isGadget(cur)和 isGadget(last)表示当前指令片段和上一指令片段均为 gadget,LBR(cur),LBR(last)和特征 1
描述中具备一样的含义.