情报背景

DRIDEX是自2014年起活动至今的著名恶意银行木马家族,通常以OFFICE文档的方式进行文档钓鱼攻击。0xCERT的研究人员将其描述为精于防御规避的信息与凭据窃取恶意软件,利用众多C&C服务器令针对其的网络·封锁无能为力。DRIDEX在其历史行动中曾多次运用高级防御规避技术隐匿其恶意行为,其v4版本是第一个使用AtomBombing进程注入技术的恶意软件。

学习资料】

而本文中将对其近期样本中利用向量化异常处理(VEH)机制混淆其API函数调用的手法进行分析研判,该手法对于动态静态分析均有较好的对抗效果。

攻击技术分析

亮点:利用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脚本等方式对函数调用流程进行修改,复原其原始逻辑。

向量化异常处理的利用潜力远不只如此,更加灵活地对其进行利用,可以在不修改程序代码段的前提下对整个程序的执行流程进行篡改,实现更加复杂的反调试反分析技巧。

【网络安全】DRIDEX木马巧用VEH混淆API调用流程相关推荐

  1. novaclient的api调用流程与开发

    novaclient的api调用流程与开发 2015年07月05日 19:27:17 qiushanjushi 阅读数:3915 http://blog.csdn.net/tpiperatgod/ar ...

  2. 腾讯(表格OCR)API调用流程

    目录 1.调用费用: 2.调用流程 1)腾讯云账号进行注册 2)开通文字识别服务 2)1)进入文字识别控制台:https://console.cloud.tencent.com/ocr/overvie ...

  3. 阿里云(表格OCR)API调用流程

    目录 1.调用费用 2.调用流程 1)注册阿里云账号 2)开通服务 3)获取accessKeyId.accessKeySecret 4)运行代码(当前输入图片格式为url) 3.本地文件生成URL 1 ...

  4. Glib2基本api调用流程(十五)

    ****************************************************************************** 一.Glib2基本api g_object ...

  5. 【网易云信】推流SDK API 调用流程

    SDK API 提供了C++封装的代码 本质是一个比较古老的c sdk nls_instance : 基于C API 创建了C++ 实例 给 用户 G:\CDN\PUSH\LiveStreaming_ ...

  6. 如何通过API调用来分析恶意软件

    导读 在今年的上一个季度,我们发现有越来越多的恶意软件开始使用各种加密.封装和加壳等保护技术来对恶意代码进行混淆处理,以防止系统或程序对其进行识别.除此之外,这些技术甚至还会让研究人员对其的静态分析变 ...

  7. 通过Hook API调用打造进程监控程序

    *(收藏)http://hi.baidu.com/linuxetc/blog/item/1b91c813b017e4035baf53a7.html Hook(钩子)是Windows消息处理过程中的一个 ...

  8. 跟着Code走,详解Symbian OS API调用过程

    作为一个被Symbian开发折磨过的人,当得知Symbian开源时,忍不住马上跑到developer.symbian.org上瞧一瞧,看看自己具体是怎样被折磨的.看了一段时间之后,想想还是把有些东西记 ...

  9. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

  10. Tensorflow C++ API调用Keras模型实现RGB图像语义分割

    我的实验是基于PSPNet模型实现二维图像的语义分割,下面的代码直接从得到的h5文件开始往下做... 也不知道是自己的检索能力出现了问题还是咋回事,搜遍全网都没有可以直接拿来用的语义分割代码,东拼西凑 ...

最新文章

  1. There is no Citrix MetaFrame server configured on the specified address错误的解决方法
  2. 怎样能做好百度竞价推广?不妨参考下这篇竞价推广的日常工作流程
  3. 在AD中恢复误删除的对象
  4. nginx https http2
  5. ASP.NET MVC 阻止通过URL访问服务器上的静态资源文件
  6. 如何做一个合格的面试官?
  7. 免費玩雲端運算,Amazon Web Service 雲端運算平台攻略 【1】
  8. Prometheus-普罗米修斯:高扩展性的监控和报警系统
  9. 一个老博士的经验顺口溜
  10. 世界末日倒计时 js代码
  11. 后端返回list前端如何处理_前端、后端、全栈是什么?薪资前景如何?
  12. C语言来实现链表创建
  13. 偏振光工业相机_工业相机选择六大参数必看
  14. shell脚本 插队
  15. 计算机科学排名靠前的大学,纽约州计算机科学学院排名前十的大学哪几所?
  16. 微信文章抓取:微信公众号文章抓取常识之临时链接、永久链接
  17. 软件工程作业之甘特图
  18. python中的eval函数
  19. ssm学生宿舍管理系统源码
  20. Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列

热门文章

  1. syn_sent mysql_服务器上出现大量的SYN_RECV或者SYN_SENT状态的TCP连接的问题分析
  2. 速卖通店铺流量下滑什么原因,如何做提升?(测评补单)
  3. 计算机无法正常启动安全模式开启,Win7电脑开机无法正常启动只能进入安全模式怎么解决...
  4. 23位子网掩码是多少_24 28 30 位的子网掩码是多少
  5. centos7 文件系统修复
  6. 精神小伙儿探秘JVM( 六)
  7. WPS Excel+windows批处理批量重排序文件夹
  8. 计算机无法连接steam,无法连接至steam网络怎么办 无法连接至steam网络解决方法【图文】...
  9. 内置平头哥玄铁的WiFi和蓝牙芯片
  10. w7忘记计算机密码,忘记电脑开机密码怎么办windows7_win7电脑忘记开机密码解决方法...