malekgulam/SIEM-System-Project

GitHub: malekgulam/SIEM-System-Project

一款基于 Python/Flask 的 SIEM 平台,通过日志标准化、MITRE ATT&CK 规则检测和风险评分实现威胁告警与事件调查的全流程模拟。

Stars: 1 | Forks: 0

# SIEM 系统项目 这是一个使用 Python 和 Flask 开发的应用程序,用于模拟安全运营中心 (SOC) 的工作流程。它能够摄取 Linux 身份验证日志和 Apache 访问日志,将其标准化为统一的事件模型,运行映射到 MITRE ATT&CK 的检测规则,为告警分配风险评分,并提供一个 Web 界面用于调查、案例管理和检测报告。 ## 截图 ### 仪表板 ![Dashboard](https://raw.githubusercontent.com/malekgulam/SIEM-System-Project/main/Screenshots/dashboard.png) ### 告警调查 ![Alert Details](https://raw.githubusercontent.com/malekgulam/SIEM-System-Project/main/Screenshots/alert_details.png) ### 事件浏览器 ![Events](https://raw.githubusercontent.com/malekgulam/SIEM-System-Project/main/Screenshots/events.png) ### 案例 ![Cases](https://raw.githubusercontent.com/malekgulam/SIEM-System-Project/main/Screenshots/cases.png) ### 案例详情 ![Case Details](https://raw.githubusercontent.com/malekgulam/SIEM-System-Project/main/Screenshots/case_details.png) ### 检测指标 ![Metrics](https://raw.githubusercontent.com/malekgulam/SIEM-System-Project/main/Screenshots/metrics.png) ### ATT&CK 覆盖率 ![Coverage](https://raw.githubusercontent.com/malekgulam/SIEM-System-Project/main/Screenshots/coverage.png) ### 搜索 ![Search](https://raw.githubusercontent.com/malekgulam/SIEM-System-Project/main/Screenshots/search.png) ## 架构 ![Architecture](https://raw.githubusercontent.com/malekgulam/SIEM-System-Project/main/architecture/siem-architecture.png) ## 功能 - 摄取 Linux 身份验证日志和 Apache 访问日志 - 将事件标准化为统一的事件模型 - 五条映射到 MITRE ATT&CK 的检测规则及 JSON 规则库 - 基于严重程度、时间、用户上下文和源 IP 历史记录的告警风险评分 - 告警与事件关联——每条告警都链接到触发它的原始日志事件 - 事件浏览器,用于独立于告警调查标准化后的遥测数据 - 告警分类处理,包括状态跟踪、分析师备注和判定分配 - 带有时间戳调查备注的案例管理 - 使用相同生产级检测流水线的检测规则模拟器 - 针对每条规则的真实阳性、误报和精确度跟踪 - 支持导出 Navigator layer 的 MITRE ATT&CK 覆盖率仪表板 - 支持 Anthropic、OpenAI 和 Google 的 AI 辅助调查摘要 ## 检测规则 | 规则 ID | 规则名称 | 技术 | 战术 | 触发条件 | |---------|-----------|-----------|--------|---------| | BF-001 | SSH 暴力破解 | T1110 | 凭据获取 | 60 秒内来自同一 IP 的 5 次以上 SSH 登录失败 | | OHL-001 | 非工作时间登录 | T1078 | 防御规避 | 在 00:00 到 05:00 之间成功登录 | | WS-001 | Web 扫描活动 | T1595 | 侦察 | 30 秒内来自同一 IP 的 10 次以上 HTTP 404 响应 | | PFS-001 | 通过 sudo 进行权限提升 | T1548 | 权限提升 | 任何 sudo 命令的执行 | | CSF-001 | 撞库攻击 | T1110.004 | 凭据获取 | 60 秒内来自同一 IP 针对 3 个以上用户名的登录失败 | 规则存储在 `Detection/rules.json` 中,包含严重程度、规则类型、技术和战术。添加新规则只需要一个 JSON 文件——无需修改 Python 代码。 ## 风险评分 每条告警在检测时都会获得一个介于 0 到 100 之间的风险评分。 该评分由四个因素计算得出: - 基于告警严重程度的**基础分**——HIGH 起评分为 70,MEDIUM 为 40,LOW 为 15 - 如果告警发生在 00:00 到 05:00 之间,**+15** - 如果目标用户是 root、admin 或 administrator,**+10** - 如果源 IP 在数据库中有 3 条或更多先前的告警,**+10** 评分上限为 100,并会在整个仪表板中显示,以帮助优先确定要首先调查的告警。 ## 项目结构 ``` SIEM-System-Project/ ├── config.py # All paths and settings ├── requirements.txt ├── Data/ # Log files ├── Generators/ # Synthetic log generators ├── Ingestion/ # Log file reader ├── Parsing/ # Log parsers and event normalization ├── Detection/ # Detection engine and rules.json ├── Storage/ # SQLite database operations └── Dashboard/ # Flask app, templates, and static files ``` ## 数据库 Schema | 表 | 描述 | |-------|-------------| | `events` | 日志处理产生的每一个标准化事件,独立于告警存储 | | `alerts` | 检测结果,包含严重程度、风险评分、状态、判定和 MITRE 映射 | | `alert_events` | 将每条告警映射到触发它的具体事件 | | `cases` | 由告警创建的调查案例,具有独立的状态跟踪 | | `notes` | 附加到案例的带有时间戳的分析师备注 | 事件和告警分开存储,以便即使在未触发任何检测规则时,分析师也能调查原始遥测数据。 ## 安装 ``` git clone cd SIEM-System-Project python -m venv .venv # Windows .venv\Scripts\activate # Linux / macOS source .venv/bin/activate pip install -r requirements.txt ``` ## 使用说明 ### 第 1 步 — 生成示例日志 ``` python Generators/auth_log_generator.py python Generators/access_log_generator.py ``` ### 第 2 步 — 启动仪表板 ``` python Dashboard/app.py ``` ### 第 3 步 — 打开应用程序 ``` http://127.0.0.1:5000 ``` 点击侧边栏中的 **Run Pipeline** 以摄取日志、运行检测并填充仪表板。在生成额外的日志后,可以再次运行流水线——系统会自动防止产生重复的事件和告警。 ## 仪表板路由 | 路由 | 描述 | |-------|-------------| | `/` | 告警仪表板,包含图表、风险评分和告警队列 | | `/events` | 浏览所有具有类型筛选功能的标准化事件 | | `/events/` | 单个事件详情,带有指向相关告警的透视链接 | | `/alert/` | 告警详情,包含证据、关联事件、判定和案例管理 | | `/cases` | 调查案例列表,包含状态和判定 | | `/cases/` | 案例详情,包含备注、判定和关联的告警上下文 | | `/metrics` | 针对每条规则的检测指标,包括 TP、FP 和精确度 | | `/coverage` | MITRE ATT&CK 覆盖率仪表板 | | `/search` | 按 IP、规则 ID、规则名称或技术搜索告警 | | `/simulator` | 针对检测规则测试单条日志行 | | `/coverage/export` | 导出 ATT&CK Navigator layer 的 JSON | | `/run` | 触发检测流水线 | | `/reset` | 清除所有调查数据 | ## 告警生命周期 ``` Open Case → Investigation Notes → Verdict → Case Closed ``` 每个案例都链接到一个告警,并独立维护其自身的状态。 关闭案例会自动记录关闭时间戳。 ## AI 调查助手 告警详情页面包含一个 AI 助手,它可以根据告警上下文生成调查指南。 它支持三个提供商: | 提供商 | 示例模型 | |----------|---------------| | Anthropic | claude-sonnet-4-6 | | OpenAI | gpt-4o | | Google | gemini-2.5-flash | 提供商、模型名称和 API key 在 UI 中输入。 系统不会在任何地方存储 key——每次请求只使用一次该 key,随后将其丢弃。 ## 技术栈 - Python 3.10+ - Flask - SQLite3 - Jinja2 - Chart.js - MITRE ATT&CK - ATT&CK Navigator
标签:AMSI绕过, Flask, Python, 后端开发, 威胁检测, 安全运营中心, 无后门, 网络映射, 逆向工具