trevjacq/siem-home-lab
GitHub: trevjacq/siem-home-lab
一个基于 Elastic Stack 的家庭 SIEM 实验室,利用 KQL 规则对 Windows 安全日志进行实时检测与 MITRE ATT&CK 映射。
Stars: 0 | Forks: 0
# SIEM 家庭实验室 — Windows 10 上的 Elastic Stack
一个基于 Elastic Stack(Elasticsearch + Kibana + Winlogbeat)的家庭安全运营实验室,采集实时 Windows 安全事件日志并检测映射到 MITRE ATT&CK 的攻击者行为。
## 架构
```
Windows 10 Host
│
├── Winlogbeat 9.3.3
│ └── Collects: Security, System, Application event logs
│
├── Elasticsearch 9.3.3
│ └── Indexes and stores all log data locally
│
└── Kibana 9.3.3
└── Dashboards, KQL search, detection rules, alerting
```
## 环境
| 组件 | 版本 | 角色 |
|---|---|---|
| OS | Windows 10 | 日志源 + 主机 |
| Elasticsearch | 9.3.3 | 日志存储与索引 |
| Kibana | 9.3.3 | SIEM UI、仪表板和告警 |
| Winlogbeat | 9.3.3 | 日志采集代理 |
## 采集的日志源
- **Windows Security 日志** — 身份验证、权限使用、账户变更、进程创建
- **Windows System 日志** — 服务启动/停止、系统事件
- **Windows Application 日志** — 应用程序错误与事件
| 事件 ID | 描述 | MITRE ATT&CK |
|---|---|---|
| 4624 | 成功登录 | T1078 有效账户 |
| 4625 | 登录失败 | T1110 暴力破解 |
| 4634 | 注销 | T1078 有效账户 |
| 4672 | 分配特殊权限 | T1078.002 |
| 4688 | 进程创建 | T1059 命令执行 |
| 4728 | 用户添加到全局组 | T1098 账户操纵 |
| 4732 | 用户添加到本地组 | T1098 账户操纵 |
| 4776 | NTLM 凭证验证 | T1110 暴力破解 |
## 检测规则(KQL)
### 1. 暴力破解检测
```
event.code: 4625
```
检测重复的失败登录尝试。阈值设定为:2 分钟内来自同一源 5 次及以上失败。

### 2. 权限提升 — 用户添加到管理员组
```
event.code: 4732
```
检测任何账户被添加到特权本地组。任何此类告警都需立即调查。

### 3. 进程创建监控
```
event.code: 4688
```
用于可疑侦察的优化版本:
```
event.code: 4688 AND process.command_line: ("whoami" OR "ipconfig" OR "net user" OR "net localgroup")
```

### 4. 特殊权限登录
```
event.code: 4672 AND NOT winlog.event_data.SubjectUserName: "SYSTEM"
```
检测被授予特殊权限的非 SYSTEM 账户 — 这是权限提升或横向移动的关键指标。
## 测试活动生成
**模拟暴力破解(10 次失败登录):**
```
for ($i=1; $i -le 10; $i++) {
$cred = New-Object System.Management.Automation.PSCredential("fakeuser", (ConvertTo-SecureString "wrongpassword" -AsPlainText -Force))
Start-Process cmd -Credential $cred -ErrorAction SilentlyContinue
}
```
结果:在 Kibana 中捕获 10 条事件 ID 4625
**模拟权限提升:**
```
net user testuser Password123! /add
net localgroup administrators testuser /add
net user testuser /delete
```
结果:在 Kibana 中捕获 2 条事件 ID 4732
**启用进程创建审计:**
```
auditpol /set /subcategory:"Process Creation" /success:enable /failure:enable
```
**模拟后渗透侦察:**
```
Start-Process powershell -ArgumentList "-Command whoami; ipconfig; net user" -WindowStyle Hidden
```
结果:在 Kibana 中捕获 11 条事件 ID 4688
## 关键发现
- Windows 机器即使在空闲状态下也会持续生成身份验证和权限事件,因此在调整检测阈值前建立基线至关重要
- 事件 ID 4688 需要通过 auditpol 手动启用审核策略,默认未开启
- Winlogbeat 以近实时(约 15 秒延迟)方式传输日志,适合实时威胁检测
## 认证与背景
作为 CompTIA Security+(SY0-701)实践补充,涵盖:
- 领域 1 — 威胁、攻击与漏洞(暴力破解、权限提升)
- 领域 2 — 技术与工具(SIEM 配置、日志分析)
- 领域 4 — 身份与访问管理(事件 ID 映射)
## 下一步计划
- [ ] 添加 Packetbeat 以采集网络流量
- [ ] 构建带有电子邮件通知的 Kibana 告警规则
- [ ] 集成 MITRE ATT&CK Navigator 覆盖层
- [ ] 添加 Linux 虚拟机并采集认证日志
## 参考
- [Elastic Security 文档](https://www.elastic.co/guide/en/security/current/index.html)
- [MITRE ATT&CK 框架](https://attack.mitre.org/)
- [Windows 安全事件 ID](https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/security-auditing-overview)
- [CompTIA Security+ SY0-701](https://www.comptia.org/certifications/security)
标签:Cloudflare, Elasticsearch, Elastic Stack, KQL 查询, MITRE ATT&CK, T1059, T1078, T1078.002, T1098, T1110, Windows 10, Windows 安全日志, Winlogbeat, 代理支持, 免杀技术, 告警, 安全运营, 家庭实验室, 扫描框架, 日志采集, 暴力破解检测, 权限提升检测, 流量重放, 越狱测试, 进程创建检测