基于 Sysmon 与 SIEM 检测 Windows 凭据转储技术:从 GrantedAccess 位掩码到 MITRE ATT&CK T1003 全链路实战
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills
导读
本指南以 Anthropic-Cybersecurity-Skills 仓库中的detecting-credential-dumping-techniques技能为骨架,系统讲解如何检测 Windows/Active Directory 环境中的凭据转储(Credential Dumping,MITRE ATT&CK T1003)行为:包括针对 LSASS 内存访问的 Sysmon Event ID 10(ProcessAccess)检测、reg.exe导出 SAM/SECURITY/SYSTEM 注册表 hive、ntdsutil/vssadmin窃取 NTDS.dit,以及comsvcs.dllMiniDump 滥用。读者将掌握 GrantedAccess 位掩码的解读方法、Splunk SPL 与 Elastic KQL 检测查询的编写,并理解仓库内 agent.py 检测引擎的源码级实现原理,可直接落地到 SOC 告警与威胁狩猎流程。
该技能位于仓库的 threat-detection 子域,属于 817 个结构化网络安全技能之一,同时映射到 MITRE ATT&CK、NIST CSF 2.0、D3FEND 与 MITRE F3 多套框架。本文以技能主文档 SKILL.md 与西语版 SKILL.es.md 为核心,结合 api-reference.md 中的事件字段与查询示例,以及agent.py的具体实现展开深度解析。
技能定位:检测四类典型凭据转储手法
凭据转储(T1003)是攻击者在后渗透阶段提取身份验证凭据的典型技术,来源包括操作系统内存、注册表 hive 与域控数据库。本技能覆盖以下四种检测场景:
- LSASS 内存访问:通过 Sysmon Event ID 10(ProcessAccess)捕获针对
lsass.exe的进程访问; - 注册表 hive 导出:通过
reg.exe save命令识别 SAM/SECURITY/SYSTEM hive 的批量导出; - NTDS.dit 提取:通过
ntdsutil/vssadmin命令识别域控数据库与卷影副本的创建; - comsvcs.dll MiniDump 滥用:识别通过
rundll32加载comsvcs.dll转储 LSASS 进程内存的手法。
检测规则的核心逻辑围绕三条线索展开:GrantedAccess 位掩码(进程访问权限)、可疑调用进程(SourceImage/CommandLine)以及已知工具的签名特征(如 Mimikatz 的 ntdll CallTrace)。
框架映射:一个技能,多套框架
技能 frontmatter(见 SKILL.md)声明了完整的框架映射关系,便于在合规审计与安全覆盖评估中使用:
| 框架 | 映射条目 |
|---|---|
| MITRE ATT&CK | T1078、T1190、T1059、T1003、T1110 |
| NIST CSF 2.0 | DE.CM-01、DE.AE-02、DE.AE-06、ID.RA-05 |
| MITRE D3FEND | Token Binding、Execution Isolation、File Metadata Consistency Validation、Restore Access、Application Protocol Command Analysis |
| MITRE F3 | T1555、T1555.003、T1539、F1006.002、T1110.002 |
主文档还声明了d3fend_techniques、nist_csf等字段,说明该技能不仅面向攻击检测,也可用于防御措施映射与合规覆盖核对。
前置条件
在部署检测之前,需要满足以下环境要求:
- Sysmon v14+:已部署并开启 ProcessAccess(Event ID 10)日志,目标为
lsass.exe; - Windows 安全审计策略:启用进程创建审计(Event ID 4688)并开启命令行记录(Command Line logging);
- SIEM 平台:Splunk 或 Elastic,用于摄取 Sysmon 与 Windows Security 日志;
- Python 3.8+:用于运行仓库中的日志分析脚本 agent.py。
核心检测原理:Sysmon Event ID 10 的 GrantedAccess 位掩码
Sysmon Event ID 10(ProcessAccess)记录一个进程打开另一个进程句柄的行为。对于凭据转储检测,lsass.exe(C:\Windows\System32\lsass.exe)是最关键的受保护目标——Mimikatz 等工具正是通过打开 LSASS 进程句柄并读取其内存来提取明文凭据与 NTLM 哈希。
根据 api-reference.md,Event ID 10 的关键字段如下:
| 字段 | 含义 |
|---|---|
SourceImage | 访问 LSASS 的进程路径 |
SourceProcessId | 访问进程的 PID |
TargetImage | 应为C:\Windows\System32\lsass.exe |
GrantedAccess | 访问权限位掩码 |
CallTrace | 该次访问的 DLL 调用栈 |
可疑 GrantedAccess 值速查表
不同工具的进程句柄打开方式对应不同的权限位掩码,这是检测规则的核心判别依据:
| 位掩码 | 含义 | 关联工具 |
|---|---|---|
0x1010 | VM_READ + QUERY_LIMITED | Mimikatz |
0x1410 | VM_READ + QUERY_INFO | ProcDump |
0x1FFFFF | PROCESS_ALL_ACCESS(完全访问) | 各类 dump 工具 |
0x1438 | VM_READ + QUERY + DUP_HANDLE | Cobalt Strike |
0x40 | 仅 DUP_HANDLE | 句柄复制(间接访问) |
注意:并非所有指向 LSASS 的访问都是恶意的。合法的系统进程(如
csrss.exe、svchost.exe)以及调试、安全工具也会访问 LSASS。因此检测规则必须同时过滤合法调用者,并结合位掩码与调用进程综合判断。
七步实战检测流程
技能主文档给出了完整的落地流程,共七步:
第 1 步:配置 Sysmon 记录针对 lsass.exe 的 ProcessAccess
在 Sysmon 配置中启用 Event ID 10 过滤规则,确保对lsass.exe的进程访问产生日志。事件包含GrantedAccess与CallTrace等关键字段,供后续规则分析使用。
第 2 步:将 Sysmon EID 10 与 Windows EID 4688 转发至 SIEM
将 Sysmon 日志与 Windows Security 日志(进程创建 4688,含命令行)统一转发至 Splunk 或 Elastic,保证内存访问事件与命令执行事件可关联分析。
第 3 步:为已知 GrantedAccess 模式创建检测规则
重点关注0x1010(Mimikatz 风格)与0x1FFFFF(完全访问)等高危位掩码,同时兼顾0x1410、0x1438。
第 4 步:检测 comsvcs.dll MiniDump 与 procdump.exe 针对 LSASS PID
rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump <lsass_pid> dump.bin full是典型的免提权 LSASS 转储手法,通过进程创建事件(EID 1/4688)的命令行即可识别。
第 5 步:对 reg.exe 的 SAM/SECURITY/SYSTEM hive 导出命令告警
reg save hklm\sam ...等命令可直接导出注册表 hive,进而离线提取哈希,属于 T1003.002。
第 6 步:检测 ntdsutil/vssadmin 卷影副本创建以窃取 NTDS.dit
ntdsutilIFM 创建与vssadmin create shadow是提取 NTDS.dit(域数据库)的典型路径,属于 T1003.003。
第 7 步:结合用户/主机上下文进行风险评分
将检测结果与用户身份、主机角色、时间等因素关联,区分误报与真实威胁,提升告警可操作性。
命令行模式:Event ID 1 / 4688 中的凭据窃取特征
api-reference.md 给出了三类核心命令行模式,可作为正则检测的基础:
# SAM hive 导出 reg save hklm\sam C:\temp\sam.hiv reg save hklm\security C:\temp\security.hiv reg save hklm\system C:\temp\system.hiv # comsvcs.dll LSASS 转储 rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump <lsass_pid> dump.bin full # NTDS.dit 提取 ntdsutil "activate instance ntds" ifm "create full C:\temp" vssadmin create shadow /for=C:在 agent.py 中,这些模式被形式化为SAM_EXPORT_PATTERNS与COMSVCS_PATTERNS两组合法正则(见 scripts/agent.py):
SAM_EXPORT_PATTERNS = [ r"reg\s+save\s+hklm\\sam", r"reg\s+save\s+hklm\\security", r"reg\s+save\s+hklm\\system", r"esentutl.*ntds\.dit", r"ntdsutil.*\"activate instance ntds\"", r"vssadmin\s+create\s+shadow", r"copy\s+\\\\.*\\c\$.*ntds\.dit", r"secretsdump", ] COMSVCS_PATTERNS = [ r"comsvcs\.dll.*MiniDump", r"comsvcs\.dll.*#24", r"rundll32.*comsvcs", ]可见该技能不仅覆盖reg save、ntdsutil、vssadmin等基础手法,还纳入了esentutl提取 NTDS.dit、secretsdump(Impacket 系工具)与comsvcs.dll #24(导出符号编号调用形式)等进阶变体,从源码结构看,这些正则构成了规则引擎的底层模式库。
Splunk SPL 检测查询
api-reference.md 提供了三组核心 SPL 查询,agent.py 的generate_splunk_queries()还补充了第四组 NTDS 提取查询(见 scripts/agent.py):
LSASS 访问检测(EID 10)
index=sysmon EventCode=10 TargetImage="*\\lsass.exe" GrantedAccess IN ("0x1010","0x1FFFFF","0x1410","0x1438") SourceImage!="*\\csrss.exe" SourceImage!="*\\svchost.exe" | stats count by SourceImage, GrantedAccess, Computer, User | sort -count要点:命中高危位掩码集合,同时排除csrss.exe、svchost.exe等合法调用者,再按来源进程聚合统计。
comsvcs.dll MiniDump 检测(EID 1)
index=sysmon EventCode=1 (CommandLine="*comsvcs*MiniDump*" OR CommandLine="*comsvcs*#24*") | table _time, Computer, User, ParentImage, CommandLineSAM/SECURITY hive 导出检测(EID 1)
index=sysmon EventCode=1 Image="*\\reg.exe" (CommandLine="*save*hklm\\sam*" OR CommandLine="*save*hklm\\security*") | table _time, Computer, User, CommandLineNTDS.dit 提取检测(agent.py 补充)
index=sysmon EventCode=1 (CommandLine="*ntdsutil*" OR CommandLine="*vssadmin*create*shadow*") | table _time, Computer, User, CommandLineElastic / KQL 检测查询
对应 Elastic 平台的两组 KQL 查询(api-reference.md):
Elastic 中的 LSASS 访问
event.code: "10" AND winlog.event_data.TargetImage: *lsass.exe AND winlog.event_data.GrantedAccess: ("0x1010" OR "0x1FFFFF")含凭据窃取命令的进程创建
event.code: "1" AND (process.command_line: *comsvcs*MiniDump* OR process.command_line: *reg*save*hklm\\sam*)源码级实现:agent.py 检测引擎
仓库为技能提供了完整的可运行参考实现 scripts/agent.py,包含事件解析、三类检测逻辑与报告生成,可作为自研检测工具或 SIEM 规则的参考蓝本。
检测一:LSASS 内存访问(detect_lsass_access)
核心逻辑(agent.py):
- 筛选 Event ID 10 且
TargetImage包含lsass.exe的事件; - 检查
GrantedAccess是否命中可疑位掩码字典LSASS_GRANTED_ACCESS_SUSPICIOUS; - 检查
SourceImage文件名是否命中可疑调用者列表SUSPICIOUS_CALLERS(含mimikatz、procdump、rundll32.exe、taskmgr.exe、powershell.exe、cmd.exe、wmic.exe、cscript.exe、wscript.exe); - 严重级别判定:命中
0x1FFFFF记为critical,其余位掩码为high;一旦调用者可疑,直接提升为critical。
检测二:凭据窃取命令(detect_credential_commands)
针对 Event ID 1 或 4688 的事件(agent.py):
- 用
SAM_EXPORT_PATTERNS正则匹配命令行:命中且命令行含sam/security归类为T1003.002,否则归类为T1003.003; - 用
COMSVCS_PATTERNS正则匹配comsvcs转储:归类为T1003.001; - 两类命中均标记为critical级别。
检测三:NTDLL 可疑调用栈(detect_ntdll_access)
从源码结构可以推断,这是针对 Mimikatz 特征的补充检测(agent.py):对 Event ID 10 的CallTrace字段做特征匹配——若同时包含ntdll.dll与UNKNOWN(Mimikatz 注入式内存访问的典型调用栈特征),且目标为lsass.exe,则判定为 critical 级别告警。
事件解析与报告输出
parse_sysmon_xml()使用 Python 标准库xml.etree.ElementTree解析 Sysmon 导出的 Windows 事件 XML(命名空间http://schemas.microsoft.com/win/2004/08/events/event),提取 EventID、TimeCreated 与 EventData 全部字段(agent.py)。
最终报告为结构化 JSON,包含以下字段(agent.py):
analysis_time:分析时间戳;total_events:解析的事件总数;detections:按lsass_memory_access、credential_export_commands、ntdll_suspicious_calltrace三类分组的告警;total_alerts:告警总数;mitre_techniques:映射的技术列表(T1003.001、T1003.002、T1003.003);splunk_queries:随报告附带的可复用 SPL 查询。
CLI 用法
# 分析 Sysmon XML 导出 python agent.py --sysmon-xml sysmon_events.xml --output cred_report.json # 打印 Splunk 检测查询 python agent.py --show-splunk--show-splunk会直接输出四组 SPL 检测查询(lsass_access、comsvcs_dump、sam_export、ntds_extraction),便于在不运行分析的情况下快速获取查询模板。
MITRE ATT&CK 技术映射
| 子技术 | ID | 检测方法 |
|---|---|---|
| LSASS 内存转储 | T1003.001 | Sysmon EID 10 GrantedAccess / CallTrace |
| 安全账户管理器(SAM) | T1003.002 | reg.exe save 命令 |
| NTDS | T1003.003 | ntdsutil / vssadmin 命令 |
| DCSync | T1003.006 | Event ID 4662 + 复制 GUID |
其中 T1003.001 同时由 EID 10 位掩码与命令行模式两条路径覆盖;T1003.006(DCSync)属于域控复制行为检测,依赖 Windows Security 的 4662 事件与复制权限 GUID 关联。该技能所映射的 T1003 已被仓库的 MITRE ATT&CK 覆盖体系收录(见 coverage-summary.md)。
检测局限与误报缓解
基于技能文档与源码实现,检测规则存在以下已知边界,实战中需注意:
- 位掩码并非唯一证据:
0x1FFFFF等位掩码也会被调试器、EDR 代理、部分安全工具合法使用,必须结合调用者白名单(如csrss.exe、svchost.exe)与业务上下文过滤; - 进程注入与无文件手法:攻击者可先向可信进程注入代码,再借其句柄访问 LSASS,此时
SourceImage表现为合法进程,需要依赖CallTrace中的UNKNOWN模块特征补充检测; - 加密/混淆的命令行:部分工具可混淆命令行以绕过 EID 1/4688 字符串匹配,因此正则规则应与 EID 10 行为检测、EDR 遥测交叉验证;
- DCSync 检测依赖审计配置:T1003.006 需要提前启用对应复制事件的审计策略,否则存在检测盲区。
建议将上述四组检测作为关联规则组部署,并结合用户/主机上下文做风险评分,降低单点误报、提升告警置信度。
预期输出:检测报告示例
按技能「Expected Output」约定,最终产物为 JSON 格式检测报告。基于 agent.py 的输出结构,单条 LSASS 访问告警形如:
{ "detection": "LSASS Memory Access", "mitre_technique": "T1003.001", "timestamp": "2026-09-12T00:00:00.000000Z", "source_process": "C:\\temp\\mimikatz.exe", "source_pid": "4821", "target_process": "C:\\Windows\\System32\\lsass.exe", "granted_access": "0x1FFFFF", "call_trace": "ntdll.dll|...|UNKNOWN|...", "severity": "critical", "reasons": [ "Suspicious GrantedAccess 0x1FFFFF: PROCESS_ALL_ACCESS (full access to LSASS)", "Suspicious calling process: mimikatz.exe" ], "user": "CONTOSO\\admin", "host": "DC01" }该报告包含技术分类、严重级别、进程细节、MITRE 映射与可复用的 Splunk/Elastic 查询,可直接供 SOC 分析师分诊或由 Agent 驱动后续调查。
延伸阅读
想继续深入本仓库,可结合 mappings/mitre-attack/coverage-summary.md 查看 ATT&CK 覆盖情况,或参考仓库中 detecting-dcsync-attack-in-active-directory 等 T1003 子技术专项技能,构建完整的凭据访问检测矩阵。
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考