Grand Mars行动—对抗Carbanak网络攻击

2016年9月到10月期间,在欧洲和美国的酒店行业中,多个重要机构在他们的网络里发现了可疑和潜在的恶意活动,这些恶意活动分布在不同属性和地点的服务器、销售点终端机、和客户端工作站中。Trustwave公司的SpiderLabs安全团队接受了这些机构的安全咨询并进行调查。

这次攻击行动的主要动机是获取经济利益、完全控制目标的基础设施、在受害组织内收集僵尸主机。取证调查和分析表明,这次行动是由多个个体或多个群体实施的,包含多个恶意团体的互相合作,每个恶意团体有自己的角色和任务。很明显,我们正在对付有组织的犯罪份子,他们为了对多个受害人实施攻击活动,建立了这个复杂的网络主机系统,及大量的恶意文件。

在被攻击的机构里发现了多个攻击标志,不仅在企业AV服务中发现了一些潜在的恶意软件碎片,而且在Windows事件日志中也发现了可疑活动的标志信息。由于受害者是不同的机构,因此对不同机构的调查由Trustwave内部的不同小组进行,但是小组之间是共享信息的,调查表明攻击事件中存在几个相似之处。

在所有攻击行动中,共同的进入点是一封针对受害者公共服务的电子邮件,包含一个Word文档附件。一旦打开这个附件,多个恶意文件就会被创建或下载,这就使攻击者一定程度上进入了受害者的基础设施中。在一些情况下,攻击者实际上会给受害人打一个电话,用一个社会工程学策略,来引导受害人打开附件。

下一步,攻击者会运用多种HASH传递的方法,进行提权操作,并通过计划任务和多个自启动的位置使得控制持久化。最终这些行为允许攻击者获得域权限、甚至以企业管理级访问该网络,并使用了多个在欧洲和美国的资源作为C&C服务器。

攻击者通过使用云服务,如Google Docs,Google Forms和Pastebin.com,来跟踪被感染的系统、传播恶意软件、实施附加的恶意活动。利用这些服务对攻击者很有利,因为大多数企业的网络都允许访问这些服务,并且几乎不可能屏蔽它们。

在这次攻击行动中使用的恶意代码,被分割成了内存驻留代码、脚本代码(PowerShell,JavaScript,VBS)、可执行代码(经常出现新变种),并使用了定制版本的工具包,如Metasploit,PowerSploit,Veil Framework。

另一个重要标识是一些可执行文件使用了来自Comodo的有效证书,一个权威的证书。根据对该证书的分析,我们相信攻击者购买或使用了假的身份,绕过了额外的安全控制。

在本文中,我们描述了一个针对欧洲和美国酒店行业的系统性犯罪攻击行动。然而,我们的发现显示出其它行业,如电子商务和零售行业也在危险中,这种犯罪活动可以轻易地传播到世界其他地方。

大部分C&C服务器使用的IP地址部署在欧洲(英国、法国、瑞典等)的未知系统上,表明攻击者通过使用看似无害的服务器作为恶意端点,试图绕过网络安全控制。在对这次攻击行动调查期间,我们监控了这些C&C服务器的访问,发现攻击者偶尔会改变他们的C&C服务器,并下线之前的C&C服务器。我们相信,这种交替使用C&C服务器的做法是有目的的行为,应该是为了尽可能的保持隐蔽。

我们将这次攻击行动称为“Grand Mars”行动,在那以后,网络犯罪份子使用了从Comodo买到的其中一个数字证书。尽管在证书细节中使用的名称和俄罗斯位置细节(城市,地址等)可能是假的,但实际上有人买了这些证书,这是一个强有力的标志,说明我们对付的是有组织的犯罪活动。

我们的高级威胁报告旨在对该攻击行动的行为和文件进行分析:

我们的分析和调查采取的方法是描述恶意活动的性质、策略、及攻击者运用的技术、可能的动机,以及攻击背后的威胁角色的属性。

对于已经被这个行动攻击的机构、或愿意采取积极应对措施的机构,我们提出了修补措施和建议。

攻击指示器(IOCs)将不仅有利于机构探索评估遭受到的攻击(或在专业安全团队的帮助下),而且在机构被当成目标时,提供一个具有前瞻性检测机制的早期预警系统。

尽管如此,还是要注意到,我们的这种高级威胁报告没有、也没有能力取代正式的事件响应行动和程序,事件响应行动和程序作为机构事件响应/灾难恢复的路线图,必须担负起减缓威胁和恢复业务的功能。

二、分析和调查


1、进入点

调查的第一个目标是识别出攻击者进入网络时准确的进入点,和最初的攻击方法。

钓鱼邮件和恶意Word文档

