Expert21/hermes-osint
GitHub: Expert21/hermes-osint
一个基于 Docker 与 Ollama 大模型的对话式 OSINT 编排框架,将多工具链整合为智能自动化调查平台。
Stars: 41 | Forks: 7
# Hermes OSINT v3.0 🏛️🧠
[](https://github.com/Expert21/hermes-osint/releases)
[](https://www.gnu.org/licenses/agpl-3.0)
[](https://www.python.org/downloads/)
[](https://www.docker.com/)
[](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, 安全防御评估, 开源情报, 无后门, 本地大模型, 自动化调查