DCP1964/SOC-Threat-Hunting-Detection-Engineering-Lab
GitHub: DCP1964/SOC-Threat-Hunting-Detection-Engineering-Lab
一个利用 Splunk 和 Sysmon 演示威胁猎杀、检测工程及自动化响应的端到端 SOC 实战实验室。
Stars: 0 | Forks: 0
# SOC 威胁猎杀与检测工程实验室




## 项目成果
- 在 Splunk 中成功摄取并分析了超过 50,000+ 个事件
- 检测到了编码的 PowerShell 执行和 SSH 暴力破解尝试
- 使用 Fail2Ban 实施了自动阻断
- 建立了从检测到响应的端到端 SOC 工作流
一个演示端到端安全运营中心 (SOC) 能力的动手网络安全项目,包括使用 Splunk、Sysmon 和 Fail2Ban 进行威胁检测、调查、自动化响应和性能指标分析。
## 主要亮点
- 使用 Splunk SIEM 构建检测工程用例
- 模拟真实攻击场景(PowerShell、SSH 暴力破解)
- 使用 Fail2Ban 实施自动化防御
- 将检测映射到 MITRE ATT&CK 框架
- 开发用于性能评估的 SOC 指标
- 创建调查工作流和仪表板
## 使用的技术
- Splunk SIEM
- Sysmon(Windows 遥测)
- Ubuntu Linux(日志监控)
- Fail2Ban(自动化响应)
- VirtualBox(实验室环境)
## 执行摘要
本项目演示了一个使用 Splunk SIEM 构建的威胁猎杀实验室,
其中采用了主动猎杀技术,在没有依赖预定义警报的情况下
识别可疑活动。
该实验室侧重于使用端点遥测
和符合 MITRE ATT&CK 的日志分析进行假设驱动的调查。
主要成就:
- 使用 Splunk SPL 进行了主动威胁猎杀
- 识别了可疑的 PowerShell 活动
- 调查了进程关系和异常
- 将发现映射到 MITRE ATT&CK 技术
- 为 SOC 分析师构建了猎杀查询
# 1. 项目概述
与传统的检测实验室不同,本项目侧重于主动威胁发现。
本项目模拟了一个真实世界的 SOC 威胁猎杀环境,其中
安全分析师使用 Splunk SIEM 主动搜索恶意活动,
而不仅仅依赖预定义的警报。
目标:
- 了解威胁猎杀方法论
- 执行假设驱动的调查
- 使用 Sysmon 日志分析端点遥测
- 识别可疑的进程行为
- 检测基于 PowerShell 的攻击和混淆技术
- 调查父-子进程关系
- 将发现映射到 MITRE ATT&CK 框架
- 区分正常和异常的系统行为
重点领域:
- 威胁猎杀
- 端点遥测分析
- 行为分析
- Splunk SPL 查询开发
- MITRE ATT&CK 映射
- SOC 调查工作流
# 2. 实验室架构
威胁猎杀实验室由多台虚拟机组成,旨在模拟真实世界的 SOC 环境以进行主动威胁分析。
- **Windows 10 端点:** 使用 Sysmon 生成遥测数据(进程创建、命令执行、父-子关系)。
- **Ubuntu Splunk 服务器:** 充当 Splunk **Indexer + Search Head**,用于日志摄取、搜索和威胁猎杀。
- **Linux 系统日志:** 提供认证遥测(SSH 活动)。
- **Kali Linux(可选):** 用于模拟攻击者行为并生成可疑活动。
## 架构图