Trustwave SpiderLabs安全团队在全球范围内进行了众多调查,在这次攻击行动的时间线中,最开始使用了一个常见的攻击方法—钓鱼邮件,至少有一个或更多的员工收到了这个邮件,它包含了一个恶意的Word文档,作为邮件的附件。

http://p0.qhimg.com/t01531ccf62951430ed.png

图 1 受害人收到的邮件中包含恶意Word文档附件

http://p8.qhimg.com/t019979253bff198f9e.png

图 2 钓鱼邮件内容

邮件的内容是:美好的一天,我们想为员工预订房间,有12个人将会在11月24日到达巴黎,房间类型在我们的附件中,还有我们员工的名字。如果你们有空房间,我们就付押金。等待你的回复。

邮件内容看起来是合理的,并且和机构的服务(酒店行业)内容是有关系的,邮件包含一个Word文档(.docx),名称为“1-list.docx”,如下图:

http://p1.qhimg.com/t0150afb8503f518242.png

图 3 Word文档附件

有趣的是,恶意软件作者会直接给受害人打电话,并要求受害人打开附件,以确保感染,原因是Word的默认设置会阻止任何宏的执行。这就是攻击途径中说服用户执行宏的社会工程学元素,通过双击文档中内嵌的一个图片。

恶意Word文档分析

对Word附件进行详细检查后,发现了该攻击行动使用的攻击方法(策略、途径),通过使用这种攻击途径,攻击者获得了目标机构网络的进入点,“1-list.docx”文件似乎是一个启用宏的恶意软件,可以在目标系统中下载、并执行恶意代码。

http://p7.qhimg.com/t010bce90c4de26b37d.png

图 4 Word文档,宏激活恶意软件

最新的office(.docx,.xlsx等等)文件实际上是由微软设计的一个基于XML的压缩文件格式,作为一个正常的压缩文件,里面的文件可以被提取出来。解压以后,Word文档的内容中有一个内嵌的OLE对象(oleObject1.bin)被释放出来。

http://p8.qhimg.com/t01bfd5119c96591bfe.png

图 5 Word文件中释放出的oleObject1.bin文件

在oleObject1.bin的内容中,嵌入了一段宏代码(unprotected.vbe),它似乎被编码了。

http://p7.qhimg.com/t01a5147befdc6ddf6c.png

图 6 oleObject1.bin中疑似编码的内容

http://p3.qhimg.com/t014929e88e38b23bd6.png

图 7 使用合法工具加密/编码VBE脚本

在oleObject1.bin的内容里,有一段字符串,请看上图截图部分,表明攻击者使用了一个市场上可以买到的脚本编码/加密工具,名为“Scripts Encryptor”,攻击者使用了它的一个评估版本。

http://p5.qhimg.com/t017891e33b38d35902.png

图 8 用于混淆VBE脚本的工具

内嵌的脚本

手动对oleObject1.bin的内容进行了解码,结果果然是一个VBScript。这个脚本包含了多个功能,其中的一个子集用于转换数据,针对的是嵌入到脚本中的自定义变量数据,使用的技术例如“BinaryToStRinG,StringTOBinary”和“Base64DecodE,base64ENcode”。

http://p7.qhimg.com/t0153fae75fe0beac92.png

图 9 二进制转换字符串函数

http://p1.qhimg.com/t0165fb005dfa71d708.png

图 10 base64编码解码函数

嵌入式脚本的主要用途之一是使用先前列出的功能在受感染的系统上创建几个其他文件。新文件被存储在名为“f”的变量中。

http://p3.qhimg.com/t01505bf0e4e1e873a2.png

图 11 创建starter.vbs文件

上面的代码将会在用户的临时文件夹中创建一个starter.vbs文件。

http://p3.qhimg.com/t019de8978c2e067ff8.png

图 12 创建LanCradDriver.vbs、LanCradDriver.ini文件

上图中的代码将会在用户的临时文件夹中创建一个LanCradDriver.vbs文件和一个空的LanCradDriver.ini文件。LanCradDriver.ini的作用将会在后面章节中解释。

http://p3.qhimg.com/t015a73b9e7f2e476a1.png

图 13 创建TransbaseOdbcDrive.js文件

最后创建的TransbaseOdbcDriver.js文件需要在隐藏的命令行下,利用wscript.exe来执行。

http://p0.qhimg.com/t013fa21fe0a86a1a1a.png

图 14 starter.vbs持久化

除了创建的文件,内嵌的脚本(oleObject1.bin)会添加一个注册表键值用于程序持久化,还包含了一个计划任务,会周期性(每30分钟)的调用并执行“starter.vbs”。

