ckvishwa/soc-analyst-portfolio
GitHub: ckvishwa/soc-analyst-portfolio
基于 Splunk + Sysmon 的 SOC 分析师实战作品集,在 Active Directory 实验环境中模拟完整 Windows 攻击链并编写对应的 MITRE ATT&CK 检测规则与调查报告。
Stars: 0 | Forks: 0
# 企业 SOC 检测实验室






**Vishva Teja Chikoti** | 网络安全 | SOC 分析师
[LinkedIn](https://linkedin.com/in/vishvack) • [邮箱](mailto:vchik2@unh.newhaven.edu) • 求职意向:SOC 分析师 L1 / 检测工程师
## 作品集数据统计
| 指标 | 数值 |
|--------|-------|
| 实验室 / 模拟总数 | 14(8 个企业 AD + 6 个独立环境) |
| 已分析的真实安全事件 | 8,000+ Windows + Sysmon 事件 |
| 映射的 MITRE ATT&CK 技术 | 跨 9 个战术的 25 项技术 |
| 自定义 SPL 检测规则 | 14 条规则 |
| 调查报告 | 8 份结构化分析师报告 |
| 覆盖的攻击阶段 | 初始访问 → 侦察 → 执行 → 凭证访问 → 横向移动 → 持久化 → C2 |
| 实验室环境 | 3 虚拟机 Active Directory 域(DC + 端点 + Kali 攻击机) |
| 攻击机 | Kali Linux — 真实的跨机攻击 |
## 实验室架构
```
┌─────────────────────────────────────────────────────────────┐
│ Lab Network: 192.168.10.0/24 │
│ Domain: SOCLAB.LOCAL │
│ │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ Windows Server 2019 │ │ Windows 10 │ │
│ │ Domain Controller │◄──│ Victim Endpoint │ │
│ │ 192.168.10.10 │ │ 192.168.10.20 │ │
│ │ AD DS + DNS │ │ Sysmon v15.20 │ │
│ │ Splunk Enterprise │ │ Splunk UF │ │
│ │ Sysmon v15.20 │ │ jsmith (domain) │ │
│ └──────────┬───────────┘ └──────────┬───────────┘ │
│ │ log forwarding │ │
│ └──────────┬───────────────┘ │
│ ▼ port 9997 │
│ ┌─────────────────┐ │
│ │ Splunk indexes │ │
│ │ endpoint │ │
│ │ wineventlog │ │
│ └─────────────────┘ │
│ │
│ ┌──────────────────────┐ │
│ │ Kali Linux │ ← Real attacker machine │
│ │ 192.168.10.50 │ brute force, SMB, recon │
│ └──────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
```
## 第 1 部分 — 企业 AD 检测实验室 (v2)
3 虚拟机 Active Directory 环境。来自 Kali 的真实跨机攻击。所有遥测数据均收集在 Splunk 中。
### 实验室配置
- Windows Server 2019 被提升为域控 (`SOCLAB.LOCAL`)
- Windows 10 端点加入域,用户为 `SOCLAB\jsmith`
- Kali Linux 攻击机位于同一网段
- 两台 Windows 机器上均部署了 Sysmon v15.20
- Splunk Enterprise 从端点接收了 4,000+ 个事件
### 攻击模拟与检测
| # | 模拟 | MITRE 技术 | 战术 | 攻击机 | 检测 | 状态 |
|---|-----------|----------------|--------|---------|-----------|--------|
| 01 | PowerShell 可疑执行 | T1059.001 | 执行 | Win10 | DET-001 ✅ 触发 | ✅ |
| 02 | 暴力破解登录 | T1110.001 | 凭证访问 | **Kali Linux** | DET-002 ✅ 触发 | ✅ |
**查看完整实验室环境的实际运行情况:** [DET-008 — 3 台虚拟机全部运行并成功触发 DNS 信标检测](screenshots/splunk-searches/det-008-dns-beacon-all-vms.png)
| 03 | 凭证转储模拟 | T1003.001 | 凭证访问 | Win10 | DET-003 ✅ 触发 | ✅ |
| 04 | 计划任务持久化 | T1053.005 | 持久化 | Win10 | DET-004 ✅ 触发 | ✅ |
| 05 | 注册表 Run Key 持久化 | T1547.001 | 持久化 | Win10 | DET-005 ✅ 触发 | ✅ |
| 06 | 进程注入指标 | T1055 | 防御规避 | Win10 | DET-006 ✅ 触发 | ✅ |
| 07 | 通过 SMB 进行横向移动 | T1021.002 | 横向移动 | **Kali Linux** | DET-007 ✅ 触发 | ✅ |
| 08 | DNS/HTTP 信标流量 | T1071.001/004 | 命令控制 (C2) | Win10 | DET-008 ✅ 触发 | ✅ |
### 已验证的检测
**DET-001 — 可疑 PowerShell 执行** ✅ 在 Splunk 中实时运行
```
index=endpoint sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational"
"1 "
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| search Image="*powershell*"
(CommandLine="*EncodedCommand*" OR CommandLine="*ExecutionPolicy Bypass*"
OR CommandLine="*WindowStyle Hidden*" OR CommandLine="*DownloadString*")
| table _time, host, User, Image, ParentImage, CommandLine
| sort -_time
```
**结果:** 在 `SOCLAB\jsmith` 从 `cmd.exe` 运行编码的 PowerShell 时触发 — 确认为真阳性。
**DET-002 — 暴力破解登录** ✅ 在 Splunk 中实时运行
```
index=wineventlog EventCode=4625
| stats count AS failures BY Account_Name, Source_Network_Address
| where failures >= 3
| sort -failures
```
**结果:** 检测到来自 Kali Linux (192.168.10.50) 针对 `testuser01` 的 11 次 SMB 登录失败尝试 — 确认账户锁定(事件 4740)。
**查看全部 8 条检测规则:** [`detections/`](detections/)
## 第 2 部分 — 独立检测实验室 (v1)
单虚拟机实验室,利用真实的 Windows 遥测数据覆盖额外的攻击阶段。
### 完整攻击链
```
[Lab 4] Initial Access
Phishing email → weaponized PDF.exe → credential harvesting
↓
[Lab 1] Reconnaissance
whoami → ipconfig → systeminfo → netstat → tasklist
↓
[Lab 2] Execution
Malicious PowerShell → Base64 obfuscation → encoded command execution
RuntimeBroker.exe → PowerShell (anomalous parent — suspected injection, not confirmed)
↓
[Lab 3] Credential Access
Brute force → 10 attempts in 5 sec via svchost
↓
[Lab 5] Explicit Credential Use
cmdkey credential enumeration → EventCode 4648 (explicit credential use) → local RDP session
↓
[Lab 6] Persistence
Run Key + Fake Service + Winlogon Hijack = 3 simultaneous persistence mechanisms
```
### 实验室
| # | 实验室 | MITRE 技术 | 关键发现 | 状态 |
|---|-----|-----------------|-------------|--------|
| 1 | [侦察检测](./labs/Lab1-Recon-Detection.md) | T1033, T1016, T1082 | 在 SYSTEM 和用户上下文中观察到侦察命令 — 可能存在双重落脚点 | ✅ |
| 2 | [PowerShell 检测](./labs/Lab2-PowerShell-Detection.md) | T1059.001, T1027 | RuntimeBroker.exe → PowerShell — 异常的父子进程关系(怀疑 T1055,未确认) | ✅ |
| 3 | [暴力破解检测](./labs/Lab3-Brute-Force-Detection.md) | T1110.001 | 5 秒内来自本地主机经由 svchost 的 10 次失败尝试 | ✅ |
| 4 | [钓鱼分诊](./labs/Lab4-Phishing-Triage.md) | T1566.001, T1027, T1036.007 | Base64 URL 解码为 evil.com/steal + pdf.exe 附件 | ✅ |
| 5 | [RDP 认证与显式凭证检测](./labs/Lab5-RDP-Lateral-Movement.md) | T1021.001, T1078 (部分) | EventCode 4648 — 在本地主机上观察到通过 cmdkey 使用显式凭证 | ✅ |
| 6 | [持久化狩猎](./labs/Lab6-Persistence-Hunt.md) | T1547.001, T1543.003, T1547.004 | 检测到 3 种同时存在的持久化机制 | ✅ |
## 完整的 MITRE ATT&CK 覆盖范围
| 战术 | 技术 ID | 技术名称 | 实验室/模拟 | 已检测 |
|--------|-------------|---------------|---------|---------|
| 初始访问 | T1566.001 | 鱼叉式钓鱼附件 | Lab 4 | ✅ |
| 执行 | T1059.001 | PowerShell | Lab 2, SIM-001 | ✅ |
| 执行 | T1027 | 混淆文件 | Lab 2, Lab 4 | ✅ |
| 凭证访问 | T1110.001 | 暴力破解:密码猜测 | Lab 3, SIM-002 | ✅ |
| 凭证访问 | T1078 | 有效账户 | Lab 5 (部分) | ⚠️ 未确认对手滥用 |
| 凭证访问 | T1003.001 | LSASS 内存 (模拟) | SIM-003 | ✅ |
| 持久化 | T1547.001 | 注册表 Run Keys | Lab 6, SIM-005 | ✅ |
| 持久化 | T1543.003 | Windows 服务 | Lab 6 | ✅ |
| 持久化 | T1547.004 | Winlogon 助手 | Lab 6 | ✅ |
| 持久化 | T1053.005 | 计划任务 | SIM-004 | ✅ |
| 防御规避 | T1055 | 进程注入 | SIM-006 | ✅ |
| 防御规避 | T1036.007 | 伪装 | Lab 4 | ✅ |
| 发现 | T1033 | 系统所有者发现 | Lab 1 | ✅ |
| 发现 | T1016 | 系统网络配置发现 | Lab 1 | ✅ |
| 发现 | T1082 | 系统信息发现 | Lab 1 | ✅ |
| 横向移动 | T1021.001 | 远程服务:RDP | Lab 5 | ✅ |
| 横向移动 | T1021.002 | SMB 管理共享 | SIM-007 | ✅ |
| 命令控制 (C2) | T1071.001 | Web 协议 | SIM-008 | ✅ |
| 命令控制 (C2) | T1071.004 | DNS | SIM-008 | ✅ |
**已映射 25 项技术。已检测 25 项。**
## 使用的工具
| 工具 | 角色 | 版本 |
|------|------|---------|
| Splunk Enterprise | SIEM — 索引、搜索、仪表板、告警 | 10.4.0 |
| Sysmon | 高级端点遥测 | v15.20 |
| Windows Server 2019 | 域控制器 (AD DS, DNS) | 评估版 |
| Windows 10 | 受害者端点 | 21H2 |
| Kali Linux | 攻击机 — 真实的跨机攻击 | 2024.x |
| CyberChef | Base64 解码、IOC 分析 | 在线版 |
| VirusTotal | 哈希与 URL 信誉检测 | 在线版 |
| MITRE ATT&CK Navigator | 覆盖范围可视化 | v14 |
| hydra / smbclient | 暴力破解模拟(仅限实验室) | Kali 内置 |
## 检测工程工作流
```
Kali / Win10 Sysmon + Windows Splunk SPL
Attack Simulation ──► Event Log Telemetry ──► Detection Query
│ │
▼ ▼
Attack Simulation MITRE ATT&CK Tune + Save Alert
Documentation ◄─── Mapping ◄─── + FP Analysis
│
▼
Investigation Report
(analyst POV — timeline,
artifacts, decision)
```
## 关键发现
| 模拟/实验室 | 发现 | 严重程度 |
|---------------|---------|---------|
| SIM-001 PowerShell | `cmd.exe → powershell.exe -EncodedCommand -ExecutionPolicy Bypass` — Sysmon 事件 1 | 高 |
| SIM-002 暴力破解 | 11 次来自 Kali 192.168.10.50 的 SMB 失败 — testuser01 被锁定(事件 4740) | 高 |
| SIM-003 LSASS | rundll32.exe + comsvcs.dll → lsass.exe 访问 — Sysmon 事件 10 | 严重 |
| SIM-004 计划任务 | 由 SOCLAB\jsmith 执行 schtasks /create — Sysmon 事件 1 | 高 |
| SIM-005 注册表 | reg.exe 写入 HKCU\...\Run — Sysmon 事件 13 | 高 |
| SIM-006 注入 | mavinject.exe → notepad.exe CreateRemoteThread — Sysmon 事件 8 | 严重 |
| SIM-007 横向移动 | 来自 Kali 192.168.10.50 的 SMB ADMIN$ 访问 — DC 上的事件 4624 类型 3 | 高 |
| SIM-008 信标通信 | backgroundTaskHost.exe — 以 5 秒间隔向 soclab.local 发起 15 次周期性 DNS 查询 — Sysmon 事件 22 — DET-008 触发了 85 个事件 — [截图](screenshots/splunk-searches/det-008-dns-beacon-all-vms.png) | 中 |
| Lab 1 侦察 | 在 SYSTEM 和用户上下文中观察到侦察命令 — 可能存在双重落脚点或单一攻击者处于多个安全上下文中 | 高 |
| Lab 2 PowerShell | RuntimeBroker.exe → PowerShell — 异常的父子进程关系 — 如果没有事件 8/10,怀疑是 T1055 但未确认 | 高 |
| Lab 3 暴力破解 | 5 秒内通过本地主机的 svchost 发生 10 次登录失败 | 严重 |
| Lab 4 钓鱼 | Base64 URL 解码为 evil.com/steal — 识别出 pdf.exe 附件 | 严重 |
| Lab 5 RDP | EventCode 4648 — 观察到通过 cmdkey 使用显式凭证 — 仅限本地主机范围 | 高 |
| Lab 6 持久化 | 检测到 3 种同时存在的持久化机制:Run Key + 服务 + Winlogon | 严重 |
## 关键经验总结
1. **Sysmon 事件 ID 1 是最具价值的检测源** — `ParentImage` + `CommandLine` + `User` 结合起来可以解决分诊过程中的大部分歧义
2. **真实的跨机攻击看起来与本地模拟不同** — Kali 的暴力破解会生成类型 3 的网络登录事件,而本地模拟生成的则是类型 2 的交互式登录事件
3. **误报才是真正的工程工作** — 最初的 检测在 Splunk UF 自身的进程上触发了告警;在规则发挥作用之前,需要进行基线分析调优
4. **账户锁定本身就是一种检测** — 事件 4740 是一种高保真的暴力破解确认信号,无需任何调优
5. **异常的父子进程关系需要佐证** — RuntimeBroker → PowerShell 很可疑,但无法自我证实;在断言 T1055 之前需要事件 ID 8 或 10
6. **事件 ID 4648 是一个信号,而不是最终判定** — 显式凭证使用可能是合法的;请务必将其与进程名称、目标服务器和账户上下文进行关联
7. **3 种同时存在的持久化机制比单一机制更难被检测到** — 防御者必须同时对 Run Key、服务和 Winlogon 进行威胁狩猎
## 简历要点
## 仓库结构
```
soc-analyst-portfolio/
├── README.md
├── lab-setup/ ← VM build, network diagram, Splunk + Sysmon install
├── configs/ ← sysmonconfig.xml, inputs.conf, indexes.conf
├── detections/ ← 8 SPL detection rules + detection index
├── attack-simulations/ ← 8 enterprise AD simulation docs
├── investigation-reports/ ← structured analyst reports per detection
├── mitre-attack-mapping/ ← full MITRE ATT&CK mapping table
├── dashboards/ ← Splunk dashboard SPL panels
├── false-positive-analysis/ ← FP notes and tuning recommendations
├── resume-linkedin/ ← resume bullets, LinkedIn post, talking points
├── labs/ ← v1 standalone lab markdown files
├── reports/ ← executive incident report
├── detection/ ← v1 SPL correlation searches
├── references/ ← tools used, glossary
└── screenshots/
├── lab-architecture/ ← DC setup, domain join, network proof
├── splunk-searches/ ← all 8 detection results + FP evidence
├── alerts/ ← saved Splunk alerts
└── sysmon-events/ ← Sysmon telemetry verification
```
## 免责声明
标签:AMSI绕过, Cloudflare, IP 地址批量处理, MITRE ATT&CK, PE 加载器, Sysmon, Terraform 安全, 威胁检测, 安全运营, 扫描框架, 攻击模拟, 红队行动, 驱动签名利用