德国用户受Gootkit及REvil恶意软件威胁
2020-12-11 10:29:06 Author: www.4hou.com(查看原文) 阅读量:228 收藏

早在11月23日,研究人员就收到了一位合作伙伴发出的关于德国Gootkit攻击复发的警报。 Gootkit是一个功能强大的银行木马,自2014年起就存在了,并且具有许多功能,例如旨在窃取与财务相关的信息的按键或视频记录。

在最新的活动中,攻击者通过使用诱饵论坛模板来诱骗用户下载恶意文件,从而依靠受到攻击的网站对用户进行社交工程。

在分析复杂的恶意软件加载程序时,研究人员找到了一个令人惊讶的发现。受害者会收到Gootkit本身,或者在某些情况下会收到REvil(Sodinokibi)勒索软件。在对犯罪基础设施进行检查之后,决定是否提供一个有效载荷。

在德国观察到的Gootkit攻击样本

安全研究人员TheAnalyst于11月首次公开使用复杂的加载程序公开识别一个活跃的Gootkit攻击样本,该加载程序最终将幕后的主使者指向了Gootkit,此前Gootkit已经沉寂了好长一段时间了。德国的计算机紧急响应小组DFN-CERT后来证实,受到攻击的网站已成为此次攻击的目标。

大约在同一时间,研究人员开始从一些合作伙伴及其ISP收到有关Gootkit相关流量的报告。研究人员能够在遥测范围内确认所有位于德国的Gootkit检测。

1.png

德国的Gootkit攻击情况

几天后,研究人员修复了600多台遭到破坏的计算机。

网站上的虚假论坛模板

初始加载程序通过被黑客攻击的网站传播,使用一种有趣的搜索引擎优化(SEO)技术定制虚假模板,试图欺骗用户下载文件。

该模板模仿一个论坛主题,在该主题中,用户以德语询问有关特定主题的帮助,并收到一个答案,该答案似乎正是他们所寻找的。值得注意的是,托管此模板的被黑网站不是德语(只有模板);它们只是很容易受到攻击,并被用作攻击基础设施的一部分。

2.png

受攻击网站会加载诱饵模板来欺骗受害者

如果正确的受害者浏览了受攻击的网站,则攻击者会有条件地动态创建此虚假的论坛帖子。脚本从DOM中删除合法的网页内容,并添加自己的内容(该模板显示指向要下载的文件的链接)。

3.png

诱饵模板后面的HTML代码视图

每次访问页面之前,都要进行服务器端检查,以确定是否已经向用户提供了假模板,在这种情况下,Web服务器将返回合法内容。

无文件执行和模块安装

一旦受害者执行了他们刚刚下载的zip存档中的恶意脚本,攻击过程就开始了。

4.png

严重模糊处理的恶意脚本

此脚本是导致执行最终有效载荷的几个阶段中的第一个阶段。下图就是一个综述:

5.png

攻击流程

阶段1:第一个JavaScript

第一个JavaScript模块必须由受害者手动执行的,为了隐藏其真实意图,它被模糊处理了。模糊处理由三层组成,上一层解码下一层的内容。

第一阶段就是对下一个元素进行解码:

6.png

第一阶段脚本

解码后的输出是一个逗号分隔的JavaScript块数组:

7.png

用逗号分隔的脚本数组

数组中有四个元素由它们的索引引用,例如,索引为0的元素表示“构造函数”,1是另一个JavaScript代码块,2是空的,3是导致调用提供代码的包装器。

块1负责读取/写入“HKEY_CURRENT_USER\SOFTWARE\

8.png

第三层JavaScript

此代码段负责连接到C2,它从列表中获取域,并逐个尝试它们。如果得到响应,它将继续运行。

上面的下载器脚本是加载过程的第一阶段,在功能方面,它在所有被删除的文件中几乎是相同的。变体之间的区别将从下一部分开始,下一部分是从C2服务器获取的另一个JavaScript。

阶段2:第二个JavaScript(从C2下载)

服务器的预期响应是一个十进制字符串,其中包含用于验证的伪随机标记,需要在进一步处理之前将其移除,标记由 “@[request argument]@”组成。

9.png

使用C2服务器的GET请求

转换为ASCII后,将显示下一个JavaScript,并执行代码。该JavaScript带有嵌入式PE有效载荷,该载荷可能是Gootkit的加载程序,也可能是REvil勒索软件的加载程序。用于去模糊化的算法也存在一些差异。

Gootkit变体示例

10.png

下载的JavaScript

下载的代码块负责安装持久性攻击元素,它还运行一个Powershell脚本,该脚本读取存储,对其进行解码并进一步运行。

阶段3:存储的有效载荷和解码Powershell

开发者还多样化了编码和存储有效载荷的方法,在研究人员的测试中,他们观察到了两种编码方式。在其中一种格式中,PE存储为Base64编码的字符串,而在另一种格式中存储为十六进制字符串,通过用模式替换特定的数字来模糊处理。

有效载荷通常存储为注册表项列表,但是研究人员还观察到了一种变体,其中类似的内容被写入TXT文件中。

存储在文件中的有效载荷示例:

11.png

有效载荷作为磁盘上的文件

该文件的内容是一个模糊处理的Powershell脚本,该脚本运行另一个Base64模糊处理的层,该层最终对.NET有效内容进行解码。

