hefaistos-platform/hefaistos-pro

GitHub: hefaistos-platform/hefaistos-pro

HEFAISTOS 是一个企业级检测工程与威胁情报平台,提供从威胁假设到检测规则全生命周期管理及 MITRE ATT&CK 覆盖追踪。

Stars: 0 | Forks: 0

# Hefaistos
![HEFAISTOS Logo](https://static.pigsec.cn/wp-content/uploads/repos/cas/8f/8f886e6f4c9fd74e2b806e4312effd14aaf0fbade4de31b0d56f1cc98ff8f1b6.png) **企业级检测工程与威胁情报平台** [![License](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](./LICENSE) [![Platform Version](https://img.shields.io/badge/platform-1.0.4-0A66C2.svg)](./VERSION) [![Python](https://img.shields.io/badge/python-3.12+-blue.svg)](https://python.org) [![Django](https://img.shields.io/badge/django-6.0.5-green.svg)](https://djangoproject.com) [![React](https://img.shields.io/badge/react-19.2-61dafb.svg)](https://reactjs.org) [![TypeScript](https://img.shields.io/badge/typescript-5+-blue.svg)](https://typescriptlang.org) [![Docker](https://img.shields.io/badge/docker-compose-2496ed.svg)](https://docker.com)
## 🎯 概述 HEFAISTOS 是一个专为安全运营团队设计的综合**检测工程平台**。它提供了从威胁假设开发到检测规则创建、测试、部署以及 MITRE ATT&CK 覆盖率追踪的端到端工作流。 ### 核心能力 - 🔬 **检测工作台** - 可视化、基于图谱的检测开发环境,具备高级能力抽象图(从库中自动生成、分层条带、鲁棒性编码、缺口检测) - 🤖 **AI 驱动的规则生成** - 支持多服务商 AI(OpenAI、Gemini、Claude) - 📊 **MITRE ATT&CK 集成** - 完整的覆盖映射和技术追踪 - 🕵️ **威胁情报** - 集成 MISP 自动创建工作台 - 🔄 **Git 仓库同步** - 双向 KQL/SPL/WAZUH 规则同步 - 📋 **ACH 分析** - 结构化竞争性假设分析 - 👥 **协作工作流** - 同行评审与审批流程 - 🏢 **多租户** - 基于组织和实体的隔离(支持 MSSP) ## 🏗️ 架构 ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ NGINX (Reverse Proxy) │ │ Ports: 80 (HTTP) / 443 (HTTPS) │ └─────────────────────────────────────────────────────────────────────────┘ │ │ ▼ ▼ ┌─────────────────────────────┐ ┌─────────────────────────────────┐ │ Frontend │ │ Backend │ │ React 19 + TypeScript │ │ Django 6.0 + GraphQL │ │ TailwindCSS + Ant Design │ │ Gunicorn + WebSocket │ │ React Flow (Graphs) │ │ JWT Authentication │ └─────────────────────────────┘ └─────────────────────────────────┘ │ ┌───────────────────────────────────┼───────────────────┐ │ │ │ ▼ ▼ ▼ ┌───────────────────┐ ┌─────────────────────┐ ┌──────────────┐ │ PostgreSQL │ │ RabbitMQ │ │ Elasticsearch│ │ (Database) │ │ (Event Messaging) │ │ (Search) │ └───────────────────┘ └─────────────────────┘ └──────────────┘ ║ ┌───────────────────────────────┴───────────────────────────┐ │ Event Connectors │ ├─────────────┬─────────────┬─────────────┬───────────────-─┤ │ Rule │ Notification│ Threat Intel│ Git Push │ │ Connector │ Connector │ Connector │ Connector │ │ (Git Sync) │ (Alerts) │ (MISP) │ (Export Rules) │ └─────────────┴─────────────┴─────────────┴────────────────-┘ ``` ## ✨ 功能 ### 🔬 检测工作台 可视化工作台提供了完整的检测工程环境: - **能力抽象图** - 从能力抽象库中自动生成的可视化图谱;分层条带背景、鲁棒性颜色编码、规避注释、覆盖缺口节点,以及图谱与库面板之间的双向点击高亮同步 - **能力抽象库** - 结构化、针对特定技术的知识库(共享基线 + 组织自定义条目),将 AI 生成立足于具体的检测层(工具 → API → COM/IPC → 注册表 → 协议 → 进程行为 → 网络行为) - **图谱可视化** - 基于 React Flow 的能力抽象图,支持自动(从库中派生)和手动模式 - **检测策略** - MITRE ATT&CK 技术和策略选择 - **深度剖析部分** - 目标、技术上下文、盲点、误报 - **测试指南** - 测试场景和预期输出 - **SOAR 配置** - 告警触发器、富化、遏制、通知 - **同行评审** - 内置的评审请求和审批工作流 - **活动追踪** - 每个工作台包含持久的 markdown 调查笔记(包含格式化工具栏)和活动日志;笔记清理仅限于工作台作者/管理员 - **自适应工作区布局** - 右侧的元数据/笔记面板可折叠和拖动(最多可达页面宽度的三分之一),并且多平台编辑器可全屏打开以获得最大的编辑空间 - **检测编辑器多格式操作** - `GENERATE ALL` 支持所有注册格式,对于非空目标默认跳过,并提供可选的 **Overwrite all content** 开关;模态框中还提供针对特定格式的 `SAVE {FORMAT}` 和 `SAVE ALL` ### 🤖 AI 驱动的检测工程 用于智能规则生成的多服务商 AI 集成: | 服务商 | 模型选择 | |----------|-----------------| | **OpenAI** | 输入任何有效的模型标识符(例如 `GPT-5.5`) | | **Google Gemini** | 输入任何有效的 Gemini 模型标识符(例如 `GEMINI-3.5-FLASH`) | | **Anthropic Claude** | 输入任何有效的 Claude 模型标识符(例如 `CLAUDE-SONNET-4.6`) | | **自托管/Ollama** | 输入您的 Ollama 模型名称(例如 `llama3.1`、`mistral`) | 现在,在用户和组织设置中,模型选择为**自由文本**输入,因此当服务商发布新模型名称时,无需重新部署前端。 **AI 能力:** - **逻辑解构** - 5 步分析(能力、原子操作、规避) - **规则生成** - 从工作台上下文创建 KQL、SPL 或 Wazuh 规则 - **改进建议** - AI 驱动的规则优化建议 - **ACH 生成** - 从场景生成假设和证据 - **偏见检测** - 分析 ACH 矩阵以发现认知偏见 ### 📊 MITRE ATT&CK 集成 与 MITRE ATT&CK 框架的全面集成: - **覆盖图** - 交互式 ATT&CK Navigator,展示检测覆盖率 - **技术映射** - 将检测链接到 Enterprise、ICS 和 Mobile 技术 - **检测策略** - 导入 MITRE 检测策略和分析 - **数据组件** - 将所需数据源映射到技术 ### 🔄 规则仓库管理 与 Git 仓库的双向同步: **入站 (Git → HEFAISTOS):** - 自动/定期的仓库拉取 - 解析 KQL/SPL/WAZUH 文件并提取元数据 - 支持 KQL 文件(`.kql`、`.kusto`、带有代码块的 Markdown) - 规则去重和更新 **出站 (HEFAISTOS → Git):** - 将工作台作为检测规则 (KQL/SPL/WAZUH) 推送 - GitHub Pull Request 集成 - 自动创建分支 - 可配置的目标路径 ### 🕵️ 威胁情报集成 集成 MISP 进行基于威胁的检测: - **IoC 提取** - IP、域名、URL、哈希、电子邮件 - **事件轮询** - 自动摄取 MISP 事件 - **工作台创建** - 从事件自动生成工作台 - **ATT&CK 映射** - Galaxy 集群技术映射 - **SOAR 预填充** - 默认的富化/分流步骤 ### 📋 竞争性假设分析 (ACH) 结构化情报分析工具: - **证据追踪** - 添加带有可信度评级的证据 - **假设管理** - 创建和组织竞争性假设 - **一致性矩阵** - 对假设进行证据评分 (CC/C/N/I/II) - **偏见检测** - AI 驱动的认知偏见识别 - **工作台关联** - 将假设转化为检测工作台 ### 👥 协作与工作流 企业级协作功能: **生命周期管理:** ``` IDEA → RESEARCH → DEVELOPMENT → REVIEW → APPROVED → TESTING → DEPLOYED → TUNING ``` **评审工作流:** - 提交以进行同行评审 - 评论线程 - 批准/拒绝并附带反馈 - 活动审计日志 **多租户:** - 基于组织的隔离 - 跨实体共享模板 - 实体层级(支持 MSSP) - 基于角色的访问控制 ### 📚 附加功能 | 功能 | 描述 | |---------|-------------| | **知识库** | Wiki 风格的文档,支持分类和 Markdown | | **数据目录** | 带有字段 schema 的数据源注册表 | | **新闻与公告** | 具有优先级和自动过期功能的平台级更新 | | **日志目录** | 带有 MITRE 映射的日志源管理 | | **通知系统** | 应用内和电子邮件通知 | | **看板** | 可视化工作流管理 | | **标签系统** | 跨所有实体的灵活标签 | ## 🚀 快速开始(手动,推荐) ``` git clone -b sharp https://github.com/hefaistos-platform/hefaistos-pro.git cd hefaistos-pro git pull origin sharp cp .env.template .env cp docker-compose.override.yml.template docker-compose.override.yml mkdir -p .secrets openssl rand -base64 32 > .secrets/db_password openssl rand -base64 32 > .secrets/rabbitmq_pass python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" > .secrets/field_key echo "your-mailgun-key" > .secrets/mailgun_api docker compose up -d docker compose exec backend python manage.py migrate docker compose exec backend python manage.py createsuperuser ``` **预计时间:** 10-20 分钟 | **预计成本:** 免费(全部开源) ### SHARP 全新引导(破坏性重置) 要在干净的环境中快速推进 SHARP 部署,请使用: ``` ./scripts/sharp_bootstrap.sh ``` 这将执行 `docker compose down -v`,重新构建镜像,启动 stack,运行迁移,重建搜索索引,并执行冒烟检查。 PostgreSQL 18+ 兼容性提示:SHARP 使用 `/var/lib/postgresql` 挂载布局。如果遇到提及 `unused mount/volume` 和 `/var/lib/postgresql/data` 的数据库启动错误,请删除旧版数据库卷并重新运行引导。 ## 📚 文档索引 - 完整安装指南:[INSTALL_MANUAL.md](Docs/INSTALL_MANUAL.md) - 认证设置指南(Entra OIDC + 通用 OIDC):[AUTH_SETUP.md](Docs/AUTH_SETUP.md) - 检测瓶颈指南:[README_CHOKEPOINTS.md](Docs/README_CHOKEPOINTS.md) - Maieutic 引擎指南:[README_MAIEUTIC.md](Docs/README_MAIEUTIC.md) - SHARP 全新引导操作手册:[scripts/SHARP_BOOTSTRAP_RUNBOOK.md](scripts/SHARP_BOOTSTRAP_RUNBOOK.md) - SHARP 验收清单模板:[scripts/SHARP_ACCEPTANCE_REPORT_TEMPLATE.md](scripts/SHARP_ACCEPTANCE_REPORT_TEMPLATE.md) ## 📖 手动安装 所有支持的安装均使用此工作流: ### 1. 克隆仓库 ``` git clone -b sharp https://github.com/hefaistos-platform/hefaistos-pro.git cd hefaistos-pro git pull origin sharp ``` 如果您之前已经克隆过该仓库,请在安装前切换到 SHARP 分支: ``` git checkout sharp git pull origin sharp ``` ### 2. 复制配置模板 ``` cp .env.template .env cp docker-compose.override.yml.template docker-compose.override.yml ``` `docker-compose.yml` 现在通过 `env_file` 为 backend/workers/connectors 加载 `.env`,因此 `.env` 是非机密运行时配置的唯一事实来源。 默认情况下,Nginx 发布的主机端口为 `80 -> 8080` 和 `443 -> 8443`。 如果这些主机端口被占用,请仅在 `docker-compose.override.yml` 中重新映射(保持容器端口 `8080/8443` 不变),例如: ``` services: nginx: ports: - "8080:8080" - "4443:8443" ``` ### 3. 生成密钥 ``` mkdir -p .secrets openssl rand -base64 32 > .secrets/db_password openssl rand -base64 32 > .secrets/rabbitmq_pass python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" > .secrets/field_key # 可选:仅用于 threat_intel_connector (MISP → 自动创建 hunt) # echo "your-misp-api-key" > .secrets/misp_key echo "your-mailgun-key" > .secrets/mailgun_api ``` 如果 `.secrets/field_key` 已经存在但为空,请在启动 Docker 之前重新生成它: ``` python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" > .secrets/field_key # 如果 Python cryptography 不可用时的备用方案: # openssl rand 32 | openssl enc -base64 -A | tr '+/' '-_' > .secrets/field_key ``` ### 4. 配置环境 - **推荐:** 从 [.env.template](.env.template) 编辑 [.env](.env) - 可选:在您的 shell 中导出环境变量,以覆盖单次运行的 `.env` 值 - 将机密保留在 `/run/secrets/*` 下的 Docker secrets 中(不要将机密放入 `.env`) 关键变量: ``` PUBLIC_BASE_URL=https://your.domain.com FRONTEND_URL=https://your.domain.com CORS_ALLOWED_ORIGINS=https://your.domain.com CSRF_TRUSTED_ORIGINS=https://your.domain.com SERVER_DOMAIN=your.domain.com ADMIN_ALLOWED_IP_RANGES=192.168.1.0/24 ``` ### 5. 启动平台 ``` docker compose up -d ``` ### 6. 运行迁移并创建超级用户 ``` docker compose exec backend python manage.py migrate docker compose exec backend python manage.py createsuperuser ``` ### 7. 导入 MITRE ATT&CK 数据 ``` docker compose exec backend python manage.py import_mitre_universal --mitre-version 19.0 --mode remote ``` ### 8. 访问平台 - Web UI:`https://your.domain.com` - GraphQL API:`https://your.domain.com/graphql` - 管理面板:`https://your.domain.com/admin` ## 🔧 配置 ### 环境变量 有关完整、最新的变量目录(包括高级/可选键),请参阅 [Docs/ENVIRONMENT_VARIABLES.md](Docs/ENVIRONMENT_VARIABLES.md)。 | 变量 | 描述 | 必填 | |----------|-------------|----------| | `DEBUG` | 启用调试模式 | 否(默认:False) | | `SECRET_KEY` | Django 密钥 | 是(如果为空则自动生成) | | `SERVER_DOMAIN` | 您的域名或 IP | 是 | | `FRONTEND_URL` | 用于电子邮件的前端基础 URL | 否(默认:https://localhost) | | `PUBLIC_BASE_URL` | 用于可共享链接的规范外部基础 URL(适用于多代理部署) | 否(默认:未设置;后端尝试使用外部 FRONTEND_URL,然后是请求主机) | | `WEBAUTHN_RP_ID` | WebAuthn 依赖方 ID(公共主机) | 安全密钥 MFA/无密码登录时必填 | | `WEBAUTHN_ORIGIN` | WebAuthn 源(在生产环境中必须是 HTTPS) | 安全密钥 MFA/无密码登录时必填 | | `CORS_ALLOWED_ORIGINS` | 额外允许的 CORS 源(逗号分隔)。`mitre-attack.github.io` 始终自动包含在内。 | 否 | | `CSRF_TRUSTED_ORIGINS` | 受信任的 CSRF 源(逗号分隔,必须包含您的公共 URL) | 否(默认:https://localhost,http://localhost) | | `ADMIN_ALLOWED_IP_RANGES` | 允许访问 /admin/ 的 IP 范围(逗号分隔的 CIDR) | 否(默认:localhost + Docker 网络) | | `DB_HOST` | PostgreSQL 主机 | 否(默认:db) | | `DB_PORT` | PostgreSQL 端口 | 否(:5432) | | `DB_NAME` | 数据库名称 | 否(默认:hefaistos_db) | | `DB_USER` | 数据库用户 | 否(默认:hefaistos_user) | | `DB_PASSWORD_FILE` | 数据库密码的 Docker secret 文件路径 | 否(默认:/run/secrets/db_password) | | `RABBITMQ_HOST` | RabbitMQ 主机 | 否(默认:rabbitmq) | | `RABBITMQ_PORT` | RabbitMQ 端口 | 否(默认:5672) | | `RABBITMQ_USER` | RabbitMQ 用户名 | 否(默认:hefaistos_mq) | | `RABBITMQ_PASS_FILE` | RabbitMQ 密码的 Docker secret 文件路径 | 否(默认:/run/secrets/rabbitmq_pass) | | `ELASTICSEARCH_HOST` | Elasticsearch 主机 | 否(默认:elasticsearch) | | `ELASTICSEARCH_PORT` | Elasticsearch 端口 | 否(默认:9200) | | `FIELD_ENCRYPTION_KEY_PATH` | Fernet 密钥路径 | 否(默认:/run/secrets/field_key) | | `FIELD_ENCRYPTION_KEY_FILE` | Fernet 密钥的 Docker secret 文件路径 | 否(默认:/run/secrets/field_key) | | `MISP_URL` | 仅用于 **threat_intel_connector** 的 MISP URL(ADVOPS 推送使用通过 UI 配置的按组织实例) | 否 | | `HEFAISTOS_API_URL` | 连接器容器使用的 API 基础 URL | 否(默认:http://backend:8000/graphql) | | `HEFAISTOS_API_TOKEN_FILE` | 连接器服务令牌文件路径 | 否(默认:/run/connector/token.jwt) | | `EMAIL_ENABLED` | 启用电子邮件通知 | 否(默认:False) | | `EMAIL_HOST` | SMTP 主机 | 否 | | `EMAIL_PORT` | SMTP 端口 | 否 | | `EMAIL_HOST_USER` | SMTP 用户名 | 否 | | `MAILGUN_API_KEY_PATH` | Mailgun API 密钥路径 | 否 | ### Docker Secrets 生产部署应使用 Docker secrets: ``` secrets: db_password: file: ./.secrets/db_password rabbitmq_pass: file: ./.secrets/rabbitmq_pass field_key: file: ./.secrets/field_key # misp_key is only required if using the threat_intel_connector misp_key: file: ./.secrets/misp_key mailgun_api: file: ./.secrets/mailgun_api ``` ### CORS 和安全密钥(YubiKey/WebAuthn)设置 CORS/CSRF 和 WebAuthn 通过 `.env` 值进行配置(由 Compose 通过 `env_file` 加载)。`.env.template` 是入门模板。 #### 对于用户 要注册 YubiKey/安全密钥,用户只需使用 UI: 1. 登录 HEFAISTOS。 2. 打开 **User Profile**。 3. 找到 **Security Keys (YubiKey/WebAuthn)**。 4. 可选地输入密钥名称。 5. 点击 **Add Security Key**。 6. 在浏览器提示时触摸/确认 YubiKey。 7. 注册完成。 用户**无需**编辑 `.env`、Docker Compose 或任何服务器端设置。 #### 对于管理员/操作员(一次性平台设置) 在 `.env` 中配置这些值: ``` FRONTEND_URL=https://detect.hefaistos.org PUBLIC_BASE_URL=https://detect.hefaistos.org WEBAUTHN_RP_ID=detect.hefaistos.org WEBAUTHN_ORIGIN=https://detect.hefaistos.org ``` 当您的部署具有多个代理层时(例如:外部 LB/代理 -> Nginx -> 前端/后端容器),建议使用 `PUBLIC_BASE_URL`。它确保生成的共享 URL 使用真正可外部访问的源。 还要在 `.env` 中设置 CORS/CSRF 值(`CORS_ALLOWED_ORIGINS`、`CSRF_TRUSTED_ORIGINS`)。 更新 `.env` 后,重启使用这些值的服务: ``` docker compose up -d --force-recreate backend scheduler opentide-hef-publish-worker opentide-hef-import-worker listener ai_generation_worker opentide_enrichment_worker ``` **媒体 CORS**:媒体文件(头像、快照)由 Nginx 直接提供,默认具有开放的 CORS 标头(`Access-Control-Allow-Origin: *`),因此头像可以从任何源加载而无需配置。如果您需要限制此操作,请修改 `nginx/conf.d/hefaistos.conf` 中的 `/media/` location 块。 ### SSL/TLS 配置 将证书放置在 `nginx/certs/` 中: - `nginx/certs/hefaistos.crt` - SSL 证书 - `nginx/certs/hefaistos.key` - SSL 私钥 可以生成自签名证书: ``` openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout nginx/certs/hefaistos.key \ -out nginx/certs/hefaistos.crt \ -subj "/CN=localhost" ``` ## 👤 用户角色 | 角色 | 权限 | |------|-------------| | **ADMIN** | 完全访问权限:用户管理、组织设置、Git 操作、所有 CRUD | | **REVIEWER** | 审查和批准 playbook、推送到 Git、管理规则 | | **ANALYST** | 创建/编辑 playbook 和规则、提交审查 | | **VIEWER** | 对 playbook、规则和仪表盘的只读访问权限 | | **ELONE** | 对 L1 门户的只读访问权限(L1 分析师) | | **BOT_AUDITOR_ORG** | 用于自动化审计工作流的组织范围机器人审计员角色 | | **BOT_AUDITOR_GLOBAL** | 用于跨组织自动化审计工作流的全局机器人审计员角色 | ### 设置用户角色 通过 Django Admin: ``` docker compose exec backend python manage.py shell >>> from identity.models import CustomUser >>> user = CustomUser.objects.get(username='analyst1') >>> user.role = 'ADMIN' # or 'ANALYST', 'REVIEWER', 'VIEWER', 'ELONE', 'BOT_AUDITOR_ORG', 'BOT_AUDITOR_GLOBAL' >>> user.save() ``` ## 🔌 事件驱动连接器 HEFAISTOS 使用 RabbitMQ 进行事件驱动的集成: ### 规则连接器 从 Git 仓库同步检测规则。 - **触发器:** `rule.repo.pull.requested` - **功能:** 克隆仓库、解析 KQL/SPL/WAZUH 文件、更新或插入规则 ### 通知连接器 从领域事件创建应用内通知。 - **事件:** 评审请求、批准、规则创建、状态更改 - **渠道:** 应用内、电子邮件(可按用户配置) ### 威胁情报连接器 与 MISP 威胁情报平台集成。 - **触发器:** 轮询间隔(可配置) - **功能:** 导入事件、提取 IoC、创建工作台 ### Git 推送连接器 将 playbook 作为检测规则导出到 Git 仓库。 - **触发器:** `playbook.git.push.requested` - **功能:** 格式化规则 (KQL/SPL/WAZUH)、创建分支、推送、可选地开启 PR ### 部署连接器 处理部署工作流转换。 - **触发器:** `playbook.deploy.requested` - **功能:** 将 playbook 状态更新为 DEPLOYED ## ⚠️ 破坏性变更 ### SIGMA 格式已移除(2026 年) HEFAISTOS 不再支持将 SIGMA/Sigma YAML 作为检测规则格式。 **变更内容:** - 从所有规则格式选项、选择器和 API 字段中移除了 `SIGMA` - 从 `docker-compose.yml` 中移除了 `sigconverter` 服务(端口 7002) - 从后端依赖项中移除了 pySigma Python 包 - `StartGenerateSigmaTask` GraphQL mutation 重命名为 `StartGenerateRuleTask` - 移除了 `GenerateSigmaAI` GraphQL mutation - 移除了规则转换 UI(pySigma 后端转换) - 移除了 `rules/sigma` Git 推送文件夹选项 **`git pull origin sharp` 后的迁移步骤:** 1. 重新构建并重启所有容器: docker compose down docker compose pull docker compose up -d --build 2. 应用数据库迁移(重新映射现有的 SIGMA 规则 → OTHER 格式): docker compose exec backend python manage.py migrate 3. 清理您的环境: - 从 `.env` / 部署配置中移除 `LSP_SIGMA_*`、`SIGCONVERTER_*` 变量 - 从您的部署管道中移除任何特定于 SIGMA 的自动化 4. 验证服务健康状况 — 后端、worker、前端和剩余的 LSP 服务(KQL/SPL/WAZUH/AQL)应全部干净启动。 5. 审查旧版 SIGMA 规则: - 现有的 `format=SIGMA` 规则已通过迁移自动重新映射为 `format=OTHER` - 如果需要,以受支持的格式(KQL、SPL、WAZUH)重新创建受影响的规则 **今后支持的格式:** KQL、SPL、WAZUH、EQL、ELASTIC、OTHER ## 📖 API 参考 ### GraphQL 端点 `POST /graphql` **身份验证:** Bearer token (JWT) ``` curl -X POST https://localhost/graphql \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{"query": "{ me { id username role } }"}' ``` ### 关键查询 ``` # 获取当前用户 query { me { id username email role organization { name } } } # 列出 playbook 图 query { allPlaybookGraphs { id title status author { username } } } # 搜索规则 query { rulesConnection(search: "mimikatz", first: 10) { edges { node { id title format rawContent } } totalCount } } # 获取 MITRE 技术建议 query { detectionSuggestions(techniqueId: "T1003") { technique { id name } strategies { id name analytics { name description } } } } ``` ### 关键 Mutation ``` # 创建 playbook 图 mutation { createPlaybookGraph(title: "New Detection") { graph { id } } } # 生成 AI 规则 mutation { startGenerateRuleTask(outputFormat: "KQL") { taskId } } # 提交审核 mutation { requestReview(graphId: "uuid") { success message } } # 批准审核 mutation { approveReview(reviewId: "uuid") { success } } ``` ## 🧪 开发 ### 本地开发设置 1. **后端:** ``` cd backend pip install -r requirements.txt python manage.py migrate python manage.py runserver ``` 2. **前端:** ``` cd frontend npm install npm start ``` 3. **服务 (Docker):** ``` docker compose up -d db rabbitmq elasticsearch ``` ### 运行测试 ``` # Backend 测试 docker compose exec backend python manage.py test # Frontend 测试 docker compose exec frontend npm test # 覆盖率报告 cd backend && coverage run --source='.' manage.py test && coverage report ``` ### 数据库迁移 ``` # 创建新 migration cd backend && python manage.py makemigrations app_name # 应用 migrations python manage.py migrate # 检查 migration 状态 python manage.py showmigrations ``` ### GraphQL 调试 交互式 GraphQL playground: - 通过 NGINX 代理:`http://localhost/graphql` 或 `https://localhost/graphql` - 直接后端(运行 `manage.py runserver` 时):`http://localhost:8000/graphql` 有关详细的查询示例,请参阅 [DEBUG_GRAPHQL.md](Docs/DEBUG_GRAPHQL.md)。 ### 代码风格 - **后端:** Black、isort、flake8 - **前端:** ESLint、Prettier ## 📁 项目结构 ``` hefaistos/ ├── backend/ # Django backend │ ├── core/ # Core settings, schema, middleware │ ├── identity/ # User auth, profiles, RBAC │ ├── organizations/ # Multi-tenant organization management │ ├── playbooks/ # Detection playbooks and graphs │ ├── rules/ # Detection rule management │ ├── ach/ # Analysis of Competing Hypotheses │ ├── ai_assistant/ # AI integration engine │ ├── platform_data/ # MITRE ATT&CK data │ ├── knowledge/ # Knowledge base │ ├── data_catalog/ # Data source catalog │ ├── log_catalog/ # Log source management │ ├── review/ # Peer review workflow │ ├── notifications/ # Notification system │ ├── news/ # Announcements │ ├── tags/ # Tagging system │ └── services/ # Event listener service ├── frontend/ # React frontend │ ├── src/ │ │ ├── components/ # Reusable UI components (incl. CapabilityAbstractionMapNode, TechniqueRootNode, CoverageGapNode, CapabilityAbstractionLayerBands) │ │ ├── pages/ # Page components │ │ ├── context/ # React context providers │ │ └── utils/ # Utility functions (incl. capabilityAbstractionUtils) │ └── public/ # Static assets ├── hefaistos-sdk/ # Python SDK for connectors ├── rule_connector/ # Git rule sync connector ├── notification_connector/ # Notification connector ├── threat_intel_connector/ # MISP integration connector ├── git_push_connector/ # Git export connector ├── deploy_connector/ # Deployment connector ├── nginx/ # Nginx configuration ├── scripts/ # Utility scripts ├── attack-navigator/ # MITRE Navigator static build ├── Docs/ # Additional documentation ├── docker-compose.yml # Docker orchestration └── README.md # This file ``` ## ⚙️ 维护与运营 ### 备份与恢复 备份可手动运行,也可选择通过 cron 定期执行: ``` # 手动备份到默认的 ./backups ./scripts/backup-hefaistos.sh # 备份到外部挂载的媒体(由管理员管理) ./scripts/backup-hefaistos.sh --backup-dir /mnt/backup-drive/hefaistos --retention-days 30 # 从备份存档恢复 ./scripts/backup-hefaistos.sh --restore /path/to/hefaistos-backup-YYYYmmdd_HHMMSS.tar.gz ``` 备份内容包括: - PostgreSQL 数据库转储(gzip 压缩) - 运行时媒体和 navigator 数据卷 - 配置文件和机密 - 完整性校验和 - 自动轮换并保留 30 天(可配置) Elasticsearch 快照特意未包含在此备份脚本中。如果在恢复后需要: ``` docker compose exec backend python manage.py search_index --rebuild -f ``` **参阅:** [scripts/backup-hefaistos.sh](scripts/backup-hefaistos.sh) ### 卸载与回滚 要安全地移除 HEFAISTOS: ``` # 带选项的交互式卸载 ./scripts/uninstall-hefaistos.sh # 保留数据和备份(支持回滚) ./scripts/uninstall-hefaistos.sh --keep-data --keep-backups # 完全清理(谨慎使用) ./scripts/uninstall-hefaistos.sh --full-cleanup ``` **参阅:** [scripts/uninstall-hefaistos.sh](scripts/uninstall-hefaistos.sh) ### 防火墙配置 配置 UFW 防火墙: ``` # 交互式防火墙设置 ./scripts/setup-firewall.sh # 查看防火墙规则 sudo ufw status verbose # 手动规则示例(NGINX 公共端口) sudo ufw allow from 192.168.0.0/16 to any port 443 sudo ufw allow from 192.168.0.0/16 to any port 80 ``` **参阅:** [scripts/setup-firewall.sh](scripts/setup-firewall.sh) ### 服务管理 ``` # 启动所有服务 docker compose up -d # 停止所有服务 docker compose stop # 重启特定服务 docker compose restart backend # 查看 backend 日志 docker compose logs -f backend # 访问 backend shell docker compose exec backend bash ``` ## 🔒 安全考虑 - **身份验证:** 具有可配置过期时间的 JWT token - **授权:** 基于角色的访问控制 (RBAC) - **加密:** 对敏感字段(API 密钥、token)进行 Fernet 加密 - **机密:** 用于生产凭据的 Docker secrets - **网络:** 内部 Docker 网络隔离 - **HTTPS:** 在 Nginx 反向代理处进行 TLS 终止 - **CORS:** 可配置的允许源 ## 🤝 贡献 1. Fork 该仓库 2. 创建功能分支 (`git checkout -b feature/amazing-feature`) 3. 提交您的更改 (`git commit -m 'Add amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 发起 Pull Request ### 依赖许可证合规性(PR 门禁) 为了降低 SaaS/商业部署的法律风险,此仓库使用 GitHub 的 Dependency Review Action 在 Pull Request 上强制执行依赖项许可证检查。 - 工作流:`.github/workflows/dependency-review.yml` - 策略配置:`.github/dependency-review-config.yml` - 状态检查名称:`dependency-review` 当 PR 引入了带有被禁止的许可证(目前包括)的依赖项(运行时或开发范围)时,检查将失败: - `AGPL-1.0-only` - `AGPL-1.0-or-later` - `AGPL-3.0-only` - `AGPL-3.0-or-later` - `SSPL-1.0` - `OSL-3.0` - `CC-BY-NC-4.0` #### 如果您的 PR 未通过许可证策略检查 1. 识别被 `dependency-review` 检查标记的包。 2. 将其替换为具有允许许可证的替代包。 3. 如果无法替换,请提交一个 issue 描述: - 包名称和版本 - 使用位置 - 为什么不存在合适的替代方案 - 法律/合规影响 4. 在请求任何策略例外之前,等待维护者批准。 当 `dependency-review` 被配置为必需的状态检查时,不允许在受保护的分支上直接绕过。 ## 📄 许可证 该项目在 **GNU Affero General Public License v3.0** (`AGPL-3.0-only`) 下授权。 有关全文,请参阅 [LICENSE](./LICENSE)。 ### 商业用途与 SaaS - 允许商业用途。 - 第三方可以 fork 并将其作为服务运行/销售。 - 如果他们修改了软件并通过网络提供,AGPL 要求他们向该服务的用户提供这些修改的相应源代码。 如果需要专有例外情况,维护者可以提供单独的商业条款。 ## 📞 支持 如需支持和咨询: - 在 GitHub 仓库中提交一个 issue - 联系 HEFAISTOS 团队
**为检测用 ❤️ 打造**
**(c) 2026 th3r3d - dev + th30ne -managing croak (Both DCG420) & A Collective Hallucination of AI Bots** 按“原样”提供,不提供任何形式的保证。详情请参阅 `LICENSE`。
标签:ATT&CK覆盖, Django, Docker, React, Syscalls, 威胁情报, 安全运营, 安全防御评估, 开发者工具, 扫描框架, 测试用例, 请求拦截, 负责任AI, 逆向工具