domdanic/ThreatBrief

GitHub: domdanic/ThreatBrief

ThreatBrief 是一款便携式 Windows 威胁情报收集、阅读与分拣桌面应用,整合多源漏洞情报并提供优先级排序和可选 AI 辅助解释。

Stars: 0 | Forks: 0

# ThreatBrief [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/domdanic/ThreatBrief/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) ThreatBrief 是一个便携的防御性威胁情报收集器、阅读器和分流处理台。它结合了 CISA KEV 和 NVD 漏洞情报,以及可选的 AlienVault OTX 和 abuse.ch ThreatFox 社区订阅源,关联重复的 CVE 和指示器,并将历史记录保存在本地的 SQLite 中。 ## 环境要求 - Windows PowerShell 5.1 或 PowerShell 7+ - 需要互联网连接以进行实时刷新 启动器优先使用 PowerShell 7 (`pwsh.exe`),并在 PowerShell 7 不可用时回退到 Windows PowerShell (`powershell.exe`)。 ## 许可证 ThreatBrief 基于 [MIT 许可证](LICENSE) 发布。它可供个人或商业目的使用、修改和分发。本软件不提供任何担保;完整条款请参阅许可文本。 ## 运行 从资源管理器或命令提示符运行: ``` ThreatBrief.cmd ``` 从 PowerShell 运行: ``` .\Invoke-ThreatBrief.ps1 ``` 常用选项: ``` # 使用本地 catalog 而不是网络(也可用于测试) .\Invoke-ThreatBrief.ps1 -CatalogPath .\tests\fixtures\cisa-kev-v1.json # 将生成的数据存储到其他位置 .\Invoke-ThreatBrief.ps1 -DataPath C:\ThreatBriefData # 在可读报告中包含 CISA 在过去 14 天内添加的条目 .\Invoke-ThreatBrief.ps1 -RecentDays 14 ``` 生成的文件默认存放在 `data/` 目录下: - `state/cisa-kev-state.json` — 上一次的目录状态 - `normalized/cisa-kev-latest.json` — 标准化的当前目录 - `reports/ThreatBrief-Latest.json` — 机器可读的刷新结果 - `reports/ThreatBrief-Latest.md` — 人类可读的简报 首次刷新会建立一个基准。随后的刷新将识别新增和已更改的 KEV 记录。每份报告还包括 CISA 在滚动 7 天窗口期内添加的条目的完整可读详情。使用 `-RecentDays` 可以更改该时间窗口。 ## 测试 这些测试没有外部依赖,且不会使用实时网络: ``` .\tests\Run-Tests.ps1 dotnet run --project .\tests\ThreatBrief.Data.Tests\ThreatBrief.Data.Tests.csproj ``` ## SQLite 历史记录 C# 服务层将完整的标准化目录、刷新历史记录、已读/未读状态以及保存的条目存储在 `data/threatbrief.db` 中。 在开发期间,可以使用以下命令导入最新的 PowerShell 输出: ``` dotnet run --project .\src\ThreatBrief.Cli -- ` import .\data\normalized\cisa-kev-latest.json ` --data-path .\data ``` 历史记录查询示例: ``` # 最近记录 dotnet run --project .\src\ThreatBrief.Cli -- list --days 7 --data-path .\data # 搜索完整 catalog dotnet run --project .\src\ThreatBrief.Cli -- list --search Microsoft --data-path .\data # 已读/未读和已保存状态 dotnet run --project .\src\ThreatBrief.Cli -- read CVE-2026-12345 --data-path .\data dotnet run --project .\src\ThreatBrief.Cli -- save CVE-2026-12345 --data-path .\data ``` ## 便携式运行 发行版本将是自包含的,并将可写的 `data` 目录保留在应用程序旁边。无需安装、管理员权限、注册表项或单独安装的 .NET runtime,即可将完整的文件夹通过可写的 U 盘在 Windows 计算机之间移动。 SQLite 使用回滚日志记录,并且 ThreatBrief 禁用了连接池,因此数据库文件会在操作完成后被迅速释放。在拔出 U 盘之前,请务必先关闭 ThreatBrief。 ## 桌面应用程序 在开发期间: ``` dotnet run --project .\src\ThreatBrief.Desktop ``` 桌面仪表板提供: - 一键 CISA 刷新并自动导入 SQLite - 关键优先级、关注列表匹配、即将到期和逾期条目的每日计数 - CISA 和 NVD 源健康度时间戳,以及过期数据警告 - 24小时、7天、30天和完整历史记录视图 - 收件箱、即将到期、逾期、勒索软件、已保存和所有历史记录的分流视图 - CVE、供应商、产品和描述搜索 - 未读筛选和持久的已读/未读状态 - 一键全部标记为已读工作流 - 已保存的条目 - 可读的威胁详情和所需操作面板 - 直接链接到 CISA 目录和 NVD 记录 - 包含跨源去重功能的规范化报告和指示器 - 支持以 Markdown、HTML 和 JSON 格式导出每日简报 - 便携式备份和经过安全检查的还原 - 可选的 GitHub 发行版检查,无静默安装 - 显著的通知以及经过验证的便携式下载并重启更新 - 通过 OpenAI 兼容或 Ollama 端点获取可选的 AI 辅助威胁解释 使用以下命令创建自包含的 Windows 版本: ``` dotnet publish .\src\ThreatBrief.Desktop ` --configuration Release ` --runtime win-x64 ` --self-contained true ` --output .\dist\ThreatBrief-win-x64 ``` 或者运行 `.\build\Publish-Portable.ps1`。生成的位于 `dist\` 下的版本化文件夹即为该便携式应用程序。 ### NVD 富化与关注列表 ThreatBrief 使用 NVD API 中的 CVSS 严重程度、攻击向量与复杂度、权限、用户交互、CWE、参考资料以及受影响产品数据对近期的 KEV 进行富化。富化数据会被缓存 24 小时,并且单次最多请求 100 个 CVE ID,以遵守公共 API 的限制。可以通过 `NVD_API_KEY` 环境变量提供可选的 API 密钥。 便携式的关注列表和警报窗口存储在 `data\config\watchlist.json` 中。编辑 `AlertWindowDays`(默认为 30)和 `Terms` 数组以匹配您的环境。关注列表匹配项排在最前,并可在桌面应用程序中进行筛选。 关键优先级和关注列表仪表板的计数仅包含警报窗口内的非终结状态记录。旧的历史记录会自然消失;已处理、不适用、已忽略、已解决和已驳回的记录会立即消失。明确的活跃工作在分流处理之前,在“即将到期”和“逾期”视图中保持可见。 本产品使用了 NVD API 的数据,但并未获得 NVD 的认可或认证。 ### 关联与分流 ThreatBrief 为每个 CVE ID 存储一个规范的威胁。每个收集器会写入独立的来源观察结果,因此 CISA、NVD、Microsoft 和未来的数据源会丰富同一个威胁,而不会创建重复的列表条目。 桌面应用程序会根据主动利用情况、勒索软件关联、关注列表匹配、CVSS、修复期限、攻击向量、所需权限以及用户交互,计算出一个可解释的操作优先级。优先级并不替代 CVSS;它回答的是该记录在配置的环境中需要多紧急的关注。 分流状态是便携且持久的: - New (新建) - Reviewing (审核中) - Action Required (需要采取行动) - Handled (已处理) - Not Applicable (不适用) - Ignored (已忽略) - Resolved (已解决) - Backlog (待办积压) - Dismissed (已驳回) 历史基准记录使用 `Backlog`,不计入操作逾期。“即将到期”和“逾期”视图仅包含活跃的 `New`、`Reviewing` 和 `Action Required` 记录。可以通过快捷按钮单独处理条目,或对当前可见的筛选结果进行批量处理。批量更改需要确认,并且仍然可以撤销。 ### Microsoft Defender Threat Intelligence Microsoft Graph Defender Threat Intelligence API 是计划中的关联数据源。Microsoft 目前要求拥有有效的 Defender Threat Intelligence Portal 许可证、API 附加项许可证、Microsoft Entra 身份验证以及 `ThreatIntelligence.Read.All` 权限。在该授权连接器配置完成之前,我们特意不存储租户凭据。 ### 社区情报连接器 OTX 和 ThreatFox 在 **Sources & Settings** 下被明确启用之前将处于禁用状态。OTX 需要 OTX API 密钥。ThreatFox 需要免费的 abuse.ch Auth-Key。密钥可以在应用程序中输入,并存储在便携式数据库旁的 `data\config\secrets.local.json` 中,或者通过 `OTX_API_KEY` 和 `ABUSECH_AUTH_KEY` 环境变量提供。环境变量具有优先权。 本地的机密文件特意被排除在备份之外,切勿提交到版本库或共享。对于已经部署了 MISP 和 OpenCTI 平台的组织来说,它们是合适的未来集成目标;独立的 v1 版本应用程序并不需要它们。 ### 更新 ThreatBrief 默认在启动时检查 [domdanic/ThreatBrief 发行版](https://github.com/domdanic/ThreatBrief/releases)。 可用的更新会显示在持久的横幅中,并提供选项以查看该版本、忽略该版本,或明确点击 **Download and restart**。 自动便携式更新同时需要带版本的 ZIP 文件及其匹配的 `.sha256` 发行资产。ThreatBrief 通过 HTTPS GitHub 发行 URL 下载这两者,限制下载大小,校验 SHA-256,验证归档路径,创建安全备份,并在关闭前暂存该发行版。一个单独的 PowerShell 5.1 助手程序会保留完整的 `data` 目录,替换应用程序文件,重启 ThreatBrief,并在替换或初始启动失败时还原之前的文件。更新绝不会在静默状态下下载或应用。 ### 可选的 AI 辅助 ThreatBrief 1.1 向标准应用程序添加了 AI 功能,该功能默认处于禁用状态。在用户启用 AI、选择提供商并明确同意将选定的标准化威胁记录发送至该端点之前,ThreatBrief 绝不会联系 AI 端点。 受支持的提供商模式: - **OpenAI Compatible (兼容 OpenAI)** — 默认使用 `https://api.openai.com/v1`;可以为兼容的服务配置端点和模型。 - **Ollama** — 连接到本地的 Ollama 服务,通常地址为 `http://localhost:11434`。ThreatBrief 在其标准下载中不捆绑 Ollama 或模型。当有独立的便携式 Ollama 捆绑包可用时,ThreatBrief 可以自动启动它,并仅停止由其启动的进程。 - **None (无)** — 默认值;不会发生任何 AI 网络活动。 首个 AI 工作流是 **Explain this threat**。它会生成结构化的摘要、对组织的影响、利用路径、建议措施、注意事项以及置信度。数据源的描述会被划定边界并被视为不受信任的数据。模型不接收任何命令、浏览器、文件系统、分流、合并或删除工具。 每一个被接受的结果都会连同其威胁 ID、输入指纹、提供商、模型和生成时间一起被缓存和记录在便携式的 SQLite 数据库中。除非选择了 **Regenerate**,否则未更改的记录将重用缓存的结果。 可以在 **AI Assistance** 下输入 API 密钥,或者通过 `THREATBRIEF_AI_API_KEY` 提供。系统也识别 `OPENAI_API_KEY`。环境变量具有优先权。便携式的密钥存储在 `data\config\secrets.local.json` 中,该文件被排除在 Git 和备份之外。 兼容 OpenAI 的 Responses API 请求会将 `store` 设置为 `false`。 对于便携式 Ollama,请启用 **Automatically start portable Ollama with ThreatBrief**,保留选中 **Stop it when ThreatBrief exits**,并输入该捆绑包文件夹。相对路径将从 ThreatBrief 文件夹中解析;默认的 `..\PortableOllama` 会查找同级的 ThreatBrief 和 PortableOllama 文件夹。当两个文件夹位于同一驱动器时,文件夹选择器会存储相对路径,从而保持便携性。包含 `ollama.exe` 的标准 Ollama 安装文件夹也受支持。使用 **Detect models** 可以从配置的 Ollama 端点填充已安装的模型列表。手动输入模型的方式仍然可用。自动进程控制仅限于 localhost 端点。 ## 架构 ``` CISA KEV / NVD / OTX / ThreatFox | Source-specific collectors | Canonical CVEs, reports, and indicators | C# services + SQLite | Avalonia desktop UI + portable exports/backups ```
标签:AI合规, AI风险缓解, CISA项目, GPT, IPv6, Petitpotam, PowerShell, SQLite, 多人体追踪, 威胁情报, 实时处理, 开发者工具, 漏洞管理