GrimResource - 用于初始访问和规避的 Microsoft 管理控制台
概述
在微软默认禁用互联网文档的 Office 宏后,JavaScript、MSI 文件、LNK 对象和 ISO 等其他感染媒介的流行度激增。然而,这些其他技术受到防御者的严格审查,被发现的可能性很高。成熟的攻击者试图利用新的和未公开的感染媒介来获取访问权限,同时逃避防御。最近的一个例子是朝鲜参与者在 MSC 文件中使用了一种新的命令执行技术。
Elastic 研究人员发现了一种新的感染技术,也利用了 MSC 文件,我们将其称为 GrimResource。它允许攻击者在mmc.exe用户点击特制的 MSC 文件后获得完整的代码执行权。利用 GrimResource 的样本于 6 月 6 日首次上传到 VirusTotal。
关键要点
Elastic Security 研究人员发现了一种新颖的野外代码执行技术,利用特制的 MSC 文件(称为 GrimResource)
GrimResource 允许攻击者在 Microsoft 管理控制台 () 中执行任意代码,mmc.exe同时只发出很少的安全警告,是获取初始访问权限和逃避防御的理想选择
Elastic 正在提供技术分析和检测指导,以便社区能够保护自己
分析
GrimResource技术的关键是利用库中存在的旧XSS 漏洞apds.dll。通过在精心设计的 MSC 文件的相应 StringTable 部分中添加对易受攻击的 APDS 资源的引用,攻击者可以在上下文中执行任意 javascript mmc.exe。攻击者可以将此技术与DotNetToJScript结合使用,以实现任意代码执行。
在 StringTable 中引用 apds.dll 重定向
在撰写本文时,在野外发现的样本在VirusTotal中有 0 个静态检测。
VirusTotal 结果
该样本以 transformNode 混淆技术开始,该技术在最近但不相关的宏样本中也曾出现过。这有助于规避 ActiveX 安全警告。
transformNode 规避和混淆技术
这会导致嵌入的 VBScript 被混淆,重构如下:
模糊化的 VBScript
VBScript 在一系列环境变量中设置目标有效负载,然后利用DotNetToJs技术执行嵌入式 .NET 加载器。我们将此组件命名为 PASTALOADER,并可能在未来发布对此特定工具的更多分析。
设置目标有效负载环境变量
DotNetToJs 加载技术
PASTALOADER从上一步中VBScript设置的环境变量中检索有效载荷:
PASTALOADER加载器正在检索有效载荷
最后,PASTALOADER 生成一个新的实例dllhost.exe并将有效载荷注入其中。这是通过使用DirtyCLR技术、函数解除挂钩和间接系统调用以刻意隐秘的方式完成的。在此示例中,最终的有效载荷是 Cobalt Strike。
有效载荷注入dllhost.exe
检测
在本节中,我们将检查此样本的当前行为检测,并针对技术原语提出新的、更精确的检测方法。
通过 Microsoft 通用控制台进行可疑执行
在我们发现这种新的执行技术之前,我们就建立了这种检测机制。它最初是为了识别另一种方法(需要用户在打开 MSC 文件后单击任务板),该方法利用相同的 MSC 文件类型通过 Console Taskpads 命令行属性执行命令:
命令任务 MSC 示例
process where event.action == "start" and
process.parent.executable : "?:\\Windows\\System32\\mmc.exe" and process.parent.args : "*.msc" and
not process.parent.args : ("?:\\Windows\\System32\\*.msc", "?:\\Windows\\SysWOW64\\*.msc", "?:\\Program files\\*.msc", "?:\\Program Files (x86)\\*.msc") and
not process.executable :
("?:\\Windows\\System32\\mmc.exe",
"?:\\Windows\\System32\\wermgr.exe",
"?:\\Windows\\System32\\WerFault.exe",
"?:\\Windows\\SysWOW64\\mmc.exe",
"?:\\Program Files\\*.exe",
"?:\\Program Files (x86)\\*.exe",
"?:\\Windows\\System32\\spool\\drivers\\x64\\3\\*.EXE",
"?:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe")
它在这里触发是因为该示例选择生成并注入 dllhost.exe 的牺牲实例:
检测到 GrimResource
在非标准 Windows 脚本解释器中创建的 .NET COM 对象
该样本使用DotNetToJScript技术,该技术会触发另一项检测,代表 Windows Script Host (WSH) 脚本引擎(Jscript 或 Vbscript)从 .NET 寻找 RWX 内存分配:
以下 EQL 规则将通过 .NET 加载器检测执行:
api where
not process.name : ("cscript.exe", "wscript.exe") and
process.code_signature.trusted == true and
process.code_signature.subject_name : "Microsoft*" and
process.Ext.api.name == "VirtualAlloc" and
process.Ext.api.parameters.allocation_type == "RESERVE" and
process.Ext.api.parameters.protection == "RWX" and
process.thread.Ext.call_stack_summary : (
/* .NET is allocating executable memory on behalf of a WSH script engine
* Note - this covers both .NET 2 and .NET 4 framework variants */
"*|mscoree.dll|combase.dll|jscript.dll|*",
"*|mscoree.dll|combase.dll|vbscript.dll|*",
"*|mscoree.dll|combase.dll|jscript9.dll|*",
"*|mscoree.dll|combase.dll|chakra.dll|*"
)
以下警报显示mmc.exe分配 RWX 内存并捕获从到 的process.thread.Ext.call_stack_summary 分配来源:vbscript.dllclr.dll
mmc.exe 分配 RWX 内存
通过 MMC 控制台文件执行脚本
前两次检测都是由特定实施选择触发的,目的是将 GrimResource 方法(DotNetToJS 和生成子进程)武器化。可以使用更安全的 OPSEC 替代方案来绕过这些检测。
其最初看起来可疑的行为(例如mmc.exe加载jscript.dll、vbscript.dll和msxml3.dll)可以通过与良性数据进行比较来澄清。我们可以看到,除了 之外vbscript.dll,这些 WSH 引擎通常由 加载mmc.exe:
mmc.exe 的正常库加载行为
该方法的核心部分是使用apds.dll通过 XSS 执行 Jscript。此行为在 mmc.exe Procmon 输出中表现为CreateFile操作(apds.dll未作为库加载):
apds.dll 在 MSC StringTable 中被调用
rimResource 执行成功示例
我们使用 Elastic Defend 文件打开事件添加了以下检测,其中目标文件是apds.dll并且process.name是mmc.exe:
以下 EQL 规则将从 MMC 控制台检测脚本的执行:
sequence by process.entity_id with maxspan=1m
[process where event.action == "start" and
process.executable : "?:\\Windows\\System32\\mmc.exe" and process.args : "*.msc"]
[file where event.action == "open" and file.path : "?:\\Windows\\System32\\apds.dll"]
使用 MMC 控制台显示脚本执行的时间线
通过 MMC 控制台文件执行 Windows 脚本
另一个检测和取证成果是在 INetCache 文件夹中创建一个临时 HTML 文件,该文件redirect[*] 因 APDS XSS重定向而得名:
redirect.html 的内容
以下 EQL 关联可用于检测此行为,同时捕获 msc 文件路径:
sequence by process.entity_id with maxspan=1m
[process where event.action == "start" and
process.executable : "?:\\Windows\\System32\\mmc.exe" and process.args : "*.msc"]
[file where event.action in ("creation", "overwrite") and
process.executable : "?:\\Windows\\System32\\mmc.exe" and file.name : "redirect[?]" and
file.path : "?:\\Users\\*\\AppData\\Local\\Microsoft\\Windows\\INetCache\\IE\\*\\redirect[?]"]
时间线检测重定向.html
除了提供的行为规则外,还可以使用以下 YARA 规则来检测类似的文件:
rule Windows_GrimResource_MMC {
meta:
author = "Elastic Security"
reference = "https://www.elastic.co/security-labs/GrimResource"
reference_sample = "14bcb7196143fd2b800385e9b32cfacd837007b0face71a73b546b53310258bb"
arch_context = "x86"
scan_context = "file, memory"
license = "Elastic License v2"
os = "windows"
strings:
$xml = "<?xml"
$a = "MMC_ConsoleFile"
$b1 = "apds.dll"
$b2 = "res://"
$b3 = "javascript:eval("
$b4 = ".loadXML("
condition:
$xml at 0 and $a and 2 of ($b*)
}
结论
攻击者已经开发出一种新技术,可以使用精心设计的 MSC 文件在 Microsoft 管理控制台中执行任意代码。Elastic 现有的开箱即用覆盖范围表明,我们的纵深防御方法即使面对此类新型威胁也十分有效。防御者应利用我们的检测指导来保护自己和客户免受这种技术的侵害,以免其扩散为商品威胁团体。
可观察对象
所有可观察数据均可采用 ECS 和 STIX 格式下载。
本研究讨论了以下可观察的结果。
14bcb7196143fd2b800385e9b32cfacd837007b0face71a73b546b53310258bb SHA-256 sccm-updater.msc 被滥用的 MSC 文件
4cb575bc114d39f8f1e66d6e7c453987639289a28cd83a7d802744cd99087fd7 SHA-256 不适用 PASTALOADER
c1bba723f79282dceed4b8c40123c72a5dfcf4e3ff7dd48db8cb6c8772b60b88 SHA-256 不适用 Cobalt Strike 攻击载荷
22 JUNE 2024•JOE DESMONE•SAMIR BOUSSEADEN
GrimResource - Microsoft Management Console for initial access and evasion
https://www.elastic.co/security-labs/grimresource?ultron=esl:_threat_research%2Besl_blog_post&blade=twitter&hulk=social&utm_content=13880043422&linkId=477732507
免责声明
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。