capture0x/ActiveDirectory-SAST
GitHub: capture0x/ActiveDirectory-SAST
一套针对 Active Directory 攻击技术的 Sigma 格式检测规则集,覆盖 14 大类攻击场景共 94 条规则并映射 MITRE ATT&CK v14,可直接导入 Splunk、Elastic、Sentinel 等主流 SIEM 实现自动化告警。
Stars: 1 | Forks: 0
# ActiveDirectory — SAST 检测规则
**针对 Active Directory 攻击技术的静态应用安全测试规则**
[](.)
[](https://attack.mitre.org)
[](.)
[](https://github.com/SigmaHQ/sigma)
[](.)
[](LICENSE)
## 目录
- [概述](#overview)
- [规则文件](#rule-files)
- [规则结构](#rule-structure)
- [MITRE ATT&CK 覆盖范围](#mitre-attck-coverage)
- [检测类别](#detection-categories)
- [Kerberos 攻击](#kerberos-attacks)
- [凭据转储](#credential-dumping)
- [横向移动](#lateral-movement)
- [ACL / ACE 滥用](#acl--ace-abuse)
- [ADCS 证书滥用](#adcs-certificate-abuse-esc1-esc13)
- [持久化](#persistence)
- [强制认证攻击](#coercion-attacks)
- [信任攻击](#trust-attacks)
- [密码攻击](#password-attacks)
- [GPO 滥用](#gpo-abuse)
- [EDR / AV 规避](#edr--av-evasion)
- [DCSync / DCShadow](#dcsync--dcshadow)
- [RBCD 攻击](#rbcd-attacks)
- [工具代码分析](#tool-code-analysis)
- [使用说明](#usage)
- [关键事件 ID 参考](#key-event-ids-reference)
- [严重性定义](#severity-definitions)
- [免责声明](#disclaimer)
## 概述
此目录包含源自 ADRedTeam 攻击模块的 **SAST 风格检测规则**。每个 YAML 文件涵盖一个攻击类别并提供:
- **Sigma 格式的检测条件** — 可直接导入 SIEM
- **Windows 事件 ID 映射** — 精确的事件源和字段条件
- **Sysmon 检测规则** — 进程创建、网络连接、镜像加载
- **MITRE ATT&CK 技术 ID** — 对齐 ATT&CK v14
- **特定工具的指标** — ADRedTeam 模块产生的命令和模式
- **修复指南** — 针对每种技术的具体加固步骤
- **代码级 SAST 发现** — 工具自身 Python 代码中的安全问题
```
ActiveDirectory-SAST/
├── kerberos_attacks.yml # AS-REP Roast, Kerberoast, Golden/Silver/Diamond Ticket
├── credential_dump.yml # LSASS, SAM, NTDS, Mimikatz, Invoke-Mimi
├── lateral_movement.yml # PSExec, WMI, Evil-WinRM, PtH, WinRS
├── acl_abuse.yml # DCSync Grant, GenericAll, Shadow Credentials
├── cert_abuse.yml # ESC1-ESC13, PKINIT, UnPAC-the-Hash
├── persistence.yml # AdminSDHolder, DSRM, Skeleton Key, WMI Subscription
├── coercion_attacks.yml # PrinterBug, PetitPotam, NTLM Relay, ADCS Relay
├── trust_attacks.yml # ExtraSID, Cross-Forest Kerberoast, PAM Trust
├── password_attacks.yml # Password Spraying, Kerbrute, Credential Stuffing
├── gpo_abuse.yml # GPO Create/Link, GPP Passwords, Restricted Groups
├── edr_evasion.yml # Defender Disable, AMSI Bypass, ETW Patch, Log Clear
├── dcsync_dcshadow.yml # DCSync All/Targeted, DCShadow Rogue DC
├── rbcd_attacks.yml # MAQ Full Chain, Bronze Bit, S4U2Self, Powermad
├── tool_sast_analysis.yml # Global code security analysis + OPSEC review
└── README.md
```
## 规则结构
每条规则都遵循一致的 YAML 架构:
```
title: ADRedTeam - [Category] Detection Rules
id: sast-[category]-001
status: production
mitre_attack:
- T1XXX.XXX # MITRE technique IDs
rules:
- id: category-technique-001
title: Human-readable rule name
technique: T1XXX.XXX
severity: critical | high | medium | low | info
description: >
What the attack does and why it is dangerous.
event_sources:
- windows_security_eventlog:
event_ids: [XXXX]
conditions:
- field: FieldName
value: "suspicious_value"
- sysmon_eventlog:
event_ids: [X]
detection:
sigma_condition: |
EventID=XXXX AND Field="Value" AND count() > N within Xs
tools_used:
- "exact command from ADRedTeam module"
false_positives:
- Legitimate scenario that produces same events
remediation:
- Concrete hardening step
sast_code_analysis: # Security issues in the tool's own Python code
rules:
- id: sast-code-XXX-001
severity: high
pattern: |
regex_or_code_snippet
description: What the issue is
recommendation: How to fix it
```
## MITRE ATT&CK 覆盖范围
| 战术 | 技术 | 子技术 | 规则文件 |
|--------|-----------|--------------|-----------|
| 凭据访问 | T1003 | .001 LSASS 内存 | `credential_dump.yml` |
| 凭据访问 | T1003 | .002 SAM | `credential_dump.yml` |
| 凭据访问 | T1003 | .003 NTDS | `credential_dump.yml`, `dcsync_dcshadow.yml` |
| 凭据访问 | T1003 | .004 LSA Secrets | `credential_dump.yml` |
| 凭据访问 | T1558 | .001 黄金票据 | `kerberos_attacks.yml` |
| 凭据访问 | T1558 | .002 白银票据 | `kerberos_attacks.yml` |
| 凭据访问 | T1558 | .003 Kerberoasting | `kerberos_attacks.yml` |
| 凭据访问 | T1558 | .004 AS-REP Roasting | `kerberos_attacks.yml` |
| 凭据访问 | T1552 | .006 组策略偏好 | `gpo_abuse.yml` |
| 凭据访问 | T1555 | .004 Windows 凭据管理器 | `credential_dump.yml` |
| 凭据访问 | T1649 | — 窃取/伪造身份验证证书 | `cert_abuse.yml` |
| 横向移动 | T1021 | .001 RDP | `lateral_movement.yml` |
| 横向移动 | T1021 | .002 SMB/管理共享 | `lateral_movement.yml` |
| 横向移动 | T1021 | .003 DCOM | `lateral_movement.yml` |
| 横向移动 | T1021 | .006 WinRM | `lateral_movement.yml` |
| 横向移动 | T1047 | — WMI | `lateral_movement.yml` |
| 横向移动 | T1550 | .002 Pass the Hash | `lateral_movement.yml` |
| 横向移动 | T1550 | .003 Pass the Ticket | `kerberos_attacks.yml` |
| 持久化 | T1078 | .002 域账户 (DSRM) | `persistence.yml` |
| 持久化 | T1098 | — 账户操纵 | `acl_abuse.yml`, `persistence.yml` |
| 持久化 | T1134 | .001 无约束委派 | `kerberos_attacks.yml`, `coercion_attacks.yml` |
| 持久化 | T1134 | .005 SID-History 注入 | `persistence.yml`, `trust_attacks.yml` |
| 持久化 | T1207 | — 流氓域控制器 | `dcsync_dcshadow.yml` |
| 持久化 | T1484 | .001 域策略修改 (GPO) | `gpo_abuse.yml` |
| 持久化 | T1546 | .003 WMI 事件订阅 | `persistence.yml` |
| 持久化 | T1547 | .001 注册表 Run 键 | `persistence.yml`, `gpo_abuse.yml` |
| 持久化 | T1547 | .005 安全支持提供程序 | `persistence.yml` |
| 持久化 | T1556 | .001 域控制器身份验证 | `persistence.yml` |
| 持久化 | T1556 | .006 多因素认证 (Shadow Creds) | `acl_abuse.yml`, `coercion_attacks.yml` |
| 防御规避 | T1055 | .012 进程镂空 | `edr_evasion.yml` |
| 防御规避 | T1059 | .001 PowerShell (AMSI Bypass) | `edr_evasion.yml` |
| 防御规避 | T1070 | — 指标移除 | `edr_evasion.yml`, `rbcd_attacks.yml` |
| 防御规避 | T1562 | .001 禁用/修改安全工具 | `edr_evasion.yml` |
| 防御规避 | T1562 | .002 禁用 Windows 事件日志记录 | `edr_evasion.yml` |
| 发现 | T1087 | .002 域账户枚举 | `acl_abuse.yml`, `trust_attacks.yml` |
| 发现 | T1589 | .001 用户名枚举 | `password_attacks.yml` |
| 收集 | T1557 | — 中间人攻击 | `coercion_attacks.yml`, `password_attacks.yml` |
| 收集 | T1557 | .001 LLMNR/NBT-NS 毒化 | `password_attacks.yml` |
| 影响 | T1110 | .003 密码喷洒 | `password_attacks.yml` |
| 影响 | T1110 | .004 凭据填充 | `password_attacks.yml` |
## 检测类别
### Kerberos 攻击
**文件:** [`kerberos_attacks.yml`](kerberos_attacks.yml)
涵盖从哈希收集到高级票据伪造的完整 Kerberos 攻击链。
| 规则 ID | 技术 | 关键检测 |
|---------|-----------|--------------|
| `kerberos-asrep-roast-001` | T1558.004 | 来自非 DC 且 TicketEncryptionType=0x17 且 PreAuthType=0 的事件 4768 |
| `kerberos-kerberoast-001` | T1558.003 | 来自同一来源的批量带有 RC4 加密的 4769 事件 (30秒内 >5 次) |
| `kerberos-ptt-001` | T1550.003 | KRB5CCNAME 环境变量,.kirbi/.ccache 文件,Rubeus ptt 命令 |
| `kerberos-golden-ticket-001` | T1558.001 | TGT 生命周期 >10h,没有前置 4768 的 4769,在强制 AES 的情况下使用 RC4 |
| `kerberos-silver-ticket-001` | T1558.002 | 服务票据没有 DC 端的 TGT 事件,PAC 验证失败 |
| `kerberos-diamond-ticket-001` | T1558.001 | 命令行中包含 Rubeus `diamond`,/tgtdeleg 标志,异常的 PAC SID |
| `kerberos-unconstrained-delegation-001` | T1134.001 | spoolsv.exe / lsass.exe 发往非 DC 的出站 SMB,工作站上的可转发 TGT |
| `kerberos-constrained-delegation-001` | T1134.001 | S4U2Self + S4U2Proxy 序列,命令行中包含 getST / Rubeus s4u |
**关键事件 ID:** 4768, 4769, 4624 (LogonType=9), 4672
### 凭据转储
**文件:** [`credential_dump.yml`](credential_dump.yml)
针对所有主要凭据提取路径的检测 — 包括远程 (Linux 攻击者) 和本地 (Windows Mimikatz)。
| 规则 ID | 技术 | 关键检测 |
|---------|-----------|--------------|
| `credump-lsass-001` | T1003.001 | Sysmon 事件 10:lsass.exe TargetImage 且 GrantedAccess 为 0x1010/0x1410/0x143a |
| `credump-lsass-invoke-mimi-001` | T1003.001 | 包含 `sekurlsa::`、`lsadump::`、`vault::` 关键字的 PS ScriptBlock 4104 |
| `credump-sam-001` | T1003.002 | 非 SYSTEM 账户访问 `\REGISTRY\MACHINE\SAM` 注册表 |
| `credump-ntds-dcsync-001` | T1003.003 | 来自非 DC 源 IP 且带有复制 GUID 的事件 4662 |
| `credump-lsa-secrets-001` | T1003.004 | SECURITY 配置单元访问 — `\REGISTRY\MACHINE\SECURITY\Policy\Secrets` |
| `credump-laps-001` | T1552.006 | 属性中包含 `ms-Mcs-AdmPwd` 且由未授权账户访问的事件 4662 |
| `credump-ekeys-001` | T1003.001 | 包含 `sekurlsa::ekeys` 或 SafetyKatz LSASS 访问的 ScriptBlock |
| `credump-vault-001` | T1555.004 | 包含 `vault::cred`、`token::elevate`、`PasswordVault` 的 ScriptBlock |
**关键事件 ID:** 4662 (复制 GUID),Sysmon 10 (lsass),4104 (PS 日志记录)
### 横向移动
**文件:** [`lateral_movement.yml`](lateral_movement.yml)
涵盖 Windows 环境中使用的所有常见横向移动基元。
| 规则 ID | 技术 | 关键检测 |
|---------|-----------|--------------|
| `lateral-psexec-001` | T1021.002 | 事件 7045:临时目录中随机命名的服务,在几秒钟内被删除 |
| `lateral-wmiexec-001` | T1047 | Sysmon 1:cmd.exe/powershell.exe 作为 WmiPrvSE.exe 的子进程 |
| `lateral-evil-winrm-001` | T1021.006 | WinRM 事件 91/168,端口 5985 上的网络登录类型 3 |
| `lateral-dcom-001` | T1021.003 | mmc.exe 带有 `-Embedding` 参数并由 svchost.exe 生成 |
| `lateral-pth-001` | T1550.002 | 事件 4624 LogonType=9 且使用 NTLM 身份验证包 |
| `lateral-winrs-001` | T1021.006 | winrshost.exe 生成 cmd.exe / powershell.exe (Sysmon 1) |
| `lateral-atexec-001` | T1053.005 | 事件 4698+4699 在 60 秒内配对出现,GUID 格式的任务名称 |
| `lateral-rdpth-001` | T1021.001 | 事件 4624 LogonType=10 且使用 NTLM 身份验证 |
**关键事件 ID:** 7045, 4624 (类型 3/9/10), Sysmon 1 (WmiPrvSE 父进程), 91/168 (WinRM)
### ACL / ACE 滥用
**文件:** [`acl_abuse.yml`](acl_abuse.yml)
针对被滥用的 Active Directory 访问控制项的检测。
| 规则 ID | 技术 | 关键检测 |
|---------|-----------|--------------|
| `acl-dcsync-grant-001` | T1484.001 | 事件 5136:nTSecurityDescriptor 更改并添加了 DS-Replication GUID |
| `acl-group-addmember-001` | T1098 | 事件 4728/4732/4756:非 DA 账户将成员添加到 DA/EA/Schema Admins 组 |
| `acl-forcechangepassword-001` | T1098 | 事件 4724:主体 != 目标,且双方都不是管理员 |
| `acl-shadow-credentials-001` | T1556.006 | 事件 5136:`msDS-KeyCredentialLink` 值由非 SYSTEM 账户添加 |
| `acl-add-computer-001` | T1098.001 | 事件 4741:非管理员创建计算机账户 (MAQ 滥用) |
| `acl-laps-read-001` | T1552.006 | 事件 4662:未授权账户访问 `ms-Mcs-AdmPwd` |
| `acl-bloodhound-001` | T1087.002 | 同一用户在 60 秒内产生 >1000 个事件 4662 (批量 LDAP ACL 枚举) |
**关键事件 ID:** 5136 (AD 属性更改),4728/4732/4756 (组成员身份),4741 (创建计算机)
### ADCS 证书滥用 (ESC1-ESC13)
**文件:** [`cert_abuse.yml`](cert_abuse.yml)
全面覆盖 Active Directory 证书服务配置不当的相关利用。
| 规则 ID | ESC | 描述 | 关键检测 |
|---------|-----|-------------|--------------|
| `cert-esc1-001` | ESC1 | 请求者提供的 SAN 注册 | 事件 4887:SAN 与请求者身份不同 |
| `cert-esc4-001` | ESC4 | 模板 ACL 覆盖 | 事件 5136:`pKICertificateTemplate` 类被修改 |
| `cert-esc6-001` | ESC6 | EDITF_ATTRIBUTESUBJECTALTNAME2 CA 标志 | 事件 4887:带有跨身份 SAN 的 SubCA 模板 |
| `cert-esc8-001` | ESC8 | NTLM 中继到 ADCS HTTP 注册 | IIS 日志:带有 NTLM 身份验证的 `POST /certsrv/certfnsh.asp` |
| `cert-esc9-001` | ESC9 | 缺少 szOID_NTDS_CA_SECURITY_EXT 绑定 | 不包含 OID 1.3.6.1.4.1.311.25.2 的证书 |
| `cert-esc11-001` | ESC11 | 无加密的 RPC 注册 | 缺少 IF_ENFORCEENCRYPTICERTREQUEST 标志 |
| `cert-pkinit-001` | — | 证书用于 Kerberos 预身份验证 | 带有已填充 CertIssuerName 字段的事件 4768 |
| `cert-enum-001` | — | 模板枚举 (certipy find) | 针对 `pKICertificateTemplate` 对象的批量 4662 事件 |
**核心原则:** ESC8 + ESC1 是最常被利用的漏洞。一旦出现跨身份证书颁发的事件 4887,请立即发出警报。
### 持久化
**文件:** [`persistence.yml`](persistence.yml)
涵盖域级别和本地级别的持久化机制。
| 规则 ID | 技术 | 持久化类型 | 关键检测 |
|---------|-----------|-----------------|--------------|
| `persist-adminsdholder-001` | T1098 | 域 | 针对 `CN=AdminSDHolder,CN=System` 对象的事件 5136 |
| `persist-dsrm-001` | T1078.002 | 域 | 注册表:`DSRMAdminLogonBehavior = 2` (事件 4657) |
| `persist-skeleton-key-001` | T1556.001 | 域 | Sysmon 10:使用 0x1fffff 掩码访问 LSASS + PS 中的 `misc::skeleton` |
| `persist-custom-ssp-001` | T1547.005 | 域 | 注册表:`Security Packages` 键被修改为包含 `mimilib` |
| `persist-sid-history-001` | T1134.005 | 域 | 事件 4765/4766:SID History 被添加到用户账户 |
| `persist-wmi-subscription-001` | T1546.003 | 本地 | Sysmon 21:`CommandLineEventConsumer` 绑定已创建 |
| `persist-registry-runkey-001` | T1547.001 | 本地 | 事件 4657:在 `CurrentVersion\Run` 中写入 Run 键 |
| `persist-network-provider-001` | T1556 | 本地 | 注册表:`NetworkProvider\Order` 被修改 (事件 4657) |
| `persist-delegation-backdoor-001` | T1098 | 域 | 事件 5136:`msDS-AllowedToDelegateTo` 被修改 |
### 强制认证攻击
**文件:** [`coercion_attacks.yml`](coercion_attacks.yml)
针对用于捕获哈希或中继凭据的强制身份验证攻击的检测。
| 规则 ID | 协议 | 方法 | 关键检测 |
|---------|----------|--------|--------------|
| `coerce-printerbug-001` | MS-RPRN | SpoolSample | Sysmon 3:`spoolsv.exe` 发往非 DC 的出站 SMB |
| `coerce-petitpotam-001` | MS-EFSRPC | EfsRpcOpenFileRaw | Sysmon 3:`lsass.exe` 发往非 DC 的出站 SMB |
| `coerce-dfscoerce-001` | MS-DFSNM | NetrDfsAddStdRoot | 来自外部主机对接口 `4fc742e0-...` 的 RPC 调用 |
| `coerce-coercer-001` | 多种 | 所有方法 | 同一 IP 在 60 秒内发起多个 RPC 接口调用 |
| `coerce-responder-001` | LLMNR/NBT-NS | 毒化 | 来自非 DC 主机的 LLMNR 响应 (端口 5355) |
| `coerce-ntlm-relay-ldap-001` | LDAP | ntlmrelayx | 事件 4741:由另一个计算机账户创建计算机账户 |
| `coerce-ntlm-relay-adcs-001` | HTTP/ADCS | ESC8 中继 | 事件 4887:非 DC 机器请求 DC 证书 |
| `coerce-shadow-cred-relay-001` | LDAP | --shadow-credentials | 事件 5136:由计算机账户修改 `msDS-KeyCredentialLink` |
| `coerce-unconstrained-tgt-001` | Kerberos | TGT 捕获 | 事件 4768 可转发 TGT 至非 DC + Rubeus 监控 |
**最高危攻击链:** `PetitPotam → NTLM 中继 ADCS → certipy auth → DCSync` — 几分钟内即可完成整个域的攻陷。
### 信任攻击
**文件:** [`trust_attacks.yml`](trust_attacks.yml)
跨林和跨域攻击检测。
| 规则 ID | 技术 | 关键检测 |
|---------|-----------|--------------|
| `trust-cross-forest-kerberoast-001` | T1558.003 | 带有 RC4 加密的跨领域 4769 事件 |
| `trust-extrasid-001` | T1558.001 | 来自子域账户且 PAC SID 包含 -519 (EA) |
| `trust-key-extraction-001` | T1003.003 | ScriptBlock 中的 `lsadump::trust` / 针对信任账户的 secretsdump |
| `trust-pam-001` | T1484.002 | 堡垒林账户对生产敏感资源进行身份验证 |
| `trust-enumeration-001` | T1087.002 | 针对 `trustedDomain` 对象的批量 4662 事件 |
| `trust-foreign-group-001` | T1087.002 | 针对 `foreignSecurityPrincipal` 对象的批量 4662 事件 |
| `trust-child-parent-001` | T1134.005 | SIDHistory 字段中包含父域 SID 的跨领域 TGT |
### 密码攻击
**文件:** [`password_attacks.yml`](password_attacks.yml)
| 规则 ID | 技术 | 关键检测 |
|---------|-----------|--------------|
| `password-spray-001` | T1110.003 | 30分钟内来自同一 IP 的 >10 个不同用户名失败且 SubStatus=0xC000006A |
| `password-kerbrute-enum-001` | T1589.001 | 60 秒内来自单一来源的批量 4768 错误 (0x6 / 0x18) |
| `password-ntlm-relay-001` | T1557 | 来自 LLMNR 毒化主机的 4624 类型 3 NTLM 事件 |
| `password-credential-stuffing-001` | T1110.004 | 每个唯一用户名仅测试一次 — 不同于暴力破解模式 |
| `password-default-creds-001` | T1078.001 | 来自未知主机的 `administrator`/`admin`/`guest` 的事件 4624 类型 3 |
**喷洒检测公式:** `count(distinct TargetUserName) by SourceIP > 10 within 30min AND failures_per_user < 3`
### GPO 滥用
**文件:** [`gpo_abuse.yml`](gpo_abuse.yml)
| 规则 ID | 技术 | 关键检测 |
|---------|-----------|--------------|
| `gpo-create-link-001` | T1484.001 | 事件 5137:非管理员创建了新的 `groupPolicyContainer` 对象 |
| `gpo-runkey-001` | T1547.001 | 在 `SYSVOL\Policies\*\Machine\Preferences\Registry` 中出现新的 `Registry.xml` |
| `gpo-scheduled-task-001` | T1053.005 | SYSVOL 中出现新的 `ScheduledTasks.xml` — SharpGPOAbuse 模式 |
| `gpo-restricted-groups-001` | T1098.001 | `GptTmpl.inf` 被修改并包含 `[Group Membership]` 部分 |
| `gpo-gpp-passwords-001` | T1552.006 | 对 `Groups.xml`/`Services.xml`/`ScheduledTasks.xml` 的 SYSVOL 访问 (批量) |
| `gpo-delegation-enum-001` | T1087.002 | 针对 `groupPolicyContainer` 对象的批量 4662 事件 |
**快速对策:** 在 SYSVOL 中搜索 `cpassword` — 如果存在,凭据可以立即被破解:
```
findstr /s /i cpassword \\
**ActiveDirectory SAST 规则** · 由 tmrswrr Research 提供支持
[报告问题](https://github.com/capture0x/ActiveDirectory-SAST/issues) · [MITRE ATT&CK](https://attack.mitre.org)
标签:ACL/ACE滥用, Active Directory, ADCS证书滥用, AD安全, AMSI绕过, ATT&CK v14, ATT&CK映射, Cloudflare, CSV导出, DCShadow, DCSync, ESC13, GPO滥用, IP 地址批量处理, Kerberos攻击, MITRE ATT&CK, Modbus, PE 加载器, Plaso, Purple Team, RBCD攻击, SAST, Sentinel, SOC Analyst, SOC分析, StruQ, TGT, Web报告查看器, Windows Event ID, YAML, YAML规则, 信任关系攻击, 凭证转储, 嗅探欺骗, 威胁检测, 子域名变形, 安全库, 安全运营, 密码攻击, 工具代码分析, 强制认证攻击, 扫描框架, 插件系统, 攻防演练, 数据展示, 无线安全, 权限维持, 检测规则, 模拟器, 横向移动, 活动目录, 流量嗅探, 盲注攻击, 紫队, 红队, 编程规范, 网络安全, 网络资产发现, 速率限制处理, 防御规则, 隐私保护, 静态应用安全测试