导语: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
· VBScript
Magniber (original)
6e57159209611f2531104449f4bb86a7621fb9fbc2e90add2ecdfbe293aa9dfc
Magniber (core DLL)
fb6c80ae783c1881487f2376f5cace7532c5eadfc170b39e06e17492652581c2