## 数据流
Windows Endpoint → Sysmon Logs → Splunk Universal Forwarder → Splunk Indexer → Threat Hunting Analysis
Linux System → auth.log → Splunk → Threat Hunting Analysis
## 威胁猎杀视角
与基于检测的 SOC 工作流不同,本实验室侧重于分析原始遥测数据,以识别异常和可疑行为,而不依赖预定义的警报。
SOC 分析师使用 Splunk SPL 查询探索数据、识别模式并调查潜在威胁。
# 3. 遥测源
威胁猎杀实验室依赖多种遥测源来分析系统行为并识别可疑活动。
## Windows 安全日志
EventID 4624 --- 成功登录
EventID 4625 --- 失败登录
## Sysmon 日志
EventID 1 --- 进程创建
EventID 3 --- 网络连接
EventID 10 --- 进程访问(凭证访问检测)
EventID 11 --- 文件创建
## Linux 日志
/var/log/auth.log --- SSH 认证活动
## 端点遥测(重点)
- 进程执行详情(Image, CommandLine)
- 父-子进程关系
- 用户上下文和权限级别
- 文件创建活动
- 网络连接
## 威胁猎杀相关性
这些遥测源使 SOC 分析师能够:
- 识别异常进程行为
- 检测可疑的 PowerShell 活动
- 调查凭证访问尝试
- 在没有预定义警报的情况下分析攻击者技术
这些遥测源提供了对端点活动的深度可见性,从而实现主动威胁猎杀和行为分析。
# 4. 工具与环境
威胁猎杀实验室使用以下工具和技术构建:
- **SIEM:** Splunk Enterprise (Ubuntu)
- **端点监控:** Microsoft Sysmon
- **日志转发:** Splunk Universal Forwarder
- **虚拟化:** Oracle VM VirtualBox
- **操作系统:**
- Windows 10(端点遥测生成)
- Ubuntu Server(Splunk SIEM)
- Kali Linux(攻击模拟 - 可选)
- **攻击模拟工具:**
- PowerShell
- Command Prompt (cmd.exe)
## 威胁猎杀能力
这些工具支持:
- 集中式日志收集和分析
- 实时和历史数据探索
- 通过 Sysmon 遥测实现端点可见性
- 使用 Splunk SPL 查询进行调查
# 5. 仓库结构
项目仓库组织清晰,将架构、检测、威胁猎杀查询和支持文档分离开来。
- architecture
- detections
- sigma-rules
- screenshots
- queries (Splunk detection & hunting queries)
- README.md
# 6. 环境搭建
威胁猎杀实验室环境使用虚拟机构建,以模拟真实世界的 SOC 设置。
## 虚拟机
**Windows 10 Endpoint**
RAM: 4GB
Disk: 60GB
**Ubuntu Splunk Server**
RAM: 2GB
Disk: 30GB
**Kali Linux (Optional)**
RAM: 2GB
Disk: 30GB
## 网络设置
Adapter 1 --- NAT (internet access)
Adapter 2 --- Host-Only Network (internal lab communication)
## 配置概述
- 在 Windows 端点上安装 Sysmon 以进行遥测收集
- 配置 Splunk Universal Forwarder 将日志发送到 Splunk 服务器
- 将 Splunk Enterprise 配置为 Indexer 和 Search Head
- 启用 Linux 日志以进行认证监控
## 威胁猎杀就绪
该环境配置为生成并集中遥测数据,使分析师能够使用 Splunk SPL 查询执行主动威胁猎杀。
# 7. 日志收集管道
威胁猎杀实验室从多个系统收集日志并将其集中到 Splunk 中进行分析。
## 转发的 Windows 日志
- Security Logs
- System Logs
- Sysmon Operational Logs
## 转发的 Linux 日志
- /var/log/auth.log
- /var/log/syslog
## Splunk 索引
```
index=main
```
**截图**

## 日志收集管道流
Windows Endpoint → Sysmon → Splunk Universal Forwarder → Splunk Indexer → Threat Hunting Analysis
Linux System → auth.log → Splunk → Threat Hunting Analysis
## 日志摄取验证
为了验证遥测数据已成功摄取到 Splunk 中,使用了以下查询:
**Splunk Query**
```
index=main source="WinEventLog:Microsoft-Windows-Sysmon/Operational"
| head 20
```
**解释**
此查询检索 Splunk 中索引的最近 Sysmon 事件,确认 Windows 端点上的 Splunk Universal Forwarder 正在成功将安全遥测数据发送到 Splunk 服务器。
**证据**

此步骤确保了威胁猎杀的数据可用性,并确认了遥测管道的完整性。
# 8. 威胁猎杀策略
威胁猎杀实验室遵循假设驱动的方法,主动识别环境内的可疑活动。
与传统的基于检测的 SOC 操作不同,威胁猎杀侧重于探索遥测数据,以发现可能不会触发预定义警报的隐藏威胁。
## 猎杀方法论
使用了以下方法论:
1. 基于攻击者行为制定假设
2. 使用 Splunk SPL 分析端点遥测
3. 识别异常和可疑模式
4. 调查进程执行和关系
5. 将发现映射到 MITRE ATT&CK 技术
## 注意:
本项目中的所有检测均使用来自原始 Sysmon 日志的手动字段提取,以确保在可能未预先配置字段解析的环境中的一致性和可靠性。
## 猎杀假设
### 假设 1:PowerShell 可能被用于恶意执行
攻击者通常使用 PowerShell 进行执行、混淆和横向移动。
### 假设 2:编码命令可能表明存在混淆
编码的 PowerShell 命令通常用于逃避检测机制。
### 假设 3:父-子进程关系可能揭示异常
异常的父-子关系(例如,PowerShell 生成意外进程)可能表明存在恶意活动。
### 假设 4:凭证访问尝试可能针对 LSASS
尝试访问 LSASS 内存的进程可能表明存在凭证转储活动。
## 威胁猎杀目标
此方法的目标是识别可疑行为、调查异常并在潜在威胁触发安全警报之前将其发现。
这种方法实现了主动威胁发现,并增强了环境的整体安全态势。
# 9. 攻击模拟
为了支持威胁猎杀活动,执行了轻量级攻击模拟,以在实验室内生成相关遥测数据。
这些模拟侧重于常见的攻击者技术,如 PowerShell 执行、命令混淆和进程生成。
### 模拟 1 — PowerShell 执行
**命令**
```
powershell Get-Process
```
**目的**
生成正常的 PowerShell 活动以建立比较基线。
### 模拟 2 — 编码 PowerShell 命令
**命令**
```
powershell -EncodedCommand UwB0AGEAcgB0AC0AUAByAG8AYwBlAHMAcwAgAGMAYQBsAGMALgBlAHgAZQA=
```
**目的**
模拟攻击者常用的混淆命令执行。
### 模拟 3 — 可疑进程执行
**命令**
```
powershell Start-Process calc.exe
```
**目的**
模拟可疑的父-子进程行为(PowerShell 生成另一个进程)。
## 威胁猎杀相关性
这些模拟生成的遥测数据允许分析师:
- 识别异常 PowerShell 活动
- 检测编码或混淆命令
- 分析父-子进程关系
- 执行假设驱动的威胁猎杀
## 模拟证据