另一个有趣的函数使用了系统的硬盘序列号,并计算出一个唯一的用户识别号。利用这个函数,攻击者从每个受感染的系统中会得到一个唯一的识别号。函数的输出用base64编码过,并存储为“cuid”,在随后的操作中会使用到它。

http://p5.qhimg.com/t017cd77909b8c165b0.png

图 15 计算CUID号

互联网活动还表明,有一个函数在检查机器上的代理设置情况,可疑互联网活动是这个操作行为的一部分,在后面的文章中我们会解释到。

http://p8.qhimg.com/t01c34903dd9e87a28a.png

图 16 检查代理配置

http://p7.qhimg.com/t01b472554a912d5fed.png

图 17 主函数

在操作行为的第一阶段,“主”函数负责处理最后一个比特。初始调用了cuid(),正如我们前面看到的,会处理磁盘的S/N号,然后运行了其它几个功能函数。这些函数收集了用户的信息,如用户名、计算机名/域名(GetUseRData),检查系统架构(32位还是64位),并获得系统版本(GetOS)。所有这些信息存储在了“txt”变量中,然后sendFormData函数接着对它进行了处理。

http://p4.qhimg.com/t01b809f5089b240f53.png

图 18 sendFormData函数

如上图,sendFormData函数使用并连接了Google Forms,在这一阶段,前面收集的到信息(用户数据、磁盘S/N等)将会被恶意软件操作者发送到Google Form,显示如下:

http://p1.qhimg.com/t017ba1ae6e887a1f5b.png

图 19 最初提交给Google Form

从“formFirstPingBotList”名称上就可以明显看出来,正在从受害者上收集初始信息。使用这种服务,会有利于攻击者,因为这些服务在访问的大部分网络中都不受限制。

2、邮件附件的衍生品

正如我们看到的,打开Word文档会执行内嵌的脚本,会释放出下面四个文件:

http://p0.qhimg.com/t01aee4536b19c38854.png

图 20 执行内嵌的VBE脚本,释放出的文件

注意上图中的内容,LanCradDriver.ini文件是一个空文件,它还没有被填充。在下面的分析中,你将会看到,在TransbaseOdbcDriver.js脚本执行后,它会被填充。

starter.vbs

这是一个VBScript文件,前面已经显示过了,包含注册表自启动,和利用计划任务实现持久化,并执行真正的载荷。

http://p6.qhimg.com/t01eb7ab0aeeabb448b.png

表格 1 starter.vbs的HASH

Starter.vbs负责在一个隐藏的命令行下,使用wscript.exe执行TransbaseOdbcDriver.js脚本。

http://p0.qhimg.com/t010985cc45ca771656.png

图 21 starter.vbs脚本

下面的图片显示,starter.vbs脚本通过计划任务被启动了。Starter.vbs依次调用并执行了TransbaseOdbcDriver.js,这是这一攻击阶段的核心。

http://p6.qhimg.com/t018be178c71cb1b864.png

图 22 TransbaseOdbcDriver.js进程的信息

TransbaseOdbcDriver.js

该脚本包含了多个函数,但是在这里我们主要关注它的主要功能。

http://p6.qhimg.com/t011aaab04bf037aa60.png

表格 2 TransbaseOdbcDriver.js的HASH

在执行该脚本后,它会调用LoadLinkSettings()函数,该函数会连接Google Spreadsheet,并执行一个宏,这个宏基于唯一磁盘序列号(guid),在文章前面我们可以看到。

http://p7.qhimg.com/t01ce568966914e6dc0.png

图 23 LoadLinkSettings()函数

该宏代码的输出结果被分隔($$$)成三部分,并在后面的操作中会使用到,分别是:SpreadSheetKey、FormKey、Entry。

http://p3.qhimg.com/t017aad48e12090ddef.png

图 24 执行Google宏后的输出结果

然后,它使用这些参数,调用了LogInet()函数,并使用Google Forms提交了一个新感染者/僵尸主机,连接Google Forms使用了一个“Android HTC Pyramid”模型(中国–台湾语言)的User-agent字符串。

http://p6.qhimg.com/t012f8999aaa01627e8.png

图 25 LogInet()函数

http://p7.qhimg.com/t0156e87beaa2c65a21.png

图 26 使用Google Form注册新感染的系统

初始化成功后,脚本调用getsourcecode()函数,功能是按1或2分钟的间隔无限循环。

http://p9.qhimg.com/t01696e1ee79c2e4471.png

图 27 调用getsourcecode()函数

getsourcecode()函数从Pastebin上抓取数据,并将它存储在一个新文件中,名为“dttsg.txt”。最后执行GetCommand()。

http://p6.qhimg.com/t015b4643c83a11dd28.png

