04 宏病毒分析报告

0x00 概述

基本信息

样本名称 3EFFEBA64D9A1A4DD1BDDAEB1858E4D0.xls
样本类型 宏病毒、下载器
样本大小 346112 bytes
MD5 3EFFEBA64D9A1A4DD1BDDAEB1858E4D0

简介

该样本通过宏代码,将存储在Excel表中的PE数据,写入DLL文件中,然后加载该DLL文件,执行其函数,最终实现将主机信息发送至远端服务器,并从远端服务器下载文件执行。

流程图

04_宏病毒

0x01 样本行为分析

该样本是一个Excel文件并且含有宏。其中Excel界面同其他宏病毒一样,显示迷惑信息,诱导使用者启用宏。如图:

1569412801269

文件写入行为分析

运行宏后,样本释放了多个文件,如图1所示:

1569144868910

图1
## 网络行为分析

运行宏后,该Excel文件向远程服务器进行了TCP请求,访问IP:==195.126.214.226==

1569145641922

图2
# 0x02 样本详细分析

查看宏代码

查看自动运行函数workbook_open,如下图所示:

1569378101721

分析workbook_open,发现函数只执行了UserForm1.show,这点就很可疑,因为userForm本身是一个图片,如图:

1569412973717

这里右键查看模块UserForm1的代码,发现里面暗藏玄机,执行了函数CreateGifFile,如图:

1569413132917

查看函数CreateGifFile,发现其中释放出了一个==DLL文件==,并执行了该DLL文件中的一个函数。下面将详细分析该函数究竟执行了那些行为,函数如下图:

1569413932292

拼接路径

根据操作系统的位数,拼接不同的文件路径,拼接出来的路径就是该样本释放文件的路径,如图:

1569414410071

释放文件oleObject1.bin

先将当前工作表复制到一个新的工作簿中,并保存为==13.xlsx==,然后又修改该文件的后缀,将其修改为==13.xlsx.zip==,然后解压该zip文件夹 ==xl\embeddings\==目录下的oleObject1.bin文件。

1569415043752

首先释放的3个文件,如下图:

1569415375138

执行函数ReadAndWriteExtractedBinFile,读取文件==oleObject1.bin==中的PE数据,并将PE数据写入exchange1.dll中,如图:

1569419064051

加载exchange1.dll并执行函数Amway

先切换路径至==%AppData%路径下==,然后加载exchange1.dll,并执行其函数Amway,如图:

1569419166214

其中k32LL为从==kernel32.dll==中获取的loadlibrary,并将其别名为:k32LL,如图:

1569419372444

分析释放出来的DLL文件

查看DLL文件exchange1.dll的导出表,发现其导出函数只有一个导出函数initTest。与该样本要调用的函数Amway不同。如图:

1569425835760

初步推断该DLL文件,是一个==带壳的DLL文件==,首先需要进行脱壳,这里用X64dbg进行脱壳。

首先在DLL文件的入口点,用一次==ESP定律==,在push后,给ESP下硬件断点,如图:

1569426153856

然后F9运行到硬件断点出,然后单步没有几步,就会看到一个pushad,这里再次用ESP定律,给ESP下硬件断点。如图:

1569426325644

然后就到了该DLL真正的入口点,如图:

1569426396535

然后将其dum下来,这里需要注意要修改插件==Scylla==的属性,去掉选项Use PE header from disk,这个选项用的是原来DLL的PE头,也就是执行原来壳的PE头中的导出表,这里需要将其勾掉。如图:

1569426822212

再查dump出来的DLL文件,发现导出表正常了,找到了调用执行的函数Amway,如图:

1569426966404

分析主要行为函数

该样本是通过加载exchange1.dll,然后执行其函数Amway,实现其相应的攻击。该样本的重点就是分析主要行文函数Amway

构造网络请求包头

构造网络请求包头,后面进行数据传输时会用到,如图:

1569454276748

获取操作系统信息

获取了本地主机的==标准DNS名称==、获取了当前==用户信息==,以及==操作系统版本号==,并将数据进行了加工和拼接,如图:

1569454531764

枚举进程

枚举当前的所有进程,并将进程与之前获取的信息进行了拼接,如图:

1569454828894

最终将获取到的信息与枚举的进程,进行拼接的结果,如图:

1569455033474

与远程服务器通信

获取远程服务器的域名,如图:

1569455225847

将获取到的主机信息,发送至远程服务器,如图:

1569455549229

下载可执行文件

先判断与远程服务器通信的状态码,如图:

1569455668682

当状态码为200,也就是连接正常时,下载==可执行文件==,到临时目录下,并命名为boost1.exe。如图:

1569455713813

创建进程执行下载文件

通过函数CreateProcessW,创建进程,执行下载的==可执行文件==,如图:

1569455934027

这里由于远程服务器已经宕掉了,这里也无法获取到从远程服务器上下载的文件,进而无法进一步分析下载后的程序boost1.exe

0x03 查杀方案

由于远程服务器宕掉了,并未下载到最终要执行的可执行文件,无法对下载后的可执行文件的行为进行分析,因此无法对该可执行文件进行查杀。

删除病毒文件

但目前分析的这个样本本质就是一个下载器,查杀方案只需将该样本本身以及释放出来的所有文件删除即可,要==删除的文件==,如下表:

病毒本身:
3EFFEBA64D9A1A4DD1BDDAEB1858E4D0.xls
释放出来的文件:
C:\Users\<User>\AppData\Local\Temp\13.xlsx
C:\Users\<User>\AppData\Local\Temp\13.xlsx.zip
C:\Users\<User>\AppData\Local\Temp\oleObject1.bin
C:\Users\<User>\AppData\Roamingexchange1.dll
C:\Users\<User>\AppData\Local\Temp\boost1.exe

0x04 样本溯源

FileName FileSize MD5
3EFFEBA64D9A1A4DD1BDDAEB1858E4D0.xls 346112 bytes 3108C6B3B4ACC06E8B26AF7AE0142A45
13.xlsx 235896 bytes 90F4CBB72628ABC27FEDBE872A0FFFE6
13.xlsx.zip 235896 bytes 90F4CBB72628ABC27FEDBE872A0FFFE6
oleObject1.bin 164864 bytes 27C9912C99DBC5052A97E9D9EB4C23FA
exchange1.dll 81920 bytes 3707203BDA6A72601CD4461DF3A14240
C&C服务器
https[:]//office-teml-en.com/tw

0x05 总结

该样本通过Excel进行传播,并借助宏来执行下载和执行文件等恶意行为。因此在查看带有宏的文件时,应多加小心,确认其来源之后,在进行查看。