我们今天分析的这份恶意office文档其本身是一个下载器: 2ELJ2E1OPJ0OT.doc
oledump 结果显示该恶意文档中存在VBA宏,但是插件不能够提取URL
现在我们使用我新写的的一份插件:plugin_vba_dco。该插件会搜索声明语句以及调用的创建对象:
在输出的上半部分(1)我们可以看到每一行都包含Declare或者CreateObject关键词,在下半部分(2)包含了调用声明函数或者创建对象。
虽然代码经过了混淆处理(字符串以及变量名),根据插件的输出我们不难猜出Ci8J27hf2可能就是XMLHTTP对象
XMLHTTP对象的open方法需要3个参数:HTTP方法,URL,布尔值(异步或同步调用):
我们可以看到最后一个参数为假,前面两个参数返回IpkfHKQ2Sd函数的值,该函数需要两个参数:两个字符串。第一个字符串连接Chr函数,第二个字符串是一个文字串。由于open方法需要将HTTP方法和URL作为字符串,极有可能IpkfHKQ2Sd函数为解码函数,且需要两个字符串作为输入(对我们来说毫无意义)然后返回一个有意义的字符串。
下面为原始IpkfHKQ2Sd函数:
以下为我对同一函数进行反混淆后的结果,函数名没有更改,但是对于那些无用的代码进行了删减,对变量重命名,最后加上缩进:
从中我们能够看到函数使用一个key (sKey)和XOR操作来来解码一个秘密字符串,同时我们也得知这仅仅是一个字符串处理函数。它不包含恶意或者危险语句或函数调用,所以在VBA注释器中它的使用时安全的,我们也就不需要将其转换成其他语言了。
接下来我们将在新窗口中使用这份反混淆函数,来解码这个URL参数:
在VBA编辑器的新窗口中,我们有经过反混淆的IpkfHKQ2Sd函数以及一个会调用到IpkfHKQ2Sd函数的测试子程序。通过MsgBox显示IpkfHKQ2Sd函数返回的解码字符串,执行这个子程序获得URL:
下载该文件,我们看到这并非一个JPEG文件,但是也不是一份exe文件:
在VBA代码中搜索.responseBody,我们看到下载文件作为一个参数传递到IpkfHKQ2Sd函数:
这也变相说明这个下载文件也是经过了编码混淆的,它也需要经过IpkfHKQ2Sd函数的解码(但是是另外一个key)
为了在我们的电子表格中将这个文件进行转换,我们需要将这个文件加载到电子表格中,解码,并保存解码后文件。完成这一步可以通过使用FileContainer.xls工具进行,首先将文件加载到电子表格中
FileContainer支持文件转换:我们需要用到命令C以及按下Process Files按钮
以下为默认的转换函数,这个默认函数不会改变函数:输入与输出相等。
解码文件,我们需要更新转换函数来调用解码函数IpkfHKQ2Sd
接着,转换文件后我们得到一个exe文件
该文件最终确认为Dridex木马: lameACM
后记
重用恶意软件中的代码是非常危险的,除非你知道它是拿来干嘛的。快速解码下载文件,我们重复使用了解码的VBA函数IpkfHKQ2Sd,但可以肯定的是它并没有恶意。反混淆过程让我有机会看到每一条声明语句,从而更加的了解这些代码并得出这个函数没有危险性这一结论。同时我们也能够利用这个混淆函数,这样做其实我们也是担有一定风险的,因为我们不知道混淆函数到底都做了些什么。
*参考来源: didierstevens ,编译/FB小编鸢尾,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)