情报背景
DRIDEX是自2014年起活动至今的著名恶意银行木马家族,通常以OFFICE文档的方式进行文档钓鱼攻击。0xCERT的研究人员将其描述为精于防御规避的信息与凭据窃取恶意软件,利用众多C&C服务器令针对其的网络·封锁无能为力。DRIDEX在其历史行动中曾多次运用高级防御规避技术隐匿其恶意行为,其v4版本是第一个使用AtomBombing进程注入技术的恶意软件。
而本文中将对其近期样本中利用向量化异常处理(VEH)机制混淆其API函数调用的手法进行分析研判,该手法对于动态静态分析均有较好的对抗效果。
组织名称 | Indrik Spider |
关联组织 | Evil Corp |
战术标签 | 防御规避 |
技术标签 | 反调试、向量化异常处理 |
情报来源 | https://www.0ffset.net/reverse-engineering/malware-analysis/dridex-veh-api-obfuscation/ |
01 攻击技术分析
亮点:利用VEH进行API调用混淆
关于向量化异常处理(VEH)
向量化异常处理(VEH)是结构化异常处理(SEH)的扩展,VEH的优先级先于SEH,且不依赖栈结构,而是以双链表的形式保存在堆中。应用程序可通过AddVectoredContinueHandler函数注册异常处理函数来监视和处理程序所有的异常。当程序执行过程中发生异常,该异常处理函数将被首先调用以处理异常。
PVOID AddVectoredContinueHandler(
ULONG First,
PVECTORED_EXCEPTION_HANDLER Handler
);
当异常处理函数捕获到异常时,将会拿到类型为EXCEPTION_POINTERS的参数。其中的ContextRecord成员保存了触发异常时的寄存器上下文,并在异常处理完成后恢复,通过修改EIP/ESP等寄存器便可劫持程序执行流程。
typedef struct _EXCEPTION_POINTERS {
PEXCEPTION_RECORD ExceptionRecord;
PCONTEXT ContextRecord;
} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
插入代码破坏动静态分析
开始的流程比较中规中矩,利用哈希匹配动态解析API地址放入寄存器之后,将函数参数依次推入栈中,之后调用函数。
而DRIDEX独居匠心之处则是未使用call指令直接调用函数,而是使用“int3+retn”的组合完成函数调用。这是一种一箭双雕的反分析手段:通过插入int3断点实现反调试、利用retn指令破坏程序静态函数分析。
正常执行流程下int3指令会触发异常,进入到VEH处理函数中完成最终的跳转。而当程序被动态调试分析时,int3断点异常会被调试器捕获并中断,给程序分析带来阻碍。分析者必须理解DRIDEX的反调试意图,对插入的指令进行恰当的处理,增加了动态分析的成本。
而插入的retn指令则会使ida等反编译工具将retn地址视为函数的结尾,忽略剩余的函数执行流程(如下图,对返回值的检查及后续跳转被反编译器忽略了)。
精巧设计的VEH跳转流程
DRIDEX通过动态解析获取AddVectoredContinueHandler的地址之后,将sub_687D40注册新的VEH异常处理函数。这意味着代码段中被插入的int3指令被执行时,异常将被捕获并交由该函数处理。
该异常处理函数会通过传入的ExceptionRecord的传入参数获取异常类型,若是断点导致的异常则将异常交由下一个异常处理函数。在接下来的异常处理过程中,DRIDEX读取存储于ContextRecord中的eax寄存器值(保存之前被解析的API地址),将其置于栈顶,并将EIP指向int3之后的retn指令。
当寄存器的篡改操作完成后,函数返回EXCEPTION_CONTINUE_EXCUTION,使得程序以被修改的上下文继续执行。当retn执行被执行时,被解析的API函数地址从栈顶弹出并跳转,完成一次隐蔽的API调用过程。
总结
DRIDEX在本次活动中利用向量化异常处理(VEH)对其调用API的行为进行了隐藏,在对抗动静态分析方面起到了较好的效果。但其异常触发与异常处理函数中的流程还较为简单,导致研究者可通过编写patch脚本等方式对函数调用流程进行修改,复原其原始逻辑。
向量化异常处理的利用潜力远不只如此,更加灵活地对其进行利用,可以在不修改程序代码段的前提下对整个程序的执行流程进行篡改,实现更加复杂的反调试反分析技巧。
绿盟科技 M01N Team 战队
绿盟科技M01N战队专注于Red Team、APT等高级攻击技术、战术及威胁研究,涉及Web安全、终端安全、AD安全、云安全等相关领域。通过研判现网攻击技术发展方向,以攻促防,为风险识别及威胁对抗提供决策支撑,全面提升安全防护能力。