导语:Magniber源代码愈加精细,其地盘从韩国扩张到了其他亚太国家。

Magnitude漏洞利用工具包是仍在使用的、最长久的浏览器利用工具包之一。自2013年出现以来,它一直在全球分发勒索软件。而最终,它演变成了私人行为,专门针对特定地理位置。

2017年,Magnitude通过名为Magnigate的过滤门传播Cerber勒索软件,仅针对少数几个亚洲国家。2017年10月,漏洞工具包运营商开始分发自己的勒索软件Magniber。而恶意软件作者竭尽全力扩大韩国的感染量。除了通过特定国家/地区的恶意广告链进行流量过滤外,Magniber只会在返回特定国家/地区代码时安装,否则会自行删除。

2018年4月,Magnitude意外的开始分发不断增长的GandCrab勒索软件,不久之后采用了新的Flash 0 day(CVE-2018-4878)。这可能是一场测试活动,而且并没有持续多久,不久之后,Magniber又回来了。在我们最近捕获的Magnitude流量中,看到其集成了最新的Internet Explorer漏洞(CVE-2018-8174)。

在本文中,我们来看看Magniber一些值得注意的变化。它的源代码现在更加精细,利用了各种混淆技术,不再依赖于命令和控制服务器或硬编码密钥来实现其加密例程。此外,虽然Magniber以前只针对韩国,但现在它已扩张到其他亚太国家。

一、解压payload

· 72fce87a976667a8c09ed844564adc75 – loader DLL

· 19599cad1bbca18ac6473e64710443b7 – Magniber’s core DLL

在下载并执行最终有效载荷之前有几个阶段。在Magnigate的302重定向(步骤1)后,可以看到用于启动Magnitude登录页面的Base64混淆的JavaScript(步骤2)以及Base64编码的VBScript(两个原始版本的脚本都可以在这篇文章末尾IOC获得)。成功利用CVE-2018-8174之后,获取XOR加密的Magniber。

图1. Magniber感染的流量视图,使用Magnigate重定向和Magnitude EK

图2.解码的Javascript显示重定向到Magnitude的登录页面

图3.显示CVE-2018-8174的VBScript代码片段

一旦Internet Explorer(CVE-2018-8174)中的Use After Free漏洞利用成功,VBScript将执行以下shellcode:

图4.字节数组(shellcode)

功能方面,这个shellcode是一个简单的downloader。它下载混淆的有效载荷,通过用密钥XOR对其进行解码,然后部署它:

图5.通过InternetOpenUrlw API下载最终的有效载荷

然而,下载的有效载荷(72fce87a976667a8c09ed844564adc75)仍然不是Magniber核心,而是下一阶段的loader。这个loader解压缩了Magniber的核心DLL(19599cad1bbca18ac6473e64710443b7)并将其注入一个进程。

这两个元素,loader和Magniber核心,都是具有Reflective Loader stub的DLL,它使用Reflective DLL injection技术将自身加载到当前进程中。

二、行为分析

Magniber所做的动作没有太大变化;它加密文件,最后丢下一个名为README.txt的赎金票据。

图6.受感染机器上留下的赎金票据

给定的链接指向一个洋葱页面(每个受害者都是唯一的),与许多其他勒索软件页面类似:

图7. Magniber的支付页面

由该版本的Magniber加密的文件可以通过扩展名来识别:.dyaaghemy。虽然过去每个文件都使用相同的AES密钥加密,但这次每个文件都是使用唯一密钥加密,即相同的明文得到不同的密文。加密的内容没有可见的模式。这表明使用了流密码或链块的密码(可能是AES的CBC模式)。可以在下面看到Magniber加密前后的BMP文件:

图8.加密之前和之后的文件

三、代码变化

随着时间的推移,Magniber不断发展,其大部分代码都被完全重写。从下图可以看到当前Magniber DLL和早期版本(8a0244eedee8a26139bea287a7e419d9)之间的代码比较,这是在BinDiff的帮助下创建的:

图9.新旧版本Magniber的比较

四、混淆

作者付出了很多努力来改进混淆。我们描述的第一个版本根本没有混淆。相反,当前版本使用一些不同的技术进行混淆。首先,API函数现在通过其校验和动态获取。例如:

图10.通过校验和调用API函数

比较新版本和旧版本,我们可以看到一些重叠的代码片段:

图11.具有正常导入调用的旧版本与具有动态检索函数的新版本

通过搜索当前加载的DLL的导出表来获取函数指针。此技术要求检索函数的DLL已经加载。几个月前,这种检索函数的算法被添加到Magniber中,例如在样本60af42293d2dbd0cc8bf1a008e06f394中。

此外,动态计算调用的一些参数,并在操作之间添加垃圾代码。加载的字符串分散在几个变量中。

图12.添加垃圾代码使分析更加棘手

五、文件加密

我们还可以在功能级别上观察一些变化。早期版本依赖于从CnC服务器下载的AES密钥(如果它不可用,则使用硬编码的密钥,在这种情况下使解密变得微不足道)。这次,Magniber附带攻击者的RSA公钥,使其在加密过程中完全独立于Internet连接。此密钥用于保护用于加密文件的唯一AES密钥。

攻击者的RSA密钥以混淆形式在样本中进行硬编码。这是去混淆后的RSA密钥:

图13.去混淆的RSA密钥

每次要加密新文件时,都会生成两个16字节长的字符串。一个将用作AES密钥,另一个用作初始化向量(IV)。下面可以看到负责生成那些伪随机字符串的代码片段。

图14.生成伪随机字符串

有趣的是随机生成器的弱随机性源可能会造成漏洞。我们可以看到GetTickCount被调用:

图15.使用GetTickCount的随机生成器

生成密钥和IV的完整代码可在以下代码段中找到:https://gist.github.com/hasherezade/7fb69fbd045315b42d7f962a83fdc300

在勒索软件继续加密文件之前,RSA密钥被导入并用于加密生成的数据(密钥+ IV):

图16.文件加密开始之前导入RSA密钥

它产生一个256字节的加密块,传递给加密函数,然后附在加密文件的末尾。除了这些更改之外,在Windows加密API的帮助下,文件也像以前一样加密。

图17.设置AES密钥和初始化向量

图18.加密和写入文件

六、地理扩张

在7月初,我们注意到在常规地区之外发生的漏洞利用,例如在马来西亚。大约在同一时间,MalwareHunterTeam的推文也提到了台湾和香港的感染案例。

随着分发范围的变化,Magniber的代码更新了其语言白名单。现在名单扩大了,增加了其他亚洲语言,如中国(澳门,中国,新加坡)和马来语(马来西亚,文莱)。

图19.扩展语言检查

七、持续发展

虽然Magniber一开始并不令人印象深刻,代码简单且没有混淆,但是它正在积极开发并且其质量不断提高。作者看起来很专业,即使他们犯了一些错误。

该勒索软件如手术般精确操作,从细分发到匹配的语言白名单。犯罪分子明确他们想要瞄准哪些国家,并努力减少噪音以及附带伤害。

由于我们的反漏洞利用模块阻止了Magnitude EK利用CVE-2018-8174(VBScript引擎漏洞),Malwarebytes用户可以抵御此威胁:

IOCs

178.32.62[.]130,bluehuge[.]expert,Magnigate (Step 1)94.23.165[.]192,69a5010hbjdd722q.feedrun[.]online,Magnigate (Step 2)92.222.121[.]30,08taw3c6143ce.nexthas[.]rocks,Magnitude EK (Landing Page)149.202.112[.]72,Magniber

Code snippets

· Javascript

· VBScript

Magniber (original)

6e57159209611f2531104449f4bb86a7621fb9fbc2e90add2ecdfbe293aa9dfc

Magniber (core DLL)

fb6c80ae783c1881487f2376f5cace7532c5eadfc170b39e06e17492652581c2

源链接

Hacking more

...