### 模拟 4 — 凭证访问尝试 (LSASS)
**目的**
模拟或检测尝试访问 LSASS 内存的进程,通常与凭证转储攻击相关。
**威胁猎杀重点**
- 识别访问 lsass.exe 的进程
- 检测异常的进程访问行为
**注意**
此活动的检测查询包含在威胁猎杀查询部分中。
## MITRE ATT&CK 映射
- PowerShell Execution → T1059.001
- Obfuscated Commands → T1027
- Process Injection / Credential Access → T1003
## 攻击场景摘要
在实验室期间,执行了多次攻击模拟:
1. PowerShell 编码命令执行
2. 可疑进程生成(通过 PowerShell 生成 calc.exe)
3. 来自攻击者系统的 SSH 暴力破解尝试
### 检测流程
- Sysmon 捕获进程执行
- Splunk 查询识别可疑的命令行模式
- 调查工作流验证活动
- Fail2Ban 自动阻断攻击 IP
这演示了从检测到自动化响应的完整 SOC 工作流。
# 10. 猎杀查询开发
威胁猎杀查询是使用 Splunk SPL 开发的,用于探索端点遥测并识别可疑行为。
由于 Sysmon 日志是以 XML 格式摄取的,因此需要使用正则表达式进行字段提取。
## 字段提取
从原始 Sysmon 日志中提取了以下字段:
- Image(进程名)
- CommandLine(执行的命令)
- ParentImage(父进程)
### 字段提取查询
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| head 20
```
## 猎杀方法
查询旨在:
- 识别频繁执行的进程
- 检测可疑的 PowerShell 活动
- 分析命令行参数
- 调查父-子关系
## 威胁猎杀优势
与静态检测规则不同,这些查询允许分析师动态探索数据,并通过行为分析发现隐藏的威胁。
适当的字段提取显著提高了可见性,并实现了更有效的威胁猎杀。
这种方法模拟了真实世界的 SOC 威胁猎杀场景,分析师必须处理原始、非结构化的日志并提取有意义的见解。
# 11. Sigma 检测规则
Sigma 规则用于以标准化的、平台无关的格式表示检测逻辑。
尽管本项目侧重于威胁猎杀,但包含了 Sigma 规则以演示如何将猎杀发现转化为检测规则。
### 示例 Sigma 规则
**存储在仓库中:**
sigma-rules/encoded_powershell.yml
## 目的
- 将猎杀见解转化为检测逻辑
- 跨 SIEM 平台标准化检测
- 提高 SOC 检测覆盖率
# 12. 告警工程
虽然本项目的主要重点是威胁猎杀,但选定的猎杀查询被转换为告警规则,以演示 SOC 运营化。
#### SOC 告警示例
**告警名称:** 可疑 PowerShell 编码命令
**检测查询**
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| search Image="*powershell.exe" AND CommandLine="*EncodedCommand*"
| stats count by host CommandLine
```
### 告警逻辑
当观察到编码的 PowerShell 命令时触发告警,因为它们可能表明混淆或恶意执行。
### 计划
每 5 分钟运行一次
### 严重性
高
### SOC 响应
1. 审查命令行执行详情
2. 识别受影响的主机和用户上下文
3. 分析父-子进程关系
4. 检查持久化机制或横向移动
5. 如果确认恶意活动,则进行升级
## 从威胁猎杀到检测的过渡
这演示了如何在 SOC 环境中将主动威胁猎杀发现转化为生产就绪的告警规则。
# 13. 可视化
Splunk 仪表板用于通过可视化端点遥测和识别异常来支持威胁猎杀活动。
## 仪表板目的
- 监控 PowerShell 活动
- 识别异常的进程执行模式
- 分析命令行使用情况
- 支持调查工作流
## 示例面板
- 最常执行的进程
- PowerShell 命令频率
- 进程执行时间线
- 父-子进程关系
## 威胁猎杀价值
可视化使分析师能够快速识别异常、确定调查优先级并深入了解系统行为。
**截图**

# 14. 威胁检测覆盖矩阵
| Attack Technique | Detection Query | MITRE ATT&CK |
|-----------------|---------------|-------------|
| PowerShell Encoded Command | SPL Query | T1059.001 |
| Obfuscated Command Execution | SPL Query | T1027 |
| Suspicious Process Spawn | SPL Query | T1059 |
| LSASS Access | SPL Query | T1003 |
## 目的
此矩阵演示了关键攻击者技术的检测覆盖率,并突出了威胁猎杀查询如何与 MITRE ATT&CK 保持一致。
它提供了检测能力的可见性,并有助于识别监控中的潜在差距。
此矩阵突出了威胁猎杀发现如何转化为检测逻辑,确保在实验室环境中覆盖关键的对抗技术。
# 15. 威胁猎杀查询
本节演示了使用 Splunk SPL 开发的实用威胁猎杀查询,以识别端点遥测中的可疑行为。
每个查询都与假设保持一致,并映射到 MITRE ATT&CK 技术。
## 15.1 可疑 PowerShell 执行
**目标**
识别环境中的 PowerShell 使用情况以检测潜在的滥用。
**Splunk Query**
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| search Image="*powershell.exe"
| stats count by host Image
```
**MITRE ATT&CK**
T1059.001 — PowerShell
**分析**
攻击者通常使用 PowerShell 进行执行和后渗透活动。
高频或异常使用可能表明存在恶意活动。
**截图**

## 15.2 编码 PowerShell 命令检测
**目标**
检测用于逃避检测的混淆 PowerShell 命令。
**Splunk Query**
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| search CommandLine="EncodedCommand"
| stats count by host CommandLine
```
**MITRE ATT&CK**
T1027 — Obfuscated Files or Information
**分析**
编码命令通常用于隐藏恶意载荷。
此行为是可疑活动的强烈指示。
**截图**

## 15.3 可疑父-子进程关系
**目标**
识别异常的进程生成行为。
**Splunk Query**
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| search ParentImage="*powershell.exe"
| stats count by ParentImage Image
```
**MITRE ATT&CK**
T1059 — Command and Scripting Interpreter
**分析**
PowerShell 生成意外进程(例如 calc.exe)可能表明恶意执行或载荷投递测试。
**截图**

## 15.4 LSASS 访问检测(凭证转储)
**目标**
检测尝试访问 LSASS 内存的进程。
**Splunk Query**
```
index=* EventCode=10
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| search TargetImage="*lsass.exe"
| stats count by SourceImage TargetImage
```
**MITRE ATT&CK**
T1003 — Credential Dumping
**分析**
访问 LSASS 是凭证转储尝试的强烈指示。
任何访问 LSASS 的非标准进程都应立即进行调查。
在实验室执行期间未观察到结果,表明没有进程尝试访问 LSASS 内存。
这是受控环境中的预期行为,并表明检测逻辑已正确配置,可以在发生时识别凭证访问尝试。
**截图**


## 15.5 进程枚举活动
**目标**
检测用于系统发现的命令。
**Splunk Query**
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| search CommandLine="Get-Process"
| stats count by CommandLine
```
**MITRE ATT&CK**
T1057 — Process Discovery
**分析**
攻击者经常枚举正在运行的进程,以识别权限提升或注入的目标。
**截图**

## 威胁猎杀成果
上述查询演示了如何分析原始遥测数据以发现可疑行为,而无需依赖预定义的警报。
这种方法使 SOC 分析师能够:
- 检测隐蔽的攻击者活动
- 主动调查异常
- 关联多个数据源的行为
- 提高检测覆盖率
# 16. 调查工作流
本节概述了在检测到环境中的可疑活动后所遵循的分步调查流程。
该工作流模拟了安全运营中心 (SOC) 分析师如何对警报进行分类和调查。
检查了原始 Sysmon 日志以验证命令行执行详情并确认检测准确性。
此调查工作流遵循结构化的 SOC 方法论:检测 → 分类 → 分析 → 验证 → 升级 → 响应。
## 步骤 1 — 告警触发
基于可疑活动生成检测告警,例如:
- PowerShell 编码命令
- 执行策略绕过
- LSASS 访问尝试
示例:
| Detection | Trigger |
|----------|--------|
| Encoded PowerShell | CommandLine contains "EncodedCommand" |
| Execution Policy Bypass | "ExecutionPolicy Bypass" |
| LSASS Access | TargetImage = lsass.exe |
## 步骤 2 — 初步分类
验证警报是误报还是需要调查。
关键检查:
- 发生频率
- 涉及的主机
- 执行时间
- 用户上下文(如果可用)
Splunk Query:
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| search CommandLine="*EncodedCommand*"
| table _time host Image ParentImage CommandLine
| sort -_time
```
**EncodedCommand 检测结果**
**截图**

**图:分类阶段期间检测到的编码 PowerShell 执行**
## 步骤 3 — 进程分析
了解进程行为和关系。
问题:
- 什么启动了进程?
- 父进程是否合法?
- PowerShell 是否从异常位置生成?
示例查询:
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| table _time Image ParentImage CommandLine
| sort -_time
```
**进程表视图**
**截图**