图 28 getsourcecode()函数

“dttsg.txt”文件的结构如下图,并按照“last”和“code”分成了两部分,并提供另一个隐蔽信道。

http://p9.qhimg.com/t01822659365bf63f1c.png

图 29 从Pastebin中抓取的数据

“last”中的数据将会写入注册表,也许是为了跟踪最后执行的命令, “code”中的数据作为一个参数,用base64编码过,允许攻击者执行以下命令,分别是“Destroy”、“GetCompInfo”、“GetProcList”和“RunCMDLine”,如下图所示,然而,在我们的调查中没有观察到这一特性的用法。

http://p6.qhimg.com/t01049bb4713d82d279.png

图 30 从Pastebin中抓取的参数

http://p1.qhimg.com/t019ffdab1207d29fd3.png

图 31 用于跟踪的Pastebin帐户

然后继续执行GetCommand()函数,它会再次连接Google Docs,并使用了在LoadLinkSettings()函数中得到的spreadsheetkey,并将函数执行结果存储在LanCradDriver.ini文件中,该文件在最初是一个空文件,现在在此处的操作过程中,使它成为攻击的另一个关键组件。

http://p9.qhimg.com/t0100a40b4d61345365.png

图 32 从Google Docs中下载代码

实际的数据经过base64编码过,就像我们在Google spreadsheet中看到的,需要解码。该数据存储在LanCradDriver.ini文件中。

http://p6.qhimg.com/t015e55ec5bbde1a1c2.png

图 33 从Google spreadsheet下载的编码的PowerShell命令

LanCradDriver.ini文件中的数据需要利用VBScript脚本来执行,起初是一个编码过的PowerShell脚本。最后一步,TransbaseOdbcDriver.js利用wscript.exe执行LanCradDriver.vbs脚本。

http://p8.qhimg.com/t01fa8f64036ceeb6f2.png

图 34 执行LanCradDriver.ini中的代码

LanCradDriver.vbs

该文件的功能是读取和执行LanCradDriver.ini文件中的命令(通过TransbaseOdbcDriver.js脚本)。

http://p2.qhimg.com/t0162876c9ecf884eff.png

表格 3 LanCradDriver.vbs文件的HASH

http://p8.qhimg.com/t01c5a5d33f3e9a271c.png

图 35 LanCradDriver.vbs

LanCradDriver.ini

正如我们之前讲到的,TransbaseOdbcDriver.js脚本从Google Docs上读取了位于spreadsheet上的一个单元格,数据采用base64编码格式。在解码以后,解码的数据会重新存储到LanCradDriver.ini文件中。

http://p3.qhimg.com/t011940d74a528d35ea.png

表格 4 LanCradDriver.ini文件的HASH

下面刚是从Google spreadsheet返回的一个PowerShell命令,并存储在LanCradDriver.ini文件中,在目标系统中,TransbaseOdbcDriver.js脚本会执行该PowerShell命令。

http://p7.qhimg.com/t01dffe6eb39d6ede63.png

图 36 LanCradDriver.ini中的内容(部分内容)

在前面我们注意这个数据是用base64编码和压缩过的,这有利于隐藏真实的PowerShell命令。

在成功执行Transbaseodbcdriver.js脚本后,下面的图片显示的是文件夹中的内容。注意,此时的LanCradDriver.ini文件已经不是空文件了,因为它已经被Google spreadsheet上的数据填充了。

http://p6.qhimg.com/t01f23dd028928de73b.png

图 37 执行Transbaseodbcdriver.js脚本后,LanCradDriver.ini文件被填充了

行为总结

总之,四个被释放文件的作用可以通过下面的流程图直观的表示出来:

http://p0.qhimg.com/t0107b293a3a669b8c9.png

图 38 释放文件的作用和执行顺序

下面的图表直观的呈现出了在整个攻击行动中,恶意软件使用的C&C机制,包括使用Pastebin、Google Docs(spreadsheets)和Google Forms去控制受害人系统。

http://p3.qhimg.com/t01c57a6b3fc66d9aa7.png

图 39 恶意软件C&C服务流程图

http://p0.qhimg.com/t0137869f1fe97483ee.png

图 40 恶意软件在Google Spreadsheet不能用时的C&C服务流程图

使用这种C&C服务机制,虽然说不是很罕见,但是这足以表明,我们面对的是一个高度组织化和成熟化的攻击者,并不是一个投机份子、松散组织或孤狼攻击。

3、攻击持久化

PowerShell脚本

此时此刻,从Google Docs下载的PowerShell脚本已被解码,并在被感染的系统上执行了。正如图36所示的,使用了PowerShell压缩和Base64函数来隐藏有效载荷。在解析这些功能后,输出结果表明该脚本的目的是建立一个持久后门,经常被称为TCP反弹连接shell。

