11月期间,Morphisec在调查一个客户的防范事件时发现了Babuk勒索软件的一个全新变种。Babuk在2021年初首次被发现,当时它开始针对企业进行双重勒索攻击,以窃取和加密数据。这一年晚些时候,一个威胁者在一个讲俄语的黑客论坛上泄露了Babuk的完整源代码。
现在,威胁者将Babuk泄露的源代码与开源规避软件和侧面加载技术结合起来,创造了一个以前未曾见过的变体。在同一个月,趋势科技发布了有关类似勒索软件的细节,错误地将其归于WannaRen,并以目标公司的名字命名该勒索软件。这一次,攻击者使用了一种新的Babuk病毒株,针对一家拥有超过1万台工作站和服务器设备的数十亿美元的制造公司。
攻击者在发动攻击前有两周的网络访问权,进行了充分的侦察。他们破坏了该公司的域控制器,并利用它通过GPO向该组织内的所有设备分发勒索软件。在这个时候,由于正在进行的调查,我们不会公布整个攻击链的细节。相反,我们将深入研究勒索软件本身。
在开始在域中大规模感染之前,攻击者在域控制器中部署了以下恶意软件文件:
·
·
攻击者使用域控制器的NETLOGON文件夹--存放组策略登录脚本文件的共享文件夹。这确保了.bat文件在整个域中执行。
msi安装程序包含四个文件:
· SapphireIMSClient.exe,这个可执行文件是NTSD.exe--一个用于Windows的符号调试器工具。它是一个合法的工具,但容易受到DLL侧面加载的影响:
· dbgeng.dll是主要的恶意软件组件,它冒充NTSD.exe使用的合法DLL,并利用DLL侧面加载漏洞。
· 两个加密的文件sc.ocs和config.ocs
.bat文件将:
· 在注册表中设置一个UAC旁路
· 检查安全解决方案并通过添加新的防火墙规则阻止与它们的通信
· 执行安装程序,负责将文件解压到C:\Users\Public\SapphireIMSClient\文件夹中。
之后,.bat会执行以下命令行:
C:\Users\Public\SapphireIMSClient\SapphireIMSClient.exe
C:\Users\Public\SapphireIMSClient\sc.ocs
C:\Users\Public\SapphireIMSClient\config.ocs
如前所述,NTDS.exe(SapphireIMSClient.exe)是一个合法的可执行文件,它加载了一个名为dbgeng.dll的已知核心DLL,而没有验证其路径。攻击者在同一目录下投放了同名的恶意DLL。这导致了合法的微软签名进程的执行。攻击者之前也在使用有漏洞的Word Office应用程序。我们目前的假设是,他们的目标是微软签名的应用程序,因为这大大降低了机器学习的可疑分类阈值。(没有厂商想杀死微软的进程)。
dbgeng.dll中的恶意代码有两个职责:
1、将.OCS文件读入内存
A) sc.ocs 一个加密的shellcod--最终有效载荷的实际反射性装载器
B) config.OCS 一个加密的二进制文件--最终的有效载荷
2、执行下一个阶段
第一个任务是在一个新的线程中完成的,如以下片段所示:
该恶意软件从微软应用程序执行期间交付的命令行参数中读取.OCS文件路径,并对内容进行解密。
虽然这种逻辑在网上广为流传,但DLL中的代码与开源项目:pe-loader
(https://github.com/polycone/pe-loader/blob/master/loader/src/system/system.cpp)中的代码有高度的相似性。
如前所述,执行过程分为两个例程。第一个,由上图表示,位于DLL加载例程中,负责读取.OCS文件并解密sc.OCS文件(即shellcode)。第二个例程是DebugCreate导出的函数。它以一个长的 "Sleep "开始,等待读取任务结束,然后再继续。
在DebugCreate中,恶意软件将保护权限调整为RWX,解密有效载荷,并将执行转移到解密的shellcode。
该shellcode作为一个反射性加载器。该代码是由Stephen Fewer(https://github.com/stephenfewer)首次发布的,但我们注意到了修改。原始技术有几十种实现和修改,但深入挖掘后发现,攻击者使用的shellcode与以下GitHub项目之间有很高的相关性:malisal/loaders/pe.c (https://github.com/malisal/loaders/blob/master/pe/pe.c)
攻击者编辑了一些函数,如Windows API散列函数,但整体结构和代码流是相同的。看起来攻击者从这个开源项目中获得了 "灵感"。
最后付费:修改后的Babuk勒索软件
最后的有效载荷是由去年泄露的源代码编译的Babuk勒索软件。
Hildaboo/BabukRansomwareSourceCode (https://github.com/Hildaboo/BabukRansomwareSourceCode)
有了以下要停止的进程列表:
"sql.exe" "dbeng50.exe"
"oracle.exe" "sqbcoreservice.exe"
"ocssd.exe" "excel.exe"
"dbsnmp.exe" "infopath.exe"
"synctime.exe" "msaccess.exe"
"agntsvc.exe" "mspub.exe"
"isqlplussvc.exe" "onenote.exe"
"xfssvccon.exe" "outlook.exe"
"mydesktopservice.exe" "powerpnt.exe"
"ocautoupds.exe" "steam.exe"
"encsvc.exe" "thebat.exe"
"firefox.exe" "thunderbird.exe"
"tbirdconfig.exe" "visio.exe"
"mydesktopqos.exe" "winword.exe"
"ocomm.exe" "wordpad.exe"
"dbeng50.exe" "notepad.exe"
· 代码结构:整体执行流程和代码结构与Babuk勒索软件所呈现的结构相关。
· 相同的加密算法:任何勒索软件最具有特征的功能之一是加密方法。我们验证了我们案例中的有效载荷与Babuk源代码中的有效载荷相匹配。
· 配置:原始和变种的配置和使用是重叠的。
下面的截图显示了某些代码块在源码和反编译中的匹配情况。
注意:编译器在某些情况下会发挥它的魔力,这可能导致不同的代码定位和代码减少。
我们注意到影子拷贝的删除程序与源代码中的不同。
Babuk勒索软件
泄露的Babuk源代码显示,通过创建新的cmd.exe进程删除的影子副本将执行vssadmin.exe工具:
修改后的Babuk勒索软件:最终使用的有效载荷
恶意软件通过使用执行WMI查询的COM对象来遍历可用的影子副本。下面的代码片段显示了恶意软件如何执行WMI查询以获得每个影子副本的ID,然后使用COM,按ID删除每个影子副本。
值得注意的是,BlackMatter和Conti勒索软件等恶意软件也表现出类似的行为。
现代NGAV、EPP和EDR/XDR对运行时的可见性有限。它们通常被限制在使用钩子和/或Windows的事件跟踪(ETW)。假设钩子和ETW没有被篡改,它们只是应用程序生命周期内执行活动的沧海一粟。这意味着如果一个应用程序被成功加载,大多数时候安全监控解决方案将对应用程序的执行保持盲目,直到对系统的重大影响可见。
应用程序的虚拟化运行时地址空间要比单个文件大得多。因此,在应用程序执行期间应用传统的扫描方法是一场失败的战斗。此外,这种扫描大大降低了可用性,必须尽可能地减少。
攻击者知道监控和扫描解决方案的这些弱点,并努力在应用程序的内存中保持隐蔽。这适用于这个新的Babuk变体,它实现了侧面加载,在合法的应用程序内执行,并实现了反射性加载功能以隐藏其余的执行步骤。攻击者对其初始访问和横向移动步骤实施类似的规避技术,我们将在下一篇博客中介绍。
由于这些威胁具有高度的规避性,而且主要存在于设备内存中,任何级别的NGAV或最佳EDR都无法可靠地检测和阻止它们。Morphisec革命性的、获得专利的移动目标防御(MTD)技术是一个行业领先的解决方案,可以阻止无法检测到的攻击。它对内存攻击提供了一种超轻量级、高度有效的防御。
MTD以不可预测的方式改变运行时的内存环境,以隐藏应用程序和操作系统的目标,不让对手发现。这导致了攻击面的大幅减少,使目标无法找到。MTD在不影响可用性的情况下提出诱饵来欺骗和诱捕威胁。它阻止并暴露了依赖内存中动态执行的隐蔽性的攻击者。
通过在运行期间对设备内存进行变形,Morphisec的MTD增强了业现有的安全堆栈,以阻止和归因于无文件攻击,否则就不可能检测到。
该公司使用下一代反病毒(NGAV)解决方案和Morphisec Guard来保护他们的端点。勒索软件躲过了该公司端点上的NGAV,但Morphisec的移动目标防御(MTD)技术阻止了攻击,防止了任何损害。
市场领先的EDR,如CrowdStrike和SentinelOne,在攻击发生时无法阻止新的Babuk变体。SentinelOne更新了其签名,在赎金软件被上传到一个开放资源库72小时后检测到加密的壳码参数,CrowdStrike现在也更新了其检测。
正如Babuk勒索软件的这个新变种所显示的,MTD对未知和内存中的攻击提供了无与伦比的保护。