**图:进程分析显示了父-子关系和使用 Sysmon 遥测的命令行执行**
## 步骤 4 — 父-子关系分析
识别可疑的进程链。
示例:
winword.exe → powershell.exe
explorer.exe → cmd.exe → powershell.exe
查询:
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| where isnotnull(ParentImage)
| stats count by ParentImage Image
| sort -count
```
**父-子统计查询**
**截图**

**图:聚合的父-子进程关系突出了执行模式**

**图:进程树分析显示了用于识别可疑执行链的父-子关系**
## 步骤 5 — 命令行检查
分析命令行参数以查找:
- 编码命令
- 混淆
- 可疑标志
查询:
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| search CommandLine="*EncodedCommand*"
| table _time host CommandLine
| sort -_time
```
**截图**

**图:通过命令行检查检测编码 PowerShell 命令执行**
"EncodedCommand" 的存在表明潜在的混淆,通常与后渗透技术中使用的恶意 PowerShell 活动相关。
编码命令通常是 Base64 编码的载荷,用于逃避检测并隐瞒恶意意图,使其成为威胁猎杀期间的高保真指标。
## 步骤 6 — 时间线分析
重建攻击者活动时间线。
这有助于识别可疑活动的爆发并随时间关联执行模式。
查询:
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| search CommandLine="*EncodedCommand*"
| timechart count
```
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| search CommandLine="*EncodedCommand*"
| timechart span=1h count
```
**时间线视图**
**截图**


## 步骤 7 — 威胁验证
额外的验证包括检查活动是否符合映射到 MITRE ATT&CK 的已知攻击者技术(例如 T1059 - Command and Scripting Interpreter)。
检测到的活动通过关联以下内容进行验证:
- 进程谱系(ParentImage → Image)
- 命令行参数
- 执行的频率和时间
这有助于区分:
- 合法的管理活动
- 可疑但非恶意的行为
- 确认的恶意执行
## 步骤 8 — 升级
如果确认可疑:
- 升级到 Tier 2 / Incident Response
- 保留日志
- 记录发现
## 步骤 9 — 文档记录
记录:
- 触发的检测
- 使用的查询
- 发现
- 最终结论
## 步骤 10 — 响应建议
根据调查结果,建议的行动包括:
- 终止可疑进程
- 将受影响的主机从网络隔离
- 通过端点保护控制阻止执行
- 监控类似行为的复发
# 17. 自动化防御 (Fail2Ban)
为了增强防御能力,使用 Fail2Ban 实施了自动化响应机制。
Fail2Ban 监控日志活动并通过更新防火墙规则自动阻断可疑行为。
这演示了如何将检测转化为主动防御。
这在 SOC 环境中弥合了检测工程与自动化事件响应之间的差距。
## 目标
- 自动响应可疑活动
- 缩短响应时间
- 模拟真实世界的 SOC 自动化
## 用例 — SSH 暴力破解检测
Fail2Ban 在 Linux (Splunk) 服务器上配置为监控认证日志。
当检测到多次失败登录尝试时:
- 源 IP 被自动封禁
- 防火墙规则动态更新
## 配置文件
位置:
```
/etc/fail2ban/jail.local
```
示例配置:
```
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
findtime = 600
```
## 解释
- maxretry → 允许的失败尝试次数
- bantime → 封禁持续时间(以秒为单位)
- findtime → 失败尝试的时间窗口
## 验证
以下命令用于验证 SSH 保护机制是否处于活动状态并正在执行封禁。
检查 Fail2Ban 状态:
```
sudo fail2ban-client status sshd
```
示例输出:
```
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 5
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 192.168.1.100
```
## 截图

图:Fail2Ban 在多次 SSH 登录尝试失败后自动封禁源 IP,演示了实时自动化防御。

