原文链接:SQL Brute Force Leads to BlueSky Ransomware
译者:知道创宇404实验室翻译组
2022 年 12 月,我们观察到 MSSQL 服务器遭受入侵,最终导致BlueSky 勒索软件出现。BlueSky 勒索软件于 2022 年 6 月首次被发现,其代码与Conti 和 Babuk勒索软件有联系。
虽然其他报告提出可以通过下载恶意软件获得初始访问权限,但本文中的黑客主要通过 MSSQL 暴力攻击方式来获得访问权限,然后利用 Cobalt Strike 和 Tor2Mine 执行渗透活动。黑客在访问网络的一小时内全网部署了BlueSky勒索软件。
2022 年 12 月,我们观察到一系列针对 MSSQL 服务器的活动。该活动首先对面向互联网的服务器上的 MS SQL“sa”(系统管理员)帐户进行暴力破解尝试。在成功破解密码后,黑客在 SQL 服务器上启用了xp_cmdshell
。xp_cmdshell
允许有系统管理员权限的用户在主机上执行shell命令。
利用xp_cmdshell
,黑客首先使用xp_cmdshell
在 SQL 服务器上执行 PowerShell 命令。该命令包含经过base64 编码内容,执行后会建立与 Cobalt Strike 命令和控制服务器的连接。此活动之后立即注入合法进程 winlogon,然后注入的进程会生成 PowerShell 和 cmd,以使用SMBexec执行 SMB 扫描和发现。
然后,PowerShell会话被发现与一个Tor2Mine的中继服务器建立连接。接下来执行一个 PowerShell 脚本,该脚本执行各种操作(如检查活动用户的权限、禁用解决方案以及删除名为 java.exe 的挖矿负载)。Tor2Mine是一个基于 XMRigCC 的门罗币挖矿活动。根据用户的权限,该脚本还执行计划任务和 Windows 服务的创建,以维持在主机上的持久性。
初始访问大约 15 分钟后,黑客通过使用远程服务创建向域控制器和文件共享横向移动。这些服务用于执行相同的 PowerShell 命令、下载并执行 Tor2Mine 恶意软件。在建立对其中一台域控制器的访问权限后,黑客执行了类似缺陷主机上的活动。
初始访问大约 30 分钟后,BlueSky 勒索软件二进制文件被放置并执行在访问点上。执行按预期进行,导致勒索软件通过 SMB 传播到网络中的所有设备。本例中勒索软件的攻击时间为 32 分钟。
Cobalt Strike
Cobalt Strike的服务器于 2022 年 12 月 16 日首次被侦测,该服务器继续保持活跃状态直至 2023 年 1 月 17 日。之后,在2023 年 4 月 6 日至 4 月 15 日期间,对该服务器的活动再次进行了观测。
Tor2Mine
据观察,本事件中涉及的 PowerShell 脚本以及 Tor2Mine 服务器的基础设施在 2023 年 5 月被重复使用,PaperCut NG CVE-2023-27350 漏洞作为初始访问源,但在此次入侵中没有检测到勒索软件。
黑客通过暴力破解获得用户初始访问权限,其主要针对系统管理员(“sa”)帐户。在入侵期间,我们观察到在成功登录前有超过 10,000 次失败日志(事件ID:18456)。
登录成功
在下一个攻击阶段,黑客通过扩展 SQL 存储过程 ( xp_cmdshell ) 建立了命令 shell。此过程允许直接向 Windows 命令 shell 发出操作系统命令。为此,他们启用了 MSSQL 配置功能:
然后,黑客执行了 Cobalt Strike 载荷和 PowerShell 脚本。执行流程如下图所示:
第一个 PowerShell 脚本执行了下载 Cobalt Strike 载荷命令。
接下来是第二次 PowerShell 执行
然后与以下 Tor2Mine 服务器和 URI 建立连接
Tor2Mine 使用 PowerShell 脚本checking.ps1 来执行各种操作。该脚本首先在前几行设置一个名为 osver 的变量,用来分别检查活动用户是否为管理员和操作系统的版本。
然后,它尝试从 Tor2Mine 服务器获取名为 kallen.ps1 的附加脚本,这是 mimikatz 的 PowerShell 版本。
它还包含一个名为 StopAV 的功能,用于尝试禁用杀毒软件解决方案(本文中为 MalwareBytes、Sophos 和 Windows Defender。)。
根据 $priv
变量的结果,脚本有两条路径:具有特权的PrivTrue()
和非特权的PrivFalse()
。
如果用户是特权用户,它首先检查操作系统架构,然后下载合适的矿工(本例中为 x64)并将其安装为 java.exe,位于C:\ProgramData\Oracle\Java
中目录。它还安装名为 WinRing0x64.sys 的驱动程序。
该函数还创建多个计划任务和服务,其中引用了 Tor2Mine 矿工 java.exe、编码的 PowerShell 命令和托管在 Tor2Mine 服务器上的 .hta 文件。
对于非特权函数PrivFalse()
,它执行批处理脚本PrivFalse.bat
作为计划任务,并设置 schtasks,如PrivTrue()
函数所示。
在最后一部分,一个名为 del.ps1 的脚本作为计划任务被下载并在主机上执行。del.ps1 脚本将在防御规避部分进行了进一步的探讨。
根据 $priv 变量的输出,执行流程如下:
由于对 mimi 函数进行了注释,我们没有观察到与 kallen.ps1 脚本相关的任何功能。
攻击者在最初失陷主机和一台域控服务器上通过创建计划任务和系统服务进行权限维持,这些任务和服务引用了最初失陷主机和Tor2Mine服务器上放置的文件。
黑客通过 CreateRemoteThread 将代码注入合法进程 winlogon.exe,可以使用 Sysmon 事件 ID 8 检测到该代码。
在入侵过程中,黑客部署了 XMrig 挖矿程序,该挖矿程序加载了驱动程序WinRing0。这个驱动程序被部署以协助挖矿程序的运行,自版本5.3.0及以上一直在使用。
使用 Set-MpPreference cmdlet 在入侵的零号主机和一个域控上禁用了 Windows Defender 的实时监控功能:
PowerShell 脚本checking.ps1 在执行部分中进行了解释,其中包含禁用 AV 的其他方法,包括注册表修改和服务禁用。
名为 del.ps1 的 PowerShell 脚本尝试终止系统实用程序,例如 Process Explorer、任务管理器、进程监视器和 Daphne 任务管理器。
在脚本中,checking.ps1
黑客在部署 Tor2Mine 的主机上创建了 16 个不同的任务。这些任务的命名方式是为了尝试与主机上的各种 Windows 任务融为一体:
\Microsoft\Windows\MUI\LPupdate
\Microsoft\Windows\RamDiagnostic\Error Diagnostic
\Microsoft\Windows\.NET Framework\.NET Framework Cache Optimization Files-S-3-5-21-2236678156-433529325-2142214268-1138
\Microsoft\Windows\.NET Framework\.NET Framework Cache Optimization Files-S-3-5-21-2236678155-433529325-2142214968-1138
\Microsoft\Windows\.NET Framework\.NET Framework Cache Optimization"
\Microsoft\Windows\Registry\RegBackup
\Microsoft\Windows\DiskCleanup\SlientDefragDisks
\Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.50319 Critical
\Microsoft\Windows\EDP\EDP App Update Cache
\Microsoft\Windows\EDP\EDP App Lock Task
\Microsoft\Windows\UPnP\UPnPClient Task
\Microsoft\Windows\UPnP\UPnPHost
\Microsoft\Windows\Shell\WinShell
\Microsoft\Windows\Shell\WindowsShellUpdate
\Microsoft\Windows\Bluetooth\UpdateDeviceTask
\Microsoft\Windows\.NET Framework\.NET Framework Cache Optimization
Tor2Mine用于访问LSASS内存空间,授予的访问权限为0x1010。
在零号主机,我们观察到凭证转储应用程序Invoke-PowerDump 的执行情况。
在入侵过程中,我们从零号主机观察到端口(端口 445)发现的活动,我们将此归因于 PowerShell 命令 Invoke-SMBExec 的调用。这可能是作为基于观察到的其他 PowerShell 模块Invoke-TheHash框架的一部分执行的。
从网络角度查看流量,我们注意到活动通过 OpenSCManagerW 操作对 svcctl 端点和命名 pipe \pipe\ntsvc
发起了 DCE/RPC 调用。
这似乎是他们分析网络布局和远程主机的方式。
我们观察到黑客从零号主机的 Tor2Mine PowerShell 进程中运行 whoami 命令。
"C:\Windows\system32\whoami.exe" /user
使用远程服务创建横向移动到域控制器和文件共享。模式%COMSPEC% /C “cmd /c powershell.exe”
与 Cobalt Strike psexec_psh
跳转模块关联。
解码该命令,我们可以看到与零号主机观察到的相同的 PowerShell 下载和执行命令。十六进制值 0x53611451 对应的IP 地址是 83.97.20[.]81,这是 Tor2Mine 恶意软件的命令和控制服务器。
Tor2Mine 服务器:
{
destination: { [-]
address: 83.97.20.81
as: { [-]
number: 9009
organization: { [-]
name: M247 Europe SRL
}
}
geo: { [-]
city_name: Bucharest
continent_name: Europe
country_iso_code: RO
country_name: Romania
location: { [+]
}
region_iso_code: RO-B
region_name: Bucuresti
}
ip: 83.97.20.81
port: 443
}
network.direction: outbound
tls: { [-]
cipher: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
client: { [-]
ja3: c12f54a3f91dc7bafd92cb59fe009a35
}
curve: x25519
established: true
resumed: false
server: { [-]
ja3s: ec74a5c51106f0419184d0dd08fb05bc
}
version: 1.2
version_protocol: tls
}
Cobalt Strike C2:
IP地址:5.188.86.237
观察到与以下 URI 的连接:
Cobalt Strike 服务器配置:
{
"beacontype": [
"HTTPS"
],
"sleeptime": 120000,
"jitter": 12,
"maxgetsize": 1398924,
"spawnto": "AAAAAAAAAAAAAAAAAAAAAA==",
"license_id": 1580103824,
"cfg_caution": false,
"kill_date": null,
"server": {
"hostname": "5.188.86.237",
"port": 443,
"publickey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnCZHWnYFqYB/6gJdkc4MPDTtBJ20nkEAd3tsY4tPKs8MV4yIjJb5CtlrbKHjzP1oD/1AQsj6EKlEMFIKtakLx5+VybrMYE+dDdkDteHmVX0AeFyw001FyQVlt1B+OSNPRscKI5sh1L/ZdwnrMy6S6nNbQ5N5hls6k2kgNO5nQ7QIDAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"host_header": "",
"useragent_header": null,
"http-get": {
"uri": "/functionalStatus/2JYbAmfY5gYNj7UrgAte5p1jXx2V",
"verb": "GET",
"client": {
"headers": null,
"metadata": null
},
"server": {
"output": [
"print",
"append 8 characters",
"append 8 characters",
"append 10 characters",
"append 6 characters",
"append 11 characters",
"append 33 characters",
"append 69 characters",
"append 55 characters",
"append 67 characters",
"append 27 characters",
"append 15 characters",
"append 25 characters",
"append 32 characters",
"append 72 characters",
"prepend 16 characters",
"prepend 17 characters",
"prepend 11 characters",
"prepend 31 characters",
"prepend 80 characters",
"prepend 60 characters",
"prepend 54 characters",
"prepend 69 characters",
"prepend 38 characters",
"prepend 8 characters",
"base64url"
]
}
},
"http-post": {
"uri": "/rest/2/meetings2JYbAmfY5gYNj7UrgAte5p1jXx2V",
"verb": "GET",
"client": {
"headers": null,
"id": null,
"output": null
}
},
"tcp_frame_header": "AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"crypto_scheme": 0,
"proxy": {
"type": null,
"username": null,
"password": null,
"behavior": "Use IE settings"
},
"http_post_chunk": 96,
"uses_cookies": false,
"post-ex": {
"spawnto_x86": "%windir%\\syswow64\\auditpol.exe",
"spawnto_x64": "%windir%\\sysnative\\auditpol.exe"
},
"process-inject": {
"allocator": "NtMapViewOfSection",
"execute": [
"CreateThread 'ntdll.dll!RtlUserThreadStart'",
"NtQueueApcThread-s",
"SetThreadContext",
"CreateRemoteThread",
"CreateThread 'kernel32.dll!LoadLibraryA'",
"RtlCreateUserThread"
],
"min_alloc": 40263,
"startrwx": true,
"stub": "IiuPJ9vfuo3dVZ7son6mSA==",
"transform-x86": [
"prepend '\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90'"
],
"transform-x64": [
"prepend '\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90'"
],
"userwx": false
},
"dns-beacon": {
"dns_idle": null,
"dns_sleep": null,
"maxdns": null,
"beacon": null,
"get_A": null,
"get_AAAA": null,
"get_TXT": null,
"put_metadata": null,
"put_output": null
},
"pipename": null,
"smb_frame_header": "AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"stage": {
"cleanup": true
},
"ssh": {
"hostname": null,
"port": null,
"username": null,
"password": null,
"privatekey": null
}
}
BlueSky勒索软件的二进制命名为 vmware.exe 被释放到零号主机,在执行后导致了全网范围的勒索。勒索软件使用SMB通过445端口连接到其他主机加密文件实现勒索:
这些文件被重命名为文件扩展名 .bluesky,名为 #DECRYPT FILES BLUESKY#.txt 的勒索赎金通知被被放置在主机,打开即会显示内容。
在零号主机务器上,加密的时间可以从 MSSQL 服务在执行 vmware.exe 后停止运行这一点上看出:
整个入侵过程从初始访问开始只持续了大约 30 分钟,期间发现有限,未观察到任何数据泄露。
hxxp://0x53611451/win/clocal
hxxp://qlqd5zqefmkcr34a[.]onion[.]sh/win/checking[.]hta
hxxps://asq[.]d6shiiwz[.]pw/win/hssl/d6[.]hta
hxxp://83[.]97[.]20[.]81/win/checking[.]hta
hxxp://83[.]97[.]20[.]81/win/update[.]hta
hxxps://asd[.]s7610rir[.]pw/win/checking[.]hta
hxxps://asq[.]r77vh0[.]pw/win/hssl/r7[.]hta
hxxp://asq[.]r77vh0[.]pw/win/checking[.]hta
hxxp://5[.]188[.]86[.]237/vmware[.]exe
java.exe
md5: 9e88c287eb376f3c319a5cb13f980d36
sha1: 501af977080d56a55ff0aeba66b58e7f3d1404ea
sha256: 74b6d14e35ff51fe47e169e76b4732b9f157cd7e537a2ca587c58dbdb15c624f
vmware.exe
md5: 7b68bc3dd393c2e5273f180e361f178a
sha1: 07610f11d3b8ccb7b60cc8ad033dda6c7d3940c4
sha256: d4f4069b1c40a5b27ba0bc15c09dceb7035d054a022bb5d558850edfba0b9534
WinRing0x64.sys
md5: 0c0195c48b6b8582fa6f6373032118da
sha1: d25340ae8e92a6d29f599fef426a2bc1b5217299
sha256: 11bd2c9f9e2397c9a16e0990e4ed2cf0679498fe0fd418a3dfdac60b5c160ee5
del.ps1
md5: bfd36fd6a20ccd39f5c3bb64a5c5dd8b
sha1: e938646862477e598fcda20d0b7551863f8b651c
sha256: 35b95496b243541d5ad3667f4aabe2ed00066ba8b69b82f10dd1186872ce4be2
checking.ps1
md5: 08bdf000031bbad1a836381f73adace5
sha1: 3dff4ae3c421c9143978f8fc9499dca4aed0eac5
sha256: f955eeb3a464685eaac96744964134e49e849a03fc910454faaff2109c378b0b
Invoke-PowerDump.ps1
md5: 42a80cc2333b612b63a859f17474c9af
sha1: e7be97fb2200eb99805e39513304739a7a28b17e
sha256: 3b463c94b52414cfaad61ecdac64ca84eaea1ab4be69f75834aaa7701ab5e7d0
ET HUNTING SUSPICIOUS Dotted Quad Host MZ Response
ET INFO Executable Download from dotted-quad Host
ET INFO Executable Retrieved With Minimal HTTP Headers - Potential Second Stage Download
ET INFO PowerShell Hidden Window Command Common In Powershell Stagers M2
ET MALWARE Successful Cobalt Strike Shellcode Download (x64) M2
ET POLICY PE EXE or DLL Windows file download HTTP
ET HUNTING Generic Powershell DownloadFile Command
ET HUNTING Generic Powershell DownloadString Command
ET HUNTING Generic Powershell Launching Hidden Window
ET HUNTING SUSPICIOUS Dotted Quad Host MZ Response
ET INFO Executable Download from dotted-quad Host
ET INFO Executable Retrieved With Minimal HTTP Headers - Potential Second Stage Download
ET INFO PS1 Powershell File Request
ET INFO PowerShell Base64 Encoded Content Command Common In Powershell Stagers M1
ET INFO PowerShell Base64 Encoded Content Command Common In Powershell Stagers M2
ET INFO PowerShell DownloadFile Command Common In Powershell Stagers
ET INFO PowerShell DownloadString Command Common In Powershell Stagers
ET INFO PowerShell Hidden Window Command Common In Powershell Stagers M2
ET INFO PowerShell NoProfile Command Received In Powershell Stagers
ET INFO PowerShell NonInteractive Command Common In Powershell Stagers
ET INFO Powershell Base64 Decode Command Inbound
ET MALWARE JS/Nemucod requesting EXE payload 2016-02-01
ET MALWARE JS/Nemucod.M.gen downloading EXE payload
ETPRO MALWARE Likely Evil Request for Invoke-Mimikatz
ETPRO MALWARE PS/Deathhm Script Inbound via HTTP
ET DNS Query to a *.pw domain - Likely Hostile
ET SCAN Behavioral Unusual Port 445 traffic Potential Scan or Infection
在detection.fyi或 sigmasearchengine.com进行搜索
Sigma Repo:
Suspicious Scheduled Task Creation - 3a734d25-df5c-4b99-8034-af1ddb5883a4
PowerShell Scripts Installed as Services - a2e5019d-a658-4c6a-92bf-7197b54e2cae
Potentially Suspicious AccessMask Requested From LSASS - 4a1b6da0-d94f-4fc3-98fc-2d9cb9e5ee76
Powershell Defender Disable Scan Feature - 1ec65a5f-9473-4f12-97da-622044d6df21
Windows Defender Exclusions Added - 1321dc4e-a1fe-481d-a016-52c45f0c8b4f
CobaltStrike Service Installations System - 5a105d34-05fc-401e-8553-272b45c1522d
CobaltStrike Service Installations in Registry - 61a7697c-cb79-42a8-a2ff-5f0cdfae0130
Suspicious Child Process Of SQL Server - 869b9ca7-9ea2-4a5a-8325-e80e62f75445
Whoami.EXE Execution Anomaly - 8de1cbe8-d6f5-496d-8237-5f44a721c7a0
Malicious PowerShell Commandlets PoshModule - 7d0d0329-0ef1-4e84-a9f5-49500f9d7c6c
Malicious PowerShell Commandlets ScriptBlock - 89819aa4-bbd6-46bc-88ec-c7f7fe30efa6
PowerShell Base64 Encoded IEX Cmdlet - 88f680b8-070e-402c-ae11-d2914f2257f1
MSSQL Server Failed Logon - 218d2855-2bba-4f61-9c85-81d0ea63ac71
MSSQL XPCmdshell Suspicious Execution - 7f103213-a04e-4d59-8261-213dddf22314
MSSQL XPCmdshell Option Change - d08dd86f-681e-4a00-a92c-1db218754417
MSSQL Server Failed Logon From External Network - ebfe73c2-5bc9-4ed9-aaa8-8b54b2b4777d
Vulnerable WinRing0 Driver Load - 1a42dfa6-6cb2-4df9-9b48-295be477e835
https://github.com/The-DFIR-Report/Yara-Rules/blob/main/19208/19208.yar
Valid Accounts - T1078 Brute Force - T1110 Scheduled Task - T1053.005 Windows Command Shell - T1059.003 PowerShell - T1059.001 Disable or Modify Tools - T1562.001 Process Injection - T1055 LSASS Memory - T1003.001 System Owner/User Discovery - T1033Network Share Discovery - T1135Data Encrypted for Impact - T1486SMB/Windows Admin Shares - T1021.002Web Protocols - T1071.001Service Execution - T1569.002Modify Registry - T1112Obfuscated Files or Information - T1027Windows Service - T1543.003Masquerade Task or Service - T1036.004
本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/3089/