资讯
主页 > 技术文章> 正文

警惕CHM格式传播木马

发表时间:2016-11-29

警惕CHM格式传播木马

发布时间:2016-11-29来源:哈勃分析系统作者:电脑管家哈勃分析系统

近日,哈勃分析系统捕获到一类以CHM文件方式传播的木马。尽管以CHM方式传播的木马并非一种新的技术手段,但是基于CHM的木马有着技术门槛低,制作简单,以及传播便利的优点,仍然被很多不法分子所使用。

近日,哈勃分析系统捕获到一类以CHM文件方式传播的木马。尽管以CHM方式传播的木马并非一种新的技术手段,但是基于CHM的木马有着技术门槛低,制作简单,以及传播便利的优点,仍然被很多不法分子所使用。

 

木马技术

CHM文件全名为编译的HTML帮助文件(Microsoft Compiled HTML Help),是微软提供的一种帮助文件格式。它将HTML文件,图片,音频等文件编译到一个文件中,对于导航和索引的良好支持使之常被用于帮助文件以及电子书的载体。Windows操作系统内置的Html Help Workshop提供了制作与编译CHM文件的工具集合。

CHM文件支持与javascript,vbs,ActiveX等其他语言组件之间的交互,同时,由于CHM文件在默认情况下是使用Windows内置的hh.exe打开,此程序并没有浏览器那样级别的安全保护和沙盒限制措施,导致CHM文件中内置的脚本有可能对操作系统进行直接的操作。

此前,ithurricanept曾在2014年11月的一篇twitter中展示了如何通过CHM文件弹出计算器,弹出的同时没有UAC告警和杀软报毒。其中的一些技术细节可以稍加展开。

首先,对于一个CHM文件,可以通过前面提到的hh.exe工具进行反编译,反编译命令为:

hh.exe -decompile sample-decompile sample.chm

其中sample.chm为需要反编译的chm文件,sample-decompile为反编译后的文件目录。而木马的恶意代码,通常位于反编译后目录中的htm格式的文件中。示例:

<OBJECT id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1>

<PARAM name="Command" value="ShortCut">

<PARAM name="Button" value="Bitmap::shortcut">

<PARAM name="Item1" value=',calc.exe'>

<PARAM name="Item2" value="273,1,1">

</OBJECT>

<SCRIPT>

x.Click();

</SCRIPT>

其中<OBJECT>标签内嵌了一个HTML对象,该对象由hhctrl.ocx提供支持,作用是实现CHM与包括javascript在内的一些脚本交互。上述HTML代码中存在id为x的Button对象,通过在name字段为Item1的<PARAM>定义了Button点击的行为,value字段的值为点击Button后会执行的命令行。

利用Button参数中的命令行可以直接执行程序,也可以通过Powershell中转执行,还可以通过rundll32.exe加mshtml.dll的组合,执行另一段javascript代码。

 

案例分析

无独有偶,近日哈勃分析系统也捕获到一类CHM木马,使用的手法与前面分析的技术极为类似。

打开CHM文件后的内容如下,该文件语言为越南文,表面看上去是正常的介绍寨卡病毒预防知识的一份文档。

通过前文的反编译功能,可以得到样本反编译后的文件目录如下:

可以看到样本反编译后的文件夹中存在包括HTML文件在内的很多文件,打开其中的HTML文件,发现page_1.html存在可疑的恶意代码。具体而言,其中定义了id分别为a、b、c的三个上文所述的Button对象,然后在<SCRIPT>标签中定义了javascript行为,其内容是加密的:

对此代码的解密可在任意浏览器console界面中通过console.log进行,解密后的内容如下:

从代码中可以看出,当该CHM样本被双击打开后,会依次执行a,b,c三个Button的点击行为。分析这三个Button的Item1参数所定义的命令行,均是利用rundll32调用mshtml.dll的导出函数RunHTMLApplication,通过该导出函数对javascript恶意代码进行解释执行。此种调用方式可以逃避部分杀软的检测。

三个Button最终执行的行为内容如下:

Button a

在系统临时目录下寻找大小为12288byte大小的文件,找到该文件后将该文件复制到系统的APPDATA目录下的hhh.dat文件,同时将文件属性设置为系统隐藏文件。这个大小固定的文件是什么文件呢?

复查前面得到的样本反编译目录,可以看到其中有一个Thu.mp3文件,大小正好是12288byte。同时,在page_1.html的脚本之前,还可以发现这样一段代码:

这下就明白了,木马先将恶意文件伪装成mp3文件,在网页上以背景音乐的方式要求系统进行缓存,然后在临时目录中找到该缓存文件,进行接下来的复制操作。

Button b

修改注册表,添加一个开机自启动项,内容为使用csrsss.exe文件调用hhh.dat文件中的MSOProtect导出函数。

Button c

将rundll32.exe复制并改名为csrsss.exe文件。

综合以上三个按钮的功能,可以看到其组合之后代表的意义为,开机时使用rundll32调用Thu.mp3(即Thu.dll)中的MSOProtect导出函数。

继续分析Thu.dll,发现MSOProtect函数只有一行命令:

其实是在等待DllMain的结束。DllMain的流程如下:

是一个典型的Downloader。遗憾的是,在分析木马的时候,下载链接已经失效,找不到该服务器的进一步的信息。

 

总结

本文详细分析了一个典型的以CHM文件为载体的木马的行为。尽管CHM作为木马载体已经不是一个新颖的手段,不过由于CHM木马技术门槛低制作简单,并且可以通过javascript脚本和巧妙的设计Button行为来逃避杀软的检测,所以以CHM为载体的木马样本仍然是需要持续关注的方向。

资讯排行