rkevinrodas/cyber-intelligence
GitHub: rkevinrodas/cyber-intelligence
一款离线优先的威胁情报桌面应用,在本地聚合、标准化并分析来自多个安全源的威胁公告与报告。
Stars: 0 | Forks: 0
# CyberIntelligence
一款轻量级、离线优先的威胁情报工作站,以原生桌面应用的形式运行。它从知名的开源安全发布者处获取公告和威胁报告,在本地进行数据标准化,并为您提供简洁的界面来筛查、搜索和导出您找到的内容。
无需账户。无需遥测。数据绝不离开本机。
## 新手入门
### 前置条件
- [Node.js 18 或更高版本](https://nodejs.org/en/download)
### 运行应用
**macOS** — 在 Finder 中双击 `Launch CyberIntelligence.command`。
**Windows** — 在资源管理器中双击 `Launch CyberIntelligence.bat`。
启动器会在首次运行时处理所有事项:安装依赖包、构建应用并打开窗口。随后的启动会跳过构建步骤,几乎可以瞬间打开。
如果您更喜欢使用终端:
```
npm install
npm run electron:start
```
## 构建安装包
为任意平台生成可分发的安装包:
```
npm run dist:mac # .dmg + .zip (Intel and Apple Silicon)
npm run dist:win # .exe installer via NSIS
npm run dist:linux # .AppImage, .deb, .rpm
npm run dist:all # all three at once
```
生成的输出文件会保存在 `release/` 文件夹中。
### macOS — 签名
未签名的构建版本会触发 Gatekeeper 警告。若要临时跳过该警告,请执行一次:
```
xattr -cr /path/to/CyberIntelligence.app
```
正式发布版本应通过 Apple 的开发者计划进行签名和公证,以彻底消除该警告。
### Windows — 签名
未签名的 `.exe` 文件会触发 SmartScreen。使用来自受信任 CA 的代码签名证书可以为终端用户解决此问题。
## 应用图标
包含的 `public/icon.svg` 是源矢量图。在构建安装包之前,请先对其进行转换:
| 文件 | 平台 | 尺寸 |
|---|---|---|
| `public/icon.icns` | macOS | 1024×1024 |
| `public/icon.ico` | Windows | 256×256 (多分辨率) |
| `public/icon.png` | Linux | 512×512 |
免费工具:[cloudconvert.com](https://cloudconvert.com)、[icoconvert.com](https://icoconvert.com)。
## 项目结构
```
cyber-intelligence/
├── electron/
│ ├── main.js Electron main process (ESM)
│ └── preload.cjs Secure context bridge (CJS — required by Electron)
├── src/
│ ├── components/ All React UI components
│ ├── context/
│ │ └── AppContext.jsx Global state (useReducer), sync logic, exports
│ ├── services/
│ │ ├── cvss.js CVSS v3.1 calculator + metric inference
│ │ ├── db.js IndexedDB wrapper (open, save, query, purge)
│ │ ├── feeds.js Feed configurations + RSS/Atom parser
│ │ ├── normalize.js Normalisation pipeline, IOC extraction, context enrichment
│ │ └── readStore.js Read/unread state (localStorage)
│ └── styles/
│ ├── app.css Component styles
│ └── theme.css CSS variables — light and dark mode
├── public/ Static assets and app icons
├── Launch CyberIntelligence.command macOS double-click launcher
└── Launch CyberIntelligence.bat Windows double-click launcher
```
## 情报来源
| 来源 | 类型 |
|---|---|
| The Hacker News | 威胁新闻 |
| Bleeping Computer | 威胁新闻 + 安全公告 |
| SANS Internet Storm Center | 每日威胁日志 |
| CISA Advisories | 美国政府公告 |
| Krebs on Security | 调查性报道 |
| Dark Reading | 企业安全新闻 |
| Security Week | 综合威胁情报 |
| Threatpost | 研究与公告 |
您可以随时通过“来源”面板添加自定义 RSS/Atom 源。
## 核心功能
### 数据标准化与 IOC 提取
抓取的每篇文章都会被解析和标准化:去除 HTML 标签,解码实体,提取 IOC(IPv4、IPv6、域名、MD5/SHA1/SHA256 哈希值、CVE、URL、MITRE ATT&CK 技术和比特币钱包)。私有 IP 地址段和已知的 CDN/分析域名会被自动过滤掉。
### 威胁上下文关联
记录会与包含 70 多个威胁组织的数据库进行交叉比对。每条记录都会被标记归属的威胁行为者(包含来源国和赞助方)、MITRE ATT&CK 技术标签、推测的受影响行业、漏洞利用状态(活跃 / PoC / 已修复)、地缘政治来源,以及 1–5 的置信度评分。
### CVSS v3.1 评分
根据 FIRST 规范实现了完整的 CVSS v3.1 基础评分公式,包括 Roundup 函数和基于作用域的“所需权限”权重计算。当存在已知的 CVE 分数时,将直接使用该分数。否则,系统会从文章文本中推断出八项基础指标,并生成计算得出的分数(在 UI 中标记为“预估”)。
### 已读 / 未读追踪
每条记录都可以被标记为已读或未读。侧边栏允许您按状态进行筛选。当打开记录的详情视图时,系统会自动将其标记为已读。状态会独立于 IndexedDB 记录保存在 localStorage 中。
### 可配置的数据保留期
记录的保留时间窗口可由用户自定义(7–365 天),设置路径为 Settings → Data。过期的记录会在应用启动时自动清除。
### 带筛选的导出
JSON 和 CSV 导出功能会反映当前激活的所有筛选条件 —— 严重程度、阅读状态和搜索查询均会生效。除了标准字段外,CSV 输出还包括 CVSS 向量、漏洞利用状态、归属的威胁行为者以及受影响的行业。
### 定时自动抓取
您可以配置可选的每日定时抓取任务,使其在特定时间运行。在计划抓取运行前 60 秒,系统会弹出 toast 通知。
## 安全实践
- `contextIsolation: true` — 渲染进程无法访问 Node.js
- `nodeIntegration: false` — UI 层无法直接访问操作系统
- `sandbox: true` — 额外的 Electron 进程隔离
- 所有网络输入在使用前均经过验证
- 不使用 `eval()`、`innerHTML` 或任何动态代码执行
- 每个网络请求均配备 `AbortController` 和严格的 14 秒超时限制
- Object URL 在使用后立即予以释放
- 单实例锁可防止生成重复的 Electron 进程
- 外部链接一律在系统默认浏览器中打开,绝不在应用内部打开
标签:Electron, GNU通用公共许可证, MITM代理, Node.js, 代码示例, 威胁情报, 开发者工具, 数据分析, 数据可视化, 桌面应用, 离线优先, 自定义脚本