图:在自动封禁之前,系统日志中检测到的多次 SSH 登录尝试失败。
Fail2Ban 在定义的时间窗口内检测到多次失败登录尝试,并在超过配置阈值后触发了封禁。
这演示了认证日志与自动化防御行动之间的关联,符合真实世界的 SOC 响应工作流。
## 与 SIEM 集成
Fail2Ban 日志和 SSH 活动被摄取到 Splunk 中。
这使得能够:
- 查看被阻断的攻击
- 与检测告警关联
- 历史跟踪攻击者行为
Fail2Ban 事件可以与 Splunk 中的 Sysmon 遥测关联,以提供从检测到响应的端到端可见性。
## 安全影响
- 减少人工干预
- 阻止重复攻击尝试
- 演示自动化遏制
- 通过自动化遏制缩短平均响应时间 (MTTR)
## SOC 相关性
此实现模拟了:
Detection → Alert → Automated Response
这是现代 SOC 环境中的关键能力。
## 局限性
- 仅对已知模式做出反应
- 需要适当调整以避免误报
- 仅限于主机级防御
## 未来增强
- 与 SOAR 平台集成
- 自动化告警到响应管道
- 扩展到多种服务(HTTP、FTP 等)
# 18. 故障排除
在实施此实验室期间,在日志摄取、检测查询和系统配置方面遇到了若干技术挑战。
本节记录了遇到的问题及采取的解决步骤,反映了真实世界的 SOC 故障排除实践。
## 问题 1 — Sysmon 在 PowerShell 中无法识别
### 问题
命令
```
sysmon -c sysmonconfig.xml
```
失败提示: "sysmon is not recognized as the name of a cmdlet"
### 根本原因
- Sysmon 可执行文件不在系统 PATH 中
- 命令是从其他目录执行的
### 解决方案
- 导航到 Sysmon 安装目录
- 使用完整路径执行 Sysmon:
```
C:\Tools\Sysmon64.exe -c C:\Tools\sysmonconfig.xml
```
## 问题 2 — Splunk 中未显示日志
### 问题
Splunk 查询未返回 Sysmon 日志结果。
### 根本原因
- Sysmon 日志未被
- sourcetype 或 index 配置不正确
### 解决方案
- 验证 Splunk Universal Forwarder 配置
- 确认日志源:
```
WinEventLog:Microsoft-Windows-Sysmon/Operational
```
- 重启 Splunk 服务
## 问题 3 — 字段未提取
### 问题
Splunk 中看不到 Image 和 CommandLine 等字段。
### 根本原因
- Sysmon 日志以 XML 格式存储
- 字段未自动解析
### 解决方案
- 使用 rex 提取:
```
| rex field=_raw "(?[^<]+) "
```
- 在所有查询中应用一致的提取
## 问题 4 — Splunk 查询无结果返回
### 问题
检测查询返回零结果。
### 根本原因
- 过滤不正确
- 测试期间未生成事件
### 解决方案
- 手动生成测试活动:
- PowerShell 执行
- 编码命令
- 在缩小过滤器之前使用更广泛的查询进行验证
## 问题 5 — Fail2Ban 未安装
### 问题
找不到命令 `fail2ban-client`。
### 根本原因
- Ubuntu 上未安装 Fail2Ban 软件包
### 解决方案
```
sudo apt update
sudo apt install fail2ban -y
```
## 问题 6 — SSH 攻击未检测到
### 问题
Fail2Ban 未触发封禁。
### 根本原因
- IP 目标不正确
- VM 之间的网络连接问题
### 解决方案
- 使用以下命令识别正确的 Ubuntu IP:
```
ip a
```
- 验证连接性
- 生成多次失败 SSH 登录尝试
## 问题 7 — 命令使用不正确
### 问题
命令因语法错误而失败:
```
cd..
```
### 根本原因
- Linux 命令中缺少空格
### 解决方案
```
cd ..
```
## 问题 8 — 服务命令拼写错误
### 问题
```
systemctl: command not found
```
### 根本原因
- 命令拼写错误(`systemct1` 而非 `systemctl`)
### 解决方案
更正后的命令:
```
sudo systemctl start fail2ban
```
## 问题 9 — EncodedCommand 最初未检测到
### 问题
"EncodedCommand" 的搜索查询未返回结果。
### 根本原因
- CommandLine 字段未提取
- 原始 XML 日志未解析
### 解决方案
- 为 CommandLine 应用 rex 提取
- 验证编码 PowerShell 执行的存在
## 问题 10 — LSASS 检测查询无结果返回
### 问题
LSASS 访问检测查询未返回结果。
### 根本原因
- 测试期间未生成 LSASS 相关事件
- 事件过滤不正确
### 解决方案
- 生成相关活动
- 使用更广泛的搜索验证查询逻辑
## 问题 11 — 时间范围导致 Splunk 无结果
### 问题
即使存在日志,Splunk 查询也未返回结果。
### 根本原因
- Splunk 搜索中的时间范围选择不正确
- 事件存在于选定的窗口之外
### 解决方案
- 将时间范围调整为 "All Time"
- 使用更广泛的查询验证数据可用性
## 关键要点
- 构建检测前进行日志验证至关重要
- 字段提取 对于处理原始 XML 日志至关重要
- 适当的时间范围选择在 Splunk 调查中至关重要
- 网络配置直接影响攻击模拟
- 小的语法错误可能导致重大故障
- 故障排除和根本原因分析是核心 SOC 技能
这些故障排除场景反映了 SOC 分析师面临的现实挑战,并演示了安全运营环境中的实际解决问题的技能。
# 19. SOC 指标
本节定义了用于评估检测有效性、响应效率和整体安全态势的关键安全运营中心 (SOC) 指标。
这些指标模拟了真实世界的 SOC 团队如何衡量绩效并持续改进检测能力。
## 目标
- 衡量检测有效性
- 跟踪响应性能
- 识别监控差距
- 提高整体 SOC 成熟度
## 实施的关键指标
### 1. 检测量
随时间推移测量检测事件量。
**目的:**
- 识别可疑活动的峰值
- 检测异常行为模式
**Splunk Query:**
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| timechart span=1h count by host
```
**截图**

**图:环境中检测事件的基于时间的可视化**
### 2. 触发频率最高的检测
识别最常触发的检测规则。
**目的:**
- 突出常见的攻击技术
- 识别嘈杂的检测
**Splunk Query:**
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| eval DetectionType=case(
like(CommandLine,"%EncodedCommand%"),"Encoded PowerShell",
like(CommandLine,"%ExecutionPolicy Bypass%"),"Execution Policy Bypass"
)
| where isnotnull(DetectionType)
| stats count by DetectionType
| sort -count
```
**截图**

