Sazidul0/SOC-Chronicle
GitHub: Sazidul0/SOC-Chronicle
SOC-Chronicle 是一个开源的安全调查引擎,通过自动化日志关联和证据链重建,将原始安全告警转化为完整的事件攻击叙事报告。
Stars: 2 | Forks: 0
开源专业攻击调查与事件叙事引擎 — 将原始网络安全告警转化为完整、基于证据的攻击叙事。
## 愿景 SOC-Chronicle 位于现有检测平台(SIEM、EDR、XDR、云安全、IDS/IPS)与事件响应工作流之间。不同于传统 SIEM 收集和搜索日志的方式,SOC-Chronicle 专注于: - **调查自动化** — 关联事件、构建攻击图、重建时间线 - **证据关联** — 每一个结论都可追溯到支持性证据 - **根本原因分析** — 零号病人、初始入侵、爆炸半径 - **确定性分析** — 可解释的输出,没有黑盒评分 ## 核心功能 (v0.2.0) - **统一日志规范化**:将来自 Sysmon、Microsoft Sentinel、Okta、PAN-OS、CEF、Zeek、Windows 安全性等的日志映射到符合 OCSF 标准的 schema 中,并支持大文件流处理。 - **自动化关联**:使用内存或 DuckDB 驱动的关联引擎,在时间和方向上链接事件。 - **MITRE ATT&CK 映射**:高保真检测 70 多种技术,包括 LOLBin 滥用、凭证访问工具、网络 C2 和横向移动。 - **威胁情报**:内置来自 VirusTotal、Shodan InternetDB、IP-API、AlienVault OTX 和 GreyNoise 的免费情报丰富功能。 - **交互式报告**:生成专业的 HTML 报告,包含动态 D3.js 攻击图、风险指标、IOC 表格和按时间顺序排列的攻击叙事。 - **案件管理**:分类工作流,允许创建案件、附加笔记/工件以及导出案件摘要。 - **实时接入**:支持解析 Windows EVTX 文件、监控日志目录、Syslog UDP/TCP 以及 HTTP webhook。 ## 安装 ``` # 从 PyPI 安装 pip install soc-chronicle ``` 安装带有可选实时接入连接器和 PDF 导出功能的版本: ``` pip install soc-chronicle[all] ``` 或者选择特定的依赖项:`[evtx]`、`[watch]`、`[serve]`、`[pdf]`。 ## 快速开始 运行完整的自动化调查并生成专业的交互式 HTML 报告: ``` chronicle investigate examples/alert.json --logs examples/logs/ --enrich -o report.html --format html ``` ## 分类与案件管理工作流 直接从调查报告创建案件: ``` chronicle case new --from-report report.json ``` 列出活跃案件: ``` chronicle case list --status open ``` 添加调查笔记: ``` chronicle case note CASE-A1B2C3D4 "Confirmed lateral movement via SMB." ``` ## 支持的接入连接器 | 连接器 | 描述 | 用法 | |-----------|-------------|-------| | EVTX | 解析 Windows 事件日志二进制文件 | `chronicle ingest evtx file.evtx` | | File Watch | 从不断增长的本地日志目录中流式传输 | `chronicle ingest watch /var/log/syslog` | | Syslog | 接收 RFC 5424/3164 Syslog (UDP) | `chronicle ingest syslog --port 514` | | Webhook | 接收 JSON HTTP POST 请求 | `chronicle serve --port 8514` | ## 威胁狩猎包 为告警中识别出的 IOC 自动生成跨 Sigma、Splunk、Sentinel 和 Elastic 的探索查询: ``` chronicle hunt --alert alert.json --logs /path/to/logs ``` ## 高级搜索 快速搜索规范化事件数据库(DuckDB): ``` chronicle search --query "powershell.exe" --field process ``` ## Python API ``` from soc_chronicle import InvestigationEngine engine = InvestigationEngine() report = engine.investigate( alert="examples/alert.json", logs="./examples/logs", ) print(report.summary) print(report.narrative) print(f"Risk: {report.risk.total_score}/100") print(f"Patient zero: {report.patient_zero}") ``` ## 架构 ``` Security Alert → Alert Intake → IOC Extraction + Log Normalization (OCSF) ↓ Correlation Engine (DuckDB) ↓ Attack Graph ← Timeline Engine → Risk Engine ↓ Incident Narrative Generator ↓ Interactive HTML / JSON / Markdown Reports ``` ## 配置 创建 `chronicle.yaml`: ``` log_level: INFO correlation_window_seconds: 3600 threat_intel: virustotal: enabled: true api_key: "${VT_API_KEY}" ``` ## 插件开发 在 `pyproject.toml` 中通过入口点注册插件: ``` [project.entry-points."soc_chronicle.plugins"] my_parser = "my_package:MyLogParser" ``` 从 `soc_chronicle.plugins.registry` 实现 `LogParserPlugin`、`EnrichmentProviderPlugin` 或 `ExporterPlugin`。 ## 开发 ``` pip install -e ".[dev,all]" pytest ruff check src tests mypy src/soc_chronicle mkdocs serve ```标签:事件调查, 安全运营, 库, 应急响应, 扫描框架, 攻击分析, 日志关联, 自动化分析, 跨站脚本, 逆向工具