Expert21/hermes-osint

GitHub: Expert21/hermes-osint

一个基于 Docker 与 Ollama 大模型的对话式 OSINT 编排框架,将多工具链整合为智能自动化调查平台。

Stars: 41 | Forks: 7

# Hermes OSINT v3.0 🏛️🧠 [![版本](https://img.shields.io/badge/version-3.0.0-blue.svg)](https://github.com/Expert21/hermes-osint/releases) [![许可证: AGPL-3.0](https://img.shields.io/badge/License-AGPL%203.0-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) [![需要 Docker](https://img.shields.io/badge/docker-required-blue.svg)](https://www.docker.com/) [![由 Ollama 驱动](https://img.shields.io/badge/ollama-powered-green.svg)](https://ollama.ai/) ## v3.0 新特性 🎉 **Hermes 3.0** 代表了一次从基于 pipeline 的工具编排向**对话式 AI 驱动的调查平台**的完整范式转变。借助通过 Ollama 运行的本地 LLM,Hermes 现在能够理解自然语言查询,自主选择并执行工具,并将发现整合为连贯的情报报告。 ### 🧠 代理智能 - **自然语言交互界面** - 像这样提问:“查找关于 @johndoe 的一切”,而无需记忆 CLI flag - **ReAct 模式** - 采用 思考 → 行动 → 观察 循环,实现智能、迭代的调查 - **自主工具选择** - LLM 根据上下文决定运行哪些工具 - **基于来源的报告** - 每一项发现都会标注其来源工具 ### 💬 交互式 TUI - **对话式 REPL** - 在渗透测试风格的终端界面中与 Hermes 聊天 - **会话持久化** - 使用 `/save` 和 `/load` 保存并恢复调查进度 - **上下文管理** - 自动摘要防止长会话中出现 token 溢出 - **实时状态栏** - 一目了然地查看模型、上下文使用情况和隐身模式 ### 🔄 灵活的执行模式 - **TUI 模式**(默认) - 结合 Ollama 的完整对话体验 - **Headless 模式** - 使用 `--headless --query "..."` 进行脚本编写和自动化 - **Legacy 模式** - 使用 `hermes sherlock ` 在不依赖 LLM 的情况下直接访问工具 ## 概览 🎯 Hermes 是一个**通用 OSINT 编排平台**,将一流的開源情报工具统一到一个由 AI 驱动的工作流中。无需分别手动运行 Sherlock、TheHarvester、Holehe 和其他工具——**浪费宝贵的调查时间** ⏰——Hermes 的 Agentic 核心能够理解您的意图,智能编排工具,关联跨来源的结果,并生成专业报告。📊 **Hermes 的与众不同之处:** 🌟 - 🧠 采用 ReAct 模式的 **Agentic AI** — 让 LLM 驱动您的调查 - 💬 **自然语言查询** — 无需记忆 flag,只需描述您的需求 - 🔒 具备静态代码分析的**安全优先插件架构** — 信任是争取来的 - 🐳 用于零信任工具执行的 **Docker 隔离** — 将所有东西沙箱化 - ⚡ 具备智能资源管理的**并行处理** — 比顺序执行快 2 倍 - 🧩 用于关系映射的**跨工具关联引擎** — 自动连接线索 - 🔧 **可扩展设计** — 无需改动核心代码即可添加新工具 ## 功能 💎 ### Agentic 核心 🤖 - 带有 思考 → 行动 → 观察 循环的 **ReAct Agent 循环** - 用于本地 LLM 推理(Llama 3、Mistral 等)的 **Ollama 集成** - 带有用于函数调用的 JSON Schema 定义的**工具注册表** - 带有滚动摘要的**上下文管理器**(针对 8B 模型限制为 24k 字符) - 用于保存/加载调查状态的**会话存储** ### 交互式 TUI 💻 - 带有持久化历史记录(`~/.hermes_history`)的 **prompt_toolkit REPL** - 带有绿色/青色/橙色点缀的**渗透测试风格主题** - 显示模型、上下文百分比和模式的**动态状态栏** - **斜杠命令**:`/help`、`/tools`、`/status`、`/save`、`/load`、`/export`、`/clear`、`/exit` ### 工具编排 🎼 - 开箱即用的 **6 款集成 OSINT 工具**(Sherlock、TheHarvester、h8mail、Holehe、PhoneInfoga、Subfinder) 🛠️ - 用于无缝集成第三方工具的**插件架构** 🔌 - 在执行前验证插件代码的**静态安全扫描器** — 杜绝意外发生! 🛡️ - **多模式执行**:Docker 容器、原生二进制文件或混合自动检测 🎭 - **隐身模式强制执行** — 启用时阻止主动探测工具 🥷 ### 性能 🚀 - 相比顺序运行,**并行执行**带来了 **2 倍的速度提升** ⚡ - **智能资源扩展** 自动检测 CPU 核心和内存 💻 - **临时容器** 自动启动、执行并销毁 🌪️ - 通过 `--workers` flag **配置 worker**,实现精细的并发控制 🎛️ ### 智能 🧠 - **跨工具关联** 识别不同数据源之间的联系 🔍 - **模糊去重** 智能消除冗余发现 🎯 - **统一实体 schema** 规范所有工具的输出 📐 - **来源归因** 追踪是哪个工具发现了每项结果 📝 - **置信度评分** 量化情报的可靠性 ⭐ ## 快速开始 🏃‍♂️💨 ### 前置条件 ✅ - Python 3.10 或更高版本 🐍 - Docker(用于容器化工具执行) 🐳 - Ollama 并已安装模型(用于 TUI/Agentic 模式) 🧠 ### 安装 📦 ``` # 克隆并安装 git clone https://github.com/Expert21/hermes-osint.git cd hermes-osint pip install -r requirements.txt pip install . # 安装 Ollama 并拉取模型 curl -fsSL https://ollama.com/install.sh | sh ollama pull llama3.1:8b # 健康检查 hermes --doctor # 🏥 Make sure everything's ready! ``` ### 基本用法 🎮 ``` # 🧠 TUI 模式(默认)- 对话式 AI 界面 hermes # 然后自然地聊天:“Find social accounts for johndoe” # 📜 Headless 模式 - 用于脚本和自动化 hermes --headless --query "Investigate the domain example.com" # 🔧 Legacy 模式 - 直接工具访问(无需 LLM) hermes sherlock johndoe hermes theharvester example.com hermes holehe user@example.com ``` ### TUI 命令 💬 ``` /help # Show all commands /tools # List available investigation tools /status # Show current session status /save # Save session to file /load # Load a previous session /sessions # List all saved sessions /export FILE # Export report (md, pdf, html, csv, stix) /stealth # Toggle stealth mode /clear # Clear conversation /exit # Exit Hermes ``` ### 进阶用法 🎯 ``` # Stealth 模式 - 仅限被动工具 hermes --stealth # Blocks:sherlock, holehe, phoneinfoga # Allows:theharvester, subfinder, h8mail # 特定模型选择 hermes --model mistral:7b # 带输出的 Headless 模式 hermes --headless --query "Find subdomains for target.com" --output report.md ``` ## 可用工具 🛠️ | 工具 | 用途 | 输入类型 | 隐身 | 状态 | |------|---------|------------|---------|--------| | **Sherlock** 🕵️ | 跨 300+ 网站进行用户名枚举 | 用户名 | ❌ | ✅ | | **TheHarvester** 🌾 | 从 OSINT 来源发现邮箱/子域名 | 域名 | ✅ | ✅ | | **h8mail** 📧 | 泄露数据关联与查询 | 邮箱 | ✅ | ✅ | | **Holehe** 🔍 | 跨 120+ 平台检测邮箱账户 | 邮箱 | ❌ | ✅ | | **PhoneInfoga** 📱 | 电话号码 OSINT 及运营商查询 | 电话 | ❌ | ✅ | | **Subfinder** 🗺️ | 被动子域名枚举 | 域名 | ✅ | ✅ | ## 架构 🏗️ ### v3.0 Agentic 架构 ``` User Input → CLI (cli.py) ├── TUI Mode → AgentLoop → Ollama → ToolExecutor → Adapters ├── Headless → AgentLoop → Single Query → Report └── Legacy → ToolExecutor Direct (no LLM) ``` ### 组件流 ``` ┌─────────────┐ │ User Query │ 💬 "Find info about johndoe" └──────┬──────┘ │ ▼ ┌─────────────────┐ │ AgentLoop │ 🧠 ReAct: Think → Act → Observe │ (agent_loop.py)│ └────────┬────────┘ │ ├──────────────────┬────────────────┐ ▼ ▼ ▼ ┌──────────────┐ ┌───────────────┐ ┌─────────────┐ │ ToolRegistry │ │ContextManager │ │ SessionStore│ │(tool_registry)│ │(context_mgr.py)│ │(session_store)│ └──────┬───────┘ └───────────────┘ └─────────────┘ │ ▼ ┌──────────────────────┐ │ ToolExecutor │ 🔧 Validates + Executes │ (tool_executor.py) │ └──────────┬───────────┘ │ ▼ ┌─────────────────────────┐ │ ExecutionStrategy │ 🎭 Docker/Native/Hybrid │ (execution_strategy.py) │ └──────────┬──────────────┘ │ ▼ ┌──────────────┐ │ Tool Adapters│ 🔌 Sherlock, TheHarvester, etc. └──────┬───────┘ │ ▼ ┌─────────────┐ ┌──────────────┐ │ Raw Results │─────▶│Deduplication │ ✨ └─────────────┘ └──────┬───────┘ │ ▼ ┌─────────────┐ │ Report │ 📊 │ (exporter) │ └─────────────┘ ``` ### 关键组件 🔑 #### 代理层 (`src/agent/`) - **AgentLoop** 🧠:结合 Ollama 函数调用的 ReAct 模式 - **ToolRegistry** 📋:用于 LLM 工具使用的 JSON Schema 定义 - **ToolExecutor** 🔧:验证输入,强制隐身,桥接适配器 - **ContextManager** 📊:滚动摘要,防止 token 溢出 - **SessionStore** 💾:用于保存/加载功能的 JSON 持久化 - **TUI** 💻:带有渗透测试风格的 prompt_toolkit REPL #### 编排层 (`src/orchestration/`) - **ExecutionStrategy** 🎭:Docker/原生/混合模式选择 - **DockerManager** 🐳:具有 SHA256 校验的临时容器 - **TaskManager** ⚡:具有资源限制的并行执行 #### 安全层 (`src/security/`) - **PluginSecurityScanner** 🛡️:基于 AST 的静态分析 - **InputValidator** ✅:防止注入,路径遍历保护 - **SecretsManager** 🔐:加密的凭证存储 ## 安全 🔐 ### Agent 安全 🛡️ - **基础规则** 防止 LLM 猜测 — 引用来源或保持沉默 - **隐身模式强制执行** 在启用时阻止主动探测工具 - 对所有工具参数执行执行前**输入验证** - **上下文限制** 防止通过 token 溢出进行提示词注入 ### 容器隔离 🐳🔒 - **SHA256 摘要固定** 防止镜像篡改 ✅ - **临时生命周期** 在执行后立即销毁容器 🌪️ - **资源限制**(768MB 内存,50% CPU,64 PIDs) 🚦 - **网络隔离** 具有可配置的 DNS 和代理支持 🌐 - **非 root 执行**(UID/GID 65534:65534) 👥 ### 插件安全 🛡️ - **静态分析** 检测 `eval()`、`exec()`、`os.system()` 和 shell 注入 🚨 - **双层信任模型** 将 Tool 插件与 Core 插件分离 🏛️ - **能力声明** 明确定义所需的权限 📋 ## 输出格式 📄 Hermes 通过 `/export` 生成多种格式的报告 — **您的数据,您做主!** 🎨 📦 **JSON** - 用于程序化消费的结构化数据 📝 **Markdown** - 简洁、兼容 GitHub 并带有表格的格式 🌐 **HTML** - 包含嵌入式 CSS 和统计信息的响应式设计 📄 **PDF** - 具有执行摘要的专业排版 📊 **CSV** - 用于电子表格导入的简单表格格式 🔒 **STIX 2.1** - 业界标准的威胁情报格式 ## 许可证 ⚖️ ### AGPL-3.0 (社区版) 🆓 Hermes OSINT 采用 **GNU Affero General Public License v3.0** 授权。 **这意味着:** 💡 - ✅ 可免费用于个人和商业目的 - ✅ 开源 — 查看、修改和分发代码 - ✅ Copyleft — 修改后的代码也必须在 AGPL-3.0 下开源 - ⚠️ **网络使用 = 分发** — 如果您将 Hermes 作为服务运行,您**必须**共享您的源代码 有关完整的条款,请参阅 [LICENSE](LICENSE) 文件。 ## 用例 💼 🔍 **安全研究** - 使用自然语言查询调查威胁 🤝 **尽职调查** - “告诉我关于这个人/公司的一切” 👣 **数字足迹分析** - 了解您组织的暴露面 📈 **竞争情报** - 通过对话方式研究竞争对手 🎯 **威胁情报** - 通过 AI 驱动的分类收集指标 📰 **调查性新闻** - 让 Hermes 为您连接线索 ## 法律与免责声明 ⚖️ **仅限授权的 OSINT 活动。** ⚠️ 用户对获得适当授权、遵守适用法律以及合乎道德地使用此工具负全部责任。 **允许的用途:** ✅ - 收集公开可用的信息 - 授权的安全评估 - 个人数字足迹分析 - 遵守当地法律法规 **禁止的用途:** 🚫 - 骚扰、跟踪或恐吓 - 未经授权的访问尝试 - 违反隐私法 - 违反平台服务条款 **开发者对滥用此工具不承担任何责任。** 🙅‍♂️ ## 作者 ✍️ **Isaiah Myles** ([@Expert21](https://github.com/Expert21)) *新兴网络安全专业人士 | 渗透测试思维 | 打造有价值工具的开发者* 🛠️⚡ - 🐛 **问题反馈**: [GitHub Issues](https://github.com/Expert21/hermes-osint/issues) - 📧 **邮箱**: isaiahmyles04@protonmail.com
**Hermes v3.0** 🏛️🧠 *Agentic OSINT 分析师* **对话式 AI。专家级工具。统一情报。** 由相信 OSINT 应当变得**智能、安全且易于访问**的人,用 💪 和 ☕ 倾力打造。
标签:AI Agent, Docker, ESC4, OSINT, Python, 安全防御评估, 开源情报, 无后门, 本地大模型, 自动化调查