病毒木马查杀实战第028篇:某APT攻击的技术分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ioio_jy/article/details/84783575

样本文件基本信息

本分析报告共涉及两个样本文件,其基本信息如下:

 

1号样本

2号样本

样本名称

处理签(2018年)1304.pdf.hta

组织部干部四处最新通知更新.doc.exe

MD5

daa8abf46f49bea46a45b7f44fd6b02c

31064883832730d5d0562f403f388d2b

文件类型

扫描二维码关注公众号,回复: 4429326 查看本文章

HTA(HTML Application)

PE/EXE自解压可执行程序

文件大小

1,485,178 字节

1,462,408 字节

数字签名

Microsoft Corporation(校验未通过

编译时间

2016-08-15 03:15:54

以上表格中的红色字体部分为这两个样本文件静态特征中的可疑之处,接下来会围绕这些可疑的地方进行分析。

 

样本伪装方式分析

该样本使用了一定的社会工程学手段来打消用户对样本的顾虑,从而让用户认为这是正常的文本类文件。比如从文件的名称上来看(不考虑文件后缀扩展名),1号样本名为“处理签(2018年)1304”,2号样本名为“组织部干部四处最新通知更新”。由文件名称可以得出下述第一条结论:

该恶意程序所攻击的目标对象是我国的政府机关或事业单位

之所以能够得出这个结论,是因为文件名称中使用了“处理签”以及“组织部干部”这样的词汇,而包含这样词汇的文件,基本都是出自我国的政府机关或者事业单位。而类似于这种通知类文件,也是政府机关里面几乎每天都会遇到的文件,这两个文件如果混在每天待处理的事务中,就会起到很好的迷惑效果。恶意程序的作者试图采用这样的欺骗方式,来消除机关事业单位行政人员的戒心,从而让自身得到运行的机会。这类恶意程序的来源,一般都是电子邮件的附件,恶意程序的作者可以编造邮件的正文内容,并附上这些文件,让用户下载并运行它们,赌的就是用户不会去认真查看邮件的来源是否真实可靠。这就是该样本所采用的第一处社会工程学手段

接下来可以看一下这两个样本的扩展名(后缀),文件的扩展名表明了该文件是什么类型的文件,也是我们的系统判定目标文件要采用什么方式打开或运行的依据。如果依照上述表格中的内容,那么可以知道这两个文件分别是HTA以及EXE类型的文件,可是在这之前的红色字体部分,却出现了.pdf以及.doc这样的字符,从而让用户以为它们就是普通的文本文档,从而失去了戒心。因为我们的Windows系统在默认的情况下,是不会显示文件的扩展名的,因此上述两个文件在我们的计算机中,一般是按照如下方式(大图标)显示的:

或者是这样的方式(详细信息):

可以看到,不论是哪种显示方式,文件的“后缀名”都分别是.pdf和.doc,甚至那个所谓的.doc文件的图标,与word文档的图标一模一样,于是也就会更具迷惑性了。恶意程序的作者一方面就是在赌目标攻击对象对于文档文件没有戒心,而另一方面就是在赌目标对象没有在自己的系统里面开启“显示扩展名”的功能,因为如果开启这一功能的话,则会显示如下内容:

现在每个文件后面都出现了两个扩展名,而每个文件名称最后面的扩展名,才是该文件的真实扩展名。其实如果我们留意一下“类型”这一列的内容,也可以立刻知道该文件的类型,而如果用户看到了两个扩展名的话,自然会对这些文件有戒心的。这就是该样本所采用的第二处社会工程学手段。有关病毒在文件命名方面的花招,也可以参考这篇技术文章:https://blog.csdn.net/ioio_jy/article/details/51198687

接下来可以在虚拟机中尝试运行一下这两个文件,首先运行的是“处理签(2018年)1304”这个文件,可以看到它在运行以后,打开了一个PDF文档:

由于我的虚拟机中并未安装PDF阅读器,因此这里默认使用浏览器来打开该PDF文件。而在浏览器的地址栏里面,可以发现该PDF文件的路径为:

file:///C:/Documents and Settings/Administrator/Local Settings/Temp/Adobe PDF.pdf

这个路径并不是我们刚刚运行的“处理签(2018年)1304”文件的路径,说明这个文件是新建的,有理由怀疑,这个新建的PDF文件是由“处理签(2018年)1304”所释放出来的。

由上图可见,该PDF文档提示我们输入密码。可是这个密码却是未知的,因此这个PDF文件是无法打开的。恶意程序的作者之所以给攻击对象一个无法打开的PDF文档,主要有以下两点原因:

第一,如果不给攻击目标提供一个PDF文档,那么必然会引起用户的怀疑,也就是说用户明明已经点击了“处理签(2018年)1304.pdf”,可是自己的计算机却没有任何反应,这就是一件很奇怪的事情了。而有了这个PDF文档,用户就不会怀疑自己的计算机出现了问题,此时恶意程序就可以在用户毫不知情的情况下,在后台隐秘执行了。

第二,恶意程序的作者可能会计划攻击多个目标部门,甚至是不同领域不同行业的部门,因此他不可能知道这些部门的真实组织架构及人事情况。基于这个原因,如果恶意程序的作者在PDF文档中伪造一个虚假的内容,那么该内容很容易就会得到验证,从而引起用户的怀疑。而将该PDF文件设置为带密码的模式,就可以彻底打消用户的疑虑,因为用户发现无法打开这个PDF文件以后,会觉得这个文件和自己关系不大,那么也就不会不断地去尝试不同的密码了。这就是该样本所采用的第三处社会工程学手段

接下来尝试在虚拟机中运行一下“组织部干部四处最新通知更新”这个文件。可以看到在运行之后,一个word文档被打开了:

与之前所打开的那个PDF文件相比,这个word文档并没有设置密码,但是它的内容却是以一种很模糊的状态显示的。给人以一种这个word文档内容被损坏了的错觉。如果继续往下看,还会有一些乱码存在:

于是就更加使得用户相信这个文件被损坏了。但奇怪的是,这个word文档最上方的标题栏却显示当前文件名是“Ms Word ~tmp.docx”,而不是“组织部干部四处最新通知更新”,那么就有理由怀疑,当前这个文件是刚刚被释放出来的。

其实如果我们将“Ms Word ~tmp.docx”这个文件的后缀改为.zip,就可以解包这个word文档文件,从而可以看到如下目录结构:

这里依次打开word目录->media目录,就可以发现两个图片文件:

这里打开名为hdphoto1.wdp的文件,可以看到如下内容,也就是word文档里面的模糊部分

隐约可以看到这个图片正文内容是“华为城市云优势”,如果利用搜索引擎搜索这个关键词,可以发现它最早出现在2017年的6月:

于是可以知道这个恶意样本也是出自这个时间之后,结合图片中的文字内容,可以得出如下第二条结论:

该恶意程序的作者极有可能是亚洲人,甚至就是出自我国的黑客之手

恶意程序的作者之所以让“组织部干部四处最新通知更新”这个文件释放出一个word文档,其目的和“处理签(2018年)1304”释放出一个pdf文件是一样的,都是一种社会工程学的手段,来打消用户的疑虑,从而让木马在后台静默运行,这里不再赘述。

 

HTA样本分析

这里可以首先分析一下“处理签(2018年)1304.pdf.hta”这个文件。为了获取该样本的行为,可以在虚拟机中通过监控程序获得。对于任何一个样本而言,我们最为关注的是恶意程序的文件注册表以及网络方面的行为信息。由于该样本是HTA格式的文件,而该文件在Windows操作系统中是依托于mshta.exe这个程序运行的,因此为了获取该HTA样本的行为,只要监控mshta.exe这个进程就可以了。首先可以看一下文件监控

可以发现,样本在临时文件夹(Temp)中创建了名为Adobe PDF.pdf的文件,这也是我们之前已经发现的行为。接下来看一下注册表监控

可以看到,该恶意程序通过注册表获取了诸如计算机名称、操作系统名称以及版本号等信息,有理由怀疑,该恶意程序接下来会将这些信息发送至远程服务器。

最后再看一下网络监控

在这里可以发现大量的HTTP链接请求,目标域名均为:

mnggmcggmlggmhggmdggidggjhggjlggjpggjiggjlggmkggjlggmkggjngg.ijmlajkn.audreybourgeois.com

IP地址是216.107.152.223,端口号都是80,即HTTP端口。查询该IP地址的详细位置,可以发现它位于美国的伊利诺伊州:

查询该域名的详细信息,可以知道它是在2018年4月6日创建的,期限为一年:

该域名已于2018年4月19日被 “微步在线”判定为是恶意远控网站,属于“海莲花团伙”:

该网站也被“360威胁研判分析平台”定义为是海莲花团伙(OCEANLOTUS)的恶意网站:

恶意程序执行后,就会向该网站不断发送信息:

由上面的监控结果可知,恶意程序每隔6~10秒就会向该网站发起一次POST请求,也就是把本地的数据传递过去。以上就是该HTA恶意程序完整的监控行为,为了获取其详细行为,则需要对该样本进行深入分析。

利用文本编辑器打开这个样本,可以发现它的主体部分是使用VBScript编写的:

查看主体代码,可以发现大量的拼接(&)、取字符(mid)与替换(replace)等的操作:

由于参与拼接等运算的字符串都是以大小写字母数字组成,而且由replace()函数可知,加密字符串中还包含有=/以及+等字符,由此可以断定,该恶意程序的主体部分使用了Base64的加密方式。该恶意程序首先会通过一系列的计算,拼接出经过Base64加密的代码,然后对其进行解密,从而执行一系列的恶意功能。

程序中主要包含三块Base64加密的字符串,分别是名为Shiw的字符串(11,228 字节)、名为KodQiw的字符串(11,352 字节)以及位于整个HTA程序后半部分的字符串(1,434,508 字节)。其中的Shiw字符串解密后如下所示(8,506 字节):

KodQiw字符串解密后如下所示(8,600 字节):

位于HTA文件最后的字符串,经过Base64解密后如下所示(1,080,227 字节):

在解密出来的Shiw以及KodQiw里面并未发现可疑的用于攻击用户计算机的代码部分,但由其中所包含的System.Reflection.Assembly Load(Byte[], Byte[])等字符串可以知道,它们会实现加载dll或者exe程序的功能。上图中经过Base64解密后的,起初位于HTA文件最后的代码,可以看到依旧是处于不可分析的乱码状态。那么可以知道,将这片代码解密之后,可以得到一个PE文件(dll或exe程序),用于实现该恶意程序的核心功能。

为了获得解密后的文件,可以在虚拟机里面利用OllyDbg对该HTA文件的宿主程序,即mshta.exe进行调试,并将HTA样本的路径设置为调试参数即可。由之前的分析可以知道,该恶意程序会将自身后半部分的代码以Base64的方式进行解密,然后再通过某种算法做第二轮的解密操作,最终得出真实的木马文件。那么这一系列的解密过程,必然会占用一定的内存。也就是说,该恶意程序在解密之前,需要先申请一片内存区域,然后将待解密的部分拷贝过去,最后再将该区域中的代码进行解密。因此,我们只要监控内存的分配情况,就可以获取最终的本体文件,也就是在OllyDbg里面,对内存分配函数VirtualAlloc下断点,监控该区域数据的读写情况,最终就可以发现一个PE文件:

这片内存区域的起始位置是0x03DD0000,而PE文件的起始位置是0x03DD01EC。提取(Dump)出这片内存的数据,也就是从0x03DD0000开始到0x03E25FFF的内容。可以发现在PE文件的前面还有大小为0x1EB的配置信息:

整理出这片区域重要的字符串信息如下:

ghijklmnopz

SOFTWARE\App\AppX70162486c7554f7f80f481985d67586d\Applicationz

SOFTWARE\App\AppX70162486c7554f7f80f481985d67586d\DefaultIcon

susanmercure.com

becreybour.com

beaudrysang.xyz

其中第一行的“ghijklmnopz”字符串用于生成恶意域名。样本的上线域名字符串由两部分组成,一部分由电脑主机名生成,一部分为4字节的样本版本ID即0x2365a384。域名生成算法首先将计算机名(Unicode编码)转换为小写字母,然后再把该段内存的小写字母转换为十六进制(Hex)字符串,接着挨个判断该Hex字符串的字节,如果在0x2f和0x3a之间,就将该字节减去0×30后做为编码表(ghijklmnopz)的索引值,再通过索引值在编码表中取得最终该字节对应的编码,如不在0x2f和0x3a之间,则不进行处理。使用Python2.7还原其生成算法如下:

程序运行后的结果如下:

可以看到,这里所生成的域名和之前通过监控得到的域名是一致的。

继续分析之前所提取出来的字符串。第二、三行是由恶意程序新建的注册表项,用于写入session ID。客户端第一次连接服务器,服务器会返回一个UUID作为session ID。Session ID会以二进制数据的形式保存在注册表中:

最后三行域名均被“微步在线云沙箱”定义为恶意网站,该样本会将上述计算出来的域名与这几个域名进行组合,以生成最终的恶意域名:

最后分析一下刚刚Dump出来的PE文件。它是一个标准的dll文件(MD5:a3f6d8675b659e1f571cf2282b570023),属于拥有完备功能的后门类恶意程序。可以为远程操控者提供诸如文件管理、注册表操作、进程控制、加载额外组件以及获取系统信息等功能。如下为该恶意程序所提供的功能列表:

命令编号

功能描述

0

获取计算机基本信息

1

设置Session ID

2

利用管道技术(pipes)创建进程并获取输出结果

3

设置连接计数器

4

延迟轮询时间

5

读取文件或注册表键值并计算MD5值

6

创建进程

7

在内存中创建文件、注册表项或数据流

8

编辑注册表

9

查询注册表

10

文件查询

11

文件移动

12

文件删除

13

获取系统中的盘符情况

14

创建目录

15

删除目录

16

文件内容读取(从指定的位置)

17

运行PE文件加载器

18

未知

19

0:查询注册表键值,1:执行一个程序

20

设置环境变量

21

在新的线程中执行shellcode

22

获取环境变量

23

木马重启(新版本木马的功能)

这里以文件操作为例,对关键代码块进行分析。比如为了获取文件信息,该恶意程序就调用了__stat64这个函数:

它通过FindFirstFileExA实现文件查找的功能,利用GetDriveTypeA实现获取磁盘类型等操作。并且由上图可以知道,__stat64是由sub_10034E94调用的,并且还是唯一的调用源。而sub_10034E94出自sub_100351EE

分析sub_100351EE的代码,可以发现3处调用了sub_10034E94

在获取到文件信息之后,则会跳转到如下代码位置,构造HTTP连接的内容,将获取的本地计算机信息传至远程服务器:

如果继续溯源,可以发现最初用于对文件进行操作,并用于构建发往服务器端的HTTP信息的框架的代码,是在sub_1002DC14模块中实现的:

在该函数代码的起始位置,则会依据由攻击者发来的命令编号确定HTTP协议建立的请求方法:

可以看到,这里采用了POSTPUTGET以及HEAD这四种方法。当命令编号为0、1时,使用GET方法;为2、3时,使用POST方法;为4时,使用PUT方法;其余情况为HEAD方法。

该木马前0~10项后门操作的任务分发功能由函数sub_10026EE3实现,其流程图如下:

这是一个典型的switch语句程序,其switch跳转表如下:

而由函数之间的调用关系流程图也可以知道,函数sub_10026EE3确实是一个枢纽,起到了承上启下的作用:

       以上就是整个HTA样本文件的分析。

 

EXE样本的行为分析

首先可以看一下该样本的数字签名信息:

可以看到,该样本对于自己的描述是微软的Office 2013程序,但奇怪的是它的数字签名验证(Verified)却是乱码,也就是验证未通过。而我系统中真实的word程序的数字签名情况如下:

真实的word程序(WINWORD.EXE)的数字签名状态为Signed,即验证通过的状态。并包含有完整的签名时间以及发布者等信息。二者一对比就可以发现本次分析的exe样本是伪造的,它意图采用伪装成word程序的方式来打消攻击目标的顾虑。

接下来可以发现,该EXE样本是一个自解压程序,其本质相当于是一个压缩包,利用WinRAR打开这个文件,可以看到如下信息:

由上图可知,该自解压程序在运行后会释放出两个文件,一个是我们之前已经发现的word文档,另一个是名为{fc74af29-a44c-445b-9c8d-3f4921841dcd}.ocx的PE程序。但是类似于.ocx类的文件是无法独立运行的,需要借助于Windows系统中的regsvr32.exe程序才能够得到执行,关于这一点,在上图中的脚本程序里面也得到了体现。也就是说,当不知情的用户执行了这个自解压程序以后,在查看所释放出来的word文档的同时,其实就已经被植入木马了。

这个.ocx文件的内部存在有资源的内容(945,412 字节):

由这里所出现的字符串“This program cannot be run in DOS mode”可以知道,这个资源文件中隐藏有另一个PE文件。因此有理由怀疑,当前的这个.ocx文件在运行以后会解密释放出另一个PE文件并运行。

利用监控程序对regsvr32.exe进行监控,可得如下信息:

可以看到,恶意程序在获取本地计算机信息,如计算机名称、版本号等,接下来通过联网操作发送到远端服务器:

关于这个网站的信息,之前已有过分析,这里不再赘述。可见,通过监控程序所获得的这个样本的所有行为与上一个样本是一致的,初步怀疑这两个样本执行了相同的功能。那么这里也可以利用同样的方式将隐藏在样本中的恶意程序本体给Dump出来。也就是利用OllyDbg调试regsvr32.exe这个程序,在执行参数中输入.ocx文件的完整路径,结合设置在VirtualAlloc函数上的断点,就可以找到最终解密出来的PE文件了:

该内存区域起始于0x00DA0000,结束于0x00DF5FFF,在PE文件的前面同样有一个配置信息:

如果将这个头部区域去掉,则可以得到一个标准的dll程序(MD5:7db77ab80e2ec218dc75116a38538385)。由于该程序与我们在上一个样本中所提取出来的dll程序的MD5值不一样,因此不妨做一下二进制层面的对比,结果如下:

在上图中,左侧是当前样本提取出的dll文件,右侧是上一个样本提取出来的。可以看到,从偏移为0x00054400位置开始,就出现了大量不一样的内容。但是通过分析这两个PE文件的结构可以知道,它们都存在有附加数据(Overlay)的内容,它位于文件最后一个节区之后。在PEiD中可以看到,样本文件的最后一个节区名为.reloc,偏移为0x00051200,大小是0x00003200,二者相加即0x00054400,也就是说从0x00054400位置开始,就是文件的附加数据内容:

        这里的附加数据主要也是一些配置信息:

也就是说,两个样本所提取出来的dll文件的主体部分是一样的,仅仅是附加数据不一样,因此可以得出结论:这两个样本所执行的功能是完全一致的。因此这里不再对该dll文件进行分析。至此,第二个样本也已经分析完毕。

 

样本执行流程总结

现在可以总结一下这次分析的两个样本的执行流程,首先是HTA样本:

该样本是利用VBScript写成的HTA文件,运行后会利用Base64解密算法对自身进行解密操作,得出一个pdf文档和一个dll程序。这个dll程序是木马的主体文件,用于实现后门的功能。

下面是exe样本的执行流程:

该exe样本是一个自解压文件,程序运行后会释放出一个docx文件和一个ocx文件,docx文件仅仅起到迷惑作用,之后再对ocx文件进行解密操作,释放出最终的实现恶意功能的dll文件,以实现后门的操作。

 

补充说明

分析以往“海莲花”组织所采用的攻击手段可以知道,在2017年,该组织会使用真实的word文档文件进行攻击,而没有采用类似于本报告中所运用的exe自解压程序。当时的word文档之所以可以实现攻击的操作,是因为该组织使用了word中存在的CVE-2017-8759漏洞。利用该漏洞就可以实现后台下载的功能,从而将木马程序静默安装到用户的计算机里面并运行。但是随着微软及时发布补丁,加上该漏洞修复至今已经过了一年多的时间,因此对于攻击者而言,再利用这样的方式进行入侵会大大降低攻击成功的概率,所以才会采用本报告中所论述的形式。而通过分析恶意程序所释放出来的docx文件可以知道,该文件中并不包含漏洞利用代码。毕竟当docx文件被打开的时候,也就说明用户的计算机中已经被植入了dll后门木马,所以从逻辑上来说也没有必要再使用漏洞攻击的手段。

其次,在本报告中所分析的两个样本里面,都没有发现驻留或自启动的行为,也就是说,当用户重启电脑,或者关闭mshta.exeregsvr32.exe这样的宿主进程以后,恶意程序也就被关掉了,除非用户再次打开恶意程序,木马才会重新在内存中运行。只有在木马存续期间,攻击者通过远程操控用户计算机,将木马程序设置为诸如开机启动项,才能够使得木马长期运行在受害者的计算机里面。恶意程序的作者之所以不为其添加自启动之类的功能,初步怀疑是由于类似于这样的功能,很少出现在正常的程序里面,而现在的杀毒软件对于样本的行为监控十分敏感,如果发现样本中存在添加自启动项之类的操作,轻则仅仅提示用户是否放行,重则直接拦截并将其列为可疑文件传至云端,由高级查杀引擎反病毒工程师进行详细分析。因此,恶意程序的恶意特征越不明显,越有可能躲避掉杀软的查杀。而直接由攻击者通过远程操作添加启动项,相对来说是一种保险的做法。

 

防范措施

由这两个文件所采用的自我保护措施可以发现,现在恶意程序的伪装技术已经日益成熟并更具有迷惑性。很多时候其实就是一封电子邮件、一份Word文档、一个链接,就打开了攻击的大门。因此作为政府机关的工作人员应当学会分辨哪些文档是可疑的,哪些是可以被信任的。而且对于自己的电脑,也应当及时地打补丁,特别是操作系统的补丁,一定要在第一时间下载安装。对于来历不明的网站以及文件等,绝对不可以随意点击。也就是要从源头上,从思想意识形态上来杜绝黑客的攻击,这样即便是黑客采用再高明的木马技术,也没办法侵入我们的计算机。因此这就需要单位对自己的员工做相关的计算机安全培训,让大家了解这些伪装技术,就可以保障我们的安全。

其次,我们的计算里面也应当安装杀毒软件。目前一些顶尖企业的杀毒产品的监控技术已经非常成熟,只要发现运行了一些可疑的文件,都会第一时间将其拦截下来。所以安装一套强大的杀软,很多时候就可以弥补我们自身对于黑客攻击技术不了解的不足。

最后,有条件的单位的技术人员,也可以依据这些常见的攻击模式,自己开发一套文件检测软件,可以在这套软件里面设立一些攻击规则,把满足这些规则的程序给拦截下来。很多时候,类似于这种“专杀工具”对抗恶意程序的效果,是要优于杀毒软件的。举个简单的例子来说,我们可以编写这样的一条规则:只要发现目标文件的文件名有双重后缀,就直接将其判定为是可疑文件。比如我们这次的样本,一个后缀是“.pdf.hta”,一个是“.doc.exe”,正常的文件名是不会出现这样的情况的,因此这样的一条规则,就可以对抗千千万万未知的威胁了。

猜你喜欢

转载自blog.csdn.net/ioio_jy/article/details/84783575