用于对文件进行模糊处理的Powershell脚本示例:

"C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Bypass -windowstyle hidden -Command "IEX (([System.IO.File]::ReadAllText('C:\Users\[username]\bkquwxd.txt')).Replace('~',''));"

下面研究人员将研究加载程序的两个示例:一个导致执行REvil勒索软件,另一个导致执行Gootkit。

示例1:加载REvil勒索软件

下面的示例显示了将PE文件编码为模糊处理的十六进制字符串的变体,在分析的案例中,整个流程导致了REvil勒索软件的执行。

执行第二阶段JavaScript将导致有效载荷以密钥列表的形式写入注册表。内容被编码为十六进制,并略微模糊处理。

12  1.png

存储在注册表中的有效载荷片段,编码为使用模式模糊处理的十六进制字符串

编写密钥后,JavaScript会部署一个PowerShell命令,该命令负责解码和运行存储的内容。

13 1.png

JS组件使用Base64编码脚本部署PowerShell

脚本的解码内容:

14 1.png

解码后的内容

它从注册表项中读取内容,并通过替换模式来对其进行模糊处理。在给定的示例中,将十六进制字符串中的模式 “!@#” 替换为“1000”,然后在.NET Reflection的帮助下对PE进行解码和加载。

下一阶段的PE文件(.NET):

REvil加载程序:(0e451125eaebac5760c2f3f24cc8112345013597fb6d1b7b1c167001b17d3f9f)

.NET加载程序带有一个硬编码的字符串,该字符串是下一阶段的PE:最终的恶意载荷。 PowerShell脚本调用的Setup函数负责解码和运行下一个PE:

15 1.png

硬编码字符串(PE)

16 1.png

部署有效载荷

加载程序借助Process Hollowing法(PE注入的经典方法之一)进入下一阶段。

17 1.png

REvil赎金记录

示例2:加载Gootkit

在另一个常见变体中,有效载荷另存为Base64。注册表项以以下格式组成一个PowerShell脚本:

$Command =[System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String("[content]")); Invoke-Expression $Command;Start-Sleep -s 22222;

20.png

存储有效载荷的注册表项

解码base64编码的内容后,研究人员得到另一个PowerShell脚本:

21.png

更多的PowerShell

它还附带了另一个base64编码的片段,该片段在Reflection Assembly的帮助下进一步解压缩和加载。它是.NET二进制文件,与上一个类似。

Gootkit加载程序:(973d0318f9d9aec575db054ac9a99d96ff34121473165b10dfba60552a8beed4)

该脚本从.NET模块调用函数“Install1”。此函数加载另一个PE,该PE作为base64编码的缓冲区嵌入其中:

22.png

另一个缓冲区

23.png

部署有效载荷

这次,加载程序使用另一种PE注入方法,即手动加载到父进程中。

显示的有效载荷是Gootkit的第一阶段二进制文件:60aef1b657e6c701f88fc1af6f56f93727a8f4af2d1001ddfa23e016258e333f。该PE用Delphi编写。在其资源中,研究人员可以找到另一个PE(327916a876fa7541f8a1aad3c2270c2aec913bc8898273d545dc37a85ef7307f),该文件已通过XOR进行了单字节模糊处理,它被第一个文件进一步加载。

总结

此活动背后的攻击者使用了非常聪明的加载程序,就像是俄罗斯套娃一样。该加载程序执行了许多步骤来逃避检测。鉴于有效载荷是使用随机命名的密钥存储在注册表中的,因此许多安全产品将无法检测到并删除它。

但是,在某些情况下该加载程序会负责下载REvil勒索软件。研究人员曾经能够在实验室中重现此流程,但大多数时候研究人员都发现的是Gootkit。

REvil组织对新成员有非常严格的规定,他们必须通过测试并必须为俄罗斯人。在研究人员收集到的REvil样本中,他们注意到的一件事是,赎金记录仍指向cryptoror.top而不是cryptoror.cc,这表明这可能是一个较旧的样本。

银行木马是一种与勒索软件截然不同的商业模式。勒索软件在过去几年中蓬勃发展,部分得益于知名受害者的巨额赎金。研究人员已经看到,银行恶意软件(即Emotet)变成了勒索软件的加载程序,在这些加载程序中,不同的攻击者可以专门研究其最擅长的领域。时间会告诉我们Gootkit的回归到底意味着什么,以及它将如何发展。

检测与保护

Malwarebytes通过不同的保护层来防止、检测和删除Gootkit和REvil。当研究人员收集到了攻击指标后,就能够阻止传播网站,使用户不下载初始加载程序。

当JavaScript通过WinRar或7-Zip等压缩文件应用打开时,研究人员基于行为的反利用层也可以阻止恶意加载程序,而不会产生任何签名。

24.png

阻止脚本执行

如果系统已经攻击了Gootkit,Malwarebytes可以通过清理Gootkit隐藏的注册表项来补救:

25.png

检测隐藏在注册表中的有效载荷

最后,研究人员还会检测并终止REvil(Sodinokibi)勒索软件:

26.png

REvil勒索软件被阻止

攻击指标

27.png

本文翻译自:https://blog.malwarebytes.com/threat-analysis/2020/11/german-users-targeted-with-gootkit-banker-or-revil-ransomware/如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/rXKp
如有侵权请联系:admin#unsafe.sh