Kartik0508/threat-intel-sharing-platform

GitHub: Kartik0508/threat-intel-sharing-platform

一个基于 STIX/TAXII 与多开源组件构建的协作式威胁情报共享平台,解决多组织间 IOC 安全共享与合规审计问题。

Stars: 0 | Forks: 0

# 威胁情报共享平台(TISP) 一个协作式、开源的网络威胁情报(CTI)共享平台,允许多个组织使用行业规范(STIX 2.1 / TAXII 2.1)摄入、分析、增强和共享威胁情报。完全采用免费开源工具并通过 Docker Compose 进行编排。 ## 目录 - [概述](#overview) - [架构](#architecture) - [服务](#services) - [先决条件](#prerequisites) - [快速启动](#quick-start) - [配置](#configuration) - [项目结构](#project-structure) - [脚本与模块](#scripts--modules) - [安全](#security) - [合规性](#compliance) - [文档](#documentation) ## 概述 TISP 模拟了一个多组织威胁情报共享环境,其中: - 分析员将 IOCs、YARA 规则和恶意样本提交到中心化的 MISP 实例 - 情报被规范化为 STIX 2.1 并通过 TAXII 2.1 服务器分发 - 源组织被分配定量的 **信任分数**(0–100),用于控制共享权限 - 所有事件流入 ELK 堆栈以进行 SIEM 关联分析和 Kibana 仪表板展示 - 事件会升级到 TheHive 进行案件管理,并升级到 Cortex 进行自动化分析(SOAR) - 私人身份信息(PII)在跨组织共享前根据定义的匿名化策略进行匿名化 - RBAC 在平台所有组件中强制执行 5 种角色 **信任分数等级:** | 等级 | 分数范围 | 影响 | |------|----------|------| | HIGH | 80–100 | 完整共享,TAXII 分发 | | MEDIUM | 60–79 | 标记为 `tisp:review-required`,不进行 TAXII 分发 | | LOW | 30–59 | 在限制共享组中隔离 | | BLOCKED | 0–29 | API 级拒绝,管理员告警 | ## 架构 ``` ┌─────────────────────────────┐ Analysts / Orgs ──────► Nginx (TLS 1.3 / port 443) │ └────────────┬────────────────┘ │ ┌────────────▼────────────────┐ │ MISP (source of truth) │ └──┬──────┬──────┬─────────────┘ │ │ │ ┌────────────▼─┐ ┌─▼──────▼──┐ ┌───────────┐ │ ELK Stack │ │ TheHive │ │ OpenCTI │ │ (SIEM) │ │ + Cortex │ │ (graph) │ └──────────────┘ │ (SOAR) │ └───────────┘ └────────────┘ ┌────────────────────────────┐ │ TAXII Server (STIX 2.1) │ └────────────────────────────┘ ┌────────────────────────────┐ │ Yeti (IOC graph store) │ └────────────────────────────┘ ``` **网络区域:** | 区域 | 服务 | |------|------| | DMZ | 仅 Nginx 反向代理 | | 应用区域 | MISP、OpenCTI、TheHive、Cortex、Yeti、Kibana | | 数据区域 | Elasticsearch、MySQL、PostgreSQL、Redis、ArangoDB、MinIO | ## 服务 共 18 个 Docker 服务: | 服务 | 镜像 | 外部端口 | 用途 | |------|------|----------|------| | nginx | nginx:1.25-alpine | 80, 443 | TLS 终止与反向代理 | | misp | ghcr.io/misp/misp-docker/misp-core:latest | 8888 | IOC 中心与事实来源 | | misp-modules | ghcr.io/misp/misp-docker/misp-modules:latest | — | MISP 增强模块 | | misp-db | mysql:8.0 | — | MISP 数据库 | | misp-redis | redis:7.2-alpine | — | MISP 缓存 | | opencti | opencti/platform:6.2.18 | 8080 | 基于图结构的 STIX 2.1 平台 | | opencti-worker | opencti/worker:6.2.18 | — | 后台任务处理 | | opencti-db | postgres:15-alpine | — | OpenCTI 数据库 | | opencti-redis | redis:7.2-alpine | — | OpenCTI 会话 | | opencti-minio | minio/minio:latest | 9001 | 对象存储 | | opencti-rabbitmq | rabbitmq:3.12-management-alpine | 15672 | 消息代理 | | elasticsearch | elasticsearch:8.13.4 | 9200 | 搜索与分析引擎 | | kibana | kibana:8.13.4 | 5601 | 仪表板与 SIEM 界面 | | logstash | logstash:8.13.4 | 9600 | 日志摄取管道 | | thehive | strangebee/thehive:5.3 | 9000 | 事件案件管理(SOAR) | | cortex | thehiveproject/cortex:latest | 9001 | 自动化分析(SOAR) | | yeti | yetiplatform/yeti:latest | 8000 | IOC 图谱存储库 | | yeti-arangodb | arangodb:3.11 | — | Yeti 图数据库 | **虚拟主机(添加到 `/etc/hosts` — 由 `setup.sh` 自动完成):** ``` https://misp.tisp.local https://opencti.tisp.local https://thehive.tisp.local https://kibana.tisp.local https://cortex.tisp.local https://yeti.tisp.local ``` ## 先决条件 | 要求 | 最低 | 推荐 | |------|------|------| | RAM | 8 GB | 16 GB | | 磁盘 | 20 GB 可用 | 50 GB 可用 | | Docker | 24.x | 最新 | | Docker Compose | v2.x | 最新 | | Python | 3.10+ | 3.11+ | | OpenSSL | 1.1.1+ | 3.x | **系统库**(由 `setup.sh` 自动安装): ``` libfuzzy-dev libyara-dev python3-dev build-essential pkg-config ``` ## 快速启动 ``` # 克隆仓库 git clone threat_system cd threat_system # 运行首次设置(生成 TLS 证书、.env、虚拟环境、/etc/hosts 条目) bash setup.sh # 启动所有服务 docker compose up -d # 观察初始化(首次运行约需 5 分钟) docker compose logs -f # 运行 MISP 初始化后操作 bash configs/misp/post-init.sh # 激活虚拟环境 source .venv/bin/activate # 在所有服务中初始化 RBAC 角色 python scripts/rbac_setup.py --apply # 导入 Kibana 仪表板 python monitoring/kibana_dashboards/setup_kibana.py ``` 启动后,所有 Web UI 均可通过各自的虚拟主机在 HTTPS 下访问。 ## 配置 所有密钥和与环境相关的值都位于 `.env` 中(请勿提交 — 参见 `.gitignore`)。 ``` cp .env.example .env # 使用您的 API 密钥、密码和令牌编辑 .env ``` 关键变量: | 变量 | 描述 | |------|------| | `MISP_URL` | MISP 基础 URL | | `MISP_KEY` | MISP 自动化 API 密钥 | | `THEHIVE_URL` | TheHive 基础 URL | | `THEHIVE_API_KEY` | TheHive API 密钥 | | `OPENCTI_TOKEN` | OpenCTI 管理令牌(由 `setup.sh` 自动生成) | | `ELASTIC_PASSWORD` | Elasticsearch 密码 | | `SLACK_WEBHOOK_URL` | 用于告警的 Slack 传入 Webhook | | `VT_API_KEY` | VirusTotal v3 API 密钥(可选,用于增强) | | `SHODAN_API_KEY` | Shodan API 密钥(可选,用于增强) | ## 项目结构 ``` threat_system/ ├── analysis/ # Threat analysis engines ├── auth/ # Authentication configs & policies ├── compliance/ # GDPR, ISO 27001, NIST CSF mapping ├── configs/ # Per-service configuration files │ ├── elk/ # Elasticsearch, Kibana, Logstash │ ├── misp/ # MISP environment & post-init │ ├── thehive/ # TheHive application config │ ├── cortex/ # Cortex application config │ └── yeti/ # Yeti platform config ├── docs/ # Project documentation ├── governance/ # Data sharing agreements, trust model, RBAC policy ├── integrations/ # Connectors to external tools ├── logs/ # Runtime audit logs (git-ignored) ├── monitoring/ # Dashboards, reports, behavioral monitoring │ └── kibana_dashboards/ # Kibana .ndjson dashboard definitions ├── reports/ # Generated reports (git-ignored) ├── scripts/ # Utility & maintenance scripts │ └── ingestion/ # IOC/feed ingestion scripts ├── security/ # Encryption, anonymization, TLS │ ├── anonymization/ # PII anonymization engine │ ├── encryption/ # AES-256-GCM at-rest encryption │ └── tls/ # TLS certificates & Nginx config ├── simulation/ # Multi-org test scenarios ├── stix_taxii/ # STIX 2.1 bundle generation & TAXII 2.1 client ├── docker-compose.yml ├── requirements.txt └── setup.sh ``` ## 脚本与模块 ### 摄入 | 脚本 | 用途 | |------|------| | `scripts/ingestion/misp_ioc_ingest.py` | 批量摄入 IOCs(IP、域名、URL、哈希、邮箱、YARA、恶意样本)到 MISP | | `scripts/ingestion/osint_feed_puller.py` | 从 5 个 OSINT 源拉取数据,去重(23,376 条原始数据 → 约 1,572 条新数据) | | `scripts/ingestion/feed_normalizer.py` | 将 MISP JSON 导出规范化为 STIX 2.1 数据包 | | `scripts/ingestion/yara_rule_submit.py` | 校验并提交 YARA 规则到 MISP | ### 分析 | 脚本 | 用途 | |------|------| | `analysis/pattern_detector.py` | 频率分析、子网聚类、事件关联 | | `analysis/correlation_engine.py` | 网络、代码相似性、WHOIS 与时间关联分析 | | `analysis/emerging_threat_alert.py` | 基于聚类的新兴威胁检测(线程池,6 倍加速) | | `analysis/attck_mapper.py` | 将 IOCs/事件映射到 MITRE ATT&CK 技术并导出 Navigator 图层 | | `analysis/ioc_enricher.py` | 通过 VirusTotal、Shodan、WHOIS 增强 IOCs,并具备速率限制 | ### 集成 | 脚本 | 用途 | |------|------ | `integrations/thehive_misp_connector.py` | MISP 与 TheHive 之间的双向案件同步 | | `integrations/misp_yeti_connector.py` | 将 MISP 可观测对象同步到 Yeti 图谱存储 | | `integrations/elastic_siem_connector.py` | 将 MISP 事件索引到 Elasticsearch 并创建检测规则 | | `integrations/suricata_rule_exporter.py` | 导出 IOC 为 Suricata IDS/IPS 规则 | | `integrations/syslog_forwarder.py` | 通过 RFC 5424 syslog 转发 MISP 审计事件 | | `integrations/slack_notifier.py` | 向 Slack 发送威胁告警(5 种告警类型) | ### 监控与报告 | 脚本 | 用途 | |------|------| | `monitoring/suspicious_behavior_monitor.py` | 6 条规则的行为异常检测(暴力破解、批量导出、非工作时间等) | | `monitoring/audit_logger.py` | 所有平台事件的结构化 JSONL 审计轨迹 | | `monitoring/report_generator.py` | 生成 PDF/HTML/CSV 报告(来源可信度、威胁摘要、合规审计等) | | `monitoring/kibana_dashboards/setup_kibana.py` | 配置全部 5 个 Kibana 仪表板 | ### 平台管理 | 脚本 | 用途 | |------|------| | `scripts/rbac_setup.py` | 在 MISP、TheHive 和 Kibana 中创建并审计 5 个 RBAC 角色 | | `scripts/trust_score.py` | 计算并更新源信任分数 | | `stix_taxii/stix_bundle_generator.py` | 从 MISP 事件生成 STIX 2.1 数据包 | | `stix_taxii/stix_validator.py` | 根据 STIX 2.1 规范验证数据包 | | `stix_taxii/taxii_client.py` | TAXII 2.1 订阅客户端,用于消费数据流 | | `simulation/run_simulation.py` | 运行 5 个端到端多组织测试场景 | ## 安全 ### 加密 - **静态数据**:AES-256-GCM(`security/encryption/encrypt_at_rest.py`) - **传输中**:所有服务流量在 Nginx 处强制使用 TLS 1.3 ### 认证 - TOTP 多因素认证(MFA)(RFC 6238)应用于 MISP 和 TheHive - 提供 OAuth2 / LDAP 集成(参见 `auth/`) - 会话超时与重新认证策略位于 `auth/session_policy.md` ### 私人身份信息(PII)匿名化 在跨组织共享前应用 7 条规则(`security/anonymization/data_anonymizer.py`): | 规则 | 转换 | |------|------| | IPv4 | 最后一个八位字节置零(`192.168.1.x → 192.168.1.0`) | | IPv6 | 截断至 /48 前缀 | | 邮箱 | SHA-256 哈希 | | 姓名 | 替换为角色标签 | | 组织 | 替换为部门标签 | | 电话 | 掩码(`+1-XXX-XXX-1234`) | | 文件路径 | 仅保留文件名 | ### RBAC 角色 | 角色 | 访问级别 | |------|----------| | TISP-Admin | 平台完全管理权限 | | TISP-Analyst | 读写 IOCs,创建案件 | | TISP-Contributor | 提交 IOCs,限制分析 | | TISP-ReadOnly | 仅读访问共享情报 | | TISP-Auditor | 仅读访问审计日志与合规报告 | ## 合规性 | 框架 | 覆盖范围 | |------|----------| | GDPR | 实施 9 项条款 | | ISO 27001:2022 | 92%(62 项控制中的 57 项) | | NIST CSF 2.0 | 90%(61 个子类中的 55 个) | 详细映射位于 `compliance/` 目录中。 ## 文档 | 文档 | 位置 | |------|------| | 最终项目报告 | `docs/final_project_report.md` | | 架构图 | `docs/architecture_diagram.md` | | 管理指南 | `docs/admin_guide.md` | | 用户培训指南 | `docs/user_training_guide.md` | | 集成手册 | `docs/integration_manual.md` | | 信任模型 | `governance/trust_model.md` | | RBAC 策略 | `governance/rbac_policy.md` | | 数据共享协议 | `governance/data_sharing_agreement.md` | | 密钥管理 | `security/encryption/key_management.md` | | 匿名化策略 | `security/anonymization/anonymization_policy.md` | | 测试场景 | `simulation/test_scenarios.md` |
标签:CIDR查询, Cortex, Docker Compose, Elasticsearch, ELK, HTTPS, IOC, Kibana仪表板, Logstash, Nginx, PII匿名化, RBAC, SOAR, STIX 2.1, TAXII, TAXII 2.1, TheHive, TLS 1.3, YARA, 云资产可视化, 信任分数, 信任评分, 信息共享, 参数枚举, 合规, 多组织, 威胁情报, 威胁情报共享平台, 安全共享, 安全运营, 开发者工具, 开源, 恶意样本, 扫描框架, 搜索引擎查询, 数据治理, 数据脱敏, 日志聚合, 测试用例, 版权保护, 网络安全, 行业标准, 角色权限, 逆向工具, 隐私保护