它的细节如下:

1) 该脚本连接到一个外部IP的80端口,然而,它并没有用HTTP协议来传输数据。

2) 分配内存,并创建线程的代码存在。

3) 然后接收一个源于外部IP的、经过异或加密的载荷。

4) 使用0x50密钥,解密载荷,并写入内存。

http://p9.qhimg.com/t0106ce84923d72083f.png

图 41 PowerShell中的TCP反弹SHELL

上面脚本的结果是,产生一个常驻内存的恶意软件,并给网络罪犯提供一个反弹shell。攻击者现在成功获得了进入目标基础设施的后门。PowerShell命令用于解码和执行该脚本。这种载荷传递方法和“PowerSploit”、“Veil Framework”很相似,前者是一个PowerShell的Post-Exploitation框架,后者是一个众所周知的逃税杀毒检测的载荷工具。

注册表自启动

此外,攻击者利用了系统自启动位置(常见嫌疑犯)来实现持久化。为了在机器重启后能自启动,它在注册表中创建了下面的键值。

http://p7.qhimg.com/t014c593e554d001823.png

图 42 注册表持久化

计划任务

最后,又创建了一个计划任务,每30分钟会被触发一次,并无限循环。计划任务的名称是“SysCheks”,它会执行“starter.vbs”。

http://p4.qhimg.com/t015c94c04b1302a0df.png

图 43 SysCheks计划任务持久化

所有东西都被复制在用户临时目录下,“C:\Users\<user profile>\AppData\Local\Temp”,这也是非常常见的恶意软件行为,因为任何用户对这个文件夹都有完全的访问权限。

4、横向运动(横向攻击)

HASH传递

在这次攻击行动的初始阶段,攻击者获得了进入本地Windows系统的管理帐户,并利用HASH传递偷了一个域证书,是高权限用户。

http://p0.qhimg.com/t01a0c1aa5cb5fa61e7.png

图 44 事件显示出HASH传递标识

上图显示的ID为4624的事件显示出,用户的一个本地帐户是从网络登录的(Logon Type:3),并使用了随机的计算机名(Workstation Name: T5NMapiY4kGetJDe),可能是利用了一个自动化工具的结果。

HASH传递是攻击者成功控制一个系统时常用的技术,窃取凭据HASH,并使用它在另一个系统中执行认证。如果在目标基础设施中,共享相同的本地帐户,这种技术对攻击者会很有用。

最终,攻击者通过位于欧洲和美国的充当C&C服务器的多个资源,获得域权限、或企业域管理访问权、网络访问权。

对攻击基础架构的进一步调查显示出,入侵者在目标环境中在传播相似的PowerShell脚本、或嵌入批处理文件。大量的内部系统事件记录,如下图:

http://p1.qhimg.com/t010f2787885887717f.png

图 45用于传播的批处理文件

http://p5.qhimg.com/t0158d1e88ba431b0be.png

图 46 用于传播的PowerShell脚本

在整个攻击行动中,发现了多个PowerShell脚本,并且和最初从Google Docs下载的PowerShell脚本是相似的。它们的最大不同点是C&C服务器的IP地址,是位于欧洲的多个主机中的一个。

5、更多恶意文件

在同一时间和日期中,我们对文件系统活动进行取证分析时,又发现了多个释放到临时文件夹的恶意文件,它们是TransbaseOdbcDriver.js文件和其他配套文件:

1) AdobeUpdateManagementTool.vbs(连接C&C,并提取数据)。

2) UVZHDVlZ.exe(Carbanak的变种)。

3) Update.exe(Cobalt Strike的post-exploitation工具)。

4) 322.exe(TCP反弹shell)。

对这些可执行文件进行分析,发现它们有共同的恶意性质,主要用途是建立持久化或数据提取。

AdobeUpdateManagementTool.vbs

这是使用VBScript写的恶意脚本,主要功能是从攻击者那里接收命令,然后根据命令下载、执行EXE文件、执行VBScript或PowerShell脚本文件。并通过HTTP POST隧道将窃取的数据发送到攻击者的IP地址。

尽管在我们的调查中,我们观察到的文件名称是“AdobeUpdateManagementTool.vbs”,但是攻击者在不同的攻击行动中使用不同的文件名是很常见的。

http://p1.qhimg.com/t018aa99faf128b3dc2.png

表格 5 AdobeUpdateManagementTool.vbs文件的HASH

AdobeUpdateManagementTool.vbs在执行时,会创建一个文件夹,名为“%AllUsersProfile%+“\Dropebox”+<username>”,例如C:\ProgramData\DropeboxJoePC,并在该文件夹中释放出下面的文件:

