SHAROZ221/SecFlow-Engine

GitHub: SHAROZ221/SecFlow-Engine

用 YAML 声明式 playbook 驱动的轻量 SOAR 引擎,自动化 SOC 告警分诊全流程(丰富、决策、隔离、建单、通知)。

Stars: 2 | Forks: 0

# SOAR-Lite Playbook 引擎 一个轻量级的 SOAR(安全编排、自动化与响应) playbook 引擎,用于自动化 SOC 告警 分诊的重复性初始步骤:**丰富信息 → 决策 → 隔离 → 建单 → 通知**。 其构建理念旨在还原真实工具(Splunk SOAR、Shuffle、Tines)的运作方式: playbook 以 YAML 声明式定义,并由 Python 引擎 针对传入的告警执行相应步骤。 ## 为什么会有这个项目 大多数 SOC 告警分诊都遵循相同的人工模式:检查 IP 信誉,判断其严重程度,可能进行拦截,记录工单, 通知团队。本项目将该 pipeline 进行端到端自动化,因此 分析师只需审查/批准,而无需手动执行每一个步骤。 ## 架构 ``` Alert (JSON) --> Playbook Engine (main.py) --> playbook.yaml (defines steps) | +---------------+----------------+------------------+ | | | | enrichment.py containment.py ticketing.py notify.py (AbuseIPDB) (dry-run/live) (SQLite ticket (Telegram) queue) ``` ## 流程 1. **丰富信息** — 在 AbuseIPDB 中查询告警的源 IP (滥用置信度分数、ISP、国家/地区、报告次数)。 2. **决策** — 将滥用分数映射为严重程度:`critical` (>=75)、`medium` (>=25) 或 `low`。 3. **隔离** — 针对于 `critical` 告警,生成主机封禁 命令。**默认为试运行** — 它仅记录*将要* 执行的命令,而不会实际执行。提供了一个 `--live-contain` flag,用于 您确实希望其运行的实验环境。 4. **建单** — 为每个 到达此阶段的告警在本地 SQLite 队列中创建工单,无论其严重程度如何。 5. **通知** — 针对 `critical`/`medium` 严重程度的告警发送 Telegram 告警。 每次运行都会在 `evidence/` 目录下生成一份 JSON 运行日志,记录每个 步骤的输入/输出 — 这对于作为审计跟踪以及 作为您作品集/面试的实际工作证明非常有用。 ## 设置 ``` pip install -r requirements.txt ``` 可选的环境变量(如果不提供这些变量,引擎也能正常运行, 将使用安全的模拟回退机制): ``` export ABUSEIPDB_API_KEY="your_key_here" export TELEGRAM_BOT_TOKEN="your_bot_token" export TELEGRAM_CHAT_ID="your_chat_id" ``` ## 用法 ``` python main.py --alert sample_alerts/sample_alert_malicious_ip.json ``` 要实际执行隔离(仅限实验环境,需要 root 权限): ``` python main.py --alert sample_alerts/sample_alert_malicious_ip.json --live-contain ``` ## 客观范围(它是什么以及不是什么) - 隔离功能**默认为试运行,且在本 repo 中刻意未连接到 真实的防火墙/EDR** — 这是对 决策与执行逻辑的安全演示,而非生产级的隔离工具。 如果您稍后在自己的实验室中对真实的 iptables 规则测试了 `--live-contain`,请注意将其具体表述为“在隔离的 实验 VM 中进行过实机测试”,而不是暗示它已经具备了生产级的健壮性。 - 工单系统使用本地 SQLite 队列作为真实系统 (Jira/ServiceNow/GLPI)的替代。如果您想要演示真实的集成,将 `ticketing.py` 替换为 API 调用是 顺理成章的下一步。 - 只要您提供 AbuseIPDB key,信息丰富功能就是真实且实时的。 ## 可能的扩展 - 添加第二个 playbook(例如,钓鱼邮件分诊:丰富发件人 域名信息,在 VirusTotal 中检查附件 hash,隔离 邮箱)。 - 将 SQLite 工单系统替换为真实的 Jira/GLPI API 调用。 - 添加一个 Flask 仪表板以查看运行日志和待处理的隔离 操作(与您其他项目中的仪表板模式保持一致)。 - 将 `--live-contain` 接入真实的隔离实验 VM 并截取 证据截图,就像您在 MiniNIDS 中所做的那样。 ## 技术栈 Python、PyYAML、Requests、SQLite、AbuseIPDB API、Telegram Bot API。
标签:PB级数据处理, Python, SOAR, SOC告警分诊, 威胁情报, 字符串匹配, 安全运维, 开发者工具, 恶意代码分类, 无后门, 自动化响应, 逆向工具