Krishcalin/Detection-Engineering

GitHub: Krishcalin/Detection-Engineering

Stars: 1 | Forks: 0

# 检测工程 用于 Splunk SIEM 的安全运营中心 (SOC) 攻击检测与响应规则。每条规则均包含详尽的 SPL 查询、MITRE ATT&CK 映射、误报调优指导、调查查询以及事件响应 Playbook。 ## 仓库结构 ``` Detection-Engineering/ ├── README.md └── splunk_rules/ ├── credential_access/ │ ├── adcs_attack_detection.yml │ ├── dcsync_attack_detection.yml │ ├── golden_ticket_attack_detection.yml │ ├── gpo_modification_detection.yml │ ├── kerberoasting_attack_detection.yml │ ├── lsass_credential_dumping_detection.yml │ ├── ntds_dit_extraction_detection.yml │ ├── pass_the_hash_detection.yml │ ├── password_spraying_detection.yml │ └── privileged_group_membership_modification_detection.yml └── rhel_linux/ ├── rhel_privilege_escalation_detection.yml ├── rhel_persistence_detection.yml ├── rhel_credential_access_detection.yml ├── rhel_defense_evasion_detection.yml ├── rhel_execution_detection.yml ├── rhel_lateral_movement_detection.yml ├── rhel_discovery_enumeration_detection.yml └── rhel_exfiltration_detection.yml ``` ## 检测规则 — Windows Active Directory | 规则文件 | 攻击技术 | MITRE ID | 严重程度 | 检测向量 | |-----------|-----------------|----------|----------|-------------------| | `adcs_attack_detection.yml` | ADCS 证书滥用 (ESC1-ESC13) | T1649 | CRITICAL | 9 条规则 + 5 个调查查询 | | `dcsync_attack_detection.yml` | DCSync 凭据转储 | T1003.006 | CRITICAL | 5 条规则 + 4 个调查查询 | | `golden_ticket_attack_detection.yml` | 黄金票据 Kerberos 伪造 | T1558.001 | CRITICAL | 6 条规则 + 8 个调查查询 | | `gpo_modification_detection.yml` | GPO 修改 / 域策略滥用 | T1484.001 | CRITICAL | 7 条规则 + 8 个调查查询 | | `kerberoasting_attack_detection.yml` | Kerberoasting + AS-REP Roasting | T1558.003, T1558.004 | CRITICAL | 7 条规则 + 5 个调查查询 | | `lsass_credential_dumping_detection.yml` | LSASS 内存凭据转储 | T1003.001 | CRITICAL | 7 条规则 + 5 个调查查询 | | `ntds_dit_extraction_detection.yml` | NTDS.dit 数据库提取 | T1003.003 | CRITICAL | 8 条规则 + 8 个调查查询 | | `pass_the_hash_detection.yml` | Pass-the-Hash 横向移动 | T1550.002 | CRITICAL | 6 条规则 + 5 个调查查询 | | `password_spraying_detection.yml` | 密码喷洒 + 暴力破解 | T1110.003, T1110.001 | HIGH–CRITICAL | 7 条规则 + 4 个调查查询 | | `privileged_group_membership_modification_detection.yml` | 特权 AD 组修改 | T1098.001 | CRITICAL | 6 条规则 + 7 个调查查询 | ## 规则格式 每个检测规则文件 (YAML) 包含: - **规则元数据** — 名称、描述、MITRE ATT&CK 映射、置信度、风险评分 - **Splunk SPL 查询** — 可直接部署的关联搜索 - **调度配置** — cron、时间窗口、节流设置 - **Splunk ES 动作** — 显著事件创建、风险评分 - **误报指导** — 已知误报及调优说明 - **调查查询** — 用于深入分析的手动 IR 查询 - **响应 Playbook** — 分步事件响应程序 ## DCSync 攻击检测 **文件**: `splunk_rules/credential_access/dcsync_attack_detection.yml` 通过 5 条互补检测规则检测 DCSync 凭据转储 (MITRE T1003.006): | 规则 | 检测方法 | 事件 ID | 置信度 | |------|-----------------|-----------|------------| | Rule 1 | 用户帐户执行复制 | 4662 + 4624 | HIGH | | Rule 2 | 来自非 DC 源 IP 的复制 | 4662 + 4624 + DC lookup | HIGH | | Rule 3 | 授予复制权限 | 5136 | HIGH | | Rule 4 | 批量复制突发 (容量异常) | 4662 | MEDIUM-HIGH | | Rule 5 | 来自非 DC 的 DRSUAPI 网络流量 | Network Traffic model | HIGH | ### 前置条件 1. **审计策略** — 在所有 DC 上启用 "Audit Directory Service Access" (Success) 2. **SACL** — 针对复制扩展权限,在域根目录配置审计 3. **日志转发** — 所有 DC 上安装 Splunk Universal Forwarder 并转发 Security 日志 4. **DC IP Lookup** — 用于 Rule 2 和 5 的 `dc_ip_list.csv` ### 快速部署 1. 将 Rule 1 的 SPL 查询复制到 Splunk > Search & Reporting 2. 将 `YOURDC01$`、`YOURDC02$` 替换为您实际的 DC 机器帐户名 3. 将任何 Azure AD Connect 服务帐户 (`MSOL_*`) 添加到排除列表 4. 保存为计划搜索或 Splunk ES 关联搜索 5. 在启用告警之前,使用 24 小时回溯测试以验证基线 ## ADCS 攻击检测 **文件**: `splunk_rules/credential_access/adcs_attack_detection.yml` 通过 9 条互补检测规则检测 Active Directory Certificate Services 滥用 (MITRE T1649),覆盖 ESC1 至 ESC13: | 规则 | 检测方法 | 事件 ID | ESC 变体 | 置信度 | |------|-----------------|-----------|-------------|------------| | Rule 1 | 颁发的证书 SAN 不匹配 | 4887 | ESC1 | HIGH | | Rule 2 | 可疑 PKINIT 证书认证 | 4768 | ESC1/ESC3 | HIGH | | Rule 3 | 证书模板修改 | 5136 | ESC4 | HIGH | | Rule 4 | EDITF_ATTRIBUTESUBJECTALTNAME2 标志 | 4688, 4104, 4657 | ESC6 | CRITICAL | | Rule 5 | 来自意外 IP 的机器 PKINIT | 4768 | ESC8 | HIGH | | Rule 6 | 易受攻击模板检测 (每日审计) | 4898 | ESC2/ESC3 | MEDIUM | | Rule 7 | ADCS 攻击工具检测 | 4688, 4104 | All | HIGH | | Rule 8 | OID 组链接修改 | 5136 | ESC13 | HIGH | | Rule 9 | CA 配置更改 | 4890, 4876 | ESC5/ESC7 | MEDIUM-HIGH | ### 前置条件 1. **审计策略** — 在所有 CA 上启用 "Audit Certification Services" (Success + Failure) 2. **审计策略** — 在所有 DC 上启用 "Audit Directory Service Changes" (Success) 3. **日志转发** — 所有 CA 和 DC 上安装 Splunk Universal Forwarder 并转发 Security 日志 4. **机器 IP Lookup** — 用于 Rule 5 的 `machine_ip_list.csv` (机器帐户到预期 IP 的映射) 5. **证书模板审计** — 在 AD 中的证书模板对象上启用对象访问审计 ### 快速部署 1. 将 Rule 1 的 SPL 查询复制到 Splunk > Search & Reporting 2. 将 `YOUR-CA-01` 替换为您实际的 CA 服务器主机名 3. 将合法的注册服务帐户添加到排除列表 4. 保存为计划搜索或 Splunk ES 关联搜索 5. 使用 7 天回溯进行测试,以建立正常的证书颁发基线 6. 先部署 Rule 6 和 9 (噪声较低),然后再启用高保真规则 ## Kerberoasting 攻击检测 **文件**: `splunk_rules/credential_access/kerberoasting_attack_detection.yml` 通过 7 条互补检测规则检测 Kerberoasting (MITRE T1558.003) 和 AS-REP Roasting (MITRE T1558.004): | 规则 | 检测方法 | 事件 ID | 技术 | 置信度 | |------|-----------------|-----------|-----------|------------| | Rule 1 | TGS 请求中的 RC4 加密降级 | 4769 | T1558.003 | HIGH | | Rule 2 | 批量 TGS 请求 — 容量异常 (喷洒) | 4769 | T1558.003 | HIGH | | Rule 3 | 遭到攻击的特权服务帐户 (adminCount=1) | 4769 | T1558.003 | HIGH | | Rule 4 | AS-REP Roasting — 禁用预认证的帐户 | 4768 | T1558.004 | HIGH | | Rule 5 | Kerberoasting 工具执行 (Rubeus, Invoke-Kerberoast, Impacket) | 4688, 4104 | T1558.003/004 | HIGH | | Rule 6 | 来自外部或非标准源的 RC4 TGS | 4769 | T1558.003 | HIGH | | Rule 7 | SPN 枚举前导行为 — LDAP/PowerShell | 1644, 4688, 4104 | T1087.002 | MEDIUM | ### 前置条件 1. **审计策略** — 在所有 DC 上启用 "Audit Kerberos Service Ticket Operations" (Success + Failure) 2. **审计策略** — 在所有 DC 上启用 "Audit Kerberos Authentication Service" (Success + Failure) 3. **命令行日志记录** — 通过 GPO 在所有端点上启用带有命令行日志记录的进程创建 4. **PowerShell 日志记录** — 通过 GPO 在所有端点上启用 Script Block Logging 5. **日志转发** — 所有 DC 和端点上安装 Splunk Universal Forwarder 并转发 Security + PowerShell 日志 6. **特权 SPN Lookup** — Splunk 中用于 Rule 3 的 `privileged_spn_accounts.csv` (计划的 AD 导出) ### 快速部署 1. 从 Rule 1 (RC4 降级) 开始 — 在强制 AES 的环境中置信度最高、噪声最低 2. 在启用之前,先对环境中的合法 RC4 消费者进行基线分析 (先作为报告运行 14 天) 3. 从 AD (`adminCount=1` + `servicePrincipalName` 已设置) 构建 `privileged_spn_accounts.csv` lookup 4. 立即部署 Rule 4 (AS-REP Roasting) — 在加固的 AD 中 `PreAuthType=0` 不应出现 5. 立即部署 Rule 5 (工具检测) — 来自合法工具的预期误报为零 6. 使用您的环境基线调整 Rule 2 的容量阈值 (默认值:10 个 SPN/15 分钟) ## LSASS 凭据转储检测 **文件**: `splunk_rules/credential_access/lsass_credential_dumping_detection.yml` 通过 7 条互补检测规则检测通过 LSASS 进程内存进行的 OS 凭据转储 (MITRE T1003.001),覆盖 Mimikatz、Sysinternals ProcDump、comsvcs.dll MiniDump (LOLBAS)、任务管理器转储、WerFault 滥用以及 SSP/DLL 注入: | 规则 | 检测方法 | 事件 ID | 技术 | 置信度 | |------|-----------------|-----------|-----------|------------| | Rule 1 | Sysmon ProcessAccess 访问 lsass.exe — 可疑的 GrantedAccess 位掩码 | Sysmon 10 | T1003.001 | HIGH | | Rule 2 | LSASS 内存转储文件在可疑路径中创建 | Sysmon 11 | T1003.001 | HIGH | | Rule 3 | 检测到 Mimikatz 二进制文件、CLI 语法或 Invoke-Mimikatz | 4688, Sysmon 1, 4104 | T1003.001 | HIGH | | Rule 4 | ProcDump / comsvcs.dll MiniDump / createdump / WerFault 针对 LSASS | 4688, Sysmon 1 | T1003.001, T1218.011 | HIGH | | Rule 5 | 加载到 lsass.exe 进程空间的无签名或意外 DLL | Sysmon 7 | T1003.001, T1547.005 | MEDIUM-HIGH | | Rule 6 | WDigest UseLogonCredential 注册表键已启用 — 明文凭据暂存 | Sysmon 13, 4657 | T1003.001, T1112 | HIGH | | Rule 7 | SeDebugPrivilege 被非系统进程获取 — Mimikatz 前导行为 | 4703 | T1134.001 | MEDIUM | ### 前置条件 1. **Sysmon 部署** — 部署 Sysmon 并启用 LSASS ProcessAccess (Event 10)、针对 .dmp 的 FileCreate (Event 11)、lsass.exe 的 ImageLoad (Event 7) 以及 RegistryValueSet (Event 13) 规则 2. **审计策略** — 在所有端点上启用 "Audit Process Creation" (Success) 和命令行日志记录 3. **PowerShell 日志记录** — 通过 GPO 在所有端点上启用 Script Block Logging 4. **Token 权限审计** — 为 Rule 7 启用 "Audit Token Right Adjusted" (Event 4703) 5. **日志转发** — 所有端点上安装 Splunk Universal Forwarder 并转发 Security + Sysmon + PowerShell 日志 6. **LS 白名单** — 使用已知合法进程 (EDR/AV 代理、Windows 系统进程) 构建 `lsass_access_allowlist.csv` ### 快速部署 1. 首先部署 Rule 3 (Mimikatz CLI 语法) 和 Rule 4 (ProcDump/comsvcs.dll) — 零噪声,即时价值 2. 立即部署 Rule 6 (WDigest 启用) — 无误报,并在转储发生前提供预警 3. 接下来部署 Rule 2 (转储文件创建) — 低噪声,无论使用何种工具都能捕获输出工件 4. 通过在报告模式下监控 Rule 1 (Sysmon Event 10) 7 天来构建您的 `lsass_access_allowlist.csv`,以识别您环境中的合法 LSASS 调用者 5. 在白名单构建完成后启用 Rule 1 (GrantedAccess) — 保真度最高,需要调优 6. 启用 LSASS PPL (`RunAsPPL=1`) 和 Credential Guard,以便在调优检测期间减少攻击面 ## Pass-the-Hash 检测 **文件**: `splunk_rules/credential_access/pass_the_hash_detection.yml` 通过 6 条互补检测规则检测 Pass-the-Hash 横向移动 (MITRE T1550.002),覆盖经典 NTLM 哈希重放、Mimikatz sekurlsa::pth、Overpass-the-Hash、Impacket 工具签名以及与 LSASS 转储的链式 TTP 关联: | 规则 | 检测方法 | 事件 ID | 技术 | 置信度 | |------|-----------------|-----------|-----------|------------| | Rule 1 | 经典 PtH — NTLM Type 3, 空 subject SID, KeyLength=0 | 4624 | T1550.002 | HIGH | | Rule 2 | Mimikatz sekurlsa::pth — LogonType 9 + seclogo 进程 | 4624 | T1550.002 | HIGH | | Rule 3 | 快速 NTLM 横向移动 — 单一来源,5 分钟内 5+ 个目标 | 4624 | T1021.002 | HIGH | | Rule 4 | Impacket 工具签名 (psexec/smbexec/wmiexec 硬编码字符串) | 7045, 4697, 5140 | T1550.002 | HIGH | | Rule 5 | Overpass-the-Hash — 通过 NT 哈希转换请求 RC4 TGT | 4768 | T1550.002 | MEDIUM-HIGH | | Rule 6 | 链式 TTP — LSASS 访问后来自同一来源的 NTLM 登录 | Sysmon 10 + 4624 | T1003.001 + T1550.002 | HIGH | ### 前置条件 1. **审计策略** — 在所有加入域的主机上启用 "Audit Logon" (Success + Failure) 2. **审计策略** — 在所有主机上启用 "Audit Special Logon" (Success) 3. **审计策略** — 在所有 DC 上启用 "Audit Kerberos Authentication Service" (Success + Failure) 4. **日志转发** — 所有主机上安装 Splunk Universal Forwarder 并转发 Security 日志 5. **Sysmon** — 部署带有针对 LSASS 的 ProcessAccess (Event 10) 的 Sysmon — Rule 6 必需 6. **Lookup 表** — `dc_ip_list.csv` (DC IP) + `legacy_ntlm_hosts.csv` (合法 NTLM 消费者) ### 快速部署 1. 立即部署 Rule 2 (Mimikatz LogonType 9 / seclogo) — 预期误报为零 2. 立即部署 Rule 4 (Impacket 签名) — 硬编码工具字符串的误报率接近于零 3. 在构建 `legacy_ntlm_hosts.csv` 以抑制合法 NTLM 来源后,部署 Rule 1 (经典 PtH) 4. 在确认 5 个目标的阈值适合您的环境后,启用 Rule 3 (快速横向移动) 5. 仅在全域范围内强制执行 AES 加密 (禁用 RC4) 后,再调优 Rule 5 (Overpass-the-Hash) 6. 在 Sysmon LSASS ProcessAccess 监控就绪后,启用 Rule 6 (链式 TTP) ## 密码喷洒检测 **文件**: `splunk_rules/credential_access/password_spraying_detection.yml` 通过 7 条互补检测规则检测密码喷洒 (MITRE T1110.003) 和暴力破解 (T1110.001) 攻击,覆盖 Kerberos 和 NTLM 喷洒、帐户锁定风暴、喷洒命中确认、用户名枚举以及缓慢低频的 APT 喷洒模式: | 规则 | 检测方法 | 事件 ID | 技术 | 置信度 | |------|-----------------|-----------|-----------|------------| | Rule 1 | Kerberos 喷洒 — 4771 Status=0x18, 5 分钟内 ≥10 个帐户 | 4771 | T1110.003 | HIGH | | Rule 2 | DC 处的 NTLM 喷洒 — 4776 Status=0xC000006A, 5 分钟内 ≥10 个帐户 | 4776 | T1110.003 | HIGH | | Rule 3 | 单帐户暴力破解 — 4625, ≥20 次失败, dc(account)≤2 | 4625 | T1110.001 | HIGH | | Rule 4 | 帐户锁定风暴 — 10 分钟内 ≥5 个锁定帐户 | 4740 | T1110.003 | MEDIUM-HIGH | | Rule 5 | 喷洒命中 — 失败 ≥10 次 + 30 分钟内来自同一 IP 的成功 | 4625 + 4624 | T1110.003 | HIGH | | Rule 6 | Kerberos 用户名枚举 — 4768 Status=0x6, 2 分钟内 ≥10 个帐户 | 4768 | T1087.002 | HIGH | | Rule 7 | 缓慢 APT 喷洒 — 24 小时窗口, ≥20 个帐户, <4 次尝试/帐户 | 4771, 4776 | T1110.003 | MEDIUM | ### 前置条件 1. **审计策略** — 在所有 DC 上启用 "Audit Kerberos Authentication Service" (Success + Failure) 2. **审计策略** — 在所有 DC 上启用 "Audit Credential Validation" (Success + Failure) 3. **审计策略** — 在所有 DC 和端点上启用 "Audit Logon" (Success + Failure) 4. **审计策略** — 在所有 DC 上启用 "Audit Account Lockout" (Success) 5. **日志转发** — 所有 DC 和端点上安装 Splunk Universal Forwarder 并转发 Security 日志 ### 快速部署 1. 首先部署 Rule 5 (喷洒命中) — 确认入侵成功,最高优先级告警 2. 立即部署 Rule 1 (Kerberos 4771) — Kerberos 喷洒是现代最常见的攻击技术 3. 立即部署 Rule 4 (锁定风暴) — 即使是滞后指标,大规模锁定也需要立即响应 4. 在启用告警之前,将 Rule 7 (缓慢喷洒) 在报告模式下运行 30 天,以建立您的环境基线 5. 使用 14 天的基线数据调整 Rule 1 中的 dc(account) 阈值 (默认值:10 个帐户 / 5 分钟) ## 特权组成员资格修改检测 **文件**: `splunk_rules/credential_access/privileged_group_membership_modification_detection.yml` 通过 6 条互补检测规则检测对特权 Active Directory 组的未授权修改 (MITRE T1098.001),覆盖所有组类型、直接 LDAP 写入、批量提权模式、嵌套组滥用以及 AdminSDHolder 持久化: | 规则 | 检测方法 | 事件 ID | 技术 | 置信度 | |------|-----------------|-----------|-----------|------------| | Rule 1 | 成员添加到特权组 (所有范围类型) | 4728, 4732, 4756 | T1098.001 | HIGH | | Rule 2 | 对特权组的直接 LDAP 'member' 属性写入 | 5136 | T1098.001 | HIGH | | Rule 3 | 批量提权 — 10 分钟内修改了 ≥3 个特权组 | 4728, 4732, 4756 | T1098.001 | HIGH | | Rule 4 | 嵌套组添加到特权组 (继承权限) | 4728, 4732, 4756 | T1098.001 | MEDIUM-HIGH | | Rule 5 | AdminSDHolder ACL 修改 — 隐蔽的持久化权限 | 5136 | T1098.001 | HIGH | | Rule 6 | 创建模仿特权组名称的伪装组 | 4731 | T1098.001 | MEDIUM | ### 前置条件 1. **审计策略** — 在所有 DC 上启用 "Audit Security Group Management" (Success) 2. **审计策略** — 在所有 DC 上启用 "Audit Directory Service Changes" (Success) 3. **SACL** — 针对 Rule 5 在 CN=AdminSDHolder 上配置审计 4. **日志转发** — 所有 DC 上安装 Splunk Universal Forwarder 并转发 Security 日志 5. **Lookup 表** — 用于已知合法 GPO 管理员帐户的 `privileged_group_admin_allowlist.csv` ### 快速部署 1. 立即部署 Rule 1 — 直接添加组成员是价值最高的核心检测项 2. 立即部署 Rule 5 (AdminSDHolder) — 无误报;极少发生合法修改 3. 部署 Rule 2 (LDAP 直接写入) 以捕获绕过标准事件的基于 BloodHound 的攻击 4. 构建 `privileged_group_admin_allowlist.csv` lookup 以抑制 IAM 供应工具帐户 5. 在确认 3 个组的阈值在计划的 AD 迁移期间不会触发后,启用 Rule 3 (批量提权) ## 黄金票据检测 **文件**: `splunk_rules/credential_access/golden_ticket_attack_detection.yml` 通过 6 条互补检测规则检测黄金票据 Kerberos 伪造攻击 (MITRE T1558.001)。黄金票据是使用 KRBTGT 哈希签名的伪造 TGT — KDC 不会生成 Event 4768,因此检测依赖于次要指标: | 规则 | 检测方法 | 事件 ID | 技术 | 置信度 | |------|-----------------|-----------|-----------|------------| | Rule 1 | AES 强制环境中的 RC4 TGT | 4768 | T1558.001 | HIGH | | Rule 2 | AES 强制环境中的 RC4 TGS 请求 | 4769 | T1558.001 | MEDIUM-HIGH | | Rule 3 | 没有前置 TGT 颁发的 TGS 请求 (出示了伪造 TGT) | 4769 (absent 4768) | T1558.001 | HIGH | | Rule 4 | 没有 TGT 颁发的特殊权限 Kerberos 登录 | 4672 + 4624 (absent 4768) | T1558.001 | HIGH | | Rule 5 | 异常的 krbtgt 服务票据请求 | 4769 | T1558.001 | MEDIUM-HIGH | | Rule 6 | TGT/TGS 加密类型不匹配 (AES TGT + RC4 TGS) | 4768 + 4769 | T1558.001 | MEDIUM | ### 前置条件 1. **审计策略** — 在所有 DC 上启用 "Audit Kerberos Authentication Service" (Success + Failure) 2. **审计策略** — 在所有 DC 上启用 "Audit Kerberos Service Ticket Operations" (Success + Failure) 3. **审计策略** — 在所有主机上启用 "Audit Special Logon" (Success) 4. **AES 强制** — Rule 1 和 2 需要通过 GPO 全域禁用 RC4 才能有效 5. **日志转发** — 所有 DC Security 日志集中在一个 Splunk index 中 (对于缺少 TGT 关联至关重要) 6. **Lookup 表** — `rc4_tgt_allowlist.csv` (旧版 RC4 消费者) + `privileged_accounts.csv` (Rule 3 范围) ### 快速部署 1. 仅将 Rule 3 (没有 TGT 的 TGS) 限定在特权帐户范围内 — 保真度最高的指标 2. 部署 Rule 4 (没有 TGT 的特殊权限) — 4672 + 4624 + absent 4768 的组合是确定性的 3. 仅在全域范围内完全强制执行 AES 并构建白名单后,再启用 Rule 1 和 2 (RC4 异常) 4. 先将 Rule 1 和 2 在报告模式下运行 14 天,以从范围中排除旧版 RC4 消费者 5. 对于未强制执行 AES 的环境:专注于 Rule 3、 和 6 (与加密无关的指标) ## NTDS.dit 提取检测 **文件**: `splunk_rules/credential_access/ntds_dit_extraction_detection.yml` 通过 8 条互补检测规则检测 NTDS.dit Active Directory 数据库提取 (MITRE T1003.003),覆盖所有主要提取技术 — ntdsutil IFM、基于 VSS 的副本、LOLBin 滥用、PowerShell WMI 和文件级 SACL 审计: | 规则 | 检测方法 | 事件 ID | 技术 | 置信度 | |------|-----------------|-----------|-----------|------------| | Rule 1 | DC 上的 ntdsutil IFM 执行 | 4688, Sysmon 1 | T1003.003 | HIGH | | Rule 2 | DC 上的 vssadmin 阴影副本创建 | 4688, Sysmon 1 | T1003.003 | HIGH | | Rule 3 | DC 上的 diskshadow /s 脚本模式 | 4688, Sysmon 1 | T1003.003 | HIGH | | Rule 4 | esentutl /y /vss 复制 NTDS.dit | 4688, Sysmon 1 | T1003.003 | HIGH | | Rule 5 | PowerShell Win32_ShadowCopy + NTDS 文件复制 | 4104 | T1003.003 | HIGH | | Rule 6 | 在 NTDS 目录外创建的 ntds.dit 文件 | Sysmon 11 | T1003.003 | HIGH | | Rule 7 | 通过 SACL 审计直接访问 NTDS.dit 文件 | 4663 | T1003.003 | MEDIUM-HIGH | | Rule 8 | 多阶段关联 — VSS 创建 + ntds.dit 复制 | Sysmon 1 + 11 | T1003.003 | HIGH | ### 前置条件 1. **进程创建日志记录** — 在所有 DC 上启用带有命令行的 "Audit Process Creation" (Success) 2. **PowerShell 日志记录** — 通过 GPO 在所有 DC 上启用 Script Block Logging 3. **Sysmon 部署** — 在 DC 上部署 Sysmon 并包含 ProcessCreate (Event 1)、FileCreate (Event 11) 4. **NTDS.dit 上的 SACL** — 为 Rule 7 在 `%SystemRoot%\NTDS\ntds.dit` 上配置 `Everyone: Read Data` 审计 5. **日志转发** — 所有 DC 上安装 Splunk Universal Forwarder 并转发 Security + Sysmon + PowerShell 日志 6. **DC 主机名 Lookup** — `dc_hostnames.csv` 用于将 vssadmin/diskshadow 告警限制在 DC 范围内 ### 快速部署 1. 立即部署 Rule 1 (ntdsutil IFM) — 保真度最高,在 DCPromo 之外几乎没有合法用途 2. 部署 Rule 6 (通过 Sysmon 11 检测 NTDS 路径外的 ntds.dit) — 与工具无关,捕获任何提取方法 3. 部署 Rule 8 (杀伤链关联) 以获得置信度最高、误报率最低的组合指标 4. 在填充 `dc_hostnames.csv` 后部署 Rule 2–5,以避免在非 DC 服务器上出现误报 5. 在所有 DC 上配置 NTDS.dit 的 SACL 以启用 Rule 7 (文件级访问审计) ## GPO 修改检测 **文件**: `splunk_rules/credential_access/gpo_modification_detection.yml` 通过 7 条互补检测规则检测恶意组策略对象修改 (MITRE T1484.001),覆盖 AD 层 GPO 更改、SYSVOL 载荷注入、内置策略篡改、安全控制禁用和杀伤链关联: | 规则 | 检测方法 | 事件 ID | 技术 | 置信度 | |------|-----------------|-----------|-----------|------------| | Rule 1 | AD 中未授权的 GPO 属性修改 | 5136 | T1484.001 | HIGH | | Rule 2 | 创建新 GPO 并链接到域根或 DC OU | 5137 + 5136 | T1484.001 | HIGH | | Rule 3 | 写入 SYSVOL GPO 目录的恶意脚本/任务文件 | Sysmon 11 | T1484.001 | HIGH | | Rule 4 | SharpGPOAbuse / StandIn / PowerGPOAbuse 工具检测 | 4688, Sysmon 1, 4104 | T1484.001 | HIGH | | Rule 5 | 修改了 Default Domain Policy 或 Default DC Policy | 5136 | T1484.001 | HIGH | | Rule 6 | GPO 用于禁用 Windows 安全控制 (Defender, Firewall, WDigest) | 5136, Sysmon 11 | T1484.001, T1562.001 | HIGH | | Rule 7 | 多阶段杀伤链 — AD GPO 更改 + SYSVOL 写入关联 | 5136 + Sysmon 11 | T1484.001 | HIGH | ### 前置条件 1. **审计策略** — 在所有 DC 上启用 "Audit Directory Service Changes" (Success) 2. **审计策略** — 为 Event 5137 启用 "Audit Directory Service Object Created" (Success) 3. **Sysmon 部署** — 在 DC 上部署 Sysmon 并包含针对 SYSVOL 路径的 FileCreate (Event 11) 4. **进程创建日志记录** — 在所有 DC/端点上启用带有命令行的 "Audit Process Creation" 5. **PowerShell 日志记录** — 通过 GPO 启用 Script Block Logging 用于基于 PowerShell 的 GPO 滥用检测 6. **Lookup 表** — 包含授权 GPO 管理员帐户的 `gpo_admin_allowlist.csv` ### 快速部署 1. 立即部署 Rule 5 (Default Domain/DC Policy) — 此处的任何更改都具有全域影响力 2. 部署 Rule 3 (通过 Sysmon 11 检测 SYSVOL 载荷写入) — 与工具无关,无论攻击方法如何都能捕获载荷 3. 立即部署 Rule 4 (工具签名) — SharpGPOAbuse/StandIn 字符串的误报率为零 4. 部署 Rule 6 (禁用安全控制) — 禁用 Defender 模式不需要基线期 5. 在启用 Rule 1 之前构建 `gpo_admin_allowlist.csv` 以抑制合法的 GPO 管理员 6. 在确认 Rule 1 和 3 运行正常后,启用 Rule 7 (杀伤链) ## RHEL Linux 检测规则 针对 Red Hat Enterprise Linux 攻击技术的检测规则,涵盖 8 种 MITRE ATT&CK 战术。覆盖从初始发现到权限提升、持久化、凭据访问、防御规避、执行、横向移动和数据外泄的完整攻击生命周期。**63 条检测规则 + 40 个调查查询 + 8 个事件响应 Playbook。** ### 规则摘要 | 规则文件 | 攻击技术 | MITRE ID | 严重程度 | 检测向量 | |-----------|-----------------|----------|----------|-------------------| | `rhel_privilege_escalation_detection.yml` | Sudo 滥用, SUID/SGID, 内核漏洞利用, 容器逃逸 | T1548.003, T1548.001, T1068, T1611 | HIGH–CRITICAL | 8 条规则 + 5 个调查查询 | | `rhel_persistence_detection.yml` | Cron, Systemd, SSH Keys, PAM, LD_PRELOAD, Shell Profiles | T1053.003, T1543.002, T1098.004, T1556.003, T1574.006, T1546.004 | HIGH–CRITICAL | 9 条规则 + 5 个调查查询 | | `rhel_credential_access_detection.yml` | Shadow File, SSH Key 盗窃, 暴力破解, Ptrace, Keylogger | T1003.008, T1552.004, T1110.001, T1003, T1056.001 | HIGH–CRITICAL | 8 条规则 + 5 个调查查询 | | `rhel_defense_evasion_detection.yml` | Auditd 篡改, 日志删除, SELinux, Rootkits, Timestomping | T1562.001, T1070.002, T1070.006, T1014, T1036.004 | HIGH–CRITICAL | 9 条规则 + 5 个调查查询 | | `rhel_execution_detection.yml` | Reverse Shells, Webshells, Fileless, Log4Shell, Ptrace Injection | T1059.004, T1059.006, T1620, T1505.003, T1055.008, T1203 | HIGH–CRITICAL | 8 条规则 + 5 个调查查询 | | `rhel_lateral_movement_detection.yml` | SSH Tunneling, Agent Forwarding, SCP/Rsync, 网络扫描 | T1021.004, T1572, T1563.001, T1072, T1046, T1210 | MEDIUM–CRITICAL | 7 条规则 + 5 个调查查询 | | `rhel_discovery_enumeration_detection.yml` | LinPEAS/LinEnum, 系统侦察, 用户枚举, 容器发现 | T1059.004, T1082, T1087.001, T1016, T1518.001, T1613 | MEDIUM–HIGH | 7 条规则 + 5 个调查查询 | | `rhel_exfiltration_detection.yml` | DNS Tunneling, HTTP Upload, Archive Staging, Encoded Data | T1560.001, T1048.003, T1048.002, T1132.001, T1119 | HIGH–CRITICAL | 7 条规则 + 5 个调查查询 | ### RHEL 权限提升检测 **文件**: `splunk_rules/rhel_linux/rhel_privilege_escalation_detection.yml` 通过 8 条互补检测规则检测 Linux 权限提升技术 (MITRE T1548, T1068, T1611): | 规则 | 检测方法 | 数据源 | 技术 | 置信度 | |------|-----------------|-------------|-----------|------------| | Rule 1 | Sudo 滥用 — 未授权 sudo, sudo 到 root shell | auditd EXECVE | T1548.003 | HIGH | | Rule 2 | Sudoers 文件修改 — visudo 绕过, echo 注入 | auditd SYSCALL/PATH | T1548.003 | HIGH | | Rule 3 | SUID/SGID 二进制文件利用 — find/vim/nmap/python | auditd EXECVE | T1548.001 | HIGH | | Rule 4 | 内核漏洞利用指标 — dirty pipe/cow, exploit 编译 | auditd EXECVE, syslog | T1068 | CRITICAL | | Rule 5 | Linux capabilities 滥用 — cap_setuid, cap_dac_override | auditd EXECVE | T1548 | HIGH | | Rule 6 | PwnKit / Polkit 漏洞利用 (CVE-2021-4034) | auditd EXECVE, syslog | T1068 | CRITICAL | | Rule 7 | 容器逃逸到主机 — nsenter, mount /proc, chroot | auditd EXECVE | T1611 | CRITICAL | | Rule 8 | Cgroup 逃逸 — notify_on_release 滥用 | auditd EXECVE/SYSCALL | T1611 | CRITICAL | ### RHEL 持久化检测 **文件**: `splunk_rules/rhel_linux/rhel_persistence_detection.yml` 通过 9 条互补检测规则检测 Linux 持久化机制 (MITRE T1053, T1543, T1098, T1556, T1574, T1546, T1037, T1547): | 规则 | 检测方法 | 数据源 | 技术 | 置信度 | |------|-----------------|-------------|-----------|------------| | Rule 1 | 恶意 cron job — reverse shells, download-and-execute | auditd SYSCALL/PATH | T1053.003 | HIGH | | Rule 2 | 恶意 systemd 服务 — ExecStart 指向 /tmp, /dev/shm | auditd SYSCALL, syslog | T1543.002 | HIGH | | Rule 3 | SSH authorized_keys 注入 — 未授权的密钥添加 | auditd SYSCALL/PATH | T1098.004 | HIGH | | Rule 4 | PAM 后门模块 — pam_exec, /lib/security 中的自定义 .so | auditd SYSCALL | T1556.003 | CRITICAL | | Rule 5 | LD_PRELOAD 劫持 — /etc/ld.so.preload, LD_PRELOAD env | auditd EXECVE, SYSCALL | T1574.006 | CRITICAL | | Rule 6 | Shell profile 后门 — .bashrc, .bash, /etc/profile.d | auditd SYSCALL/PATH | T1546.004 | HIGH | | Rule 7 | 恶意 at job 调度 | auditd EXECVE | T1053.002 | HIGH | | Rule 8 | Init script / rc.local 持久化 | auditd SYSCALL | T1037.004 | HIGH | | Rule 9 | 内核模块持久化 — insmod, modprobe 来自非标准路径 | auditd SYSCALL | T1547.006 | CRITICAL | ### RHEL 凭据访问检测 **文件**: `splunk_rules/rhel_linux/rhel_credential_access_detection.yml` 通过 8 条互补检测规则检测 Linux 凭据盗窃技术 (MITRE T1003, T1552, T1110, T1056, T1558): | 规则 | 检测方法 | 数据源 | 技术 | 置信度 | |------|-----------------|-------------|-----------|------------| | Rule 1 | /etc/shadow 访问 — unshadow, cat/cp shadow, john/hashcat | auditd SYSCALL/EXECVE | T1003.008 | CRITICAL | | Rule 2 | SSH 私钥盗窃 — 从 .ssh 目录复制 id_rsa, .pem | auditd SYSCALL/EXECVE | T1552.004 | HIGH | | Rule 3 | SSH 暴力破解 — 5 分钟内来自单一来源的 ≥10 次认证失败 | linux_secure | T1110.001 | HIGH | | Rule 4 | 基于 Ptrace 的凭据转储 — gdb attach, strace on sshd | auditd SYSCALL | T1003 | HIGH | | Rule 5 | Keylogger 安装 — xinput, logkeys, pam_tty_audit | auditd EXECVE | T1056.001 | HIGH | | Rule 6 | 非标准位置的凭据文件 — .netrc, .pgpass, .my.cnf | auditd EXECVE | T1552.001 | MEDIUM-HIGH | | Rule 7 | Kerberos keytab 盗窃 — ktutil, klist, keytab 文件复制 | auditd EXECVE/SYSCALL | T1558.004 | HIGH | | Rule 8 | LDAP 凭据收集 — 带密码属性的 ldapsearch | auditd EXECVE | T1003 | HIGH | ### RHEL 防御规避检测 **文件**: `splunk_rules/rhel_linux/rhel_defense_evasion_detection.yml` 通过 9 条互补检测规则检测 Linux 防御规避技术 (MITRE T1562, T1070, T1014, T1036): | 规则 | 检测方法 | 数据源 | 技术 | 置信度 | |------|-----------------|-------------|-----------|------------| | Rule 1 | Auditd 篡改 — 服务停止, auditctl -e 0, 配置修改 | auditd SYSCALL/EXECVE | T1562.001 | CRITICAL | | Rule 2 | 日志删除 — 对 /var/log 文件执行 rm/shred/truncate | auditd EXECVE | T1070.002 | CRITICAL | | Rule 3 | Timestomping — touch -t, touch -r 以更改文件时间戳 | auditd EXECVE | T1070.006 | HIGH | | Rule 4 | 禁用 SELinux — setenforce 0, SELINUX=disabled | auditd EXECVE, syslog | T1562.001 | CRITICAL | | Rule 5 | 防火墙篡改 — iptables -F, firewalld stop, ufw disable | auditd EXECVE | T1562.004 | HIGH | | Rule 6 | Rootkit 指标 — 隐藏的内核模块, /dev/shm 二进制文件, LD_PRELOAD | auditd EXECVE, syslog | T1014 | CRITICAL | | Rule 7 | 进程伪装 — 重命名的二进制文件模仿系统进程 | sysmon_linux Event 1 | T1036.004 | HIGH | | Rule 8 | 历史记录篡改 — HISTFILE=/dev/null, unset HISTFILE, history -c | auditd EXECVE | T1070.003 | HIGH | | Rule 9 | 二进制替换 — 覆盖系统二进制文件 | auditd SYSCALL/PATH | T1036.005 | CRITICAL | ### RHEL 执行检测 **文件**: `splunk_rules/rhel_linux/rhel_execution_detection.yml` 通过 8 条互补检测规则检测 Linux 恶意执行技术 (MITRE T1059, T1620, T1505, T1105, T1055, T1203): | 规则 | 检测方法 | 数据源 | 技术 | 置信度 | |------|-----------------|-------------|-----------|------------| | Rule 1 | Reverse shell 执行 — bash -i, nc -e, python pty.spawn | auditd EXECVE | T1059.004 | CRITICAL | | Rule 2 | 可疑脚本解释器 — 来自 /tmp 的 python/perl/ruby 单行命令 | auditd EXECVE | T1059.006 | HIGH | | Rule 3 | 无文件执行 — memfd_create, /proc/self/fd, shm_open | auditd SYSCALL/EXECVE | T1620 | CRITICAL | | Rule 4 | Webshell 执行 — www-data/apache 生成 shell 命令 | auditd EXECVE | T1505.003 | CRITICAL | | Rule 5 | Download-and-execute — curl/wget 通过管道传递给 bash/sh | auditd EXECVE | T1105 | HIGH | | Rule 6 | 基于 Cron 的可疑执行 — cron 生成网络工具 | auditd EXECVE, syslog | T1053.003 | HIGH | | Rule 7 | Ptrace 代码注入 — PTRACE_POKETEXT 进入运行中的进程 | auditd SYSCALL | T1055.008 | CRITICAL | | Rule 8 | 应用程序漏洞利用 — Log4Shell, Struts, Spring 指标 | syslog, auditd | T1203 | CRITICAL | ### RHEL 横向移动检测 **文件**: `splunk_rules/rhel_linux/rhel_lateral_movement_detection.yml` 通过 7 条互补检测规则检测 Linux 横向移动技术 (MITRE T1021, T1572, T1563, T1072, T1105, T1046, T1210): | 规则 | 检测方法 | 数据源 | 技术 | 置信度 | |------|-----------------|-------------|-----------|------------| | Rule 1 | 异常的出站 SSH — 连接到非标准端口或 IP | auditd EXECVE, sysmon_linux Event 3 | T1021.004 | MEDIUM-HIGH | | Rule 2 | SSH 隧道 — 动态 和本地 端口转发 | auditd EXECVE | T1572 | HIGH | | Rule 3 | SSH agent forwarding 滥用 — ForwardAgent, SSH_AUTH_SOCK 劫持 | auditd EXECVE | T1563.001 | HIGH | | Rule 4 | 配置管理滥用 — Ansible/Puppet/Salt ad-hoc 命令 | auditd EXECVE | T1072 | MEDIUM-HIGH | | Rule 5 | 可疑 SCP/rsync — 批量文件传输到外部主机 | auditd EXECVE, sysmon_linux | T1105 | HIGH | | Rule 6 | 内部网络扫描 — 来自非扫描器主机的 nmap, masscan, zmap | auditd EXECVE | T1046 | HIGH | | Rule 7 | 内部服务漏洞利用 — 针对内部 IP 的漏洞利用框架 | auditd EXECVE, sysmon_linux | T1210 | CRITICAL | ### RHEL 发现与枚举检测 **文件**: `splunk_rules/rhel_linux/rhel_discovery_enumeration_detection.yml` 通过 7 条互补检测规则检测 Linux 侦察和发现技术 (MITRE T1059, T1082, T1087, T1016, T1518, T1083, T1613): | 规则 | 检测方法 | 数据源 | 技术 | 置信度 | |------|-----------------|-------------|-----------|------------| | Rule 1 | LinPEAS / LinEnum 执行 — 已知的枚举脚本名称和哈希 | auditd EXECVE | T1059.004 | HIGH | | Rule 2 | 系统信息发现突发 — 2 分钟内 ≥5 个侦察命令 | auditd EXECVE | T1082 | HIGH | | Rule 3 | 用户和组枚举 — /etc/passwd 读取, getent, id 命令 | auditd EXECVE | T1087.001 | MEDIUM | | Rule 4 | 网络配置发现 — ip route, ss, netstat, arp -a | auditd EXECVE | T1016 | MEDIUM | | Rule 5 | 安全软件发现 — 查询 AV, EDR, audit daemon 状态 | auditd EXECVE | T1518.001 | HIGH | | Rule 6 | 敏感文件发现 — find / -name *.pem, locate shadow | auditd EXECVE | T1083 | HIGH | | Rule 7 | 容器和云元数据发现 — docker inspect, curl 169.254 | auditd EXECVE | T1613 | HIGH | ### RHEL 数据外泄检测 **文件**: `splunk_rules/rhel_linux/rhel_exfiltration_detection.yml` 通过 7 条互补检测规则检测 Linux 数据外泄技术 (MITRE T1560, T1048, T1132, T1119): | 规则 | 检测方法 | 数据源 | 技术 | 置信度 | |------|-----------------|-------------|-----------|------------| | Rule 1 | 归档暂存 — tar/zip 敏感目录 | auditd EXECVE | T1560.001 | HIGH | | Rule 2 | DNS tunneling 外泄 — iodine, dnscat2, dns2tcp, 高 TXT 查询量 | auditd EXECVE, sysmon_linux | T1048.003 | CRITICAL | | Rule 3 | HTTP 外泄 — curl/wget POST 将文件上传到外部主机 | auditd EXECVE | T1048.002 | HIGH | | Rule 4 | SSH/SCP 外泄 — 批量 SCP/sftp 到外部 IP | auditd EXECVE | T1048 | HIGH | | Rule 5 | 编码数据暂存 — base64/xxd/openssl 编码敏感文件 | auditd EXECVE | T1132.001 | HIGH | | Rule 6 | 自动化收集 — 脚本化的 find/grep 收集凭据和配置 | auditd EXECVE | T1119 | HIGH | | Rule 7 | 替代协议外泄 — netcat, socat, /dev/tcp 到外部 IP | auditd EXECVE | T1048 | CRITICAL | ### RHEL 数据源 所有 RHEL 规则依赖于以下 Splunk 数据源: | Sourcetype | 描述 | Index | |------------|-------------|-------| | `linux:audit` | auditd EXECVE, SYSCALL, PATH 事件 (主要来源) | `linux` | | `syslog` | /var/log/messages, syslog daemon 输出 | `linux` | | `linux_secure` | /var/log/secure — SSH auth, sudo, PAM 事件 | `linux` | | `sysmon_linux` | Sysmon for Linux — Events 1 (ProcessCreate), 3 (NetworkConnect), 11 (FileCreate) | `linux` | ### RHEL 前置条件 1. **auditd 配置** — 部署覆盖 EXECVE, SYSCALL, PATH 和关键文件监控的全面审计规则 (`-w /etc/shadow -p rwa`, `-w /etc/sudoers -p wa` 等) 2. **Sysmon for Linux** — 在所有 RHEL 主机上部署 Sysmon for Linux 以获取进程、网络和文件创建遥测数据 3. **日志转发** — 在所有 RHEL 主机上安装 Splunk Universal Forwarder 并转发 `/var/log/audit/audit.log`, `/var/log/secure`, `/var/log/messages` 4. **Lookup 表**: - `linux_bastion_hosts.csv` — 堡垒机/jump hosts 和配置管理服务器 - `linux_admin_accounts.csv` — 授权的管理员和 sudo 帐户 - `linux_server_inventory.csv` — 主机角色、环境和预期服务 ### RHEL 快速部署 1. 首先部署 **防御规避** 规则 — 如果攻击者禁用 auditd 或删除日志,所有其他检测将失效 2. 接下来部署 **权限提升** 规则 — sudo 滥用和内核漏洞利用是最常见的 RHEL 攻击模式 3. 部署 **执行** 规则 以获得即时的高保真告警 4. 部署 **持久化** 规则以捕获植入物安装 5. 部署 **凭据访问** 规则 — shadow 文件访问和 SSH 密钥盗窃是关键指标 6. 最后部署 **横向移动** 和 **数据外泄** 规则 — 这些规则受益于堡垒机 lookup 表的完全填充 7. 在启用告警之前,将 **发现/枚举** 规则在模式下运行 14 天,以建立正常管理员活动的基线 ## 需求 - Splunk Enterprise 8.x+ 或 Splunk Cloud - 推荐使用 Splunk Enterprise Security (ES) 以获得显著事件和风险框架功能 ### Windows AD 检测规则 - 来自所有端点的 Windows Security Event Logs (sourcetype: `XmlWinEventLog:Security`) - 在所有端点上部署 Sysmon (sourcetype: `XmlWinEventLog:Microsoft-Windows-Sysmon/Operational`) - 来自所有端点的 PowerShell 日志 (sourcetype: `XmlWinEventLog:Microsoft-Windows-PowerShell/Operational`) - 端点上需安装 PowerShell 5.1+ 以进行审计策略配置 ### RHEL Linux 检测规则 - 在所有 RHEL 主机上部署并配置 auditd (sourcetype: `linux:audit`) - 在所有 RHEL 主机上部署 Sysmon for Linux (sourcetype: `sysmon_linux`) - 从所有 RHEL 主机转发 SSH/PAM 日志 (sourcetype: `linux_secure`) - 从所有 RHEL 主机转发 Syslog (sourcetype: `syslog`) - 在所有 RHEL 主机上安装 Splunk Universal Forwarder
标签:Active Directory, AMSI绕过, Conpot, DNS 反向解析, PE 加载器, Plaso, Playbook, RHEL, SPL查询, Web报告查看器, Windows安全, 协议分析, 威胁检测, 安全运营中心, 攻击 Mitigation, 权限提升, 模拟器, 横向移动, 编程规范, 网络安全, 网络映射, 隐私保护