screenshot__.ps1:截屏的PowerShell脚本。

screenshot__.png:通过上面的PowerShell脚本,截取的屏幕图片。

Exe__.exe:攻击者发送来的可执行文件。

Vb__.vbs:攻击者发送来的VBScript。

Ps1__.ps1:攻击者发送来的PowerShell脚本。

Insatller.vbs:攻击者发送来的VBS脚本更新器。

该恶意脚本给攻击者的C&C服务器发送一个特定的请求,并从服务器接收一个经过HASH(MD5)的命令。该命令会在被攻击的系统中执行。

http://p3.qhimg.com/t013fa5defa5b9538b7.png

表格 6 支持的命令示例

上图是每个命令执行后的结果,并通过HTTP POST请求发送到C&C服务器中,格式如下:

http://p3.qhimg.com/t01facb90b05b8acba8.png

图 47 用HTTP POST请求向C&C服务器发送数据

HTTP POST数据中body的格式:

http://p6.qhimg.com/t01a8dbfb180ab59447.png

图 48 HTTP POST方式选项

在每次发送“命令-结果数据”期间,该脚本会循环进入睡眠模式,持续3到5分钟。

下面是识别出来的和这个脚本有关的C&C服务器IP(攻击者会经常改变他们的C&C服务器,因此这点IP是微不足道的,这些IP可能和将会进行的其它攻击行为的IP是不同的):

• 148.251.18.75

• 95.215.46.221

• 95.215.46.229

• 95.215.46.234

• 81.17.28.124

通过VirusTotal的报告,任何杀毒软件工具都没有将这个文件标记成恶意软件,这是一个成熟恶意软件的明确标志,及它背后的威胁角色。

UVZHDVlZ.exe

该文件是一个Anunak恶意软件的加载者,Anunak恶意软件是加密的、内嵌在可执行文件中。该载荷(Anunak)可执行并被注入到svchost.exe中,给攻击者提供连接受害系统、并持久化进入受害系统的能力。

http://p9.qhimg.com/t01d4ebe2229706576c.png

表格 7 UVZHDVlZ.exe文件的HASH

最初,可执行文件主程序会使用异或加密密钥“PsdTsr8fer3”,对内嵌在它里面的两个代码模块进行解密,一个是载荷加载者/进程注入模块,一个是Anunak恶意W32可执行文件模块。

解密行为和加密行为一样简单,即用密钥和代码相异或,每次跳过3字节(我们发现使用了解密过程,但是为了保持简洁,在这个报告里我们没有进行详细说明)。

在对可执行文件进行反汇编后,发现了异或密钥,同时,在解密过程中也用到了这个密钥。

http://p1.qhimg.com/t01c534ff8e1f1d6247.png

图 49 发现异或密钥

正如提到的,Anunak载荷的加载者(注入)模块代码会首先被解密,然后解密Anunak可执行代码。

http://p9.qhimg.com/t0162e6a6221d4ca95b.png

图 50 载荷解密

http://p1.qhimg.com/t017d7cb6050f7dff41.png

图 51 在解密Anunak后,执行它

通过该恶意载荷,我们识别出了下面的C&C服务器IP:

• 179..43.140.85 (port: 443)

• 107.181.246.189 (port: 443)

该恶意软件的执行流程图可以表示成如下图片:

http://p6.qhimg.com/t017427b108fbd3c75c.png

图 52 UVZHDVlZ.exe的直观执行流程图

有趣的是,UVZHDVlZ.exe使用了一个由Comode CA颁发的有效数字证书,似乎是用伪造的身份购买,伪造的身份是俄罗斯莫斯科的一个公司。

http://p9.qhimg.com/t01cf5c889950f96603.png

图 53 UVZHDVlZ.exe数字证书的详细信息

根据VirusTotal的报告,没有任何杀毒软件将UVZHDVlZ.exe标记为恶意软件。这是特定恶意软件和该攻击活动背后专业攻击者的另一个标志。

Update.exe

该可执行文件和前面分析中描述的Anunak加载者可执行文件一样,使用了Comode CA颁发的一个数字证书,但是该证书是在此次攻击行动前几周买的。和Anunak加载者可执行文件一样,这个证书也包含发行细节,一家俄罗斯莫斯科的公司,可能是伪造的。

http://p8.qhimg.com/t0168aba24662309226.png

表格 8 Update.exe的HASH

http://p8.qhimg.com/t0121dcf63a9137c070.png

图 54 Update.exe的数字证书详情

