zacharyloganhill/PhantomFeed

GitHub: zacharyloganhill/PhantomFeed

PhantomFeed 是一款完全本地托管的开源威胁情报聚合平台,将 CVE、CISA KEV、厂商公告、恶意软件源和供应链漏洞汇聚到统一仪表板,并通过 Ollama 本地 AI 提供智能分析,无需任何 SaaS 订阅或外部数据传输。

Stars: 0 | Forks: 0

# PhantomFeed ![Python](https://img.shields.io/badge/python-3.12-blue?logo=python&logoColor=white) ![License](https://img.shields.io/badge/license-MIT-green) ![Open Source](https://img.shields.io/badge/open%20source-%E2%99%A5-red) **实时威胁情报聚合,本地托管。** PhantomFeed 将 CVE、供应商安全公告、CISA 警报、恶意软件源和威胁情报汇聚到一个可搜索的 Feed 流中 —— 它拥有暗黑模式的仪表板以及由 Ollama 驱动的本地 AI 分析师。无需 SaaS 订阅,无遥测数据,没有 API 账单。完全在你的机器上运行。 ## 前置条件 | 工具 | 版本 | 下载 | |------|---------|----------| | Python | 3.12+ | [python.org](https://www.python.org/downloads/) | | Git | 任意 | [git-scm.com](https://git-scm.com/downloads) | | Ollama | 最新版 | [ollama.com](https://ollama.com/download) | ## 快速开始 ``` :: 1. Clone git clone https://github.com/zacharyloganhill/threatpulse.git phantomfeed cd phantomfeed :: 2. Create and activate virtual environment python -m venv .venv .venv\Scripts\activate :: 3. Install dependencies pip install -r requirements.txt :: 4. Configure copy .env.example .env :: 5. Pull an Ollama model (runs locally, one-time download ~2 GB) ollama pull llama3.2 :: 6. Start PhantomFeed python main.py ``` 然后在浏览器中打开 **http://localhost:8000/dashboard.html**。 首次运行时,所有 Feed 源都会被立即轮询。当 API 处于活动状态时,状态栏会显示 **● CONNECTED**;当检测到 Ollama 时,会显示 **● AI: llama3.2**。 ## 接入的 Feed 源 ### 漏洞情报 | Feed | 来源 | 间隔 | 备注 | |------|--------|----------|-------| | NVD CVE API v2 | nvd.nist.gov | 15 分钟 | 完整的 CVSS、CPE、CWE 元数据 | | CISA KEV | cisa.gov | 15 分钟 | 仅包含被积极利用的 CVE | | CISA 网络安全公告 | github.com/cisagov | 60 分钟 | CSAF/IT — 联合公告、约束性操作指令 (BODs) | | CISA ICS 公告 | github.com/cisagov | 60 分钟 | CSAF/OT — SCADA、ICS、OT 系统 | ### 供应商安全公告 | Feed | 供应商 | 来源 | |------|--------|--------| | Microsoft MSRC | Microsoft | msrc.microsoft.com | | Cisco Security | Cisco | sec.cloudapps.cisco.com | | Fortinet PSIRT | Fortinet | fortiguard.com | | Palo Alto Networks | Palo Alto | security.paloaltonetworks.com | | Red Hat Security | Red Hat | access.redhat.com | | Ubuntu Security | Canonical | ubuntu.com | ### 威胁情报与恶意软件 | Feed | 来源 | 备注 | |------|--------|-------| | abuse.ch URLhaus | urlhaus-api.abuse.ch | 实时恶意软件 URL 和 C2 基础设施 | | abuse.ch Feodo Tracker | feodotracker.abuse.ch | 僵尸网络 C2 IP 屏蔽列表 | | AlienVault OTX | otx.alienvault.com | 威胁脉冲(需要免费的 API key) | ### 供应链 | Feed | 来源 | 备注 | |------|--------|-------| | GitHub Advisory (npm) | github.com/advisories | Node.js 包漏洞 | | GitHub Advisory (PyPI) | github.com/advisories | Python 包漏洞 | ## REST API 基础 URL:`http://localhost:8000/api/v1` 交互式文档:`http://localhost:8000/docs` ### 端点 ``` GET /items List items — filterable, searchable, paginated GET /items/{id} Get a single item by ID POST /items/{id}/read Mark item as read POST /items/read-all Mark all items as read GET /stats Counts by severity, feed, and new/total GET /feeds List all registered feed IDs POST /refresh Trigger immediate poll of all feeds POST /refresh/{feed_id} Trigger poll of one specific feed DELETE /items/purge Delete items older than retention period ``` ### Ollama 代理 ``` GET|POST /api/ollama/{path} Proxies to http://localhost:11434/{path} ``` 消除了仪表板和 Ollama 之间的 CORS 问题。代理会流式传输响应,因此聊天补全会逐 token 渲染。 ### `GET /items` 的查询参数 | 参数 | 示例 | 描述 | |-------|---------|-------------| | `severity` | `CRITICAL,HIGH` | 逗号分隔的严重级别过滤器 | | `category` | `cve` | `cve` · `kev` · `advisory` · `vendor` · `ics` · `threat` · `malware` · `supply` | | `feed_id` | `nvd` | 过滤为单一来源 | | `is_new` | `true` | 仅显示未读项目 | | `search` | `ivanti` | 全文搜索:标题、描述、供应商、标签 | | `limit` | `50` | 页面大小(最大 500) | | `offset` | `0` | 分页偏移量 | ### curl 命令示例 ``` # 新的严重和高危项目 curl "http://localhost:8000/api/v1/items?severity=CRITICAL,HIGH&is_new=true" # 搜索 Ivanti curl "http://localhost:8000/api/v1/items?search=ivanti" # 所有 ICS/OT 公告 curl "http://localhost:8000/api/v1/items?category=ics" # 仅 CISA KEV curl "http://localhost:8000/api/v1/items?feed_id=cisa_kev" # 强制立即刷新所有 feeds curl -X POST "http://localhost:8000/api/v1/refresh" # 统计 curl "http://localhost:8000/api/v1/stats" # 通过代理检查可用的 Ollama 模型 curl "http://localhost:8000/api/ollama/api/tags" ``` ## 第二阶段功能 ### 资产清单与暴露面匹配 上传包含客户端资产的 CSV 文件 —— PhantomFeed 会使用 CPE 字符串、供应商/产品 token 和关键字匹配,自动将传入的威胁项目与受影响的软件进行匹配: ``` POST /api/v1/admin/clients/{id}/assets/import CSV upload GET /api/v1/admin/clients/{id}/assets List all assets GET /api/v1/items?client_id={id}&exposed_only=true Only matched items ``` **CSV 格式**(列:`hostname`、`ip_address`、`os`、`os_version`、`software`、`version`、`cpe_string`、`asset_type`): ``` hostname,ip_address,os,os_version,software,version srv01,10.0.0.1,Windows,2019,Microsoft Windows Server,2019 web01,10.0.0.2,Linux,Ubuntu 22.04,Apache HTTP Server,2.4.58 ``` 置信度等级:**1.0** 精确 CPE 匹配 · **0.85** CPE 前缀匹配 · **0.8** 供应商+产品匹配 · **0.7** 供应商关键字匹配 · **0.5** 仅供应商匹配。 ### TAXII 2.1 / STIX 接入 轮询 TAXII 2.1 服务器以获取 STIX bundles。通过存储的 `added_after` 时间戳进行增量轮询。 预配置的来源: - **CISA AIS** — `https://ais2.cisa.dhs.gov/taxii2/`(需要证书 — [在 cisa.gov/ais 注册](https://www.cisa.gov/ais)) - **CIRCL MISP** — 公共 OSINT Feed - **AlienVault OTX TAXII** — 使用 `OTX_API_KEY` 作为凭证 将 `TAXII_USERNAME`、`TAXII_PASSWORD`、`TAXII_CERT_PATH` 添加到 `.env` 中。当缺少凭证时,抓取器会优雅地跳过。 ``` GET /api/v1/taxii/sources List configured servers and connection status POST /api/v1/taxii/test/{feed_id} Test connection to a TAXII feed ``` ### 补救措施 SLA 跟踪 通过为每个客户端设定 SLA 截止日期来跟踪漏洞的修复情况: | 严重级别 | 默认 SLA | |----------|-------------| | CRITICAL | 15 天 | | HIGH | 30 天 | | MEDIUM | 90 天 | | LOW | 180 天 | 在 `stack_profile` 中为特定客户端覆盖默认值: ``` {"sla": {"CRITICAL": 7, "HIGH": 14}} ``` ``` GET /api/v1/clients/{id}/remediation List remediation items + days remaining POST /api/v1/clients/{id}/remediation Create remediation item PATCH /api/v1/clients/{id}/remediation/{rid} Update status (open/in_progress/patched/accepted_risk/false_positive/wont_fix) GET /api/v1/clients/{id}/metrics MTTR, SLA compliance rate, open/overdue counts ``` SLA 逾期检查将在每天 UTC 时间 07:00 运行。 ### 分析仪表板 访问 **http://localhost:8000/analytics.html** 以获取高管分析视图: - **威胁量趋势** — 90 天折线图(按 CRITICAL/HIGH/MEDIUM 划分) - **严重程度分布** — 环形图 - **热门供应商** — 按风险量排列的水平条形图 - **类别细分** — 按类别和严重级别划分的堆叠条形图 - **补救措施 MTTR 趋势** — 随时间变化的平均补丁修复天数 - **最高风险项** — 按综合风险评分排名 客户端选择器下拉菜单可将所有图表切换为特定客户端的视图。日期范围:30 / 60 / 90 天。 ### IOC 扩展引擎 自动丰富来自恶意软件/威胁源的 IP、域、URL 和文件哈希。缓存 24 小时。 ``` GET /api/v1/ioc/lookup?value=8.8.8.8 Live enrichment (IP/hash/domain/URL) GET /api/v1/ioc/cache Recent cache entries ``` IOC 查找小部件也内置于仪表板的详细信息窗格中 —— 在“快速操作”部分输入任何值即可。 | API 密钥 | 来源 | 扩展内容 | |---------|--------|---------| | `ABUSEIPDB_API_KEY` | [abuseipdb.com](https://www.abuseipdb.com) | IP 信誉评分 + 国家 | | `GREYNOISE_API_KEY` | [greynoise.io](https://www.greynoise.io) | IP 分类 (benign/malicious/unknown) | | `VIRUSTOTAL_API_KEY` | [virustotal.com](https://www.virustotal.com) | 哈希/域名/URL 检测率 | ### SIEM Webhook 推送 为每个客户端配置 webhook,以将新的威胁项推送到你的 SIEM 或警报平台: ``` POST /api/v1/admin/clients/{id}/webhooks Create webhook GET /api/v1/admin/clients/{id}/webhooks List webhooks PUT /api/v1/admin/clients/{id}/webhooks/{wid} Update DELETE /api/v1/admin/clients/{id}/webhooks/{wid} Delete POST /api/v1/admin/clients/{id}/webhooks/{wid}/test Send test payload ``` **支持的类型:** | 类型 | 格式 | 认证 | |------|--------|------| | `generic` | 普通 JSON 正文 | — | | `slack` | 带有严重级别颜色的 Block Kit 附件 | Webhook URL | | `splunk_hec` | `{time, sourcetype:"phantomfeed:threat", event:{...}}` | `Authorization: Splunk {token}` | | `sentinel` | Azure Monitor Log Analytics, HMAC-SHA256 签名 | secret 中的 `{workspace_id}:{workspace_key}` | **示例 — Slack webhook:** ``` curl -X POST http://localhost:8000/api/v1/admin/clients/{id}/webhooks \ -H "Authorization: Bearer {token}" \ -H "Content-Type: application/json" \ -d '{"webhook_type":"slack","url":"https://hooks.slack.com/T.../...","min_severity":"HIGH"}' ``` **示例 — Splunk HEC:** ``` curl -X POST http://localhost:8000/api/v1/admin/clients/{id}/webhooks \ -H "Authorization: Bearer {token}" \ -H "Content-Type: application/json" \ -d '{"webhook_type":"splunk_hec","url":"https://splunk:8088/services/collector","secret":"your-hec-token","min_severity":"CRITICAL"}' ``` ## 上传与导出中心 访问 **http://localhost:8000/upload.html** 以获取完整的上传与导出中心。 ### 支持的上传格式 | 格式 | 扩展名 | 解析器 | |--------|-----------|--------| | Nessus 扫描 | `.nessus` | 自动检测;提取资产及每台主机的发现结果 | | Qualys XML | `.xml` | `` 和 `` 元素 | | Qualys CSV | `.csv` | QID、标题、严重级别、CVE ID 列 | | OpenVAS XML | `.xml` | `` 根节点,包含带有 `` 子节点的 `` | | Rapid7/InsightVM CSV | `.csv` | 资产 IP 地址、漏洞标题、严重级别列 | | 通用 CSV/XLSX | `.csv`、`.xlsx` | 模糊列映射(自动检测主机名/IP/严重级别/CVE列) | | IOC 列表(纯文本) | `.txt` | 每行一个 IOC;自动检测 IP、哈希、域、URL | | IOC 列表 (JSON) | `.json` | `{type, value}` 数组或 STIX 2.1 Indicator 模式 | | STIX 2.1 bundle | `.json` | 完整的 bundle;导入 Indicator、Malware、Threat-Actor、Vulnerability 对象 | | 批量客户端 | `.csv` | 列:name、industry、contact_email、min_severity、vendors、products | 下载模板:`GET /api/v1/upload/templates/{assets|clients|iocs}` ### 上传 API ``` POST /api/v1/upload/scan Auto-detect and preview scan file POST /api/v1/upload/scan/{id}/confirm Confirm and import (with optional field mapping) POST /api/v1/upload/assets Preview asset CSV/XLSX POST /api/v1/upload/assets/{id}/confirm Confirm asset import POST /api/v1/upload/iocs Import IOC list (enrichment triggered in background) POST /api/v1/upload/stix Import STIX 2.1 bundle directly POST /api/v1/upload/clients Bulk client preview POST /api/v1/upload/clients/{id}/confirm Confirm bulk client import GET /api/v1/upload/history Upload log (filter by client_id) GET /api/v1/upload/templates/{type} Download CSV template ``` ### 导出 API ``` GET /api/v1/export/items.csv Threat items as CSV (severity, category, search, days filters) GET /api/v1/export/items.json Threat items as JSON GET /api/v1/export/iocs.txt?days=7 IOC plain text list GET /api/v1/export/iocs.csv?days=7 IOC list as CSV with enrichment data GET /api/v1/export/iocs.stix?days=7 IOC list as STIX 2.1 Bundle JSON GET /api/v1/clients/{id}/export/remediation.csv Remediation tracker CSV GET /api/v1/clients/{id}/export/remediation.xlsx Remediation tracker XLSX (color-coded) GET /api/v1/clients/{id}/export/detection-rules.zip SPL + KQL + Sigma ZIP POST /api/v1/clients/{id}/export/push-rules-github Push rules to GitHub repo GET /api/v1/clients/{id}/report.html?days=30 HTML report preview with Download PDF button ``` **检测规则 ZIP** 包含: - `splunk/` — 针对每个 CRITICAL/HIGH 项的 Splunk SPL 搜索 - `sentinel/` — Microsoft Sentinel KQL 查询 - `sigma/` — Sigma YAML 规则(可使用 sigmac 或 pySigma 进行转换) ## 快速操作 (AI 分析师) 仪表板中的每个项目都有四个**快速操作**,它们会将预构建的 prompt 发送给你本地的 Ollama 模型: | 操作 | 生成内容 | |--------|-----------------| | **起草客户公告** | 准备发送给受影响客户的非技术性公告邮件 | | **生成检测规则** | Splunk SPL、Microsoft Sentinel KQL 以及 Sigma 规则 | | **获取 IOC 与狩猎查询** | 文件哈希、IP、域名、注册表键、YARA 片段 | | **分析客户影响** | 暴露面评估问题及面临风险的资产类型 | 响应在 AI 面板中实时流式传输。所有操作均通过 Ollama 在本地运行 —— **零成本,不向外部发送任何数据。** ## 架构 ``` phantomfeed/ ├── main.py # FastAPI app, lifespan, CORS, Ollama proxy, static files ├── config.py # Feed URLs, API keys, severity mappings, settings ├── dashboard.html # Dark-mode web dashboard (served at /dashboard.html) ├── .env # Your local secrets — never commit this ├── .env.example # Template — copy to .env to get started ├── requirements.txt │ ├── db/ │ └── database.py # Async SQLite: connect, CRUD, deduplication │ ├── ingest/ │ ├── base.py # BaseFetcher: HTTP helpers, retries, normalization │ ├── nvd.py # NVD CVE API v2 │ ├── cisa.py # CISA KEV + CSAF advisories (IT + OT) │ ├── rss_feeds.py # Generic vendor RSS ingestion │ ├── threat_intel.py # abuse.ch, OTX, supply chain │ └── scheduler.py # APScheduler: per-feed poll intervals │ └── api/ └── routes.py # All REST endpoints ``` ### 添加新 Feed 1. 在 `ingest/` 中创建一个继承自 `BaseFetcher` 的类 2. 设置 `feed_id`、`feed_label`、`category` 和 `poll_interval` 3. 实现 `async def fetch(self) -> list[dict]` 4. 在 `ingest/scheduler.py` 的 `_build_fetchers()` 中注册它 对于简单的 RSS 源,只需在 `config.py` 中的 `VENDOR_RSS_FEEDS` 添加一条记录 —— 无需编写代码。 ## 环境变量 将 `.env.example` 复制到 `.env` 并根据需要设置值。除服务器默认值外,所有变量都是可选的。 | 变量 | 默认值 | 描述 | |----------|---------|-------------| | `NVD_API_KEY` | *(空)* | NVD API key — [免费获取](https://nvd.nist.gov/developers/request-an-api-key)。将速率限制从 5 提升至 50 请求/30秒 | | `OTX_API_KEY` | *(空)* | AlienVault OTX key — [免费获取](https://otx.alienvault.com)。OTX 冲所需 | | `URLHAUS_API_KEY` | *(空)* | abuse.ch key — [免费获取](https://auth.abuse.ch/)。提升 URLhaus 访问权限 | | `POLL_INTERVAL_FAST` | `15` | 高优先级 Feed 的轮询间隔(分钟) | | `POLL_INTERVAL_SLOW` | `60` | 供应商/情报 Feed 的轮询间隔(分钟) | | `HOST` | `127.0.0.1` | API 绑定地址 | | `PORT` | `8000` | API 端口 | | `DB_PATH` | `./phantomfeed.db` | SQLite 数据库文件路径 | | `RETENTION_DAYS` | `90` | 清理前保留的历史记录天数 | | `NVD_PAGE_SIZE` | `200` | 每次 NVD API 页面获取的 CVE 数量(最大 2000) | ## 第三阶段 — 市场差异化特性 ### 暗网与粘贴板监控 监控暗网数据泄露来源中是否提及客户名称: | 监控器 | 来源 | 备注 | |---------|--------|-------| | RansomWatch | github.com/joshhighet/ransomwatch | 勒索软件团伙受害者帖子 — 模糊名称匹配 | | Pastebin 爬虫 | scrape.pastebin.com | 需要 Pastebin Pro 账户 | | GitHub Gists | api.github.com/gists/public | 公开 Gist 泄露检测 | | HIBP 域名泄露 | haveibeenpwned.com | 域名泄露查询(需要 API key) | ``` GET /api/v1/clients/{id}/darkweb-alerts List alerts (unacknowledged_only filter) POST /api/v1/clients/{id}/darkweb-alerts/{alert_id}/acknowledge POST /api/v1/clients/{id}/darkweb-scan Trigger immediate scan GET /api/v1/notifications Aggregated notification center ``` 暗网警报会显示在客户仪表板的通知中心和“暗网”选项卡中。 ### 威胁行为者档案数据库 追踪 55 个威胁行为者及其 MITRE ATT&CK 对齐情况: - APT1、APT10、APT28、APT29、APT32、APT34、APT38、APT40、APT41 - Lazarus Group、Sandworm、Volt Typhoon、Scattered Spider、BlackCat、LockBit、Cl0p 等 每个行为者档案包括:来源、赞助者、动机、TTP (MITRE IDs)、已知恶意软件、目标行业、近期活动。 打开 **http://localhost:8000/actors.html** 以浏览完整的档案浏览器。 ``` GET /api/v1/actors List all actors (filterable by origin/motivation) GET /api/v1/actors/{id} Full dossier GET /api/v1/actors/{id}/items Threat items linked to this actor GET /api/v1/clients/{id}/actor-alerts Actors targeting client's industry ``` ### MISP 集成 从/向 MISP 实例拉取和推送威胁事件: ``` MISP_URL=https://your-misp-instance MISP_API_KEY=your_api_key MISP_VERIFY_SSL=true ``` ``` GET /api/v1/misp/status Connection status POST /api/v1/misp/sync Trigger MISP event pull (background) GET /api/v1/misp/events Recently pulled MISP events POST /api/v1/misp/push/{item_id} Push a PhantomFeed item to MISP ``` ### 自动化高管简报演示文稿 生成包含 AI 撰写的摘要和 matplotlib 图表的 12 页 PowerPoint 简报演示文稿。 ``` GET /api/v1/clients/{id}/deck.pptx?days=30 Download PPTX (supports ?token= for window.open) GET /api/v1/clients/{id}/deck-preview JSON slide outline for preview ``` 幻灯片:标题 → 执行摘要 (Ollama AI) → 威胁全景 → 前 5 大威胁 → CISA KEV → 威胁行为者 → 供应商风险条形图 → 合规影响 → 资产暴露面 → 补救措施环形图 → 建议措施 (AI) → 联系方式 需要:`pip install python-pptx matplotlib Pillow`(包含在 requirements.txt 中) ### 同行基准测试引擎 计算 0-100 分的安全态势评分及行业百分位排名: | 组件 | 权重 | 指标 | |-----------|--------|--------| | SLA 合规性 | 30 分 | 在 SLA 截止日期前关闭的补救措施百分比 | | MTTR | 30 分 | 平均修复时间与行业中位数的对比 | | 未解决的严重项 | 20 分 | 反向计算的未解决 CRITICAL 项计数 | | 补丁部署速度 | 20 分 | 过去 30 天内修补的项目 / 总未解决项目 | 涵盖 9 个行业的基准线:科技、金融、医疗保健、政府、零售、能源、教育、制造业、法律。 ``` GET /api/v1/clients/{id}/posture Current score, grade, percentile, component breakdown GET /api/v1/clients/{id}/posture/history Historical score snapshots GET /api/v1/benchmarks/{industry} Industry baseline statistics GET /api/v1/benchmarks All clients ranked by score ``` ### CMMC 2.0 动态差距评估 横跨 14 个领域的全部 110 项 NIST SP 800-171 Rev 2 / CMMC Level 2 实践。 打开 **http://localhost:8000/cmmc.html** 以使用完整的交互式差距评估界面。 - 从活动的威胁情报自动推导状态 (compliance_tags 映射) - 每项实践可手动覆盖并添加备注 - 批量更新和 CSV 导出 - 领域级别评分和总体合规百分比 ``` GET /api/v1/clients/{id}/cmmc/assessment PATCH /api/v1/clients/{id}/cmmc/practices/{practice_id} POST /api/v1/clients/{id}/cmmc/bulk-update GET /api/v1/cmmc/practices?domain=Access+Control ``` ### 桌面演练生成器 具有 8 种场景类型的 AI 驱动桌面演练: `ransomware` · `supply_chain` · `data_breach` · `insider_threat` · `ddos` · `phishing` · `zero_day` · `cloud_breach` 每次演练包括:场景概述、5 个演练目标、分阶段的局势说明+注入点+讨论问题+预期行动、总结性问题。可导出为 PDF (reportlab) 和 PPTX (python-pptx)。 ``` GET /api/v1/clients/{id}/tabletops POST /api/v1/clients/{id}/tabletops/generate {scenario_type, custom_prompt} GET /api/v1/clients/{id}/tabletops/{id}/export.pdf GET /api/v1/clients/{id}/tabletops/{id}/export.pptx GET /api/v1/tabletop/scenario-types ``` ### 供应链风险图 使用 D3.js 力导向风险图跟踪供应商软件暴露面。 打开 **http://localhost:8000/supplychain.html** 以查看交互式图表视图。 ``` GET /api/v1/clients/{id}/vendors List vendors with risk levels POST /api/v1/clients/{id}/vendors Add vendor {vendor_name, products, criticality} DELETE /api/v1/clients/{id}/vendors/{vendor_id} Remove vendor POST /api/v1/clients/{id}/vendors/scan Trigger background risk scoring GET /api/v1/clients/{id}/supply-chain-graph D3.js {nodes, links} graph data ``` 供应商通过扫描威胁源中的名称/产品匹配进行风险评分。红色 = 高风险,琥珀色 = 中等风险,绿色 = 低风险。 ### 数据泄露成本与 ROI 计算器 使用 IBM《2024年数据泄露成本报告》模型计算每个威胁项的预期财务损失: | 行业 | 平均泄露成本 | |----------|---------------------| | 医疗保健 | $9.77M | | 金融 | $6.08M | | 科技 | $5.10M | | 能源 | $4.72M | | 制造业 | $4.20M | ``` GET /api/v1/clients/{id}/risk-portfolio Full portfolio: total exposure, patched vs unpatched, ROI ratios, top 20 items GET /api/v1/breach-cost/industries IBM 2024 baseline by industry ``` 风险投资组合显示在客户仪表板的“风险投资组合”选项卡中,包含 `$` 暴露金额和补丁 ROI 比率。 ## 页面 | URL | 描述 | |-----|-------------| | `/dashboard.html` | 主要威胁 Feed — 实时、可过滤、配备 AI 分析师 | | `/analytics.html` | 图表:趋势、供应商、类别、MTTR、热力图 | | `/actors.html` | 威胁行为者档案浏览器,附带 ATT&CK 热力图 | | `/cmmc.html` | CMMC 2.0 差距评估 — 110 项实践,14 个领域 | | `/supplychain.html` | 供应链风险图 (D3.js 力导向) | | `/upload.html` | 扫描上传中心和导出工具 | | `/admin.html` | 客户管理、资产、用户、导出 | | `/client_dashboard.html?client_id={id}` | 包含所有第三阶段功能的专属客户门户 | | `/fedramp.html` | FedRAMP 20x 合规仪表板 (KSI, OSCAL, 扫描器, SIEMs) | ## FedRAMP 20x 合规功能 PhantomFeed 包含一套完整的 FedRAMP 20x 持续监控功能套件。 ### 第 1 节 — 自动化扫描器拉取 | 扫描器 | 认证方式 | 备注 | |---------|-------------|-------| | Tenable.io | `X-ApiKeys` 请求头 (accessKey + secretKey) | Export API + workbench 回退机制 | | Tenable.sc | Session token (`/rest/token`) | 本地部署;设置 `extra_config.mode=sc` | | Rapid7 InsightVM | HTTP Basic 认证 | 分页的资产 + 漏洞端点 | | Qualys VMDR | Basic 认证 + `X-Requested-With` | XML 检测 API | | CrowdStrike Spotlight | OAuth2 client_credentials | 两阶段查询 + 详情获取 | 所有凭证在静止时均经过 **Fernet 加密**。在 `.env` 中设置 `PHANTOMFEED_ENCRYPTION_KEY`: ``` PHANTOMFEED_ENCRYPTION_KEY= # 生成: python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" ``` 扫描器 API 端点(前缀:`/api/v1/clients/{id}/`): | 方法 | 路径 | 描述 | |--------|------|-------------| | GET | `scanners` | 列出扫描器配置(凭证已掩码) | | POST | `scanners` | 添加扫描器配置 | | PATCH | `scanners/{scanner_id}` | 更新配置 | | DELETE | `scanners/{scanner_id}` | 删除扫描器及其发现结果 | | POST | `scanners/{scanner_id}/poll` | 触发立即轮询 | | GET | `scan-findings` | 列出发现结果(可按严重级别、扫描器过滤) | | GET | `scan-findings/summary` | 严重级别计数 + 扫描器状态 | ### 第 2 节 — SIEM 集成 | SIEM | 认证方式 | 备注 | |------|-------------|-------| | Splunk | Session key (`/services/auth/login`) | 保存的搜索作业轮询 | | Microsoft Sentinel | Azure AD client_credentials OAuth2 | Log Analytics KQL 查询 | | IBM QRadar | `SEC` token 请求头 | 带分页的 Offenses API | | Elastic Security | `ApiKey` 请求头 | 检测信号 + 回退警报 API | SIEM 端点:与扫描器模式相同,位于 `/api/v1/clients/{id}/siems/...` ### 第 3 节 — OSCAL 输出引擎 | 文档 | 格式 | 描述 | |----------|--------|-------------| | POA&M | XML | 将开放的补救项导出为 OSCAL 行动计划和里程碑 | | SAR | XML | 将扫描发现结果导出为 OSCAL 评估结果 | | VDR | JSON | 带有资产映射的 CVE 标记漏洞 | | OAR | JSON | 安全态势评分、授权决策、CM 活动日志 | | SSP (部分) | XML | 系统特征 + 8 个控制实施桩 | | Bundle | ZIP | 将所有 5 份文档打包为一次下载 | OSCAL 端点:`GET /api/v1/clients/{id}/oscal/{type}.{ext}` 和 `/oscal/bundle.zip` ### 第 4 节 — KSI 验证引擎 七项关键安全指标每 6 小时自动验证一次: | KSI | 类别 | 通过阈值 | |-----|----------|----------------| | KSI-1 | 漏洞管理 | 没有开放超过 15/30 天的 CRITICAL/HIGH CVE | | KSI-2 | 补丁时效性 | ≥90% 的补丁安装率 | | KSI-3 | 持续监控 | 所有扫描器均在间隔时间 + 2 小时内完成轮询 | | KSI-4 | 事件检测 | ≥1 个带有近期数据的活跃 SIEM | | KSI-5 | POA&M 及时性 | 0 项逾期的 CRITICAL 补救措施 | | KSI-6 | 供应链 | ≥80% 的供应商在 30 天内接受了评估 | | KSI-7 | 暗网暴露面 | 没有超过 48 小时未确认的警报 | KSI API:`GET /api/v1/clients/{id}/ksi`、`POST /api/v1/clients/{id}/ksi/validate` ### 第 6 节 — 审计日志 每次 API 调用都会记录到 `audit_log` 表中(事件类型、用户、客户端、方法、路径、状态、IP、持续时间)。导出为 CSV: - `GET /api/v1/audit` — 全局审计日志(管理员) - `GET /api/v1/clients/{id}/audit` — 每个客户端的审计日志 - `GET /api/v1/clients/{id}/audit.csv` — CSV 导出 ## 参与贡献 欢迎提交 PR 和 Issue。如果你添加了新的 Feed 源、修复了某个解析器或改进了仪表板 —— 请发起一个 Pull Request。如果某个 Feed 失效或返回了错误数据,请附带 Feed ID 和你观察到的数据样本发起一个 Issue。 ## 许可证 MIT — 你可以随意使用它。
标签:AI风险缓解, CISA KEV, GPT, HTTP/HTTPS抓包, ICS安全, Llama3, LLM评估, Ollama, OT安全, PKINIT, Python, SCADA安全, SOC工具, 供应商安全通告, 威胁情报, 安全仪表盘, 安全运营, 实时处理, 实时威胁监控, 密码管理, 工控安全, 开发者工具, 开源, 态势感知, 情报聚合, 扫描框架, 无后门, 暗色模式UI, 本地大模型, 本地部署, 漏洞发现, 漏洞管理, 离线AI分析, 自动化情报收集, 计算机取证, 逆向工具, 隐私计算, 零API费用