这篇博文由哈舍雷扎德和杰罗姆·塞古拉撰写

11月23日,我们收到了一位合作伙伴发出的关于德国Gootkit感染死灰复燃的警报。Gootkit是一种功能非常强大的银行特洛伊木马,自2014年以来一直存在,并拥有许多功能,如击键或视频录制,旨在窃取金融相关信息。

在这一最新的竞选中,威胁演员通过使用诱饵论坛模板来依赖于社会工程师用户的受损网站,指示他们下载恶意文件。

在分析复杂的恶意软件装载机时,我们令人惊讶的发现。受害者在某些情况下获得Gootkit本身,或者在某些情况下,Revil(SodInokibi)赎金软件。在与刑事基础设施支票后,致电的决定发生在一个或其他有效载荷之后。

Gootkit攻击在德国观察到

安全研究员Theanalyst.是第一个公开的识别11月的一个积极的活动,使用最终归因于Gootkit的复杂装载机,在野外未观察到一段时间的银行木工特洛伊木马。德国的电脑应急响应团队CERT-BUND.之后确认的德国用户通过被破坏的网站成为攻击目标。

在同一时间,我们开始收到来自一些合作伙伴及其ISP的报告,了解与Gootkit相关的流量。必威客服app我们能够确认所有位于德国的遥测中的Gootkit检测。

图1:在竞选活动中德国的Gootkit感染

几天后,我们修复了600多台受损的独特机器。

在黑客网站上的假论坛模板

初始装载机通过HACKed网站使用令人兴趣的搜索引擎优化(SEO)技术来分布,以自定义试图欺骗用户下载文件的虚假模板。

模板模仿一个论坛线程,用户在德语中询问有关特定主题的帮助,并收到似乎是他们正在寻找的答案。值得注意的是,托管这个模板的黑客网站不是德国人(只有模板是);他们只是恰好易受攻击,用作威胁演员基础设施的一部分。

图2:受损站点将诱饵模板加载到诱惑受害者

如果正确的受害者浏览受妥协的网站,则有条件地和动态地创建此假论坛发布。脚本从中删除合法的网页内容多姆并添加其自己的内容(显示到文件下载的链接的模板)。

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

每次访问页面之前都有一个服务器端检查,以确定用户是否已被授予虚假模板,在这种情况下,Web服务器将返回合法内容。

无纺布执行和模块安装

一旦受害者在他们刚下载的zip存档内部执行恶意脚本,感染过程开始。

图4:严重混淆的恶意脚本

此脚本是导致执行最终有效负载的几个阶段中的第一个。下图显示了高级概述:

图5:感染流程

第1阶段 - 第一个JavaScript

第一个JavaScript是必须由受害者手动执行的模块,并且已经混淆,以隐藏其真实的意图。混淆由三个层组成,其中一个解码下一代的内容。

第一阶段(可用的已清除格式的版本)这里)解码下一个元素:

图6:第一阶段脚本

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

图7:解码的逗号分隔脚本数组

数组中有四个元素由其索引引用。例如,具有索引0的元素意味着“构造函数”,1是另一个JavaScript代码块,2是空的,3是引起提供代码的呼叫的包装器。

块1负责读取/编写“HKEY_CURTENT_USER \ Software \ ”下的注册表项。它也会吸入和运行另一段代码

图8:第三个JavaScript层

该代码片段负责连接到C2。它从列表中获取域,并将其一个逐个尝试。如果它得到响应,它进一步运行。

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

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

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

图9:使用C2服务器获取请求

转换为ASCII后,将显示下一个JavaScript,并执行代码。此JavaScript附带嵌入式PE有效负载,可以是Gootkit的加载器,也可以是Revil Ransomware。算法也有一些差异用于脱离它的算法。

