lazarusholic

Everyday is lazarus.dayβ

从Kimsuky组织msc攻击样本到GrimResource

2024-09-14, Aliyun
https://xz.aliyun.com/t/15618
#GrimResource #Kimsuky #MSC

Contents

从Kimsuky组织msc攻击样本到GrimResource
前言
近期笔者通过外网监测到一个Kimsuky组织的msc攻击样本,这里对样本进行分析,以及谈谈其利用的攻击技术

SHA256: 57e9b7d1c18684a4e8b3688c454e832833e063019ed808fd69186c4e20df930a
msc文件
MSC(Microsoft Snap-In Control)文件,是微软管理控制台MMC(Microsoft Management Console)用来添加/删除的嵌入式管理单元文件。通常通过MMC来管理,可点击“文件”菜单中的“添加/删除管理单元”操作来管理当前系统中已经安装的MSC文件。可以点击开始/运行,然后输入下列文件名就可以打开相应的控制窗口。

看到这个后缀,很多人可能已经想到了组策略编辑器(gpedit.msc),该样本即是通过msc文件实现攻击,利用特制的管理保存控制台 (MSC) 文件来使用 Microsoft 管理控制台 ( MMC ) 获得完整的代码执行并逃避安全防御

这项技术最早由Elastic 安全实验室在2024 年 6 月 6 日识别出上传到 VirusTotal 恶意软件扫描平台的工件(“ sccm-updater.msc ”),并将该方法命名为GrimResource ,前段时间热门的“银狐”黑产组织也曾利用过该项技术

最初“GrimResource”技术的核心是利用了apds.dll库中存在的一个旧的跨站脚本(XSS)漏洞,通过在制作的MSC文件的StringTable部分适当地引用这个易受攻击的APDS资源,攻击者可以在mmc.exe的上下文中执行任意的JavaScript,本文中的样本攻击方式则有所不同

msc文件结构
首先大概认识一下msc文件,这里以组策略编辑器的msc文件为例:



msc文件本质上是一种XML格式的文件,其中包含一些定义的内容,这里以重要的部分进行解释

<?xml version="1.0"?> # xml头
<MMC_ConsoleFile> # 整个MMC控制台内容的标签
<ConsoleFileID>XXX</ConsoleFileID> # msc文件id
<FrameState>xxx</FrameState> # 保存了管理控制台窗口的布局和状态信息
<Views> # 定义和保存管理控制台中的视图设置
<View>
XXX
</View>
</Views>
<VisualAttributes> # 定义管理控制台(MMC)的视觉属性和界面元素的外观设置
<Icon Index="0" File="xxxx"> # 图标dll地址(dll/exe)
<Image Name="Large" BinaryRefIndex="0"/>
<Image Name="Small" BinaryRefIndex="1"/>
<Image Name="Large48x" BinaryRefIndex="2"/>
</Icon>
</VisualAttributes>
<ScopeTree> # 定义和保存管理控制台的“范围树”(Scope Tree)部分的结构和配置。
<SnapinCache></SnapinCache> # 用于缓存管理单元(snap-ins)的配置信息和状态。

<Nodes> # 视图中节点相关的信息
<Node ID="1" ImageIdx="0" CLSID="{xxx}" Preload="true">
<Nodes/>
<String Name="Name" ID="3"/>
<Bitmaps>
<BinaryData Name="Small" BinaryRefIndex="3"/>
<BinaryData Name="Large" BinaryRefIndex="4"/>
</Bitmaps>
<ComponentDatas>
<ComponentData>
<GUID Name="Snapin">{xxx}</GUID>
<Stream BinaryRefIndex="5"/>
</ComponentData>
</ComponentDatas>
<Components/>
</Node>
</Nodes>

</ScopeTree>

<ConsoleTaskpads> # 重点:用于定义和保存管理控制台(MMC)的任务面板配置,在控制台的特定部分显示任务、操作和快捷方式。
<ConsoleTaskpad>
<String Name="Name" ID="11"/>
<String Name="Description" ID="12"/>
<String Name="Tooltip" Value=""/>
<Tasks> # 任务相关设置
<Task Type="CommandLine(任务类型)" Command="cmd.exe(命令)">
<String Name="Name" ID="13"/>
<String Name="Description" ID="14"/>
<Symbol>
<Image Name="Small" BinaryRefIndex="6"/>
<Image Name="Large" BinaryRefIndex="7"/>
</Symbol>
<CommandLine Directory="" WindowState="Minimized(窗口最小化)" Params="/c calc(参数)"/>
</Task>
</Tasks>
</ConsoleTaskpad>
</ConsoleTaskpads>

<ViewSettingsCache>xxx</ViewSettingsCache> # 缓存管理控制台(MMC)的视图设置
<ColumnSettingsCache></ColumnSettingsCache> # 缓存和保存管理控制台(MMC)中表格视图的列设置
<StringTables> …