【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

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

译者:shan66

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


简介

在去年2月份的时候,我们发表了关于Sage 2.0的文章,并在3月发现了2.2版,但从此之后,FortiGuard实验室团队已经有6个多月没有发现这种恶意软件的重大活动踪迹了。因此,Sage勒索软件的变种好像已经淡出恶意软件的江湖了。

然而,我们最近又发现了Sage的新样本,虽然该样本看上去仍然是Sage 2.2,但现在已经增加了专门用于对抗分析和提权等功能。在本文中,我们将分享这些最新的发现。

通过Kadena威胁情报系统,我们已经确认该恶意软件是通过垃圾邮件来传播的,这些邮件带有恶意的JavaScript附件,之后,这些代码会下载新型的Sage 2.2变种。 

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

图1 Sage 2.2新变种攻击矢量的KTIS视图

同时,有些样本是通过植入了恶意的VB宏下载器代码的文档进行扩散的,我们认为这些文档也是作为垃圾邮件的附件进行传播的。

根据Kadena威胁情报系统的数据,用于下载这个新版本的Sage的URL是由.info和.top顶级域名(TLD)以及路径的编号共同组成的。

真正有趣的是,我们发现Sage这个版本的文件竟然与Locky勒索软件的文件共享同一个下载服务器。 

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

图2 托管Locky和Sage 2.2新变种的一些服务器

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

图3 下载URL示例

没有发生变化的部分

与Sage勒索软件的早期版本相比,这个新版本的许多功能代码并没有变化,对于这一部分,我们这里不会详细介绍,但是对于一些重要的细节,还是有必要强调一下的。

与早期版本一样,此版本也包含了各种加密算法。它使用与Sage 2.0(即ChaCha20)相同的加密算法来加密文件。加密文件的名称仍然使用扩展名.sage。

同时,它还还会通过下面给出的特定国家的键盘布局来避免感染某些国家/地区的机器: 

白俄罗斯、哈萨克、乌兹别克、俄罗斯、乌克兰、萨哈、拉脱维亚 。

这次发现的新变种仍然使用与Sage早期版本相同的消息来设置桌面壁纸。

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

图4 Sage勒索软件的桌面壁纸

代码混淆

在考察该恶意软件的新变种时,我们观察到了一个有趣的变化,那就是大多数字符串已被加密,以掩盖其恶意内容。事实证明,这些字符串使用的是Chacha20密码算法。每个加密后的字符串都有自己硬编码的解密密钥。

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

图5 字符串解密函数

分析对抗、沙箱对抗和虚拟机对抗功能

除了加密的字符串之外,该恶意软件的新变种还实现了一些新功能,来探测自己是否正在被分析,或者是否将被加载到沙箱或虚拟机中。如果检测到这些情形,它将立即自动终止,以避免被分析。

以下是该恶意软件进行的各种对抗性的检查: 


进程名称检查

Sage的这个变种会枚举机器的所有活动进程,并使用Murmurhash3计算哈希值,然后根据硬编码的哈希值列表进行比对。表1列出了一些列入黑名单的进程名称及其相应的Murmurhash3哈希值。 

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

表1 列入黑名单的进程名称


文件名检查

它还在恶意软件执行的路径全称中查找以下名称。 

sample

malw

sampel

virus

{sample’s MD5}

{samples’s SHA1}

这些名称通常用作分析恶意软件样本的文件名或目录名。由此看来,如果这些名称中的任何一个出现在相应的完整路径中,Sage就会假定自己正在被分析。由于这里使用的函数是StrStrI(),所以比较时不区分大小写。

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

图6 文件全路径检查

计算机名称和用户名检查

该恶意软件可以通过多种方式来检测自己是否被加载到了AV沙箱中。其中一种方式是检查在沙箱环境中是否使用了已知计算机或用户名。这个恶意软件的变种中包含了硬编码的计算机名和用户名列表,这些也是通过Murmurhash3计算哈希值的。 到目前为止,我们只从这些列表中确定出了一个名称,就是计算机名“abc-win7”。

除了哈希列表外,它还包含加密的计算机名称和用户名字符串。下面是解码后的字符串列表: 

Wilbert

Customer

Administrator

Miller

user

CUCKOO-

TEST-

DESKTOP-

WORKSTATION

JOHN-PC

ABC-PC

SARA-PC

PC

D4AE52FE38


CPUID检查

这个恶意软件还使用x86指令CPUID来获取处理器的详细信息,如处理器品牌字符串等。然后,检查该品牌字符串是否位于通常用于虚拟化环境的CPU ID黑名单中: 

KVM

Xeon

QEMU

AMD Opteron 2386

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

图7 检查CPU ID

防病毒服务名称和MAC地址检查

最后,它还会检查计算机上是否正在运行防病毒软件,并检查MAC地址是否被列入了黑名单中。该恶意软件通过枚举在服务控制管理器下运行的服务来检查是否有防病毒软件运行,并通过Murmurhash3对这些服务名称进行相应的处理,然后根据其硬编码的哈希列表进行检查。表2和表3分别列出了黑名单中的一些防病毒服务名称和MAC地址。

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

表2 列入黑名单的服务名称

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

表3 列入黑名单的MAC地址


深入分析Sage的提权机制

恶意软件通常会设法获得高于提供给普通用户帐户的特权级别,因为更高的权限级别允许他们获得对系统的完全控制,然后就可以在受感染的系统上为所欲为了。这对于加密型的勒索软件来说尤为重要,因为它们需要更高的权限级别来确保能够对受害者的所有文件进行加密,尤其是存储在受保护文件夹中的那些珍贵文件。在最近的分析中,我们还发现,Sage已经能够通过利用已修补的Windows内核漏洞或用户帐户控制(UAC)功能来提升其权限了。

利用CVE-2015-0057

事实上,Sage不是第一个利用CVE-2015-0057中的Windows内核漏洞的恶意软件系列。然而,该恶意软件的漏洞利用技术——即其使用的write-what-where(WWW)权限——与其他恶意软件家族大相径庭。值得注意的是,这个漏洞和利用此漏洞的方法已经被很多公开的文章介绍过了,所以下面的分析主要集中在如何在后利用阶段将代码的执行权限从ring-3提升到ring-0。 

由于该漏洞的特性,它允许攻击者在机器内存中的任何部分进行任意的数据读写操作。通过考察Sage中的exploit代码,我们发现它可以利用一些Windows GUI函数,如InternalGetWindowText/NtUserInternalGetWindowText和NtUserDefSetText来执行任意的读/写操作。 对于传统的内核攻击来说,通常将目标设为HalDispatchTable,然后覆盖用于将代码权限从ring-3提升到ring-0的描述符表中的一个指针。对于Sage来说,它是通过攻击本地描述符表(LDT)来实现权限从ring-3到ring-0的提升,具体代码如下所示: 

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

清单1:利用远程调用LDT调用第一阶段内核Shellcode的payload

下面的调试器输出展示的是执行上面标注的代码前的LDT内容:

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

清单2:在执行exploit代码之前LDT的内容

在执行清单1中标注的代码后,我们可以看到新的LDT表项已成功添加到EPROCESS结构中:

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

清单3:执行exploit代码后LDT的内容

通过exploit将伪造的LDT表项添加到GDT后,它继续进行远程调用,并触发第一阶段的内核shellcode代码:

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

清单4:使用远程调用触发第一阶段的内核shellcode

 https://p3.ssl.qhimg.com/t01f100dc5cffb0276a.png

清单5:第一阶段的内核exploit shellcode

在内核shellcode的prologue中,该exploit尝试禁用存储在CR4寄存器中的管理模式执行保护(SMEP)位,如果成功禁用的话,就会允许内核模式代码执行用户模式代码,从而将控制权传递给用户模式下0x587AD2处的代码,并开始执行。

 https://p1.ssl.qhimg.com/t01a10214d38bff673d.png

清单6:从IDT中查找NT内核镜像的地址

有趣的是,与之前我们观察到的内核exploit相比,该版本的exploit采用了不同的技术来检索ntoskrnl.exe镜像基地址。当我们显示地址0x80b93400处IDT内容时,我们注意到有一个常量值0x82888e00,它是KIDTENTRY.Access和KIDTENTRY.ExtendedOffset的值,具体如清单5所示。事实证明,这个常量值与ntoskrnl.exe的镜像有关。在减去特定倍数的0x1000偏移量后,最终会得到ntoskrnl.exe镜像库的基址,如清单4中的shellcode所示。据我们推测,之所以采用这种技术,可能是编程人员想逃避某些安全软件的行为检测,因为这些检测能够发现传统的加载ntoskrnl.exe镜像库的方式,这在开源内核利用圈子里是众所周知的。

最后,该exploit利用自己的进程令牌取代了System进程的令牌,从而获得SYSTEM权限。 

https://p5.ssl.qhimg.com/t0164f0b2e32dfa041c.png

 

绕过UAC

这个恶意软件用来绕过UAC的技术本身也是老套路,但是,这是我们第一次发现Sage使用该技术。 它使用eventvwr.exe和注册表劫持来防止UAC弹出窗口。图5给出了这个技术的原理示意图。我们还在之前一篇文章中详细解释过这种技术。

 https://p3.ssl.qhimg.com/t01475f121f9c2ca00f.png

图8 绕过UAC


含有更多语种的备忘录

早期的Sage勒索软件变种中包括一个名为!HELP_SOS.hta的勒索软件备忘录,其中含有如何恢复加密文件的说明。该备忘录提供了多种语言翻译,包括: 

英语、德语、意大利语、法语、西班牙语、葡萄牙语、荷兰语、朝鲜语、汉语、波斯语、阿拉伯语。

当前这个变种的一个显著变化是增加了六种语言的翻译,从此可以看出,作者今后可能要向更多的国家撒网,这些语种包括: 