该可执行文件实际上也是一个加载者,它会创建一个Cobalt Strike post-exploitation工具的新线程,名为“beacon”。Beacon动态链接库是加密的,内嵌在恶意软件中。

最初,主可执行文件会解密内嵌在它里面的两个代码模块,一个是加载代码模块(它本身),一个是载荷PE文件(内嵌在它里面),

和我们之前描述过的Anunak加载者可执行文件一样,该文件也使用异或进行加密,密钥是“keDx8”,加密解密是一个密钥,作用于加载者代码和内嵌的PE可执行文件上。下图显示的是解密异或代码的反汇编代码:

http://p5.qhimg.com/t01e7d32740439312c3.png

图 55 异或密钥的解密流程

下图显示的是加密的/解密的加载者,和PE可执行文件(载荷):

加载者代码(解密前、解密后):

http://p3.qhimg.com/t014433a68c4eb03b58.png

图 56 加载者代码

PE可执行文件(解密前、解密后):

http://p4.qhimg.com/t01ec1de18424a5bec4.png

图 57 PE可执行文件

在成功对载荷可执行文件解密后,该载荷会在内存中被执行。

当载荷执行后,它首先会为即将解密的beacon动态链接库预先分配内存。

http://p4.qhimg.com/t01c44a14fa451c0d04.png

图 58 载荷分配内存

然后会解密DLL文件。

http://p7.qhimg.com/t01dd04cdb7f4716de0.png

图 59 解密beacon DLL的流程

http://p7.qhimg.com/t01de33f7923874310d.png

图 60 beacon DLL解密

然后,该DLL会被加载到一个新线程中。

http://p5.qhimg.com/t0120c6db41a6932cf2.png

图 61 反射beacon DLL

beacon DLL会无限期循环,在两次循环之间会睡眠10秒钟。

该可执行文件使用了一个技术,来探测目标系统或网络中的杀毒软件工具。它连接外部,并从一个硬编码的主机上下载EICAR反恶意软件测试字符串,此文本是一个特殊的“虚拟”字符串,用于测试安全控制系统,如AV软件、IDS等。这给恶意软件一个指示:在目标系统中没有AV工具。

它使用了一个C&C服务器:95.215.44.12 (HTTP)。

http://p3.qhimg.com/t0155713f583f21b609.png

图 62 X-Malware字段中的EICAR测试字符串

自撰写本报告之日起,根据VirusTotal的报告,该可执行文件没有被任何杀毒软件标记为恶意软件。

322.exe

经过分析,发现它是一个持续性访问受害系统的TCP反弹式后门。

http://p5.qhimg.com/t014dd0a78baafa3687.png

表格 9 322.exe的HASH

该可执行文件会检查系统上的AV进程,基于它发现的信息,要么执行一个新进程“wuauclt.exe”(发现AV),要么执行“svchost.exe -k netsvcs”。如果它不能执行前一个命令,会产生explorer.exe进程。

通过分析反汇编的可执行文件代码,该恶意软件需要以下三个参数:{transport}、{LHOST}、{LPORT}。

例如:“322.exe 4 127.0.0.1 53”。

{transport}参数可以是下面的变量:

http://p9.qhimg.com/t01d8284868e8cb3fdb.png

表格 10  {transport}变量的命令行参数

当可执行文件利用上面的一个选项运行时,它会从对应的远程IP中接收一个DLL载荷,并将它注入到之前成功启动的进程中(wuauclt.exe或svchost.exe或explorer.exe)。然后将执行转移到该进程。这给攻击者提供了三种类型的命令shell,用于访问受害系统。

这不是犯罪份子第一次利用众所周知的工具,因为该可执行文件无非是一个定制的Metasploit载荷,负责下载和执行反弹TCP。322.exe的最后一步是删除自己,为的是不留下踪迹。

VirusTotal在最后一次扫描该恶意可执行文件时,得分是8/57,这是一个低分。结合对文件的分析结果表明,一部分恶意软件作者是高度成熟的,他们能够有效地规避大部分AV工具。

三、结论


在对多个恶意可执行文件的调查中,发现了混淆的PowerShell命令、VBS脚本、JavaScript。如下图:

http://p8.qhimg.com/t01606abafd13b8fa6e.png

表格 11 此次攻击行动的攻击指示器

一些可执行文件是被他们的父进程下载的,并直接写入到内存中,然后作为DLLs,注入到其它进程中,并在执行后删除。同样,使用PowerShell的好处是:恶意软件不用存储在磁盘里,直接在内存中运行。此外,利用脚本的做法具有很强的灵活性,这是另一个强大的优势,允许攻击者毫不费力地修改他们的代码。