**图:基于命令行模式的检测类型分布**
### 3. 可疑进程频率
跟踪频繁执行的可疑进程。
**目的:**
- 识别重复的攻击者行为
- 检测持久化或自动化
**Splunk Query:**
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| stats count by Image
| sort -count
```
**截图**

**图:环境中观察到的已执行进程频率**
### 4. 父-子进程异常
分析异常的进程关系。
**目的:**
- 检测可疑的执行链
- 识别横向移动或脚本活动
**Splunk Query:**
```
index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| stats count by ParentImage Image
| sort -count
```
**截图**

**图:突出显示执行链的父-子进程关系**
### 5. 失败认证尝试(Fail2Ban 关联)
跟踪失败 SSH 登录尝试和被封禁的 IP。
**目的:**
- 衡量暴力破解尝试
- 验证自动化防御有效性
**Splunk Query:**
```
index=* "Failed password"
| rex field=_raw "from\s(?\d{1,3}(\.\d{1,3}){3})"
| where src_ip!="127.0.0.1"
| stats count by src_ip
| sort -count
```
**截图**

**图:按源 IP 分组的失败 SSH 登录尝试**
### 6. 平均检测时间 — 模拟
表示检测可疑活动所需的时间。
**方法:**
- 比较事件时间与检测时间
**注意:**
由于实验室限制,MTTD 根据查询执行时间和告警可见性进行估算。
### 7. 平均响应时间 — 模拟
表示响应检测到的威胁所需的时间。
**方法:**
- 测量检测与行动(例如 Fail2Ban 封禁)之间的时间
**示例:**
- 检测:失败登录尝试
- 响应:在定义阈值内封禁 IP
## SOC 性能见解
这些指标与 MITRE ATT&CK 技术(如 T1059 (Command Execution) 和 T1110 (Brute Force))保持一致,加强了检测覆盖率验证。
- 检测覆盖范围包括执行、凭证访问和暴力破解尝试
- 自动化响应减少了人工干预
- 重复模式表明现实的攻击模拟
- 指标支持检测逻辑的持续改进
## SOC 成熟度映射
| Capability | Status |
|----------|--------|
| Log Collection | Implemented |
| Detection Engineering | Implemented |
| Alerting | Implemented |
| Investigation | Implemented |
| Automated Response | Implemented |
| Metrics & Monitoring | Implemented |
## 结论
SOC 指标提供了对检测性能和运营效率的可见性。
此实施演示了安全监控如何从简单的检测演变为可衡量和优化的防御操作。
这些指标演示了从被动监控到主动的、指标驱动的安全运营的过渡。
# 20. 经验教训
本项目提供了在 SOC 环境中构建、验证和运营化安全检测的实践经验。
它不仅强调了检测威胁的重要性,还强调了了解系统行为、排除故障和衡量检测有效性的重要性。
## 1. 日志可见性的重要性
- 检测的有效性仅取决于日志的可见性
- 在构建检测之前,确保正确的日志收集和转发至关重要
- 日志缺失或配置错误会导致安全监控的盲点
## 2. 字段提取至关重要
- 原始 Sysmon 日志为 XML 格式,需要解析
- 使用 `rex` 进行字段提取对于有意义的分析是必要的
- 没有适当的提取,检测查询将失败或产生不准确的结果
## 3. 减少噪音提高检测质量
- 并非所有事件都与检测相关
- 过滤噪音(例如 localhost 流量、良性进程)显著提高信号质量
- 干净的数据导致更准确和可操作的检测
## 4. 检测需要真实数据
- 如果未生成事件,查询可能不返回结果
- 模拟活动对于验证检测是必要的
- 检测工程必须针对现实场景进行测试
## 5. 跨系统关联功能强大
- 结合 Windows (Sysmon) 和 Linux(auth 日志、Fail2Ban)提供更好的可见性
- 多源关联实现更强的检测和响应能力
- 真实的 SOC 环境依赖跨平台遥测
## 6. 自动化增强响应
- Fail2Ban 演示了检测如何触发自动化行动
- 自动化响应减少人工工作并缩短响应时间
- 这反映了真实世界的 SOC 自动化实践
## 7. 故障排除是核心 SOC 技能
- 日志缺失、查询不正确和配置错误等问题很常见
- 识别根本原因并解决它们是分析师的关键技能
- 实际故障排除经验与检测逻辑同样重要
## 8. 指标推动持续改进
- SOC 指标(如检测量、频率和响应时间)提供可衡量的见解
- 指标有助于识别差距并改进检测策略
- 安全运营应以数据为驱动,而非基于假设
## 9. 时间范围和数据验证很重要
- Splunk 中时间选择不正确可能导致对无活动的错误假设
- 始终在优化查询之前验证数据可用性
- 适当的验证确保准确的调查结果
## 10. 端到端 SOC 工作流理解
本项目帮助建立了对 SOC 生命周期的完整理解:
Detection → Investigation → Response → Metrics
- 检测识别可疑活动
- 调查验证和分析事件
- 响应缓解威胁
- 指标改进未来的检测能力
## 结论
本项目加强了检测工程、日志分析和 SOC 操作方面的实用技能。
它还演示了将技术知识与分析思维相结合的重要性,以有效检测和响应现实世界的网络威胁。
# 21. 展示的技能
本项目演示了跨检测工程、日志分析和事件响应的广泛实用网络安全和 SOC 相关技能。
## 1. SIEM & 日志分析
- 使用 Splunk 进行日志摄取、搜索和分析的实践经验
- 处理 Windows Event Logs 和 Linux 认证日志的能力
- 分析大量安全遥测数据的经验
## 2. 检测工程
- 开发了针对以下内容的检测查询:
- PowerShell 编码命令
- 执行策略绕过
- LSASS 访问尝试
- SSH 暴力破解攻击
- 将威胁行为转化为检测逻辑
- 通过过滤和调整减少误报
## 3. Splunk 查询 (SPL)
- 强烈使用 SPL 命令:
- `search`, `stats`, `timechart`, `sort`
- `rex` 用于从原始 XML 日志中提取字段
- `eval` 和 `case` 用于检测分类
- 构建结构化和优化的威胁猎杀查询
## 4. 威胁猎杀
- 主动搜索日志中的可疑行为
- 识别了以下方面的异常模式:
- 命令行活动
- 进程执行
- 父-子关系
- 应用了假设驱动的调查技术
## 5. 事件调查
- 执行了分步调查工作流:
- 告警分类
- 进程分析
- 命令行检查
- 时间线重建
- 区分良性和可疑活动
## 6. 端点监控
- 配置 Sysmon 以增强 Windows 遥测
- 分析了 Sysmon Event ID:
- 进程创建
- 命令行活动
- 进程访问 (LSASS)
- 使用了自定义 Sysmon 配置
## 7. Linux 安全监控
- 分析了 SSH 认证日志
- 检测了暴力破解尝试
- 将 Linux 日志集成到 SIEM 中
## 8. 安全自动化
- 实施 Fail2Ban 进行自动化威胁响应
- 配置了 SSH 暴力破解检测规则
- 演示了恶意 IP 的自动阻断
## 9. SOC 运营工作流
- 模拟了真实的 SOC 生命周期:
- Detection → Investigation → Response → Metrics
- 理解了 Tier 1 / Tier 2 SOC 职责
- 记录了发现和响应行动
## 10. MITRE ATT&CK 映射
- 将检测映射到 MITRE ATT&CK 技术:
- T1059 — Command Execution
- T1003 — Credential Dumping
- T1110 — Brute Force
- 展示了对对抗行为的理解
## 11. 数据可视化与报告
- 在 Splunk 中创建了 SOC 仪表板和可视化指标
- 使用图表表示检测趋势和攻击模式
- 以结构化和专业的格式展示发现
## 12. 故障排除与调试
- 解决了与以下相关的问题:
- 日志摄取失败
- 字段提取挑战
- 查询错误和无结果场景
- 网络连接问题
- 应用了系统的故障排除方法
## 13. 网络安全概念
- 理解:
- SIEM 架构
- 日志管道
- 检测与预防
- 攻击模拟和验证- 应用了实用的安全监控技术
## 结论
本项目演示了端到端的 SOC 能力,结合了网络安全分析师和检测工程角色所需的技术技能、分析思维和现实问题解决能力。
## 我的角色
- 设计并构建了整个实验室环境
- 配置了 Sysmon 和 Splunk 摄取管道
- 使用 SPL 开发了检测查询
- 进行了威胁猎杀和调查
- 使用 Fail2Ban 实施了自动化响应
- 创建了仪表板和 SOC 指标
## 未来改进
此 SOC 实验室可能的增强包括:
• 集成威胁情报源\
• 使用 SOAR 工作流自动化检测\
• 添加勒索软件检测场景\
• 实施 Active Directory 攻击模拟\
• 扩展 Sigma 规则覆盖范围\
• 添加额外的检测规则\
• 集成告警自动化\
• 扩展仪表板可视化\
• 模拟额外的攻击技术
这些改进将进一步增强实验室环境的检测和响应能力。
标签:AMSI绕过, BurpSuite集成, Cloudflare, DNS 反向解析, Fail2Ban, MITRE ATT&CK, PowerShell监控, SSH暴力破解, Sysmon, 威胁检测, 安全仪表盘, 安全分析师, 安全运营中心, 实验环境, 端点遥测, 管理员页面发现, 网络安全, 网络映射, 自动化响应, 隐私保护