挪威语、马来语、土耳其语、越南语、印度尼西亚语、印地语 。

 https://p0.ssl.qhimg.com/t01a833495567944a5e.png

图9 带有其他语言翻译的恶意软件备忘录

文件恢复

此外,当前为用户恢复加密文件的费用也有所变化。勒赎信中包含一个连接到洋葱网站的链接,用户必须使用TOR浏览器访问,该浏览器是专为匿名浏览和下载而设计的浏览器,只有这样,受害者才能买到“SAGE解密软件”。该页面显示的内容是一些常规信息 ,例如进一步的指示和初始赎金金额,该金额已经从早期的$99和$1000提高到了$2000。

 https://p5.ssl.qhimg.com/t0178eebc32f31736dd.png

图10 赎金金额

由于某些原因,付款网站上显示的Sage版本仍为2.0。

与早期版本一样,作者允许受影响的用户上传小于15KB的加密文件来测试解密功能。

 https://p0.ssl.qhimg.com/t016e0e61788b5293eb.png

图11 测试解密功能

几分钟后,用户就可以下载解密的文件了。

 https://p4.ssl.qhimg.com/t01ed60e3f8d3e276fb.png

图12 解密文件可供下载

小结

与早期版本的Sans勒索软件相比,这个变种增加了一些特性,例如通过提权方式在受害者的系统上站稳脚跟等。为了避免被自动分析系统检测到,这个新变种还积极利用多种手段来检测虚拟环境。 

但是,即使该变种增强了功能,Fortinet的FortiSandbox仍然能够破解这些花招,并将这个新变种评为“高风险”,并且无需进行任何额外的重新配置。

 https://p1.ssl.qhimg.com/t01d197768d48ee2472.png

图13  FortiSandbox可以检测Sage并给予高风险等级

解决方案:

FortiMail会阻止所有垃圾邮件。

FortiGuard防病毒服务会将Sage样本识别为为W32/SageCrypt.KAD!tr。

FortiGuard Webfilter服务将阻止所有下载,并将相应的网址标记为恶意网站。

FortiSandbox会将Sage样本评估为高风险软件。 

-= FortiGuard Lion Team =-

IOC

884263ac1707e15e10bcc796dfd621ffeb098d37f3b77059953fc0ebd714c3df – W32/SageCrypt.KAD!tr

00f1e3b698488519bb6e5f723854ee89eb9f98bdfa4a7fe5137804f79829838e – W32/Sage.KAD!tr

0eb72241462c8bfda3ece4e6ebbde88778a33d8c69ce1e22153a3ed8cf47cc17 – W32/Sage.KAD!tr

2b0b7c732177a0dd8f4e9c153b1975bbc29eef673c8d1b4665312b8f1b3fb114 – W32/Sage.KAD!tr

43921c3406d7b1a546334e324bdf46c279fdac928de810a86263ce7aa9eb1b83 – W32/Sage.KAD!tr

47a67a6fb50097491fd5ebad5e81b19bda303ececc6a83281eddbd6bd508b783 – W32/Sage.KAD!tr

5b7d2b261f29ddef9fda21061362729a9417b8ef2874cc9a2a3495181fc466d0 – W32/Sage.KAD!tr

a14ee6e8d2baa577a181cd0bb0e5c2c833a4de972f2679ca3a9e410d5de97d7e – W32/Sage.KAD!tr

b381d871fcb6c16317a068be01a7cb147960419995e8068db4e9b11ea2087457 – W32/Sage.KAD!tr

bbc0e8981bfca4891d99eab5195cc1f158471b90b21d1a3f1abc0ee05bf60e93 – W32/Sage.KAD!tr

cb6b6941ec104ab125a7d42cfe560cd9946ca4d5b1d1a8d5beb6b6ceb083bb29 – W32/Sage.KAD!tr

df64fcde1c38aa2a0696fc11eb6ca7489aa861d64bbe4e59e44d83ff92734005 – W32/Sage.KAD!tr

eff34c229bc82823a8d31af8fc0b3baac4ebe626d15511dcd0832e455bed1765 – W32/Sage.KAD!tr

f5f875061c9aa07a7d55c37f28b34d84e49d5d97bd66de48f74869cb984bcb61 – W32/Sage.KAD!tr

f93c77fd1c3ee16a28ef390d71f2c0af95f5bfc8ec4fe98b1d1352aeb77323e7 – W32/Kryptik.FXNL!tr

903b0e894ec0583ada12e647ac3bcb3433d37dc440e7613e141c03f545fd0ddd – W32/Kryptik.DMBP!tr

c4e208618d13f11d4a9ed6efb805943debe3bee0581eeebe22254a2b3a259b29 – W32/GenKryptik.AZLB!tr

e0a9b6d54ab277e6d4b411d776b130624eac7f7a40affb67c544cc1414e22b19 – W32/Kryptik.FXNL!tr

(完)