【DFIR报告翻译】一箭双雕,SQL爆破成功后不仅挖矿还勒索
2023-12-7 18:1:33 Author: Desync InfoSec(查看原文) 阅读量:9 收藏

欢迎访问语雀知识库,获取最佳阅读体验:
https://www.yuque.com/safestplace/zh4qn2/sg11huyoxpt5xgyf
摘要

在2022年12月,我们处理了一起从互联网暴露的MSSQL数据库进行边界突破,最终导致BlueSky勒索软件中毒的案件。BlueSky勒索软件的攻击活动最初在2022年6月被发现(https://twitter.com/Kangxiaopao/status/1541627210611978240)并且研究人员表示BlueSky勒索软件的代码与Conti和Babuk勒索软件有相关性(https://unit42.paloaltonetworks.com/bluesky-ransomware/)。

在我们的众多报告中,大多数攻击的边界突破都是通过钓鱼攻击投递恶意软件实现的(https://x.com/1ZRR4H/status/1543339315756994563?s=20)。但在本次案例中,攻击团伙是通过对MSSQL进行暴力破解攻击获得了访问权限。然后,他们利用Cobalt Strike和Tor2Mine执行了后渗透活动。攻击团伙在突破网络边界后的一小时内,在全网范围部署了BlueSky勒索软件。

技术总结

这是我们在2022年12月处理的一起入侵案例。攻击始于对一台面向互联网的服务器上MS SQL数据库的“sa”(系统管理员)账户进行暴力密码尝试。成功爆破出密码后,攻击团伙启用了SQL服务器上的“xp_cmdshell”功能。“xp_cmdshell”允许具有sysadmin特权的用户在主机上执行shell命令。

利用“xp_cmdshell”功能,攻击团伙首先在SQL服务器上执行了一个PowerShell命令。该命令包含base64编码的内容,执行后与Cobalt Strike命令和控制服务器建立连接。紧随其后的是注入到合法进程winlogon中。被注入的进程然后生成了PowerShell和cmd,以使用SMBexec执行SMB扫描和探测。

随后,PowerShell会话连接到一个Tor2Mine stager服务器。然后运行了一个PowerShell脚本,执行了各种操作,如检查活动用户的特权、禁用防病毒软件,并释放了名为java.exe的挖矿程序。Tor2Mine是基于XMRigCC的Monero挖矿程序。根据用户的权限,该脚本还创建了计划任务和Windows服务,以在主机上进行权限维持。

大约在边界突破后的15分钟,攻击团伙通过创建远程服务横向移动,向AD域控服务器集群和文件共享发起攻击。这些服务用于执行相同的PowerShell命令,下载并执行Tor2Mine恶意软件。在获得对其中一个AD域控服务器的访问权限后,攻击团伙执行了与在最初的失陷主机类似的攻击活动。

在边界突破后大约30分钟,BlueSky勒索软件的二进制文件被释放并在最初的失陷主机上执行。执行效果符合预期,导致该勒索软件通过SMB传播到网络中的所有设备。在此案例中,勒索软件传播的时间为32分钟。

攻击者画像

Cobalt Strike

在这次入侵中观察到的Cobalt Strike服务器首次出现在2022年12月16日,一直保持活跃状态直至2023年1月17日。我们随后看到该服务器在2023年4月6日至4月15日期间再次出现。这些数据是通过The DFIR Report的威胁情报跟踪服务提供的。

Tor2Mine

本次攻击中出现的PowerShell脚本和Tor2Mine服务器在2023年5月的一次入侵中又被发现,2023年5月的入侵中,攻击者边界突破使用了CVE-2023-27350漏洞,但最终并没有部署任何勒索软件。订阅了THE DFIR Report情报的所有用户都可以在21132 (c39d59d8-8bae-49f5-8b29-de5c13b61899)时间中获取所有相关可用情报。

钻石模型

入侵时间线

入侵路径分析
01
边界突破

攻击者通过暴力破解MSSQL数据库的sa管理员用户密码获取了网络边界的一台服务器权限。在日志中我们可以看到在登录成功前存在1万次以上的登陆失败日志(Event ID:18456)。

登录成功:

02
代码执行

在下一阶段的攻击中,攻击者通过扩展的SQL存储过程(xp_cmdshell)建立了一个命令shell。这个过程允许您直接向Windows命令shell发出操作系统命令。为此,他们启用了MSSQL配置的以下功能:

随后,攻击者执行了一个Cobalt Strike的beacon和一个PowerShell脚本,Sophos先前已经确认在部署Tor2Mine恶意软件的活动中使用过该PowerShell脚本。

随后攻击者加载了Cobalt Strike的载荷和PowerShell脚本,这些行为与 Sophos纰漏的Tor2Mine恶意软件攻击活动一致。下面是整个执行流程图:

第一个执行的PowerShell脚本用于下载Cobalt Strike载荷:

第二个PowerShell脚本的内容如下:

失陷主机与Tor2Mine服务器建立的连接记录如下:

Tor2Mine使用一个PowerShell脚本checking.ps1来执行各种操作。该脚本在前几行首先设置了名为$priv和$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”脚本,并且设置了一个和“PrivTrue()”中一样的计划任务:

在最后一部分下载一个名为del.ps1的脚本并作为计划任务在主机上执行。del.ps1脚本内容我们在防御规避部分进一步探讨。

根据$priv变量的输出,执行流程如下:

由于mimi函数被注释,我们没有观察到与kallen.ps1脚本相关的任何功能。

03
权限维持

攻击者在最初失陷主机和一台域控服务器上通过创建计划任务和系统服务进行权限维持,这些任务和服务引用了最初失陷主机和Tor2Mine服务器上放置的文件。

04
权限提升
我们发现攻击者通过CreateRemoteThread向合法进程winlogon.exe注入代码,这可以通过Sysmon事件ID 8进行检测。

在入侵期间,攻击者部署了XMrig挖矿程序,该程序加载了驱动程序WinRing0。这个驱动程序被部署以协助挖矿程序的运行,至少自版本5.3.0以来一直在使用。










05
防御规避

使用 Set-MpPreference cmdlet在入侵的零号主机和一个域控上禁用了Windows Defender的实时监控功能:

在Execution部分介绍的PowerShell脚本checking.ps1, 包含禁用AV的其他方法,包括注册表修改以及服务禁用。

名为del.ps1的脚本尝试结束系统进程,如Process Explorer, Task Manager, Process Monitor, 以及Daphne Task Manager。

在部署了Tor2Mine的主机上,威胁活动者使用checking.ps1脚本创建了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









06
凭证访问

Tor2Mine被用来访问LSASS的内存空间,被授予的访问权限为0x1010。

在零号主机,我们发现执行了凭据转储工具Invoke-PowerDump(https://github.com/EmpireProject/Empire/blob/master/data/module_source/credentials/Invoke-PowerDump.ps1):

07
内网探测

在入侵过程中,我们从零号主机观察到端口(445 端口)发现的活动我们将其归因于调用了 PowerShell 命令 Invoke-SMBExec。根据观察到的其他 PowerShell 模块,这很可能是作为 Invoke-TheHash (https://github.com/Kevin-Robertson/Invoke-TheHash/blob/master/Invoke-TheHash.psm1) 框架的一部分执行的。

从网络角度对流量进行分析,我们观察到使用 OpenSCManagerW操作对 svcctl 终端和命名管道 \pipe\ntsvcs 进行 DCE\RPC 调用的活动。

这似乎就是他们分析网络结构和远程主机的方法。

在零号主机观察到威胁行为者通过 Tor2Mine PowerShell 进程运行 whoami。

"C:\Windows\system32\whoami.exe" /user
08
横向移动

威胁行为者利用远程服务创建功能向域控制器和文件共享横向移动。模式"%COMSPEC% /C “cmd /c powershell.exe" 和 Cobalt Strike的 "psexec_psh"模块关联:

解码命令后,我们可以看到与在零号主机观察到的相同的 PowerShell 下载和执行过程。十六进制的值0x53611451对应Tor2Mine恶意程序的C2 IP 83.97.20[.]81:

09
命令和控制(C2)

Tor2Mine Server:

{   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
观察到连接了如下URL:

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    }}


















10
影响 (Impact)

BlueSky勒索软件的二进制命名为vmware.exe被释放到零号主机,在执行后导致了全网范围的勒索勒索软件使用SMB通过445端口连接到其他主机加密文件实现勒索:

文件被重命名为.bluesky后缀,一个名为 # DECRYPT FILES BLUESKY #.txt 的赎金说明文件被投放到主机上,打开后就会显示赎金说明。

在零号主机,加密时间可以通过执行vmware.exe后MSSQL停止运行的时间获得:

初始访问后的整个入侵过程只持续了 30 分钟左右,攻击者只执行了有限的内网探测操作,没有观察到有数据提取的操作。

IoCs

Atomic

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

Computed

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 

Detections

Network

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

Sigma

Search rules on detection.fyi or 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

Yara

https://github.com/The-DFIR-Report/Yara-Rules/blob/main/19208/19208.yar

MITRE

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 - T1033
Network Share Discovery - T1135
Data Encrypted for Impact - T1486
SMB/Windows Admin Shares - T1021.002
Web Protocols - T1071.001
Service Execution - T1569.002
Modify Registry - T1112
Obfuscated Files or Information - T1027
Windows Service - T1543.003
Masquerade Task or Service - T1036.004

文章来源: http://mp.weixin.qq.com/s?__biz=MzkzMDE3ODc1Mw==&mid=2247487144&idx=1&sn=8df3bab97837370505611579d63412b6&chksm=c27f7d06f508f4101fbc77cbf2ddbe311d7322444dd7fe2e9b341ca323e055efe13352aa9524&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh