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, 权限提升, 模拟器, 横向移动, 编程规范, 网络安全, 网络映射, 隐私保护