此外,基于利用了多个不同恶意软件这个事实,表明多个实体在进行合作和交流,并在地下市场交流工具和技术。当然,也有可能多个不同的恶意群体是合伙关系,各自负责一些攻击阶段的任务。

同样,部署在全球范围内的网络主机的数量,作为提取点或C&C服务器,也表明这可能是一个有组织的犯罪行动。在下图中,已经描绘出了它们的位置和角色(3个在美国的服务器没有描绘出来):

http://p6.qhimg.com/t0189945a6121528f81.png

图 63 恶意服务器地理位置

实际情况是有人从Comode CA购买并使用了合法的数字证书,证书使用了有效但可能伪造的身份,俄罗斯莫斯科。这是另一个指向有组织犯罪网络的间接证据,同时,对于此次攻击行为,他们有强烈的攻击动机。

证书签名时间(创建时间)和攻击时间线很接近,有力的表明了购买这些证书就是为了这次攻击行动。这些数字证书是从一个有效的公司偷的或“借”的吗?攻击的时间线和CA产生证书的时间/日期的相关性表明,这不太可能。

此外,攻击者在攻击中使用了Pastebin URL作为C&C机制的一部分,该URL属于一个个体,名为“Shtokov”。这是另一个弱的标志,表明俄罗斯/东欧的角色参与了这次的攻击行动。

http://p7.qhimg.com/t01dc6b5654110ca0bf.png

图 64 Shtokov Pastebin网站被用到了C&C机制中

使用像Google Docs这样的服务是为了保持对受害人的跟踪,并传播恶意文件。这给防御者带来了很大的挑战,因为利用这些流行的公共云服务后,防御者很难将好人和坏人区分开。

最后,随着对carbanak APT活动的不断了解,该恶意软件家族的攻击特征有几个共同的特点,这很可能归因于俄罗斯地下金融网络犯罪。

我们唯一能确定的是,攻击者不会停止寻求新的、创新的方法去感染企业环境和操纵公共服务,这被公众认为是忠实的和值得信赖的。

四、应对措施


根据我们的调查,我们发现有多个案件都是“Grand Mars”APT活动的一部分,Trustwave SpiderLabs推荐以下补救措施,有效地消除或减少由攻击造成的损害,并在威胁实现之前主动解决威胁。

关键对策(中短期)

1) 定期对所有人员进行安全意识培训。

2) 基于互联网的文件禁止执行vbs/宏/VBE。

3) 禁止可执行文件(EXE,VBS等)从AppData、用户临时文件夹启动。

4) 禁用不需要的、完全不受限制的Internet访问。

5) 最小化管理员帐户的数量和使用。

6) 防止常规用户以管理员登录。

7) 对广泛使用的应用层协议实施过滤。

8) 给本地用户和管理员创建单独的密钥,并经常更改。

9) 限制管理员访问权限,除非系统需要。

由于恶意软件主要驻留在内存中,不用读写磁盘,且对主机文件系统改变很少,建议在所有终端、服务器和网络上进行下列检查。我们建议检查的攻击标志是:

1) 系统中是否安装并启动了具有随机名称的服务。

2) 服务是否按以下方法启动:

 PowerShell命令/脚本。

 一个可疑/随机的、未知起源和目的的命令、程序或二进制文件(如我们报告中提到的Update.exe/322.exe)。

 带有随机名称的一个批处理脚本(.bat)。

3) 系统是否尝试连接一个外部IP,特别是用了常见的端口,但是又没有使用这些端口上常用的协议,如110、53、80、443、8080,防火墙通常会允许这些端口的出站连接。

4) 是否存在计划任务或系统自启动位置。

在本报告中,有关恶意软件连接的IP地址和主机/域的完整列表如下图所示:

http://p9.qhimg.com/t0137d68504b047b155.png

表格 12 恶意主机和IP地址

关键行业需要有所意识

强烈建议零售、电子商务和酒店行业的组织立即实施关键对策。主动进行彻底的威胁评估,而不是等待发现攻击迹象。使用我们高级威胁报告中的信息,在整个网络,包括服务器和终端,实施全面的威胁检查,以确定任何恶意活动的迹象。最后,评估您当前的事件响应能力,并找到影响你们组织响应能力的差距。没有哪个组织可以防御所有攻击。但是如果你有阻止攻击、并迅速作出有效响应的能力,那将长期给你在面对高级攻击时的生存能力带来好的影响。

参考链接

https://www.trustwave.com/Resources/SpiderLabs-Blog/Operation-Grand-Mars–a-comprehensive-profile-of-Carbanak-activity-in-2016/17/?utm_source=tuicool&utm_medium=referral

上一篇:Leet僵尸网络发起高达650Gbps的DDOS攻击

下一篇:针对SOAP的渗透测试与防护