shamikasshetty/threat-hunting
GitHub: shamikasshetty/threat-hunting
该项目展示了在模拟企业环境中基于 Sqrrl 威胁狩猎方法论,利用 Splunk 与 Sysmon 对持久化和凭据访问行为进行主动检测并将狩猎成果转化为自动化告警规则的完整实践。
Stars: 0 | Forks: 0
# 主动威胁狩猎:凭据访问、持久化与横向移动
## 项目概述
这是一次基于假设的威胁狩猎行动,在一个模拟的企业环境中进行,采用了 Sqrrl 威胁狩猎方法论。该项目展示了不依赖预置告警规则的主动威胁检测能力,针对跨两个高优先级 MITRE ATT&CK 技术的攻击者行为进行了狩猎。
## 环境配置
- **SIEM:** Splunk Enterprise 9.4.2
- **端点监控:** 采用 SwiftOnSecurity 配置的 Sysmon
- **目标:** 隔离实验室网络上的 Windows 11 (10.0.1.2)
- **工具:** Mimikatz、Sysmon、Splunk SPL、MITRE ATT&CK Navigator
## 狩猎方法论
每项技术均遵循 Sqrrl 威胁狩猎循环:
1. **假设** — 如果攻击者已经进入内部,他们会做什么?
2. **数据源** — 哪些日志会包含证据?
3. **狩猎查询** — 用于揭示该行为的 SPL 查询
4. **发现** — 确认是真阳性还是可见性盲区
5. **检测转化** — 将狩猎查询转化为已保存的告警
## 技术 1:T1053.005 — 计划任务持久化
### 假设
获得代码执行权限的攻击者会使用 Windows 内置工具创建计划任务,以便在重启后存活并维持持久化,而无需植入额外的恶意软件。
### 数据源
Sysmon EventCode 1 (Process Creation) — 捕获带有完整命令行参数的 schtasks.exe 执行情况。
### 模拟
创建了一个模拟合法 Windows 进程名称的计划任务,以混入正常的系统活动:
schtasks /create /tn "WindowsUpdateHelper" /tr "powershell.exe
-WindowStyle Hidden -Command whoami" /sc onlogon /ru SYSTEM
### 狩猎查询
index=main sourcetype=sysmon EventCode=1
Image="schtasks.exe"
ParentImage="cmd.exe"
CommandLine="/create"
| table _time, CommandLine, User, ParentImage, Computer
### 发现
- 识别出名为 "WindowsUpdateHelper" 的计划任务,旨在以 SYSTEM 权限在登录时运行隐藏的 PowerShell
- 该任务在系统重启后依然存活,证实其成功实现了持久化
- 父进程 cmd.exe 带有未解析的 SYSTEM SID — 高可信度的恶意指标
- ATT&CK 战术:Persistence
### 检测转化
保存为定期的 Splunk 告警:`T1053.005 - Scheduled Task Persistence`
## 技术 2:T1003 — 操作系统凭据转储
### 假设
拥有管理员权限的攻击者会将其目标对准 LSASS 进程内存,以获取凭据哈希,从而在不需要明文密码的情况下进行横向移动。
### 数据源
Sysmon EventCode 10 (ProcessAccess) — 捕获任何进程打开另一个进程句柄的行为,包括带有特定 GrantedAccess 权限的 LSASS 内存访问。
### 模拟
使用 Mimikatz 访问 LSASS 内存并转储凭据材料:
- 请求了 SeDebugPrivilege (privilege::debug)
- 通过 token 模拟提权至 SYSTEM (token::elevate)
- 执行了 SAM 数据库转储 (lsadump::sam)
- 遇到 LSA Protection (PPL) 并将其记录为一项防御性控制措施,需要修改注册表才能绕过
### 狩猎查询
index=main sourcetype=sysmon EventCode=10
TargetImage="*lsass.exe"
NOT SourceImage="Sysmon"
NOT SourceImage="csrss"
NOT SourceImage="wininit"
GrantedAccess="0x40"
| table _time, SourceImage, TargetImage, GrantedAccess, Computer
### 发现
- 识别出 mimikatz.exe 访问 lsass.exe,其 GrantedAccess=0x40
- 记录了 2536 次 LSASS 访问事件
- 在凭据转储之前观察到向 SYSTEM 上下文的 token 提权
- LSA Protection (PPL) 被证明是有效的防御控制措施 — 即使拥有管理员权限也需要绕过注册表
- ATT&CK 战术:Credential Access
### 检测转化
保存为定期的 Splunk 告警:`T1003 - Suspicious LSASS Access`
## MITRE ATT&CK 覆盖图

### 覆盖情况总结
| 颜色 | 含义 | 技术 |
|-------|---------|------------|
| 🟢 绿色 | Splunk 中的自动检测规则 | T1046, T1070.001, T1059.003, T1110.001, T1566, T1053.005, T1003 |
| 🔴 红色 | 已知盲区 — 未来狩猎目标 | T1078, T1021.001, T1558.003, T1055, T1036 |
## 关键发现
1. 计划任务持久化在系统重启后依然存活,证实了 T1053.005 在真实世界攻击中的可行性
2. LSA Protection (PPL) 成功阻止了 Mimikatz 的初始执行 — 展示了有效的 Windows 加固效果
3. 即使进程被重命名,LSASS 访问依然可以通过 GrantedAccess 值 0x40 被检测到 — 行为检测优于基于签名的检测
4. 两个狩猎查询都转化为了自动化的 Splunk 检测规则 — 作为狩猎的直接结果,改善了 SOC 的覆盖范围
## 新增检测规则
- T1053.005 - Scheduled Task Persistence (新增)
- T1003 - Suspicious LSASS Access (新增)
- 实验室检测规则总计:跨越 5 个 ATT&CK 战术的 7 条规则
## 使用的工具
- Splunk Enterprise 9.4.2 (SPL 查询,已保存的告警)
- 采用 SwiftOnSecurity 配置的 Sysmon
- Mimikatz 2.2.0 (受控实验室模拟)
- MITRE ATT&CK Navigator (覆盖情况映射)
- Windows 11 (目标端点)
标签:URL发现, 安全检测, 安全运营, 扫描框架