ht55/PhantomTrace_Honeypot-Intelligence

GitHub: ht55/PhantomTrace_Honeypot-Intelligence

这是一个结合合成数据生成与 LLM 分析的蜜罐情报研究项目,旨在探索数据生成方式对攻击者行为分类、威胁评分及 MBTI 画像准确性的影响。

Stars: 0 | Forks: 0

# Phantom Trace🕸️: 基于 Faker、Markov 和 LLM + MBTI 画像的蜜罐情报 ![Python](https://img.shields.io/badge/Python-3.11+-00ffe0?style=flat-square&labelColor=0d1117) ![Next.js](https://img.shields.io/badge/Next.js-15+-ffffff?style=flat-square&labelColor=000000) ![TypeScript](https://img.shields.io/badge/TypeScript-5+-3178c6?style=flat-square&labelColor=1a1a2e) ![Tailwind](https://img.shields.io/badge/Tailwind-3+-38bdf8?style=flat-square&labelColor=0f172a) ![Anthropic](https://img.shields.io/badge/Claude-Sonnet_4-f5c542?style=flat-square&labelColor=0d1117) ![Streamlit](https://img.shields.io/badge/Streamlit-1.32+-ff4c6e?style=flat-square&labelColor=0d1117) ![License](https://img.shields.io/badge/License-MIT-556270?style=flat-square&labelColor=0d1117) **🤖 Live Demo → [Phantom Trace 👻](https://phantom-trace.vercel.app)**

App Screenshot App Screenshot App Screenshot

