Joe8K/VHunt

GitHub: Joe8K/VHunt

VHunt 是一个自托管的 Flask 威胁情报平台,融合 38+ 个情报源并提供 AI 攻击预测、变异引擎、主动欺骗和 AI/智能体威胁监控等前沿防御能力。

Stars: 0 | Forks: 0

# 🎯 VHunt ### 网络威胁情报融合与预测平台 [![Python](https://img.shields.io/badge/Python-3.13-blue?style=for-the-badge&logo=python)](https://python.org) [![Flask](https://img.shields.io/badge/Flask-2.3-black?style=for-the-badge&logo=flask)](https://flask.palletsprojects.com) [![Routes](https://img.shields.io/badge/API_Routes-521-red?style=for-the-badge)]() [![Tables](https://img.shields.io/badge/DB_Tables-89-orange?style=for-the-badge)]() [![License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](LICENSE) **521 个 API 路由 · 71 个仪表盘页面 · 89 个数据库表 · 69 个后端模块 · 38+ 个情报源** *融合威胁情报,预测未来攻击,生成新型攻击变体,并欺骗攻击者 —— 所有这些都来自一个自托管的 Flask 应用。*
## 问题所在 安全团队从十几个互不相连的来源(如 VirusTotal、AbuseIPDB、abuse.ch、暗网论坛、泄露数据库、GitHub 泄露扫描器)提取威胁数据,但这些数据几乎都不能告诉你即将发生什么。它只会告诉你其他地方已经发生了什么。指标(Indicators)永不失效,因此仪表盘里充斥着陈旧的无效信息。而且,几乎没有工具会去监控最新的攻击面:暴露的 AI 基础设施、泄露的 LLM 密钥,以及当前正在公开分享的提示词注入(prompt-injection)技术。 ## VHunt 的应对之道 VHunt 是一个单一的自托管 Flask 应用程序,它将 **38+ 个外部情报源**和 **24 个 RSS 订阅源**融合到一个标准化的 SQLite 数据库中,然后在此基础上分层提供了四个大多数免费 CTI 工具完全忽略的功能: 1. **AI 驱动的预测引擎**,可在攻击在现实中出现之前进行预测 2. **变异引擎**,从已知的模式生成逼真的新型攻击链变体 3. **主动欺骗层**,用于诱捕攻击者并进行指纹识别,而不仅仅是记录它们 4. 专门用于追踪 **AI/智能体威胁**的功能 —— 影子 AI、提示词注入、泄露的 LLM API 密钥 ## 数据概览 | 指标 | 数量 | |---|---| | API 路由 | 521 | | 仪表盘页面 | 71 | | 数据库表 | 89 | | 后端模块 | 69 | | 情报源 | 38+ | | 代码行数 (web/app.py) | 9,843 | | 代码行数 (modules/) | 41,798 | ## 功能概览 | 功能 | 作用 | |---|---| | IOC 管理 | 从 38+ 个来源收集、规范化并对恶意的 IP/域名/哈希/URL 进行评分 | | 预测引擎 | 使用 AI 从历史的 IOC/CVE/TTP 模式预测可能发生的未来攻击 | | 变异引擎 | 将已知攻击分解为 ATT&CK 阶段,并生成前所未见的变体链 | | 欺骗引擎 | 部署诱饵文件、Canary token 和虚假登录陷阱,以诱捕和追踪攻击者 | | 暗网监控 v2 | 追踪勒索软件受害者、泄露论坛、内存池交易和窃密日志 | | 凭据泄露监控 | 在泄露数据库和暗网中查找您组织的泄露的邮箱:密码组合 | | 品牌仿冒监控 | 通过 7 个生成层检测 typo-squatting/同形字钓鱼域名 | | 密钥扫描器 | 在与您的组织相关的公共 GitHub 仓库中查找暴露的 API keys/tokens | | 影子 AI 发现 | 在公共互联网上发现不安全的 AI 基础设施(开放的 Ollama,暴露的 vector DB) | | 提示词注入监控 | 追踪来自 Reddit、ArXiv、GitHub 的最新发布的越狱/注入技术 | | AI 模型滥用追踪器 | 基于 CVE 风格的 AI/ML 漏洞馈送(目前在野外被利用) | | VA 引擎 | 扫描资产的漏洞、错误配置,并映射攻击路径 | | 沙箱集成 | 通过 CAPE/Hybrid Analysis/Any.Run 引爆恶意软件样本 | | GRC 引擎 | 风险评分(可能性 × 影响)、合规性、审计、TPRM 工作流 | | SOCMINT | 跨平台转换用户名,以构建交叉引用的威胁行为者画像 | | IOC 衰减评分 | 通过基于类型的半衰期,自动降低老化指标的置信度 | | 攻击活动聚类 | 根据共享的基础设施将相关的 IOC 归组为命名的攻击活动 | | 插件系统 | 无需触及核心应用即可添加新的收集器/导出器 | | STIX/TAXII 导出 | 行业标准共享格式,与 MISP/OpenCTI 互操作 | ## 架构 VHunt 是一个刻意的单体 Flask 应用程序 —— 几乎所有的路由和页面渲染都位于 `web/app.py`(9,843 行)中,该文件调用由 69 个专门的后端模块组成的库以执行实际的情报逻辑。一个进程,一个端口,一个 systemd 单元。 ``` Browser request → Flask route in web/app.py matches URL → @login_required checks session (modules/auth.py) → Route calls into modules/*.py for business logic → Module queries SQLite (WAL mode, retry-with-backoff) → Module may call external API or local AI provider → Result rendered as Jinja2 template or returned as JSON ``` vhunt/ ├── web/app.py → 单个 Flask 入口点,包含所有 521 个路由 ├── web/templates/ → 73 个 Jinja2 HTML 模板 ├── modules/ → 69 个文件,每个功能域一个 ├── plugins/ → 10 个独立的插件,支持热发现 ├── core/config.py → API key 注册表,源注册表,共享的 get_db() ├── cli/ → 独立的 CLI 工具(3,638 行) ├── config/config.yaml → 订阅源,调度器间隔 ├── config/targets.yaml → 分组织的监控目标 └── data/vhunt.db → SQLite,89 个表,WAL journal 模式 ## 核心情报功能 ### IOC 管理与衰减评分 将每个指标标准化为统一的 schema,并附带来源归属和置信度评分。大多数 CTI 工具的指标从不失效 —— 8 个月前被标记为恶意的 IP 仍然会永远显示为“活跃”。VHunt 为每种 IOC 类型分配了置信度半衰期(C2 IP 为 5 天,一般 IP 为 7 天,域名为 14 天,文件哈希为 30 天)并自动重新计算。 ### 预测引擎 将当前的 IOC 数据库状态 —— 攻击活动活动、CVE 时间点、TTP 频率 —— 提供给 AI provider swarm,要求其预测近期的攻击活动。会根据实际发生的情况追溯性地对其准确性进行自我评分。 ### 变异引擎 —— 真正的运作机制 1. 接收一个种子攻击模式(真实的、观察到的) 2. 将其分解为 MITRE ATT&CK 杀伤链阶段 3. 对于每个阶段,查找可实现相同目标的替代技术 4. 将各个阶段重新组合为新的、内部逻辑一致的攻击链 5. 根据您自己的资产数据对每个变体的新颖性、合理性和危险性进行评分 变异是基于真实的 ATT&CK 关系和您自己的环境的 —— 而不是漫无边际的 LLM 头脑风暴。 ### 主动防御 —— 欺骗引擎 四个具体机制: - **嵌套诱饵存档** —— zip 包中嵌套 zip 再嵌套 zip 的文件,浪费攻击者工具的时间 - **带有延迟回调的 Canary token** —— 触发时记录源 IP/时间戳,带有故意的延迟以避免惊动攻击者 - **虚假凭据填充 endpoint** —— 总是显示“成功”,静默收集所有尝试的凭据对 - **同形字内容指纹** —— 诱饵文本中不可见的跟踪 ID,如果出现在泄露论坛上则可进行追踪 ### 暗网与暴露面监控 勒索软件受害者追踪、用于勒索软件支付信号的内存池交易监控、窃密日志摄取、凭据泄露交叉引用,以及 7 层品牌仿冒域名生成器(typosquatting、同形字、bitsquatting、soundsquatting、TLD 交换、子域插入、combosquatting)。 ### AI / 智能体威胁面监控 一个目前几乎没有商业平台追踪的威胁类别: - 影子 AI 发现 —— 通过 FOFA/ZoomEye 查找开放的 Ollama 实例和暴露的 vector DB - 提示词注入监控 —— 追踪来自 Reddit/ArXiv/GitHub 的新越狱技术 - AI 模型滥用追踪器 —— 针对 AI/ML 漏洞的 CVE 风格馈送(MITRE ATLAS) - AI 凭据监控 —— 专门搜索泄露的 LLM 提供商密钥 ### SOCMINT —— 最大的 API 面(44 个路由) 身份转换:用户名 → 关联邮箱 → 关联网域 → 解析的 IP → 所属组织,记录每一跳以便保留推理痕迹。使用 NetworkX 构建社交图并计算中心性 —— 从而识别出协调者与边缘账户。 ## AI Provider Swarm 七个后端,具有特定任务的路由: | 任务类型 | 路由顺序 | |---|---| | 预测 / 变异 | Groq → Gemini → Mistral → Ollama(本地回退) | | IOC 分析 / 对话 | **优先使用 Ollama**(出于隐私 —— 敏感数据保留在本地) → Groq → Gemini | | MITRE 映射 | Mistral → Groq → Ollama | | 新闻摘要 | Cohere → Gemini → Groq | 这是一个真正的隐私分级决策 —— 敏感的内部数据默认采用本地推理,而不仅仅是“调用任何配置好的 API”。 ## 技术栈 | 层级 | 技术 | |---|---| | Web 框架 | Flask 2.3+ | | WSGI 服务器 | Gunicorn (2 个同步 worker) | | 数据库 | SQLite 3, WAL 模式, 89 个表 | | 模板 | Jinja2 —— 服务器端渲染,无 JS 框架 | | AI / LLM | Ollama, Groq, Gemini, Mistral, OpenRouter, Cohere, Anthropic | | 威胁情报标准 | STIX 2.1,自定义 TAXII 2.1 服务器 | | 文档 | WeasyPrint, ReportLab, fpdf2, python-docx | | 网络 | ipwhois, dnspython, python-whois, aiohttp | | ML / 数据 | pandas, numpy, scikit-learn, networkx | | 匿名性 | 通过 SOCKS5 的可选 Tor 路由 | | 任务调度 | 进程内 `schedule` 库,无 Celery/Redis | ## 快速开始 ``` # 1. Clone git clone https://github.com/Joe8K/VHunt.git cd VHunt # 2. Install pip install -r requirements.txt # 3. Configure cp .env.example .env cp config/config.example.yaml config/config.yaml # 编辑 .env 和 config.yaml 并填入你的 API keys(设置帮助请参阅 API_KEYS_GUIDE.env) # 4. 设置 SECRET_KEY(production 必需) echo "SECRET_KEY=$(python3 -c 'import secrets; print(secrets.token_hex(32))')" >> .env # 5. Launch python3 web/app.py # Dashboard → http://localhost:5000 ``` **首次运行:** 应用程序会自动生成一个随机的管理员密码,并在控制台打印一次。请立即保存它,并在首次登录后通过设置进行更改。 VHunt 开箱即用,无需任何 API 密钥即可使用免费源(ThreatFox、URLHaus、MalwareBazaar、NVD、CISA KEV、Feodo Tracker、SSLBL、MITRE ATT&CK)。配置 API 密钥可解锁更深度的丰富信息。 ## CLI 工具 ``` python3 cli/main.py # Main CLI (3,638 lines of tooling) python3 cli/vhunt.py # VHunt operations CLI python3 cli/mutate_cli.py # Mutation engine CLI ``` ## 已知局限性(坦诚记录) 这是一个快速迭代、由 AI 辅助的个人构建项目。在此坦陈其权衡之处: - **路由级别验证,而非全局验证**:身份验证是通过 `@login_required` 按路由执行的,而不是全局拦截。如果在 localhost 之外进行自托管,请检查您暴露了哪些路由,并考虑添加 `before_request` 白名单拦截。 - **单体结构**:几乎所有的路由都位于一个文件中(`web/app.py`,约 9,800 行)。在当前规模下运行良好;如果进一步扩展,将受益于 Flask Blueprints。 - **无 JS 框架**:前端是服务器端渲染的 Jinja2 + 带有 `fetch()` 调用的原生 JavaScript —— 这是一个刻意的轻量级选择,而不是 React/Vue。 - **进程内调度器**:后台作业与 Web 应用程序在同一个 Gunicorn worker 中运行 —— 在当前规模下是可以接受的,但长时间运行的作业可能会暂时争抢 SQLite 连接。 ## 免责声明 VHunt 是为**防御性安全和威胁情报研究**而构建的。仅监控您拥有或获得明确授权评估的资产。欺骗/蜜罐模块旨在用于记录和追踪,而不是对攻击系统进行反击。
**由 [Jithu Mohan K](https://linkedin.com/in/jithumohank18) 构建** *网络安全爱好者 · CTI 平台开发者* [LinkedIn](https://linkedin.com/in/jithumohank18) · [GitHub](https://github.com/Joe8K)
标签:AI风险缓解, Flask, GitHub, Python, 威胁情报, 实时处理, 密码管理, 开发者工具, 攻击预测, 无后门, 网络安全, 蜜罐技术, 逆向工具, 隐私保护