richfish85/lighthouse-soc
GitHub: richfish85/lighthouse-soc
一个基于Python和Streamlit构建的轻量级安全运营中心事件分诊模拟平台,用于练习和展示初级SOC分析师的标准事件响应与处理工作流。
Stars: 0 | Forks: 0
# Lighthouse SOC — 事件分诊模拟器
[](https://github.com/richfish85/lighthouse-soc/actions/workflows/tests.yml)
*一个本地、合成的 SOC 实验室,用于练习告警分诊、证据审查、优先级决策、升级、误报处理以及分析师交接。*
**旨在展示初级 SOC 分析师应具备的工作习惯:确定范围、区分证据与假设、选择合理的严重性、记录操作,以及将案件交接给下一位响应人员。*
## 这是什么?
**Lighthouse SOC** 是一个轻量级安全运营模拟平台,旨在模拟事件从报告到分诊、调查、升级、关闭和监督的全过程。
该项目并未声称是一个完整的 SIEM,而是专注于符合实际的初级分析师工作流程:
* 审查告警和富化证据
* 识别受影响的身份、资产和可能的影响范围
* 根据严重性、置信度、资产关键性和权限确定优先级
* 应用 playbook 并记录分析师备注
* 升级、遏制、关闭或分类为误报
* 保留清晰的交接和审计追踪
它模拟了三种用户角色:
### 报告者
* 提交可疑活动报告
* 跟踪已提交的告警
* 查看事件结果
### 分析师
* 对传入事件进行分诊
* 审查富化上下文
* 应用 playbook
* 添加备注并更新状态
### 管理员
* 审查事件趋势
* 监控积压健康状况
* 查看运营指标和监督仪表板
# 为什么开发这个项目?
该项目的设计初衷包含以下两点:
## 1. SOC 分析师实践环境
用于展示以下方面的实用技能:
* 告警和事件分诊
* 基于证据的严重性和范围决策
* Playbook 使用和升级判断
* 误报记录
* 事件备注和响应人员交接
* 基于 MITRE ATT&CK 的调查假设
## 2. 安全系统演练
用于模拟软件组件之间的交互方式:
* 接入 → 处理 → 评分 → 工作流 → 报告
它有意强调透明的决策和可重现的证据,而非增加不必要的复杂性。
# 示例工作流
示例事件:
**不可能的异地登录 (Impossible Travel Login)**
1. 报告者提交告警
2. 系统创建事件记录
3. 富化资产/IP 上下文
4. 计算优先级
5. 分析师进行调查并更新状态
6. 管理员仪表板反映事件影响
# 核心功能
## 已实现
* 基于角色的工作流模拟
* 基于 SQLite 的事件和告警数据
* 包含三种用户视图的 Streamlit UI
* 预置的演示数据和用户
* 优先级评分引擎
* CLI 冒烟测试
* Pytest 验证
* Mermaid 架构图
# 技术栈
| 领域 | 技术 |
| -------- | --------------- |
| 语言 | Python |
| 数据 | SQLite, JSON |
| UI | Streamlit |
| 测试 | Pytest |
| 图表 | Mermaid |
| CLI | Python argparse |
# 架构
项目采用简单的服务优先结构:
```
app/
├── main.py
├── cli.py
├── database.py
├── seed.py
├── services/
├── ui/
└── tests/
```
### 层级
**数据库**
* Schema 创建
* 种子数据加载
* 持久化
**服务**
* 告警接入
* 上下文富化
* 评分
* 事件生命周期
* 指标
**UI**
* 位于服务之上的轻量级展示层
**CLI**
* 引导
* 冒烟测试
* 验证流程
# 优先级评分逻辑
优先级设定具有意保持透明:
```
Severity
+ Confidence
+ Asset Criticality
+ Privileged Account Weight
= Priority Score
```
示例:
高严重性
高置信度
关键资产
特权账户
→ 映射到 **P1**
# 快速开始
## 安装
```
python -m pip install -r requirements.txt
```
## 填充演示数据
```
python -m app.cli seed --reset
```
## 运行应用
```
streamlit run app/main.py
```
## 运行冒烟测试
```
python -m app.cli smoke
```
## 运行测试套件
```
python -m pytest
```
# 演示工作流
以三种角色的视角使用该应用进行演练:
1. 以 `reporter01` 身份登录并提交一份可疑活动报告。
2. 切换到 `analyst01` 并调查生成的事件。
3. 审查富化信息、应用 playbook 指导、添加备注并更新状态。
4. 切换到 `admin01` 并审查仪表板指标和事件监督情况。

# 演示账户
| 用户 | 角色 |
| --------- | -------- |
| reporter01 | 报告者 |
| analyst01 | 分析师 |
| admin01 | 管理员 |
# 示例事件场景
* 不可能的异地登录
* 恶意软件检测
* 报告的网络钓鱼
* 可疑的 PowerShell
* 重复的登录失败
* 权限提升尝试
# 分析师案例手册与 KQL
本仓库中的所有人员、组织、事件、主机名和 IP 地址均为虚构或专为文档保留。不包含任何生产或客户数据。
[分析师案例手册](docs/ANALYST_CASEBOOK.md) 包含四个已完成的模拟调查。每个记录都包含:
* 初始信号和受影响范围
* 已审查的证据和仍待确认的假设
* 严重性/优先级判定理由
* MITRE ATT&CK 假设
* 遏制、处置、升级和交接
随附的 [KQL 查询包](docs/kql/soc_triage_queries.kql) 为相同场景提供了实验查询。表可用性和字段名称因 Microsoft Sentinel 和 Defender 连接器而异,因此必须根据目标工作区的 schema 验证每个查询。
| 模拟场景 | 处置结果 | 基于 ATT&CK 的假设 |
| --- | --- | --- |
| 特权账户的不可能异地登录 | 已升级 | T1078.004 有效账户:云账户 |
| 薪资主题的网络钓鱼链接 | 已关闭,未观察到交互 | T1566.002 钓鱼:鱼叉式钓鱼链接 |
| 管理员工作站上的编码 PowerShell | 审查中;建议 L2 升级 | T1059.001 命令和脚本解释器:PowerShell |
| 批准演练期间的重复登录失败 | 误报 | T1110.001 暴力破解:密码猜测 |
ATT&CK 映射描述的是调查假设,而非妥协证明。
# 文档
## 图表
* 架构
* RBAC 矩阵
* 事件生命周期
* 屏幕流程
位于:
```
diagrams/
```
## 支持文档
* ROADMAP.md
* ARCHITECTURE.md
* THREAT_MODEL.md
* DETECTION_IDEAS.md
* docs/ANALYST_CASEBOOK.md
* docs/kql/soc_triage_queries.kql
# 验证
```
python -m pytest
python -m app.cli smoke
streamlit run app/main.py
```
# 展示的工程原则
该项目应用了:
- 模块化软件设计
- 基于角色的访问控制概念
- 数据建模与持久化
- 测试驱动验证
- 可重现的 CLI 工作流
- 安全设计理念
# 设计权衡
此 MVP 特意采用:
- 使用 SQLite 而非 PostgreSQL 以实现便携性
- 使用 Streamlit 而非更重的前端技术栈以实现快速原型设计
- 使用基于规则的评分而非 ML 以确保透明度和可解释性
# 未来扩展
计划的想法:
* 身份集成(SSO / RBAC 扩展)
* 更丰富的案例管理工作流
* 策略合规性映射
* 在应用数据模型和 UI 中实现更丰富的 MITRE ATT&CK 映射
* IOC 富化集成
* 检测规则调优
* 扩展的 RBAC 权限
* 基于 API 的告警来源
# 该项目的意义
该项目将入门级安全知识转化为可见的分析师工作:
* 对队列进行分诊,而不是将每个告警都视为事件
* 区分证据、假设和未解决的问题
* 解释严重性、置信度和受影响范围
* 认识到特权资产何时需要更快的升级
* 像对待确认的威胁一样仔细记录误报
* 留下其他分析师可以继续跟进的简明备注
底层的 Python、SQLite、Streamlit、RBAC、测试和审计功能使这些决策具有可重现性。目标不是宣称具备生产级 SOC 经验;而是展示为入门级 SOC 或安全运营岗位奠定可信、诚实的基础。
## 截图
### Login 网关
### Analyst 队列
### Investigation 视图
### Admin 仪表板
## 许可证
MIT 许可证。详见 [LICENSE](LICENSE)。
## 作者
Richard Fisher
GitHub: [https://github.com/richfish85](https://github.com/richfish85)
标签:Homebrew安装, Kubernetes, Python, Streamlit, 事件分诊, 安全培训, 安全运营, 库, 应急响应, 扫描框架, 无后门, 访问控制, 逆向工具