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 次及以上失败。 ![暴力破解检测](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/852640426a072654.png) ### 2. 权限提升 — 用户添加到管理员组 ``` event.code: 4732 ``` 检测任何账户被添加到特权本地组。任何此类告警都需立即调查。 ![权限提升](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6c65f54ad3072655.png) ### 3. 进程创建监控 ``` event.code: 4688 ``` 用于可疑侦察的优化版本: ``` event.code: 4688 AND process.command_line: ("whoami" OR "ipconfig" OR "net user" OR "net localgroup") ``` ![进程创建](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/bcd7f5f386072656.png) ### 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, 代理支持, 免杀技术, 告警, 安全运营, 家庭实验室, 扫描框架, 日志采集, 暴力破解检测, 权限提升检测, 流量重放, 越狱测试, 进程创建检测