菜单

钓鱼引发的APT攻击回溯:C&C服务器位于韩国,whois注册却在中国上海

2017年3月24日 - 信息安全

一位日本的安全研究者MalwareMustDie发现一种基于Poison Ivy的新型APT攻击,经过他的逆向分析,发现了一些关于攻击厂商的有趣发现。

本文将介绍他是如何发现这种隐匿极深的APT攻击回溯之旅。

一次普通的钓鱼攻击?

meJDZmo.png

和所有APT攻击的开头一样,一个受感染的Word文档,一次看似普通的钓鱼攻击。

但是如果我们注意到MalwareMustDie长文分析的开头,可以发现一些普通邮件的图片,虽然还是那种普通、boring的受感染的Word文档,毫无新意。

奇怪的是,可疑文档似乎是由一个名为Geocities的公共博客网站提供的VBScript脚本,此脚本嵌套了多层的base64编码,下图是手工解码的结果:

Fig-1.png

图1. “powershell.exe” 命令编码得到的VBScript

通常VBScript的“createbject”指令都会跟在 Powershell 命令“powershell.exe -w hidden -ip bypass -Enc with long encoded coded”之后

Poweshell? 嵌入命令? “绕过” 的目的是什么?

经过MalwarareMustDie的调查,那些不那么“普通、无聊”的东西从阴影中浮现出来,随着分析的步步深入,他发现了更加有趣且惊人的东西。

下图是base 64手动解码的代码示例,其揭示了另一嵌套的base 64编码代码。 在图片中表示的功能是自我解释。显而易见,那台受感染的计算机已经“吃下”什么不好的东西。

fig-2-1.png

图2. VBScript base 64解码代码

在多层循环解码base 64编码后,结果很明显的:有一个危险的脚本,附加于Word附件文档,隐藏在VBScript文件中,且随时可由Powershell执行。但MalwareMustDie表示“我已经发现它的源代码”。

复制、粘贴 Powersploit/CodeExecution PoC

运行Powershell命令的VBScript存在一处代码,该代码就是基于臭名昭著的恶意软件Powershell PowerSploit/CodeExecution PoC代码的“copy pasta”,你可以在GitHub上可以得到一模一样的文件和.ps1扩展。

这里它是文档以及利用方式的网页:

fig-3.png

图3.GitHub页面上的PowerSploit / CodeExecution

漏洞的文档说明:“将shellcode插入到您选择的进程ID中或在运行PowerShell进程中”。

MalwareMustDie表示:

这也就是我为什么反对公众在GitHub上放出这种开源代码。GitHub上到处都是这种开源项目。

Shellcode 分析

但是让我们来看看Shellcode,因为现在最重要的任务是对它进行逆向分析,并且明白它的主要目的是什么,为什么注入计算机受害者,采用哪些技术和机制来做什么,连接在哪里?

同样Shellcode使用的是base 64编码。当解码时,它如下图所示:

fig-4.png

图4.Shellcode.

逆向之旅似乎还有很长的路要走,我们再一次为MalwareMustDie的技巧所惊叹,他成功地编译了shellcode并获得了一个可安全执行的文件。

MalwareMustDie在博客中写道:

将shellcode数据保存在汇编文件的.text部分和入口点(EP)中将在编译过程中由编译器“调整”,这样你可以将此shellcode作为二进制PE文件执行。 此方法在分析shellcode时非常有用。 通过Unix环境,你可以创建这种PE,而不会有感染的风险。

下图就是他采用的过程:

Fig-5.png

图5. 操作 shellcode 来创建一个 .exe 文件

我们在恶意软件运行时发现:它从受害者的计算机提取信息回调其C2服务器与目标执行所有的恶意行为。

最后,我们可以确定,它就是臭名昭着的Poison Ivy。

Poison Ivy计划

运行Shellcode有可能观察到它使用了大量涉及DLL的系统调用,这些DLL主要与系统的内核相关。

这里来自MalwareMustDie博客的图片:

hO81W8U.png

在跟踪分析shellcode的第一个阶段我注意到了这是一个“Poison Ivy”

Fig-6.png

图6. 伪造的进程 userinit.exe 创建后被注入

可以看到,出现了一个伪造的userinit.exe进程,且在这个进程中注入恶意代码并执行。受害者将看到一个虚构的userinit.exe进程在做坏事。这是一个典型的Poison Ivy模式。而且,DLL的组合使用同样暴露了Poison Ivy的典型模式。

然后其他操作由恶意软件执行:

创建一个名为“Plug1.dat”的文件

为之后的工作创建一个套接字

通过 “HKEY_LOCAL_MACHINE\SYSTEM\Setup”查询PC信息

vNOQzVO.png

这里可以看到userinit.exe创建了Plug1.cat文件,这样它就可以利用socket做更多事,还可以通过HKEY_LOCAL_MACHINE\SYSTEM\Setup  SystemSetupInProgress查询PC信息

毫无疑问就是Poison Ivy

那么问题来了C&C服务器在何地?

我来仔细观察一下WS2_32.DLL文件,可以看到一些有意思的东西

socket(),

gethostbyname()

connect().

由C&C服务器回传的主机名和IP地址可知,该服务器位于韩国首尔

fig-7.png

图7.C&C服务器位于韩国

Network/BGP Information→「61.97.243.15||4766 | 61.97.243.0/24 | KIXS-AS | KR | kisa.or.kr | KRNIC」

但是我们发现主机名是web.outlooksysm.net,这里可以用WHOIS来获得额外的信息,知道谁是幕后主使,结果该公司来自上海。

fig-8.png

图8.对 Poison Ivy 恶意软件的C&C服务器WHOIS

结论

这个APT攻击使用了多种变体,它先是欺骗受害者下载一个恶意VBScript,让这个VBScript去下载一个.doc文件并打开它。 完成这些操作之后,它会悄悄的地执行PowerShell(PowerSploit)攻击,使得受害者在运行内存中的进程时感染Poison Ivy。

这个实例很好地展示了这种攻击的潜在危险,攻击者在一次APT感染中使用修改过的PowerSploit PoC代码,这种做法很独特。

Poison IVY恶意软件是在PowerSploit使用shellcode创建或准备的恶意进程userinit.exe的过程中注入的。这种不感染文件的攻击有效地避免了多个编码和包装检测的已知签名,并且100%避免了原始攻击者的工作区域被发现的可能性。

最近的APT攻击很有可能也是利用类似的payload在其它地方成功施展攻击。

为了避免更多的受害者,我真的希望Geocities.jp上的vbiayay1帐户尽快将恶意软件删除。

希望我的分析能够帮助调查和打击这种威胁。

发表评论

电子邮件地址不会被公开。 必填项已用*标注