Gootkit变体的示例(评论满的

图10:下载的JavaScript

下载的代码块负责安装持久元素。它还运行了一个powershell脚本,读取存储,解码并进一步运行。

第3阶段 - 存储的有效载荷和解码PowerShell

作者多样化编码和存储有效载荷的方法。在我们的测试期间,我们观察了两种编码方式。在其中一个中,PE存储为Base64编码的字符串,另一个作为十六进制字符串,通过具有由模式替换的某些数字来混淆。

有效载荷通常存储为注册表项列表,但我们也观察到一个变体,其中将类似内容写入TXT文件中。

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

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

该文件的内容是一个模糊的Powershell脚本,该脚本运行另一个Base64模糊层,该层最终解码.NET负载。

运行以解除文件的PowerShell脚本示例:

“C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe”-执行策略旁路-WindowsStyle隐藏-命令”IEX(([System.IO.File]::ReadAllText('C:\Users\[username]\bkquwxd.txt'))。替换('~','');”

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

示例1-Loading Revil Ransomware

下面的示例显示了variant,其中pe文件被编码为混淆的十六进制字符串。在分析的情况下,整个流程导致执行Revil Ransomware。呈现此案的沙箱分析可用这里

执行第二阶段JavaScript导致将有效载荷写入注册表,作为键列表。内容被编码为十六进制,并轻微混淆。

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

编写键后,JavaScript部署了负责解码和运行存储内容的PowerShell命令。

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

解码的内容剧本

图14:解码内容

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

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

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

图15:硬编码串(PE)
图16:部署有效负载

装载机在的帮助下运行到下一阶段工艺空心化- PE注射的经典方法之一。

图17:Revil Ransom Note

示例2–加载Gootkit

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

$ command = [system.text.encoding] :: unicode.getstring([system.convert] :: frombase64string(“[content]”));调用表达式$命令;开始睡眠22222;
图18:存储有效负载的注册表项

解码base64编码的内容后,我们得到另一个PowerShell脚本:

图19:更多的PowerShell

它配合了另一个基部64编码的件,其在反射组件的帮助下进一步解压和加载。它是.NET二进制文件,类似于前一个。

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

图20:另一个缓冲区
图21:部署有效载荷

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

揭示的有效载荷是Gootkit第一阶段二进制:60AEF1B657E6C701F88FC1AF6F56F93727A8F4AF2D1001DDFA23E016258E333F。此PE是用Delphi编写的。在其资源中,我们可以找到另一个PE(327916A876FA7541F8A1AAD3C2270C2AEC913BC8898273D545DC37A85EF7307F.),由XOR与单个字节混淆。它进一步由第一个加载。

装载机一样的matryoshka玩偶,有一个侧边

此广告系列背后的威胁演员正在使用非常巧妙的装载机,执行避免检测的几个步骤。鉴于在随机命名的密钥下存储有效载荷存储在注册表中,许多安全产品将无法检测和删除它。

然而,这里最大的惊喜是在某些情况下看到这个装载机提供revil ransomware。我们能够在我们的实验室中重现这种流量,但大部分时间我们都看到了Gootkit。

Revil集团对新成员有非常严格的规则,他们必须通过测试并验证为俄语。我们收集的Revil样本中注意到的一件事是赎金说明仍然指向解密。最佳而不是解密者。CC.,表示这可能是较旧的样本。

银行特洛伊木马代表着与勒索软件截然不同的商业模式。后者在过去的几年里非常繁荣,并为罪犯赚取了数百万美元,部分原因是知名受害者支付了巨额赎金。我们已经看到银行恶意软件(即Emotet)变成勒索软件的加载程序,不同的威胁参与者可以专门处理他们最擅长的事情。时间将告诉我们Gootkit的回归到底意味着什么,以及它将如何演变。

检测和保护

必威平台APPMalwarebytes可防止,通过我们的不同保护层检测和删除Gootkit和Revil。由于我们收集妥协指标,我们能够阻止分发站点,以便用户未下载初始加载程序。

我们的行为的防爆层也会通过归档应用程序打开诸如WinRAR或7-Zip等归档应用程序,阻止恶意加载器,而无需任何签名。

图22:脚本执行时的阻塞

如果系统已经感染Gootkit,则Malwarebytes可以通过清理Gootkit隐藏的注必威平台APP册表项来修复感染:

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

最后,我们还检测并停止Revil(SodInokibi)赎金软件:

图24:Revil Ransomware阻止了启发式

妥协指标

妥协的网站下载JavaScript Loader:

docs.anscommerce[.]com
ellsweb [。]网
Entrepasteles [。] supercurro.net
m-uhde [。] de
games.usc [。] edu
Doedlinger-Erdbau []在

第三阶段JavaScript C2S:

Badminton-Dillenburg [。] de
alona [。] org [。] cy
aperosaintmartin [。] com

变型1(Gootkit):

  1. 净装载机[973d0318f9d9aec575db054ac9a99d96ff34121473165b10dfba60552a8beed4]
  2. Delphi PE [60AEF1B657E6C701F88FC1AF6F56F93727A8F4AF2D1001DDFA23E016258E333F]
  3. 存储在资源中的PE[327916A876FA7541F8A1AAD3C2270C2AEC913BC8898273D545DC37A85EF7307F.]

变体2(REVIL):

  1. 净装载机[0E451125EAEBAC5760C2F3F24CC8112345013597FB6D1B7B1C167001B17D3F9F]
  2. Delphi PE [d0e075a9346acbeca7095df2fc5e7c28909961184078e251f737f09b8ef892b6] - 勒索软件
  3. 存储在资源中的PE[a7e363887e9a7cc7f8de630b12005813cb83d6e3fc3980f735df35dccf5a1341] - 助手组件