CallWindowProc被宏病毒利用

2019-05-15 05:04:43 来源: 枣庄信息港

简述

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

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

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

数据履行步骤:执行 PE 使用的方式 ell 或者 ell 或 Win32 CreateProcess。

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

病毒样本:

MD5: cecbb9f2a8fde43cbc280f0a9

SHA256: efd23d613e04d9450a89f43a0cfbbe0fc2e3f30d89b7194aff81

样本详细分析

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

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

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%\e"

64位下:"%TMP%\e"

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

释放的PE文件MD5为: ccb1de3cab89c046210faed4。

安全建议

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

参考:

1、

2、

3、

4、

老是经间期出血怎么办
月经不调常见的特征
月经推迟量大痛经
本文标签: