Odysafe/ODYSAFE-CTI
GitHub: Odysafe/ODYSAFE-CTI
一个开源的本地部署网络威胁情报平台,用于自动提取、管理IOC并可视化威胁关系,支持离线运行和多种安全工具集成。
Stars: 4 | Forks: 1
# ODYSAFE CTI 平台
**开源的、本地部署的网络威胁情报平台。**
提取 IOC,管理指标,进行调查,使用 STIX 2.1 可视化威胁,并导出到您的安全工具。安装后可完全离线运行。运行无需管理员权限。无授权费用。
## 功能概述
## 截图



## 安装与启动
**唯一需要 `sudo` 权限的步骤是初始系统软件包安装。** 之后的所有操作均以普通用户身份运行,无需 root 或管理员权限。
**步骤 1 - 安装系统软件包(一次性操作,需要 sudo)**
```
sudo apt update
sudo apt install -y python3 python3-venv python3-pip git openssl
```
**步骤 2 - 克隆并安装**
```
git clone https://github.com/Odysafe/ODYSAFE-CTI.git
cd ODYSAFE-CTI
./install.sh
```
`./install.sh` 将设置 Python 虚拟环境,安装所有依赖项,在本地生成 SSL 证书,并可选择性地下载 DeepDarkCTI 存储库。无需 `sudo`。
**步骤 3 - 启动应用程序**
```
./start.sh
```
然后在浏览器中打开 **https://localhost:5001**。
SSL 证书在首次启动时自动生成于本地。不会连接到外部证书颁发机构。
**卸载**(将移除虚拟环境、数据库、上传文件和缓存):
```
./uninstall.sh
```
**手动设置 DeepDarkCTI**(如果在安装过程中跳过了此步骤):
```
git clone https://github.com/fastfire/deepdarkCTI.git ODYSAFE-CTI/cti-platform/modules/deepdarkCTI-main
```
## 数据存储位置
所有数据都保存在安装目录内。
| 类型 | 位置 |
| ------------ | ---------------------------- |
| 上传的文件 | `cti-platform/uploads/` |
| IOC 导出 | `cti-platform/outputs/iocs/` |
| 报告 | `cti-platform/outputs/reports/` |
| SQLite 数据库 | `cti-platform/database/` |
| 缓存 | `cti-platform/modules/cache/` |
| SSL 证书 | `cti-platform/ssl/` |
## 功能特性
### IOC 提取
通过四种输入方式收集 IOC:
- **文件上传** - 拖放或选择文件:`.txt`、`.html`、`.htm`、`.docx`、`.doc`、`.csv`、`.json`、`.log`、`.xml`、`.md`(最大 100 MB)
- **粘贴文本** - 直接粘贴任何内容,IOC 会被即时提取
- **URL 导入** - 提供 URL,平台将抓取页面并提取 IOC
- **手动输入** - 添加单个 IOC,需指定类型、值、来源名称和上下文
被防护的指标如 `hxxp://example[DOT]com` 会被自动检测和标准化。
每次导入都会创建一个命名来源,可配置来源名称和可选上下文。
由 [iocsearcher](https://github.com/malicialab/iocsearcher) 提供支持。
**自动检测 50+ 种 IOC 类型:**
| 类别 | 类型 |
| ---------- | ------------------------------------------------------------ |
| 网络指标 | URL、FQDN (域名)、IPv4、IPv6、IPv4 子网、Tor v3 地址 |
| 文件哈希 | MD5、SHA1、SHA256 |
| 通信 | 电子邮件地址、电话号码 |
| 区块链 | Bitcoin、Bitcoin Cash、Cardano、Dashcoin、Dogecoin、Ethereum、Litecoin、Monero、Ripple、Solana、Stellar、Tezos、Tron、Zcash |
| 社交媒体 | Facebook、GitHub、Instagram、LinkedIn、Pinterest、Telegram、Twitter、WhatsApp、YouTube、YouTube 频道 |
| 标识符 | CVE、MITRE ATT&CK TTP、UUID、Android 包名、Amazon ARN |
| 金融 | IBAN、WebMoney |
| 法律与合规 | 版权、商标、中国 ICP 备案号、西班牙 NIF |
| 其他 | TOX 标识符 |
### IOC 管理
从一个视图中浏览和管理所有提取的指标。
所有 IOC 都会自动标记其类型、来源和提取日期。
**过滤与搜索:**
- 跨所有 IOC 值的全文搜索
- 按类型、来源、组、日期范围或重复项过滤
- 按类型、来源、日期和组进行交互式标签过滤
- 针对大型列表的智能分页
**每个 IOC:**
- 标记为真实威胁或误报
- 分配 TLP 级别(公开、绿色、琥珀色、红色)
- 设置置信度
- 查看首次和最近出现日期
- 添加到某个组
**批量操作:**
- 选择多个 IOC 并进行批量删除或组分配
**手动添加:**
- 直接从 IOC 列表添加单个 IOC,包含类型、值和上下文
**一键 IOC 富化链接:**
- [BGP.he.net](https://bgp.he.net)
- [AbuseIPDB](https://www.abuseipdb.com)
- [VirusTotal](https://www.virustotal.com)
- [AlienVault OTX](https://otx.alienvault.com)
- [Pulsedive](https://pulsedive.com)
- [Shodan](https://www.shodan.io)
- [Shodan InternetDB](https://internetdb.shodan.io)
- [ThreatFox](https://threatfox.abuse.ch)
### 来源
每次导入都会创建一个来源。来源是与您的 IOC 关联的起源记录。
- 将来源组织到可自定义的拖放组中
- 查看每个来源的详细统计信息:IOC 数量、检测到的类型、创建日期
- 批量选择和删除
- 带有可逆删除和可配置自动清理的回收站系统
- 按名称、日期或 IOC 数量过滤和排序来源
- 查看每个来源的上下文和元数据
**Data-Shield IPv4 封锁列表** 可直接从来源页面访问。一键刷新封锁列表或将其导出为防火墙规则。
### 导出
以多种格式导出您的 IOC 数据。所有导出都遵循活动过滤器,并且可以按 IOC 类型、来源、标签、组或日期范围进行范围限定。
| 格式 | 用途 |
| ------------ | ---------------------------------------------------------- |
| TXT(带类型) | 通用,带有 IOC 类型标签 |
| TXT 简单 | 防火墙、EDR、代理、封锁列表 - 每行一个值 |
| CSV | Excel、报告、数据分析 |
| CSV 防火墙 | Palo Alto、Cisco、Fortinet、Check Point |
| JSON | API、自动化、自定义集成 |
| JSON 简单 | 轻量级脚本,按 IOC 类型分组 |
| XLSX | 格式化的 Excel 报告,用于文档记录 |
| 防火墙规则 | 可直接使用的阻止规则 |
范围选项:所有 IOC、按来源、按标签或按组。
最近的 5 次导出会列出,并带有直接下载链接。
### STIX 图表分析器
导入并可视化任何 STIX 2.x 包中的交互式图表。
**导入选项:**
- 上传 STIX JSON 文件
- 粘贴原始 JSON
- 从现有导出加载
- 加载之前保存的模型
**图表特性:**
- 带有缩放、平移和点击检查的交互式网络图表
- 按 STIX 对象类型过滤可见节点(指标、恶意软件、威胁行为者、活动、攻击模式等)
- 跨节点和关系的全文搜索
- 带滑块的时间过滤,用于探索威胁随时间的变化
- 节点点击时显示完整对象属性和连接的侧面板
- 保存模型以供后续分析
- 将图表和数据导出为多种格式
**100% 客户端处理。** 所有 STIX 数据都在您的浏览器中本地处理。不会将任何数据发送到任何服务器。
基于 OASIS TC 开放仓库的 [cti-stix-visualization](https://github.com/oasis-open/cti-stix-visualization)。所有资源包括 vis-network 都在本地打包,无 CDN 调用。
### CTI 资源
访问直接集成到平台中的外部威胁情报资源。
**DeepDarkCTI**
2518 个 CTI 来源,分布在 19 个类别中:
| 类别 | 来源数 |
| ------------------ | ------ |
| Telegram 威胁行为者 | 964 |
| 勒索软件团伙 | 624 |
| 论坛 | 316 |
| Telegram 信息窃取器 | 125 |
| 市场 | 159 |
| 搜索引擎 | 63 |
| 其他 | 54 |
| 漏洞利用 | 24 |
| Twitter 威胁行为者 | 39 |
| Twitter | 22 |
| 钓鱼 | 19 |
| MaaS | 10 |
| Discord | 7 |
| 假冒商品 | 8 |
| 最常被利用的 CVE | 74 |
| 恶意软件样本 | 3 |
| 方法 | 3 |
| 篡改 | 3 |
| 远程访问木马 | 1 |
按名称或类别搜索和过滤来源。通过 URL、名称和描述手动添加来源。将来源标记为收藏。按需刷新存储库。
**MITRE ATT&CK 企业版**
本地提供完整的 ATT&CK 企业矩阵:
| 统计项 | 值 |
| ---------- | ------ |
| 战术 | 15 |
| 技术 | 365 |
| 子技术 | 493 |
| 组织 | 189 |
| 软件 | 824 |
| 缓解措施 | 268 |
按战术列浏览完整的 ATT&CK 矩阵。按组织、平台过滤,或按技术名称或 ID 搜索(例如 `T1059`、`PowerShell`)。点击任何技术以展开子技术并查看详情。浏览 189 个威胁组织。将 IOC 链接到特定技术。随时从 MITRE 更新本地 ATT&CK 数据文件。
**勒索软件工具矩阵**
关于勒索软件团伙的工具、组织和社区报告。按工具或组织名称搜索和过滤。按需下载存储库。
**Data-Shield IPv4 封锁列表**
社区维护的恶意 IPv4 列表,用于防火墙和 WAF 防护。一键导入到平台,按需刷新,或直接导出为防火墙规则。
### 闪报 (FLINT)
生成结构化的 CTI 报告并以 Excel 格式导出。
报告遵循 13 步结构:
1. 标题和元数据:参考编号 (FLINT-YYYY-XXX)、TLP (红色 / 琥珀色 / 绿色 / 公开)、PAP (红色 / 琥珀色 / 绿色 / 白色)、优先级 (严重 / 高 / 中 / 低)、状态 (草稿 / 审阅 / 最终)、作者、创建和更新日期
2. 主题
3. 摘要
4. 关键要点
5. 时间线
6. 分析
7. IOC
8. 检测规则
9. 措施
10. 差距
11. 评估
12. 来源
13. 分发
将报告保存为草稿,浏览已保存的报告历史记录,并可随时导出为 `.xlsx` 文件。
### 日志分析器
上传安全日志并自动将事件映射到 MITRE ATT&CK 技术。
**支持的日志格式:**
- CSV:SIEM 导出、Windows 事件导出、带有标题的电子表格日志
- JSON:AWS CloudTrail、Azure 活动日志、API 日志、结构化 SIEM 事件
- TXT / LOG:Syslog (RFC 3164/5424)、Windows 应用程序日志、Apache/Nginx/IIS 访问日志、防火墙日志、纯文本
- XML:Windows 事件日志导出
**工作原理:**
每个日志事件都会与 200 多个正则表达式模式进行匹配,覆盖所有 14 种 MITRE ATT&CK 战术。覆盖范围包括端点活动 (Windows, Linux)、网络事件 (防火墙、代理、DNS)、Web 应用程序日志 (Apache, Nginx, IIS)、Active Directory 事件和云日志 (AWS CloudTrail, Azure Activity)。关键词包括 `powershell`、`mimikatz`、`lsass`、`registry run key`、`lateral movement`、`dns tunneling`、`vssadmin`、`wbadmin`。
系统从每条日志行中提取:
- `timestamp` - 从行本身解析(ISO 8601、Syslog、Windows 事件格式),否则使用上传时间
- `source` - 来源系统或日志类型(防火墙、sysmon、webserver、AD、云等)
- `description` - 用于模式匹配的完整原始日志消息
- `host` - 涉及的主机名或 IP(如果存在)
**每个匹配的信号强度:**
- 🔴 高 (>= 80%) - 在高严重性战术上有多关键词强匹配
- 🟠 中 (50-79%) - 部分匹配或较低严重性战术
- 🟡 低 (< 50%) - 弱单关键词匹配
信号强度仅反映模式置信度,并非事件的实际严重性。
**输出:**
- 网络杀伤链可视化,显示哪些阶段检测到了事件,哪些是盲区
- 检测到的技术卡片,包含技术 ID、名称、战术和事件计数
- 按 MITRE 战术在杀伤链顺序中分组的按时间顺序排列的攻击时间线:初始访问、执行、持久化、权限提升、防御规避、凭证访问、发现、横向移动、收集、外传、命令与控制、影响
- 带有时间戳、来源、描述、匹配技术和信号强度的所有事件表
- 将结果导出为 JSON 或 CSV
- 过去的分析已保存,可从“过往事件”选项卡访问
没有检测到事件的战术被标记为 **盲区**。它们的缺失并不能确认攻击跳过了该阶段。
### 设置
**身份验证**
启用或禁用登录。启用后,用户必须进行身份验证才能访问平台。默认凭据在安装期间配置。
**自动标记**
根据 IOC 的类型、来源、日期和其他元数据自动为提取的 IOC 添加标签。无论此设置如何,手动标签仍然可用。
**来源管理**
- 启用自动来源轮换:当达到最大来源数量时,最旧的来源会被自动删除
- 设置要保留的最大来源数量(默认值:20)
- 设置仪表盘上显示的最近来源数量(默认值:20)
- 以天为单位配置回收站自动清理延迟(默认值:5)
- 随时手动触发回收站清理
**存储监控**
- 查看总磁盘使用量和可用空间,实时刷新
- 分别查看上传文件、数据库和输出占用的空间
- 手动清理控制:
- 清理上传(文件、粘贴、URL)
- 清理输出(TXT、JSON、CSV、STIX 导出)
- 删除所有来源及其关联的 IOC
- 从数据库中删除所有 IOC
- 删除所有 STIX 上传文件
- 完全重置:删除所有上传、输出、IOC、来源、组、STIX 文件、事件和缓存
**备份与恢复**
- 创建完整的 ZIP 备份,包含所有带标签和组的 IOC、所有来源和元数据、自定义组和设置以及 CTI 收藏夹
- 从 ZIP 备份文件恢复:现有数据被保留,备份数据被合并,重复的 IOC 被跳过
设置会立即保存并应用。
## 仪表盘概览
主页显示您的 CTI 工作区的实时摘要:
- 总来源数和活动 IOC 数量
- 真实威胁 / 误报 / 未验证计数
- 时间趋势:最近 24 小时 / 7 天 / 30 天添加的 IOC 和来源
- 前 5 种 IOC 类型和按类别的分布
- 质量和验证比率
- TLP 分类细分
- 运营指标:带有注释的 IOC、带有查询 URL 的 IOC
- 警报:严重 IOC (TLP:红色 + 真实威胁)、最近未验证的、出错的来源
- 最高产的来源
- 最近来源列表
- CTI 资源状态(DeepDarkCTI 最后更新时间、MITRE ATT&CK 导入状态、勒索软件矩阵状态、Data-Shield 封锁列表最后更新时间和 IP 数量)
## 隐私与离线操作
安装后,平台默认不进行任何网络连接。
| 操作 | 连接 | 目的地 |
| ------------------------ | ------ | -------------------------------------------- |
| 正常使用 | 无 | 一切均为本地 |
| URL 导入 | 按需 | 您提供的 URL |
| DeepDarkCTI 下载或刷新 | 按需 | github.com/fastfire/deepdarkCTI |
| 勒索软件矩阵下载 | 按需 | github.com/BushidoUK/Ransomware-Tool-Matrix |
| Data-Shield 封锁列表刷新 | 按需 | github.com/duggytuxy/Data-Shield_IPv4_Blocklist |
| MITRE ATT&CK 更新 | 按需 | raw.githubusercontent.com/mitre-attack/attack-stix-data |
所有前端资源包括 vis.js、CSS 和 JavaScript 都在本地打包。运行时无 CDN 调用。
**要完全断网运行:**
- 安装期间跳过 CTI 资源下载
- 不要使用 URL 导入,改用文件上传或粘贴文本
- 不要在 CTI 资源中点击“下载”或“刷新”
**数据隐私:**
- 所有 IOC 数据、来源、标签和导出都保存在您的服务器上
- 无遥测或分析
- 无自动更新或后台连接
- IOC 提取通过 iocsearcher 本地运行
- SQLite 数据库和所有文件都留在您的基础设施内
## 合规性
| 标准 | 控制项 | ODYSAFE-CTI 如何帮助 |
| --------------- | ---------------------------------- | ---------------------------------------------------------- |
| ISO 27001:2022 | 控制 5.7 - 威胁情报 | 集中 IOC 管理,STIX 2.1 导出用于标准化共享 |
| NIS2 | 第 21 条 - 风险管理 | 集中 IOC 视图用于威胁评估,STIX 可视化 |
| NIS2 | 第 23 条 - 事件管理 | IOC 生命周期跟踪,标签系统,完整审计历史 |
| NIS2 | 第 23 条 - 信息共享 | STIX 2.1 包可与 CERT/CSIRT 和其他工具共享 |
| ISO 27001:2022 | A.8.16 - 监控 | 应用程序日志输出到 stdout,SQLite 中有完整审计跟踪 |
## 架构
```
Browser (Jinja2 templates, vanilla JS, vis-network bundled locally)
|
HTTPS localhost:5001
|
Flask backend (Python)
runs as normal user, no root needed
|
SQLite database (single local file)
|
IOCs / Sources / Investigations / Exports
|
Security tools (Firewalls, SIEM, EDR, CERT/CSIRT, MISP, OpenCTI)
```
关键组件:
- **Flask** - 轻量级 Python Web 框架,以普通用户身份运行
- **SQLite** - 单文件数据库,无需数据库服务器
- **iocsearcher** - 开源 IOC 提取库
- **vis.js** - 交互式图表可视化,本地打包
## 使用的开源工具
- [iocsearcher](https://github.com/malicialab/iocsearcher) - 从文件和文本中提取 IOC
- [deepdarkCTI](https://github.com/fastfire/deepdarkCTI) - 来自深网和暗网的 CTI 来源
- [勒索软件工具矩阵](https://github.com/BushidoUK/Ransomware-Tool-Matrix) - 勒索软件情报
- [Data-Shield IPv4 封锁列表](https://github.com/duggytuxy/Data-Shield_IPv4_Blocklist) - 用于防火墙/WAF 的恶意 IP 列表
- [vis.js](https://visjs.org/) - 交互式图表可视化
- [cti-stix-visualization](https://github.com/oasis-open/cti-stix-visualization) - STIX 2.x 图表引擎基础
ODYSAFE CTI 平台感谢所有这些开源项目的开发者和维护者。
## 贡献
1. Fork 该仓库
2. 创建分支:`git checkout -b feature/your-feature`
3. 进行更改并彻底测试
4. 提交时写明清晰的信息:`git commit -m 'Add your feature'`
5. 推送并开启一个 Pull Request
对于错误:开启一个问题并附上重现步骤。
对于安全漏洞:请私下报告,不要在公开问题中报告。
代码风格:Python 遵循 PEP 8,复杂逻辑需添加注释,面向用户的更改需更新文档。
## 许可证
**GNU Affero 通用公共许可证 v3.0 (AGPL-3.0)**
可在 AGPL-3.0 条款下免费使用、修改和分发。详见 `LICENSE` 文件。
由 [Odysafe](https://github.com/Odysafe) 开发
标签:IOC管理, MITRE ATT&CK框架, Python技术栈, SQLite数据库, STIX集成, 内核监控, 后端开发, 威胁分析, 威胁可视化, 威胁情报, 威胁情报源集成, 威胁调查, 安全Web界面, 安全指标管理, 安全运营, 开发者工具, 开源安全工具, 扫描框架, 数据可视化, 数据导出, 本地部署, 离线运行, 网络安全, 自动化侦查工具, 自动威胁提取, 逆向工具, 逆向工程平台, 隐私保护