ChandraVerse/honeypot-threat-intelligence

GitHub: ChandraVerse/honeypot-threat-intelligence

基于T-Pot的多服务蜜罐平台,用于捕获真实攻击行为并自动生成MITRE ATT&CK映射的STIX威胁情报源。

Stars: 0 | Forks: 0

Status: Active Research T-Pot 23.x MITRE ATT&CK STIX 2.1 Real-World Data License: MIT PRs Welcome

🍯 蜜罐威胁情报平台

基于欺骗的威胁检测  ·  真实攻击者 TTP 分析  ·  结构化威胁情报源  ·  可发表的研究

📌 概述  ·  🏗️ 架构  ·  🔧 技术栈  ·  ⚡ 快速开始  ·  📊 发现  ·  🧩 TTPs  ·  📡 TIP Feed  ·  📝 研究  ·  ⚠️ 伦理  ·  🤝 贡献  ·  📜 许可证

## 📌 项目概述 本项目在云托管 VM 上部署了一个 **T-Pot 多服务蜜罐**,故意暴露在公共互联网上,以在 **30 天的观察窗口期内捕获真实的攻击者行为**。它产生 100% 真实的攻击遥测数据 —— 无模拟、无合成日志、无实验室伪造数据。 该平台自动将所有捕获的事件摄取到 **ELK Stack** (Elasticsearch + Logstash + Kibana) 中,通过威胁情报 API 丰富每个事件,将行为映射到 **MITRE ATT&CK 战术和技术**,并导出结构化的 **STIX 2.1 威胁情报源**。所有发现都记录为适合学术和行业发表的 **正式安全研究论文**。 ### 为什么这个项目很重要 | 受众 | 交付价值 | |---|---| | **防御者与蓝队成员** | 了解真实的攻击者 TTP 以完善检测规则和告警逻辑 | | **威胁情报团队** | 持续更新的 STIX 2.1 / MISP 兼容格式的 IOC 源 | | **安全研究人员** | 包含超过 500,000 个真实攻击事件及其完整来源的可发表数据集 | | **SOC 分析师** | 在真实、未经过滤的攻击遥测数据上练习分诊 | | **学生与作品集构建者** | 端到端蓝队项目:部署 → 分析 → 情报生产 | ## 🏗️ 架构 ``` ┌──────────────────────────────────────────────────────────────────┐ | PUBLIC INTERNET (Threat Actors) | | Scanners . Botnets . Exploit Kits . Brute-Forcers | └──────────────────────────┬───────────────────────────────────────┘ | Unsolicited inbound traffic only ┌─────────▼─────────┐ | T-Pot VM (Ubuntu 22.04) | | Docker Orchestration | | | | Cowrie SSH / Telnet | | Dionaea SMB / FTP / HTTP | | Glastopf HTTP Web App | | Heralding Multi-Protocol | | ADBHoney Android ADB | | CitrixHoneypot CVE Traps | └─────────┬─────────┘ | JSON event logs ┌─────────▼─────────┐ | ELK Stack | | Elasticsearch 8.x | | Logstash Pipelines | | Kibana Dashboards | └─────────┬─────────┘ | Enrichment pipeline ┌───────────────▼───────────────┐ | Threat Enrichment Engine | | Shodan API AbuseIPDB VirusTotal | | Geo-IP Mapping ASN Lookup | | WHOIS Passive DNS Resolution | └───────────────┬───────────────┘ | Structured output ┌─────────▼─────────┐ | STIX 2.1 TIP Feed | | MISP Export . JSON . CSV | | IOC Reports . Research PDF | └─────────────────────┘ ``` ## 🔧 技术栈 | 层级 | 工具 / 技术 | 用途 | |---|---|---| | **蜜罐框架** | T-Pot 23.x (Docker-based) | 多服务蜜罐编排 | | **SSH / Telnet 陷阱** | Cowrie | 凭证捕获、会话记录 | | **SMB / FTP 陷阱** | Dionaea | 恶意软件样本收集、漏洞利用捕获 | | **HTTP Web 陷阱** | Glastopf | Web 扫描器和 Web 漏洞利用流量 | | **多端口陷阱** | Heralding | 跨 15 种以上协议的凭证记录 | | **数据管道** | ELK Stack (ES 8.x + Logstash + Kibana) | 摄取、索引、可视化事件 | | **威胁增强** | Shodan API · AbuseIPDB · VirusTotal | IP 信誉、地理位置、文件哈希 | | **TIP 格式** | STIX 2.1 / TAXII 2.0 | 标准化威胁情报共享 | | **MISP 集成** | MISP 兼容 JSON 导出 | 社区威胁共享平台 | | **分析** | Python 3.12 · Pandas · GeoPandas · Matplotlib | 统计分析与可视化 | | **基础设施** | AWS / DigitalOcean / Hetzner 上的 Ubuntu 22.04 LTS | 云托管蜜罐部署 | | **仪表板** | Kibana · 攻击来源地理位置图 | 实时监控与探索 | ## 📁 仓库结构 ``` honeypot-threat-intelligence/ | +-- deployment/ # T-Pot installation & configuration | +-- tpot-setup.sh # Automated T-Pot deployment script | +-- docker-override.yml # Custom service configurations | +-- firewall-rules.conf # iptables rules for honeypot isolation | +-- cloud-init.yml # Cloud VM bootstrap configuration | +-- analysis/ # Python analysis & enrichment scripts | +-- ttp_extractor.py # MITRE ATT&CK TTP mapping engine | +-- ioc_aggregator.py # IOC collection & deduplication | +-- enrichment.py # Shodan / AbuseIPDB / VT API integration | +-- geo_visualizer.py # Attack origin geographic mapping | +-- cluster_analysis.py # Attacker behavior clustering (K-Means) | +-- requirements.txt # Python dependencies | +-- tip-feed/ # Threat Intelligence Feed output | +-- stix-bundles/ # STIX 2.1 JSON bundles (auto-generated) | +-- stix_generator.py # STIX 2.1 object generator | +-- misp_export.py # MISP-compatible export module | +-- taxii_server.py # Local TAXII 2.0 server (optional) | +-- dashboards/ # Kibana dashboard exports (NDJSON) | +-- attack-overview.ndjson | +-- geo-attack-map.ndjson | +-- ttp-timeline.ndjson | +-- data/ # Anonymized sample datasets | +-- sample_events.json # Sample attack events (sanitized IPs) | +-- aggregated_stats.csv # 30-day aggregated statistics | +-- report/ # Research paper & supporting figures | +-- honeypot_research_paper.pdf | +-- figures/ # Charts, heatmaps, TTP visualizations | +-- .env.example # Environment variable template +-- CONTRIBUTING.md # Contribution guidelines +-- LICENSE # MIT License + CC BY 4.0 (Dataset) +-- README.md ``` ## ⚡ 快速开始 ### 前置条件 部署之前,请确保您具备: - 运行 Ubuntu 22.04 LTS 的 **VPS / 云 VM** - 最低配置:**8 GB RAM · 4 vCPU · 100 GB SSD** - 推荐配置:用于 30 天数据收集的 **16 GB RAM · 8 vCPU · 200 GB SSD** - 支持的提供商:AWS EC2, DigitalOcean Droplet, Hetzner Cloud, Vultr - **Docker Engine** >= 24.x 和 **Docker Compose** v2 - **Python** 3.10 或更高版本 - **API Keys**(提供免费层级): - [Shodan](https://account.shodan.io/) — 用于 IP 扫描上下文 - [AbuseIPDB](https://www.abuseipdb.com/api) — 用于 IP 信誉评分 - [VirusTotal](https://developers.virustotal.com/) — 用于恶意软件哈希查询 - 一个无滥用历史的**专用 IP 地址** - 管理端口 `64297` 仅可从您自己的 IP 访问 ### 步骤 1 — 克隆仓库 ``` git clone https://github.com/ChandraVerse/honeypot-threat-intelligence.git cd honeypot-threat-intelligence ``` ### 步骤 2 — 部署 T-Pot ``` cd deployment/ sudo chmod +x tpot-setup.sh sudo ./tpot-setup.sh ``` 安装脚本将: 1. 更新并加固操作系统(禁用未使用的服务,配置 SSH 仅密钥认证) 2. 安装 Docker Engine 和 Docker Compose v2 3. 拉取并配置包含所有蜜罐服务的 T-Pot 23.x 4. 应用防火墙规则,在保护管理界面的同时暴露蜜罐端口 5. 配置 systemd 以在每次重启时自动启动 T-Pot 部署后访问 T-Pot 管理 UI: ``` https://:64297 ``` ### 步骤 3 — 配置环境变量 ``` cp .env.example .env nano .env ``` ``` SHODAN_API_KEY=your_shodan_key_here ABUSEIPDB_API_KEY=your_abuseipdb_key_here VT_API_KEY=your_virustotal_key_here ELASTICSEARCH_HOST=localhost ELASTICSEARCH_PORT=9200 GEO_DB_PATH=./data/GeoLite2-City.mmdb ``` ### 步骤 4 — 运行分析管道 在收集数据至少 24 小时后(建议 30 天): ``` cd analysis/ pip install -r requirements.txt # 提取 TTPs 并映射到 MITRE ATT&CK python ttp_extractor.py --days 30 --output ../data/ # 聚合并去重 IOCs python ioc_aggregator.py --output ../tip-feed/ # 使用 reputation 和 geo 数据丰富 IPs python enrichment.py --input ../data/aggregated_stats.csv # 生成攻击源地图 python geo_visualizer.py --output ../report/figures/ ``` ### 步骤 5 — 生成 STIX 2.1 威胁情报源 ``` cd tip-feed/ python stix_generator.py \ --input ../data/aggregated_stats.csv \ --output stix-bundles/ \ --campaign "honeypot-30day-2025" # 可选:导出为 MISP 兼容格式 python misp_export.py --stix-dir stix-bundles/ --output misp_events.json ``` ### 步骤 6 — 导入 Kibana 仪表板 1. 在 `http://:5601` 打开 Kibana 2. 导航至 **Stack Management → Saved Objects → Import** 3. 上传 `dashboards/` 文件夹中的每个 `.ndjson` 文件 4. 将索引模式设置为 `logstash-*` ## 📊 30 天发现 | 指标 | 观测值 | |---|---| | **总攻击事件** | > `500,000` | | **唯一攻击者 IP** | `12,500+` | | **主要目标端口** | SSH (22), SMB (445), RDP (3389), HTTP (80/443), Telnet (23) | | **主要攻击者国家** | CN, RU, US, BR, IN, NL, DE | | **映射的 MITRE TTPs** | T1078, T1059, T1110, T1046, T1190, T1090 | | **提取的 IOCs** | `8,000+` IPs · `300+` 文件哈希 · `150+` 域名 | | **捕获的恶意载荷** | `150+` 个唯一恶意软件样本 | | **攻击高峰时段** | 02:00–06:00 UTC (自动化扫描机器人) | | **凭证喷洒尝试** | `45,000+` 个唯一用户名/密码组合 | ## 🧩 MITRE ATT&CK TTP 映射 所有观察到的技术,按 30 天窗口期内的出现频率排序: ``` INITIAL ACCESS +-- T1190 Exploit Public-Facing Application [############--] High +-- T1078 Valid Accounts (Credential Abuse) [##############] Critical EXECUTION +-- T1059 Command and Scripting Interpreter [########------] Medium DISCOVERY +-- T1046 Network Service Scanning [##############] Critical CREDENTIAL ACCESS +-- T1110 Brute Force (SSH / RDP / FTP) [##############] Critical COMMAND & CONTROL +-- T1090 Proxy / TOR Exit Node Usage [######--------] Medium COLLECTION +-- T1119 Automated Collection (Bot Activity) [#########-----] High ``` 所有 TTP 映射都包含在 STIX 2.1 包中,作为带有完整 MITRE ATT&CK 外部引用的 `attack-pattern` 对象。 ## 📡 威胁情报源 ### STIX 2.1 包对象类型 | STIX 对象类型 | 描述 | |---|---| | `indicator` | 具有检测模式的恶意 IP、文件哈希、域名 | | `attack-pattern` | MITRE ATT&CK 技术映射 | | `threat-actor` | 基于行为相似性聚类的攻击者画像 | | `malware` | 从捕获载荷中识别的恶意软件家族 | | `relationship` | 链接 indicators → TTPs → threat actors | | `observed-data` | 带有时间戳的原始观测元数据 | ### STIX 2.1 包示例 ``` { "type": "bundle", "id": "bundle--chandraverse-honeypot-2025", "spec_version": "2.1", "objects": [ { "type": "indicator", "spec_version": "2.1", "id": "indicator--", "name": "Malicious SSH Brute-Force Source IP", "pattern_type": "stix", "pattern": "[ipv4-addr:value = '1.2.3.45']", "valid_from": "2025-01-01T00:00:00Z", "labels": ["malicious-activity", "brute-force"], "confidence": 85 }, { "type": "attack-pattern", "spec_version": "2.1", "name": "Brute Force: Password Spraying", "external_references": [ { "source_name": "mitre-attack", "external_id": "T1110.003" } ] } ] } ``` ### 源版本控制 `tip-feed/stix-bundles/` 中的 STIX 包在主动收集期间每日重新生成,按 ISO 8601 日期进行版本控制: ``` stix-bundles/ +-- bundle_2025-01-01.json +-- bundle_2025-01-02.json +-- bundle_2025-01-03.json +-- ... ``` ## 📝 研究论文 完整论文位于 `/report/honeypot_research_paper.pdf`。它遵循 IEEE 会议格式并涵盖: | 章节 | 内容 | |---|---| | 摘要 | 基于欺骗的检测方法论及关键发现总结 | | 引言 | 问题陈述:现代威胁情报中的被动蜜罐 | | 相关工作 | 先前的蜜罐研究 — Kippo, Glastopf, Project Honey Pot | | 方法论 | 部署架构、数据收集、匿名化方法 | | 攻击分析 | 30 天定量发现及统计细分 | | TTP 聚类 | 攻击者行为模式的 K-Means 聚类 | | TIP 源设计 | STIX 2.1 实现及 MISP 集成 | | 局限性 | 蜜罐检测规避、数据偏差考量 | | 未来工作 | 分布式蜜罐网络、基于 ML 的 TTP 分类 | **目标发表场所:** - IEEE Security & Privacy Workshops - USENIX Security Posters & WiPs - arXiv cs.CR (开放获取预印本) - SANS Internet Storm Center (公开报告) - VirusTotal Community Blog ## 🔄 复现此研究 要独立复现这 30 天的实验: 1. 准备一个具有全新、未使用 IP 的干净 Ubuntu 22.04 VPS 2. 使用 `deployment/tpot-setup.sh` 部署 T-Pot 3. 让蜜罐被动收集 30 天 —— 无需交互 4. 通过 Kibana 导出工具或 ES REST API 从 Elasticsearch 导出日志 5. 运行 `analysis/` 中的完整分析管道 6. 使用 `tip-feed/stix_generator.py` 生成您的 STIX 源 7. 将发现与 `data/aggregated_stats.csv` 中的参考数据集进行比较 ## 🤝 贡献 欢迎贡献!这个项目随着社区的投入而改进 —— 无论是新的蜜罐服务集成、更好的分析脚本、ML 模型,还是文档改进。 请阅读 **[CONTRIBUTING.md](CONTRIBUTING.md)** 以了解: - 开发环境设置 - 分支策略和提交信息规范 - Pull request 流程和审查时间表 - 代码风格指南 (Python PEP 8, STIX 验证要求) - 如何报告 Bug 和建议功能 - 安全披露流程 ## ⚠️ 伦理与法律 | 原则 | 实施 | |---|---| | **仅被动** | 仅捕获入站未经请求的连接 —— 无出站攻击 | | **IP 匿名化** | 公共样本中的所有 IP 均部分掩码 (`x.x.x.XXX`) | | **滥用报告** | 检测到恶意 IP 后立即报告给 [AbuseIPDB](https://www.abuseipdb.com) | | **法律合规** | 操作符合部署管辖区适用的网络法律 | | **无诱导** | 无主动招揽或引诱攻击者 | | **提供商通知** | 通知 VPS 提供商这是一个研究蜜罐部署 | 在部署之前,请审查您的云提供商的可接受使用政策 (AUP)。AWS、DigitalOcean、Hetzner 和 Vultr 均允许在事先通知的标准研究用例下进行研究蜜罐部署。 ## 📜 许可证 本项目采用双重许可发布: - **源代码** — [MIT License](LICENSE) 可免费使用、修改和分发,但需注明出处。 - **数据集** (`/data` 中的匿名化遥测数据) — [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) 可在引用的前提下免费用于研究。 如果您在出版物中使用本项目或数据集,请引用: ``` @misc{chakraborty2025honeypot, author = {Chakraborty, Chandra Sekhar}, title = {Deception-Based Threat Detection Using T-Pot Multi-Service Honeypot}, year = {2025}, publisher = {GitHub}, howpublished = {\url{https://github.com/ChandraVerse/honeypot-threat-intelligence}} } ```

Made with🛡️ by Chandra Sekhar Chakraborty
蓝队成员  ·  SOC 分析师候选人  ·  检测工程师

🌐 作品集  ·  💻 GitHub  ·  🔗 LinkedIn

如果这个项目对您有帮助,请考虑给它一个 ⭐

标签:AMSI绕过, BOF, CISA项目, Cloudflare, Docker, ELK Stack, HTTP/HTTPS抓包, MITRE ATT&CK, PE 加载器, STIX 2.1, TTP分析, 威胁情报, 威胁检测, 安全防御评估, 密码管理, 开发者工具, 异常检测, 态势感知, 恶意IP, 情报收集, 情报源, 插件系统, 攻击行为分析, 无线安全, 欺骗防御, 漏洞研究, 结构化查询, 网络安全, 网络安全审计, 自动化安全, 蜜罐, 证书利用, 请求拦截, 逆向工具, 隐私保护