您的位置首页 >安保产品 >

互联网实时新闻:CallWindowProc被宏病毒利用来执行Shellcode

导读 分享一篇有关互联网,手机方面文章给大家,相信很多小伙伴们还是对互联网,手机这方面还是不太了解,那么小编也在网上收集到了一些关于手机

分享一篇有关互联网,手机方面文章给大家,相信很多小伙伴们还是对互联网,手机这方面还是不太了解,那么小编也在网上收集到了一些关于手机和互联网这方面的相关知识来分享给大家,希望大家看了会喜欢。

  简述

  在反病毒领域,CallWindowProc执行Shellcode的方法早在2009年就有过讨论,近期360QEX引擎团队发现有宏病毒首次使用该方法,传播敲诈者勒索软件。

  常见的宏病毒释放(下载) PE 文件,并执行的方法有:

  数据来源步骤:PE 数据来源网络(downloader),或数据来源自身病毒文档(dropper);

  数据执行步骤:执行 PE 使用的方式 Application.Shell 或者 Wscript.shell 或者 Win32 CreateProcess。

  而最新出现的样本与上述方式方法不同,由宏代码生成内存数据(为shellcode,并非直接的 PE 文件数据),并利用CallWindowProc来执行Shellcode,由Shellcode完成后续操作。

  病毒样本:

  MD5: cec4932779bb9f2a8fde43cbc280f0a9

  SHA256: efd23d613e04d9450a89f43a0cfbbe0f716801998700c2e3f30d89b7194aff81

   样本详细分析

  源文档宏代码被混淆,并填充了垃圾代码,对宏代码进行简化后,如下,

  分析该宏代码,得到的执行步骤有,

  1、 获取窗体控件中预存的字符串数据;

  2、 进行数据解码;

  3、 申请内存空间,将数据以二进制形式复制到此内存空间;

  4、 使用 CallWindowProc 执行 shellcode (二进制数据)。

  步骤 4 a) 使用 CallWindowProc 执行二进制数据

  步骤 4 b) 从Windbg 查看 CallWindowProc 调用

   Shellcode分析

  二进制数据中同时存在32和64位的shellcode,32位的偏移于0x08A6,64位的偏移于0x0240处;

  下面以32位版本为例分析:

  首先,根据CallWindowProc调用shellcode时第二个参数为文档自身路径,Shellcode中打开文档,并在文档中寻找二进制标志串“50 4F 4C 41”,然后对标志后的0x142AC(图中硬编码)个字节进行第一次解码,解码算法是对每个字节先加3然后异或0x0D;

  第一次解码后的数据:

  Base 解码后的数据,从标志可以判断该二进制数据是一个PE:

  接着创建文件并写入解码后的数据,其文件路径为:

  32位下:"%TMP%\gg771.exe"

  64位下:"%TMP%\kt622.exe"

  文件释放完成后,调用API CreateProcessA创建进程:

  释放的PE文件MD5为: cc05867751b1de3cab89c046210faed4。

   安全建议

  鉴于近期宏病毒变种多携带敲诈者病毒通过垃圾邮件传播,更新频繁,360杀毒和安全卫士内置的QEX引擎已对此进行了针对性防御,建议用户开启安全软件的实时防护功能,不随意点击垃圾邮件中的链接和附件,能够降低中招的风险。

  参考:

  1、https://github.com/decalage2/oletools

  2、http://www.freebuf.com/articles/web/11662.html

  3、http://m.2cto.com/kf/200908/40688.html

  4、https://msdn.microsoft.com/en-us/library/windows/desktop/ms633571(v=vs.85).aspx

特别提醒:本网内容转载自其他媒体,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。

标签:

免责声明:本文由用户上传,如有侵权请联系删除!