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://img.shields.io/badge/Detection%20Rules-80%2B-blue?style=flat-square)](.) [![技术](https://img.shields.io/badge/MITRE%20ATT%26CK-45%2B%20Techniques-red?style=flat-square)](https://attack.mitre.org) [![严重性](https://img.shields.io/badge/Critical%20Rules-30%2B-critical?style=flat-square)](.) [![格式](https://img.shields.io/badge/Format-Sigma%20%2F%20YAML-orange?style=flat-square)](https://github.com/SigmaHQ/sigma) [![SIEM](https://img.shields.io/badge/SIEM-Splunk%20%7C%20Elastic%20%7C%20Sentinel-informational?style=flat-square)](.) [![许可证](https://img.shields.io/badge/License-MIT-green?style=flat-square)](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 \\\sysvol\\policies\ ``` ### EDR / AV 规避 **文件:** [`edr_evasion.yml`](edr_evasion.yml) | 规则 ID | 技术 | 关键检测 | |---------|-----------|--------------| | `edr-defender-disable-001` | T1562.001 | Windows Defender 事件 5001 (保护已禁用) — **立即告警** | | `edr-safetykatz-001` | T1003.001 | `Loader.exe` 与 `127.0.0.1:8080` 建立网络连接以下载 `.exe` | | `edr-amsi-bypass-001` | T1059.001 | 包含 `AmsiScanBuffer` / `amsi.dll` / 补丁字节的 ScriptBlock 4104 | | `edr-etw-patch-001` | T1562.006 | 包含 `EtwEventWrite` 补丁或 ntdll 修改的 ScriptBlock | | `edr-ntdll-unhook-001` | T1055 | Sysmon 7:从非标准路径加载的 `ntdll.dll` | | `edr-nanodump-001` | T1003.001 Sysmon 10:来自 nanodump 进程且使用 0x1fffff 掩码的 LSASS 访问 | | `edr-clear-logs-001` | T1562.002 | 事件 1102 (安全日志被清除) — **始终先将日志转发到 SIEM** | | `edr-runasppl-disable-001` | T1562.001 | 事件 4657:`RunAsPPL` 注册表值被设置为 0 | ### DCSync / DCShadow **文件:** [`dcsync_dcshadow.yml`](dcsync_dcshadow.yml) | 规则 ID | 技术 | 关键检测 | |---------|-----------|--------------| | `dcsync-all-hashes-001` | T1003.003 | 来自非 DC 源且带有 `1131f6ad` GUID 的事件 4662 → **严重** | | `dcsync-targeted-001` | T1003.003 | 带有针对 `krbtgt`/`Administrator` 的复制 GUID 的事件 4662 | | `dcsync-dcshadow-001` | T1207 | 来自非 DC 机器的 `CN=Configuration` 中出现新的 `nTDSDSA` 对象 | | `dcsync-rights-check-001` | T1087.002 | 非 DA 账户对 DS-Replication ACE 的 4662 读取访问 | **DCSync 检测 GUID 参考:** | GUID | 权限 | |------|-------| | `1131f6aa-9c07-11d1-f79f-00c04fc2dcd2` | DS-Replication-Get-Changes | | `1131f6ad-9c07-11d1-f79f-00c04fc2dcd2` | DS-Replication-Get-Changes-All (**最关键**) | | `89e95b76-444d-4c62-991a-0facbeda640c` | DS-Replication-Get-Changes-In-Filtered-Set | ### RBCD 攻击 **文件:** [`rbcd_attacks.yml`](rbcd_attacks.yml) | 规则 ID | 技术 | 关键检测 | |---------|-----------|--------------| | `rbcd-full-chain-001` | T1134.001 | 事件 4741 → 事件 5136 (`msDS-AllowedToActOnBehalfOfOtherIdentity`) 在 30 分钟内发生 | | `rbcd-ntlm-relay-001` | T1557 | 计算机账户 ($) 创建另一个计算机账户并修改委派属性 | | `rbcd-bronze-bit-001` | T1134.001 | 带有不可转发服务票据的 S4U2Proxy (CVE-2020-17049) | | `rbcd-s4u2self-001` | T1134.001 | 事件 4769:ServiceName == TargetUser (自服务票据请求) | | `rbcd-cleanup-001` | T1070 | 事件 5136:`msDS-AllowedToActOnBehalfOfOtherIdentity` 值被删除 | | `rbcd-powermad-001` | T1136.002 | 包含 `New-MachineAccount` / `Powermad` 的 ScriptBlock 4104 | **首要预防措施:** 设置 `MachineAccountQuota = 0` — 消除整个基于 MAQ 的 RBCD 攻击面: ``` Set-ADDomain -Identity (Get-ADDomain) -Replace @{'ms-DS-MachineAccountQuota'=0} ``` ### 工具代码分析 **文件:** [`tool_sast_analysis.yml`](tool_sast_analysis.yml) 对 ADRedTeam 工具自身的 Python 代码库进行的静态分析。 | 发现 ID | 严重性 | 问题 | |------------|----------|-------| | `GLOBAL-CRIT-001` | 严重 | `run_cmd()` 可能使用 `shell=True` — 用户输入导致命令注入 | | `GLOBAL-CRIT-002` | 严重 | 包含 `'`、`` ` ``、`$` 的密码会破坏 f-string 命令构造 | | `GLOBAL-HIGH-001` | 高 | `.env` 在文件系统上存储明文凭据 | | `GLOBAL-HIGH-002` | 高 | SESSION 字典在整个会话期间缓存凭据 (无超时) | | `GLOBAL-HIGH-003` | 高 | 输出文件写入全局可读的 `/tmp` 目录且名称可预测 | | `GLOBAL-HIGH-004` | 高 | NTLM 哈希 / Kerberos 票据路径在进程列表中可见 | | `GLOBAL-HIGH-005` | 高 | 对目标 IP/主机名没有输入验证 | | `GLOBAL-MED-001` | 中 | 工具可能不必要地需要 root 权限 | | `GLOBAL-MED-002` | 中 | Python 依赖项可能已过时 (使用 `pip-audit` 检查) | | `GLOBAL-MED-003` | 中 | 在执行高破坏性操作前无确认提示 | | `GLOBAL-MED-004` | 中 | 会话日志可能包含明文凭据 | ## 使用说明 ### 谁使用这些规则以及如何使用 | 角色 | 他们做什么 | 如何做 | |------|-------------|-----| | **SOC 分析师** | 导入规则 → 发生攻击时自动触发警报 | Sigma → SIEM | | **蓝队负责人** | 查找缺失的审核策略,运行加固清单 | `remediation` 部分 | | **应急响应人员** | 遭到入侵后搜索过去的日志以还原攻击时间线 | 将 `sigma_condition` 用作狩猎查询 | | **紫队** | 红队攻击,蓝队验证检测覆盖率 | 运行 ADRedTeam 模块 → 检查规则是否触发 | | **威胁猎人** | 在警报触发之前进行主动的日常搜索 | 将 `sigma_condition` 用作计划查询 | | **工具开发者** | 扫描自己的渗透测试工具代码以查找注入/凭据问题 | Semgrep + `sast_code_analysis` 模式 | ### 1 — SIEM 集成 (Sigma → 警报) 使用 [sigma-cli](https://github.com/SigmaHQ/sigma) 将规则转换为您的 SIEM 的原生查询语言: ``` pip install sigma-cli sigma convert -t splunk kerberos_attacks.yml # Splunk SPL sigma convert -t eql credential_dump.yml # Elastic EQL sigma convert -t azure-monitor lateral_movement.yml # Sentinel KQL sigma convert -t qradar acl_abuse.yml # QRadar AQL # 一次性转换所有规则 for f in *.yml; do sigma convert -t splunk "$f"; done ``` 每个导出的查询将成为您 SIEM 中的一个 **保存的搜索 / 检测规则**。当条件触发时,您的 SIEM 会自动发出警报。 ### 2 — 紫队演练 在授权的实验室中运行 ADRedTeam 模块,然后验证匹配的规则是否触发: ``` Red Team → kerberos_attacks.py option [2] (Kerberoast) Blue Team → check SIEM for rule kerberos-kerberoast-001 condition: EventID=4769 AND EncryptionType=0x17 AND count > 5 within 30s Result: triggered ✅ → detection works no alert ❌ → audit policy or log source missing ``` 当检测失败时,使用每条规则的 `remediation` 部分作为您的修复清单。 ### 3 — 事件响应 — 狩猎历史日志 在发生疑似入侵后,使用 `sigma_condition` 字段作为 PowerShell 查询来搜索历史事件: ``` # 是否执行了 DCSync?(过去 7 天) Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4662; StartTime=(Get-Date).AddDays(-7)} | Where-Object { $_.Message -match "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2" } # 是否清除了 Security 日志? Get-WinEvent -FilterHashtable @{LogName='Security'; Id=1102} # 非管理员是否创建了任何计算机帐户? Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4741} | Where-Object { $_.Message -notmatch "SYSTEM" } ``` ### 4 — 加固清单 每条规则的 `remediation` 块都是一个具体的加固操作。按类别逐一完成它们: ``` kerberos_attacks.yml → Reset krbtgt twice · Enable Protected Users · Enforce AES256 · Apply KB5008380 acl_abuse.yml → Set MachineAccountQuota=0 · Audit msDS-KeyCredentialLink · Review AdminSDHolder ACL cert_abuse.yml → Remove ESC flags · Enable HTTPS on ADCS · Require Kerberos for enrollment coercion_attacks.yml → Disable Print Spooler on DCs · Enable LDAP signing · Block SMB outbound from DCs edr_evasion.yml → Enable Tamper Protection · Deploy Credential Guard · Forward logs to SIEM first ``` ### 5 — 代码分析 (Semgrep) 使用 `sast_code_analysis` 模式扫描您自己的渗透测试工具代码: ``` pip install semgrep # 扫描 Python 工具以检查 shell 注入、凭证暴露 semgrep --config . /path/to/your/tool/ # 仅检查高/严重 findings semgrep --config . --severity ERROR /path/to/your/tool/ ``` 这些模式可以捕获常见问题:`shell=True` 注入、命令字符串中的明文密码、将凭据输出到全局可读的 `/tmp` 目录,以及在进程参数中可见的 NTLM 哈希。 ### 手动审查清单 (测试后) ``` □ Delete /tmp/ntds_hashes*, /tmp/asrep.txt, /tmp/kerberoast.txt and other output files □ Check output/*.log for credential exposure before archiving □ Rotate .env credentials — never reuse across engagements □ Verify MachineAccountQuota was reset to 0 on target □ Confirm DCSync rights remediation (Event 4662 monitoring active) □ Confirm AdminSDHolder ACL reviewed after persistence testing □ Check ADCS templates patched after cert_abuse module use ``` ## 关键事件 ID 参考 | 事件 ID | 日志 | 描述 | 优先级 | |----------|-----|-------------|----------| | **1102** | Security | 安全日志被清除 | 严重 — 立即告警 | | **4662** | Security | 对象访问 (DS-Replication GUID = DCSync) | 如果来自非 DC 则为严重 | | **4688** | Security | 进程创建 (需要审核策略) | 高 | | **4697** | Security | 服务安装 | 高 | | **4724** | Security | 密码重置尝试 | 如果是跨账户则为高 | | **4728** | Security | 成员被添加到全局组 | 对于特权组为高 | | **4741** | Security | 创建计算机账户 | 中 (如果由非管理员创建则为高) | | **4768** | Security | Kerberos TGT 请求 | 中 (需要进行模式分析) | | **4769** | Security | Kerberos 服务票据请求 | 中 (RC4 = 高) | | **5136** | Security | AD 对象属性被修改 | 对于敏感属性为严重 | | **5137** | Security | 创建 AD 对象 | 对于 GPO/计算机对象为高 | | **7045** | System | 已安装服务 | 对于随机命名的服务为高 | | **Sysmon 1** | Sysmon | 带有命令行的进程创建 | 高 | | **Sysmon 3** | Sysmon | 网络连接 | 对于 lsass.exe / spoolsv.exe 出站为高 | | **Sysmon 10** | Sysmon | 进程访问 (LSASS 目标 = 高) | 严重 | | **Sysmon 19-21** | Sysmon | WMI 事件订阅 | 高 | | **Sysmon 25** | Sysmon | 进程篡改 | 高 | ## 推荐审核策略 启用这些 Windows 审核策略以生成这些规则中引用的事件: ``` Computer Configuration → Windows Settings → Security Settings → Advanced Audit Policy: Account Logon: ✅ Audit Kerberos Authentication Service → Success, Failure ✅ Audit Kerberos Service Ticket Operations → Success, Failure Account Management: ✅ Audit Computer Account Management → Success ✅ Audit Security Group Management → Success ✅ Audit User Account Management → Success, Failure DS Access: ✅ Audit Directory Service Access → Success, Failure ✅ Audit Directory Service Changes → Success Logon/Logoff: ✅ Audit Logon → Success, Failure ✅ Audit Special Logon → Success Object Access: ✅ Audit Kernel Object → Success, Failure (for LSASS) ✅ Audit Registry → Success, Failure Policy Change: ✅ Audit Audit Policy Change → Success System: ✅ Audit Security System Extension → Success ✅ Audit System Integrity → Success, Failure ``` ## 推荐 Sysmon 配置 这些 Sysmon 事件 ID 在多个规则中都被引用。请使用全面的 Sysmon 配置,例如 [SwiftOnSecurity/sysmon-config](https://github.com/SwiftOnSecurity/sysmon-config),并确保启用以下事件类型: | Sysmon ID | 事件 | 适用范围 | |-----------|-------|-------------| | 1 | 进程创建 | lateral_movement, edr_evasion, gpo_abuse | | 3 | 网络连接 | coercion_attacks, kerberos_attacks | | 7 | 镜像加载 | edr_evasion (ntdll unhooking) | | 10 | 进程访问 | credential_dump (LSASS) | | 13 | 注册表值设置 | persistence | | 19-21 | WMI 事件 | persistence | | 25 | 进程篡改 | edr_evasion | ## 免责声明
**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规则, 信任关系攻击, 凭证转储, 嗅探欺骗, 威胁检测, 子域名变形, 安全库, 安全运营, 密码攻击, 工具代码分析, 强制认证攻击, 扫描框架, 插件系统, 攻防演练, 数据展示, 无线安全, 权限维持, 检测规则, 模拟器, 横向移动, 活动目录, 流量嗅探, 盲注攻击, 紫队, 红队, 编程规范, 网络安全, 网络资产发现, 速率限制处理, 防御规则, 隐私保护, 静态应用安全测试