dmille6/tpot2cti

GitHub: dmille6/tpot2cti

将 T-Pot 蜜罐采集的原始安全事件持续转化为 STIX 2.1 结构化威胁情报图谱并导入 OpenCTI,使分析师能够以图谱方式关联和追踪攻击行为。

Stars: 0 | Forks: 0

# tpot2cti **将 T-Pot 蜜罐数据转化为 OpenCTI 中的 STIX 2.1 威胁情报图谱。** [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) [![T-Pot](https://img.shields.io/badge/T--Pot-24.04-orange)](https://github.com/telekom-security/tpotce) [![OpenCTI](https://img.shields.io/badge/OpenCTI-6.x-009688)](https://github.com/OpenCTI-Platform/opencti) [![Status](https://img.shields.io/badge/Status-Beta-yellow)](#project-status) [![Tests](https://img.shields.io/badge/tests-273%20passing-brightgreen)](tests/) ## 这是什么? `tpot2cti` 是连接您的 **T-Pot 蜜罐** 与 **OpenCTI** 威胁情报平台的桥梁。它作为一小套容器运行在全新安装的 OpenCTI 旁边, 通过 SSH 连接到您的 T-Pot, 并将原始蜜罐事件持续转化为丰富的 STIX 2.1 实体关系图,分析师可以借此进行数据透视、 与 ISAC 共享,并桥接到 MISP。 **使用 tpot2cti 之前:** T-Pot 提供了出色的蜜罐捕获功能。您将获得包含数百万条扁平事件的 Elasticsearch + Kibana 仪表板。 搜寻“这名攻击者在我所有的传感器上都做了什么?”需要手动进行跨索引查询。 **使用 tpot2cti 之后:** 每个攻击者 IP、捕获的文件、命令和指纹都会成为 OpenCTI 图谱中的一等实体。会话具有相关性。 sighting(目击)被计数。附加了地理和 ASN 上下文。数据是 **原生 STIX 2.1** 格式 —— 这意味着它可以以行业 ISAC、ISAO 和其他威胁情报平台原生使用的格式进行共享。 ## 为什么会有这个项目 T-Pot 在捕获方面表现出色。OpenCTI 在威胁情报图存储和分析师工作流方面表现优异。 中间缺失的是一个了解 T-Pot 20 多种蜜罐事件类型并从中生成建模良好的 STIX 数据的导入器。这个项目就是为此而生的。 我们考虑过但并未采取的其他方案: - **直接增强 T-Pot 的 Kibana。** 很诱人(无需添加新基础设施),但这会将您排除在 STIX 生态系统之外。 - **使用 MISP 而不是 OpenCTI。** 更简单,但图谱功能较小。 我们选择 OpenCTI 是因为其丰富的实体关系;tpot2cti 未来可以作为配套的 connector 添加 MISP 桥接。 - **自定义 UI。** 构建另一个威胁情报 UI 简直是个泥潭。 OpenCTI 很成熟,维护良好,也是社区已经熟知的工具。 ## 您将获得什么 经过大约 10 分钟的设置后,分析师打开 OpenCTI 就会看到: - **每个攻击者 IP** 都是一个 STIX `IPv4-Addr` observable(可观测对象),并附带国家/地区(`Location` SDO)、ASN(`Autonomous-System` SDO),以及他们参与的每次蜜罐会话的 `Sighting`(目击记录)。 - **每个捕获的恶意软件样本** 都是一个 `StixFile` observable(以 SHA-256 为键),关联回投放它的攻击者及其下载该文件的 URL。 - **Cowrie 命令序列** 成为包含其运行的完整命令行的 `Process` observable。 - **工具指纹**(HASSH、JA3、JA3S、HTTP-header-hash)作为 `Cryptographic-Key` observable —— 让您能够对使用相同工具集的攻击者进行聚类。 - **MITRE ATT&CK 对齐** —— 带有 ATT&CK 元数据的 Suricata 警报将成为具有适当 STIX 关系的 `AttackPattern` SDO。 - **每日凭证摘要** —— 每个传感器尝试次数排名前 100 的用户名/密码组合,作为 STIX `Note`(避免用单个凭证 observable 淹没 OpenCTI)。 - **原生 STIX 导出** —— 与行业 ISAC 共享您的蜜罐情报,将其导入 MISP,或馈送到任何支持 STIX 的工具中。 ## 架构 ``` ┌─────────────────┐ ┌──────────────────────────────────┐ │ T-Pot 24.04 │ │ Your tpot2cti host │ │ (your sensor) │ │ (4c / 16-32 GB / 128 GB) │ │ │ │ │ │ - ES :64298 │◄──── SSH tunnel ──────┤ ┌─ tpot-tunnel (autossh) ─┐ │ │ - SSH :64295 │ │ │ forwards localhost:64298 ──┐ │ │ │ │ │ └────────────────────────────┘ │ │ └─────────────────┘ │ │ │ │ ┌─ OpenCTI stack ──────────┐ │ │ │ │ (cloned + run unmodified │ │ │ │ │ from OpenCTI's repo) │◄─┘ │ │ └──────────────────────────┘ │ │ │ │ ┌─ tpot2cti (our connector) ─┐ │ │ │ reads T-Pot ES via tunnel, │ │ │ │ emits STIX to OpenCTI │ │ │ └─────────────────────────────┘ │ │ │ │ Optional (compose profiles): │ │ ├─ tpot2cti-credentials (DuckDB)│ │ └─ tpot2cti-vault (SFTP samples)│ └──────────────────────────────────┘ ``` 三个部分: 1. **OpenCTI** —— 从上游官方 Docker 仓库部署,完全未修改。 2. **tpot2cti** —— 我们的导入器,附加到 OpenCTI 的 Docker 网络中。 3. **一条 SSH 隧道** —— autossh 容器,将 T-Pot 的 ES 转发给我们的导入器。 可选插件(默认关闭): - **`tpot2cti-credentials`** —— 将完整的凭证对存储在本地 DuckDB 中,以便进行更深入的离线分析(核心模块中包含排名前 100 的摘要;这是为需要海量数据的分析师提供的完整数据流)。 - **`tpot2cti-vault`** —— 通过 SFTP 将 T-Pot 中的恶意软件样本字节传输到内容寻址存储中,以防未来的富化 connector 需要实际的二进制文件。 ## v1.0 中支持的内容 ### 解析的蜜罐类型 T-Pot 24.04 自带的每种蜜罐类型 —— 外加一个**回退解析器**,它可以捕获任何无法识别的内容,因此您绝不会默默地丢失数据。 专用解析器涵盖:Cowrie (SSH/Telnet)、Suricata、Dionaea、 Honeytrap、Heralding、ConPot (ICS/SCADA)、H0neytr4p (HTTP)、Dicompot (DICOM 医疗)、Medpot (HL7)、Mailoney (SMTP)、CiscoASA、ADBhoney、 ElasticPot、RedisHoneypot、IppHoney、Miniprint、Tanner、Wordpot、 SentryPeer (SIP/VoIP)、Fatt (被动指纹识别)、NGINX、Honeyaml、 Router。 如果 T-Pot 增加了新的蜜罐类型,在有人贡献专用解析器之前, 回退解析器会将其作为 `Sighting` + `Note` 捕获到 OpenCTI 中。没有任何遗漏。 ### 不在 v1.0 范围内 为了保持项目精简和设置简短,以下是 **v1.0 中明确不包含** 的内容: - ❌ 威胁情报富化(GeoIP、AbuseIPDB、VirusTotal 等) - ❌ 基于 LLM 的分析 / playbook 分类 - ❌ 沙箱分类(VirusTotal Sandbox、Hatching Triage、CrowdStrike 等) - ❌ 多租户支持(每个 T-Pot 使用一个部署) - ❌ 预构建的 Docker 镜像(从源码构建) - ❌ Kubernetes(仅限 docker-compose) - ❌ 针对攻击者的主动响应(只读) 这些功能中的许多将在 v1.0 之后作为可选的配套 connector 推出 — 请参阅[路线图](#roadmap)。 ## 要求 - **硬件:** 4 核,16 GB 内存(建议 32 GB),128 GB 磁盘 - **操作系统:** Ubuntu 22.04 LTS 或 24.04 LTS - **软件:** Docker Engine 24+、Docker Compose 插件、git、ssh - **您的 T-Pot:** 24.04 版本,且 SSH 端口 64295 可从此机器访问 - **网络:** 允许出站 TCP 访问您 T-Pot 的 SSH 端口 您需要自行提供并维护您的 T-Pot 安装。我们不提供 T-Pot 设置方面的帮助 — 为此,请参阅 [T-Pot 项目](https://github.com/telekom-security/tpotce)。 ## 快速开始 ``` # 1. Clone tpot2cti git clone https://github.com//tpot2cti.git cd tpot2cti # 2. 运行交互式设置 ./setup.sh ``` `setup.sh` 将: 1. 检查先决条件(Docker、内存、磁盘) 2. 提示输入您的 T-Pot 主机、SSH 用户/端口、操作员组织名称 3. 询问要启用哪些可选功能(凭证分析、恶意软件保管库) 4. 将 OpenCTI 的官方 Docker 仓库克隆到 `./opencti/` 中(固定版本) 5. 生成所有密钥(管理员密码、RabbitMQ 凭证、connector UUID) 6. 填充两个 `.env` 文件(我们的 + OpenCTI 的,共享管理员 token) 7. 为 T-Pot 隧道生成 SSH 密钥,并暂停以便您将其添加到 T-Pot 的 `authorized_keys` 中 8. 测试隧道 9. 启动 OpenCTI(这需要 3-5 分钟 — 这是 OpenCTI 自身的启动过程) 10. 启动 tpot2cti(附加到 OpenCTI 的 Docker 网络) 完成后,OpenCTI 将运行在 **http://localhost:8080**,并在设置结束时打印出管理员密码。 第一次 T-Pot 摄取周期在 15 分钟内开始;您可以通过以下方式查看进度: ``` docker compose -p tpot2cti logs -f tpot2cti ``` ### 更新 ``` ./update.sh # Pull latest tpot2cti, rebuild our containers ./update.sh --opencti # Also bump OpenCTI to the new pinned version ``` ### 卸载/拆除 ``` ./teardown.sh # Stop both stacks (keep data) ./teardown.sh --purge # Stop and remove all data (with confirmation) ``` ## 在 OpenCTI 中的展示效果 典型的分析师工作流: 1. 导航到 **Observations → Observables → IPv4-Addr** 2. 按 Sighting 计数排序,以找出参与度最高的攻击者 3. 点击一个 IP → 查看其 Location、ASN、所有 Sighting、所有相关的 Files 4. 点击一个 File → 查看是哪些攻击者投放了它、他们使用了什么 URL 来获取它,以及它与哪些 AttackPatterns 相关联 5. 点击一个 AttackPattern → 查看指示该技术的所有 observable ## 配置 大多数用户完全不需要改动这个 —— `setup.sh` 会写入合理的默认值。 高级用户可以编辑 `.env` 进行调整: | 变量 | 默认值 | 作用 | |---|---|---| | `TPOT2CTI_INTERVAL` | `PT15M` | 循环间隔(ISO 8601 持续时间) | | `TPOT2CTI_INITIAL_LOOKBACK_HOURS` | `0` | 首次运行时从 N 小时前进行回填;0 = 从当前时间全新开始 | | `TPOT2CTI_DEFAULT_TLP` | `AMBER+STRICT` | 应用于所有生成的实体的 TLP 标记 | | `OPERATOR_ORG_NAME` | `T-Pot Operator` | 您的 STIX Identity(作为所有数据的创建者出现) | | `TPOT2CTI_IGNORE_TYPES` | (空) | 要跳过的、以逗号分隔的蜜罐类型 | 完整列表请参阅 [`docs/CONFIGURATION.md`](docs/CONFIGURATION.md)。 ## 文档 - [`docs/SETUP.md`](docs/SETUP.md) — 详细安装指南 - [`docs/SSH_TUNNEL.md`](docs/SSH_TUNNEL.md) — SSH 隧道配置 + 故障排除 - [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) — STIX 对象模型 + 关系图 - [`docs/PARSERS.md`](docs/PARSERS.md) — 各蜜罐解析器参考 - [`docs/CONFIGURATION.md`](docs/CONFIGURATION.md) — 完整的 env-var + YAML 参考 - [`docs/COMPATIBILITY.md`](docs/COMPATIBILITY.md) — T-Pot + OpenCTI 版本矩阵 - [`docs/TROUBLESHOOTING.md`](docs/TROUBLESHOOTING.md) — 常见问题 + 修复方法 - [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md) — 如何贡献 - [`V1_SPEC.md`](V1_SPEC.md) — 完整的 v1.0 规范说明 ## 路线图 核心导入器有意识地保持专注。未来的配套 connector(每个都是其独立的可选 Docker compose 服务)将**在不修改核心的情况下**分层增加额外功能: | 配套组件 | 用途 | 状态 | |---|---|---| | `tpot2cti-malwarebazaar` | 通过本地 CSV 镜像 + TLSH 模糊匹配进行恶意软件家族归属 | 计划中 | | `tpot2cti-firehol` | 针对 14 个拦截列表进行 IP 信誉检测 | 计划中 | | `tpot2cti-otx` | AlienVault OTX pulse 查询 | 计划中 | | `tpot2cti-abuseipdb` | AbuseIPDB 信誉评分 | 计划中 | | `tpot2cti-misp` | 双向 MISP 桥接 | 计划中 | | `tpot2cti-mitreattack` | 自动导入 MITRE ATT&CK STIX feed | 计划中 | | `tpot2cti-discord` | 每日摘要 webhook | 可能会做 | 每一个都遵循相同的架构模式 —— 附加到 OpenCTI 的 Docker 网络中,在适用的地方通过相同的隧道读取 T-Pot ES,通过 pycti 写入 OpenCTI。任何人都可以贡献一个。 ## 项目状态 **Beta 版** —— 正在针对单一生产级 T-Pot 部署积极开发中。对于 v1.0 规范来说功能完备,但尚未打 1.0 的标签。 ### 兼容性 | tpot2cti | T-Pot | OpenCTI | |---|---|---| | v1.0.x | 24.04.x | 6.x.y(在 `setup.sh` 中固定了特定标签) | 每个 tpot2cti 版本都会针对确切的某一个 OpenCTI 版本进行测试。请参阅 [`docs/COMPATIBILITY.md`](docs/COMPATIBILITY.md) 了解我们测试的内容。 ## 许可证 [GNU Affero General Public License v3.0](LICENSE) (AGPLv3)。 您可以将 tpot2cti 用于任何目的 —— 商业、非商业、 内部、托管。该许可证要求您部署的任何修改也必须 在 AGPLv3 下发布,包括 SaaS 部署。 这使得该项目保持真正的开源,并防止任何人将代码剥离为闭源产品。 如果您正在考虑为您的组织修改 tpot2cti, 请考虑将这些更改回馈给社区。当大家共同分享时,整个社区都是赢家。 ## 问题、议题、想法 - 🐛 **发现 Bug?** 带上日志和重现步骤开启一个 issue - 💡 **有功能想法?** 在提交 PR 之前开启一个讨论 —— 我们希望保持核心精简 - 🤝 **想要贡献?** 请参阅 [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md) - 🔒 **安全问题?** 请参阅 [`SECURITY.md`](SECURITY.md) 了解负责任的漏洞披露流程 *tpot2cti 不附属于 Telekom Security(T-Pot 的维护者) 或 OpenCTI / Filigran(OpenCTI 的维护者)。我们怀着极大的感激之情使用这两个项目。 所有商标分别归其各自的所有者所有。*
标签:OpenCTI, Python, STIX, 威胁情报, 安全数据集成, 开发者工具, 无后门, 版权保护, 蜜罐, 证书利用, 请求拦截, 逆向工具