## 项目简介 大多数蜜罐项目止步于日志收集。本项目也是从这里起步 —— 但真正的问题是: **LLM 能否有效分类攻击者行为,且数据生成方式(随机 vs 序列)是否会影响到该分类?** 为了在不运行真实蜜罐(及其伴随的法律/安全风险)的情况下回答这个问题,本项目生成了两种类型的合成攻击日志,并将其送入 LLM 分析流水线。 这并非最初计划。最初专门部署了一个伪装成健身公司的网站(bodysyniq.fit)作为蜜罐 —— 配置了 Canary token 并故意暴露 `.env` 文件 —— 但 Cloudflare 的机器人防护虽然非常适合生产环境,却阻断了本项目需要观察的流量。与其暴露 VPS 或付费购买更高阶的计划,项目转向了合成数据:这是一种更简洁的方法,同时也支持真实的标签标注和可复现性。 ## 架构 ``` ┌─────────────────────────────────────────────────────────┐ │ DATA GENERATION │ │ │ │ personas.py │ │ ├── Site A: API-first developer site │ │ └── Site B: Dummy company (PII / financial exposed) │ │ │ │ faker_generator.py → random sampling │ │ markov_generator.py → state transition chains │ │ │ │ Output: honeypot_logs_faker.json │ │ honeypot_logs_markov.json │ └────────────────────┬────────────────────────────────────┘ │ ┌────────────────────▼────────────────────────────────────┐ │ LLM PIPELINE │ │ │ │ llm_pipeline.py │ │ ├── Session feature extraction │ │ ├── Attack classification (Structured Outputs) │ │ ├── Threat scoring (1–10) │ │ ├── Intent summarization (natural language) │ │ └── MBTI attacker profiling │ │ │ │ Output: classified_logs_faker.json │ │ classified_logs_markov.json │ │ classification_report.json │ └────────────────────┬────────────────────────────────────┘ │ ┌────────────────────▼────────────────────────────────────┐ │ VISUALIZATION │ │ │ │ dashboard.py (Streamlit) │ │ ├── Overview — volume, origins, timeline │ │ ├── Attack Analysis — types, status codes, treemap │ │ ├── Faker vs Markov — distribution + accuracy delta │ │ ├── Attacker Profiles — MBTI cards + radar chart │ │ ├── Anomaly Detection — Isolation Forest results │ │ └── Markov Graph — NetworkX state transitions │ └─────────────────────────────────────────────────────────┘ ``` ## 为什么使用合成数据? 运行真实蜜罐会引入: - 法律灰色地带(CFAA、GDPR) - VPS 安全面 - 不可预测的数据质量和覆盖范围 合成数据规避了所有这些问题,同时实现了真实蜜罐无法做到的一点:**具有真实标签的攻击场景的刻意设计**。这使得 LLM 分类变得有意义 —— 我们可以实际衡量准确度。 这是安全研究中的标准做法(MITRE ATT&CK、Splunk BOSSEC)。 ## 现实世界校准 合成数据并非纯属虚构。攻击路径、IP 地区和 Markov 转移概率部分参考了在 2026 年 3 月至 5 月(1–3 个月)期间运营的**两个真实站点**的观察数据: - 站点 A:托管多个 API Key 受限应用程序的开发者门户 - 站点 B:一个故意暴露 `.env` 文件和 Canary token 的虚拟公司站点 **免责声明:** 样本量小,仅涉及两个站点,观察时间短。不具备统计学显著性。仅用作设计指导,而非真实标准。 ### 真实数据揭示了什么 **攻击来源与普遍假设存在显著差异。** 教科书式的威胁情报指向 CN/IN/RU 为主要来源。实际上,绝大多数流量源自**欧洲云基础设施** —— Hetzner(法兰克福)、DigitalOcean(阿姆斯特丹)、OVHcloud(巴黎)、AWS eu-north-1(斯德哥尔摩)。这些是数据中心出口 IP,而非攻击者的国籍。可能的解释是:廉价的欧盟 VPS 滥用以及 VPN/代理出口节点。 | 预期(普遍假设) | 观测结果(真实数据) | |------------------------------|----------------------| | 中国、印度、俄罗斯占主导 | 接近于零 | | 美国适中 | 适中(LAX, ORD) | | 欧洲较少 | 占主导(FRA, AMS, ARN, OSL, CDG) | **开发者站点吸引的流量不成比例。** 托管 API Key 受限应用程序的开发者门户,其每日攻击流量大约比带有 Canary token 和暴露 `.env` 文件的虚拟公司站点(可怜的 Chad)高出 10 倍。现代攻击者似乎更优先窃取凭据 —— 特别是能够实现即时、程序化访问的 API Key —— 而非静态数据渗出。 **AWS 凭据路径受到专门且系统的针对。** 扫描器不仅探测 `/.env` —— 它们遍历了一个结构化的字典:`/awsconfig.js`、`/aws.env`、`/.aws/credentials`、`/aws-exports.js`、`/crm/.env`、`/.env.bak`、`/.env.live`、`/.env.prod`。这反映了专用工具,而非通用扫描器。 **多语言扫描器字典。** WordPress 路径带有语言前缀出现:`/cms/wp-includes/wlwmanifest.xml`、`/site/wp-includes/...`、`/sito/wp-includes/...`(`sito` = 意大利语的“site”)。表明扫描器字典是基于多语言网络语料库构建的。 **新域名流量激增。** 在 DNS 传播后的几小时内,扫描就开始了。流量在第一周达到顶峰,随后趋于稳定 —— 这与 Shodan/Censys 的索引行为一致。 **时间与欧洲工作时间一致。** 攻击流量在 CDT 时间 00:00–08:00 达到峰值,对应 UTC 时间 06:00–16:00 —— 即欧洲工作时间。这进一步证明了基础设施(如果不是操作员的话)位于欧盟。 ## Faker vs Markov —— 为什么两者都要? | | Faker | Markov | |---|---|---| | **建模对象** | 攻击类型的分布 | 序列化的攻击者行为 | | **会话上下文** | 无 —— 每个请求独立 | 完整 —— 转移遵循概率链 | | **真实感** | 统计真实感 | 行为真实感 | | **LLM 分类** | 较难 —— 无序列信号 | 较易 —— 意图从序列中显现 | 假设:**Markov 日志将被分类得更准确**,因为序列上下文使攻击者的意图对 LLM 来说清晰可辨。仪表盘将展示这一假设是否成立。 ## MBTI 攻击者画像 LLM 将每个攻击者会话映射到一个修改过的 MBTI 框架: | 维度 | 安全解读 | |------|------------------------| | **E / I** | 广泛扫描 vs 针对性、专注的攻击 | | **S / N** | 已知 CVE 和工具 vs 探索性、未知端点 | | **T / F** | 自动化和系统化 vs 手动和自适应 | | **J / P** | 有计划的阶段推进 vs 机会主义和混乱 | 每个会话都会获得一个类型(例如 `INTJ`)、一个原型标签(例如 *“The Architect”*)、行为描述以及威胁评分。 这并非严肃的威胁情报。这是一种刻意的设计选择,旨在使分析**令人难忘且易于解释** —— 这对于作品集来说很重要。 ## 技术栈 | 层级 | 工具 | |-------|-------| | 数据生成 | `faker`, `random`, 自定义 Markov 引擎 | | LLM 流水线 | `anthropic` SDK, Structured Outputs, 异步 Batch API | | 异常检测 | `scikit-learn` Isolation Forest(会话 + 请求级别) | | 分析 | `pandas`, `networkx` | | 前端 | Next.js, TypeScript, Tailwind CSS | ## 安装 ``` git clone https://github.com/YOUR_USERNAME/phantom-trace cd phantom-trace ``` **生成日志 (Python):** ``` pip install -r requirements.txt python main.py python llm_pipeline.py # requires ANTHROPIC_API_KEY python anomaly_detection.py ``` **启动仪表盘 (Next.js):** ``` npm install npm run dev ``` ## 项目结构 ``` phantom-trace/ ├── src/ │ ├── app/ │ │ ├── globals.css │ │ ├── layout.tsx │ │ └── page.tsx │ ├── components/ │ │ ├── ui/ │ │ ├── AnomalyDetection.tsx │ │ ├── AttackAnalysis.tsx │ │ ├── AttackerProfiles.tsx │ │ ├── FakerVSMarkov.tsx │ │ ├── Footer.tsx │ │ ├── MarkovGraph.tsx │ │ ├── Navigation.tsx │ │ └── Overview.tsx │ └── lib/ │ └── types.ts ├── public/ │ └── data/ # JSON outputs (classification + anomaly results) ├── personas.py # Site definitions + Markov transition matrices (real-data calibrated) ├── faker_generator.py # Random sampling log generator ├── markov_generator.py # Markov chain log generator ├── main.py # Run both generators ├── llm_pipeline.py # LLM classification + MBTI profiling ├── anomaly_detection.py # Isolation Forest (session-level + request-level) ├── requirements.txt ├── package.json ├── tailwind.config.js ├── tsconfig.json ├── README.md └── docs/ └── real-observations/ # Screenshots from live sites (1-3 months) ``` - **[New Update]** 部分数据文件现在通过静态导入(而非 fetch)在构建时打包,以确保在 Vercel 免费版上可靠渲染,避免运行时网络故障。 ## 主要发现 - **LLM 分类准确率**:Faker `20%` · Markov `40%` Markov 日志的分类准确率高出两倍 —— 序列上下文使攻击者意图对 LLM 来说清晰可辨。绝对数值较低反映了仅从 HTTP 日志中分类细粒度攻击子类型的挑战,而非流水线本身的失败。 - **Faker 会话表现出更紧密的异常聚类** —— 随机分布为 Isolation Forest 提供了更干净的基线;Markov 的序列上下文使单个会话更具可预测性,因此真正的异常值以不同的方式突显出来 - **请求级别的异常集中在状态转换周围** —— `/wp-admin/` 和 `/oauth/authorize` 的 302 重定向是 Markov 日志中最异常的请求,表明阶段转换是攻击链中最容易被检测到的时刻 - **ISTJ 占主导地位**(25/40 个会话) —— 大多数模拟攻击者的画像特征为有条不紊、系统化且工具驱动,而非富有创造力或自适应 - **主要原型**:The Credential Harvester · The Methodical Cartographer · The Corporate Auditor ## 我的收获 本项目处于以下领域的交叉点: - **数据工程** —— 设计具有刻意统计和行为属性的合成数据集 - **统计建模** —— 将 Markov 链作为行为模型,使用 Isolation Forest 进行异常检测 - **LLM 工程** —— 使用 Structured Outputs 进行可靠的 JSON 提取,设计用于安全分类的提示词 - **可视化** —— 向非技术受众传达技术发现 最有趣的结果并非准确率数字 —— 而是观察 LLM 在*何处*误分类,以及这揭示了序列上下文如何影响语言模型推理。 ## 关于伦理的说明 本项目中的所有数据均为完全合成。未收集或使用任何真实用户数据、IP 地址或攻击流量。攻击者 IP 地址是通过程序生成的,不对应真实系统。 ## License MIT
标签:Claude API, Faker数据生成, Kubernetes, LLM安全分析, Markov链, MBTI人格分析, Python, Streamlit, Tailwind CSS, TypeScript, Web安全, 合成数据, 威胁情报, 威胁评分, 子域名暴力破解, 安全可视化, 安全插件, 开发者工具, 攻击者画像, 无后门, 特权检测, 自动化攻击, 自动化检测, 蓝队分析, 蜜罐, 访问控制, 证书利用, 逆向工具