HERA — 无与伦比的渗透测试代理
通过自然语言描述您的需求来运行Kali Linux安全工具。这个基于网络的MCP(模型上下文协议)代理利用Gemini 2.5 Pro(结合RAG增强功能)将提示转换为安全可执行的命令,实时流式传输结果,并且可以通过WebSocket在您自己的Kali机器上远程执行。
开发了一款名为“AI MCP”的AI驱动渗透测试工具,该工具具备专业终端界面,并集成了先进的RAG(检索增强生成)功能。前端采用React、TypeScript和Tailwind CSS构建,后端则使用Express并增强了WebSocket的稳定性。实现了Gemini AI与数据池的集成,能够将自然语言提示转换为可执行命令,并通过WebSocket实时输出结果,同时支持可选的Telegram机器人集成
______________________________________________________________________
文档
https://joelindra.gitbook.io/all-tools/hera✨ 特点
- 自然语言 → Kali 命令Gemini 2.5 Pro 将提示转换为精确指令。
- 数据池(RAG系统)使用Markdown文件作为知识库,以减少AI幻觉并提高指令准确性。
- 远程Kali执行(WebSocket)使用随附的Python客户端将应用程序与您的Kali盒子配对。
- 实时流式输出在浏览器中实时查看命令的输出。
- 双模式远程(Kali 客户端)或本地(服务器)执行,带有清晰的状态徽章。
- 安全护栏上下文感知验证,以防止明显具有破坏性的系统命令。
- 专业终端用户界面暗色优先主题、终端样式、结果折叠/展开功能以及历史记录。
- 增强的设置管理全面配置,实时状态监控。
- 个人API密钥支持使用您自己的Gemini API密钥(每个用户的设置)。
- Telegram机器人集成(可选)通过Telegram发送提示。
- 提高了WebSocket的稳定性跨页面导航的持久连接。
______________________________________________________________________
🧠 它的工作原理
- 你输入一个提示(例如,“扫描 example.com 上的 80 和 443 端口”)。
- 如果启用了数据池,系统将从Markdown文件中加载相关上下文。
- 后端请求Gemini根据RAG上下文生成确切的Kali命令。
- 命令已验证,确保安全且工具可用。
- 如果Kali客户端已连接,则命令通过(某种方式)发送
/kali-ws并在您的机器上执行;否则在服务器上本地运行。 - 输出流通过 WebSocket 实时返回到浏览器。
高级流程:
Prompt → Data Pool Context → Gemini (command + safety + RAG) → choose mode (remote/local) → execute → stream results______________________________________________________________________
🗂️ 技术与建筑
- 客户React 18,TypeScript,Vite 7,TailwindCSS,shadcn/ui,Radix UI,TanStack Query
- 服务器Node.js,Express,WebSocket
ws), Passport(面向未来的)、Drizzle ORM(面向未来的) - 人工智能(AI):
@google/genai(Gemini 2.5 Pro) 配备RAG增强功能 - 数据池基于文件系统的Markdown文件RAG(检索增强生成)系统
- 远程客户端使用轻量级的Python脚本
websocket-client - 整合可选的Telegram机器人通过
node-telegram-bot-api
仓库布局:
client/ # React app (UI, pages, components)
server/ # Express server, routes, Gemini integration, WebSocket, pool reader
pool/ # Markdown files for RAG knowledge base
kali-client.py # Remote client for your Kali machine关键服务器文件:
server/gemini.ts提示 → 命令,安全分析,RAG(检索增强生成)集成server/executor.ts进程执行和流处理server/routes.tsREST API + WebSocket 端点(/ws,/kali-ws)server/telegram.tsTelegram机器人集成server/poolReader.ts数据池文件扫描与处理server/storage.ts设置和数据持久性
______________________________________________________________________
🚀 快速入门
先决条件:
- Node.js 18+(或推荐使用20+)
- npm 9+
- 安装
npm install- 在开发中运行
# Starts Express with tsx and serves the Vite client
npm run dev- 为生产构建(或:准备生产环境)
npm run build- 启动生产服务器
npm start开发脚本使用了tsx跑步server/index.ts使用 Vite 构建客户端包,使用 esbuild 构建服务器端包。
______________________________________________________________________
🔐 环境变量
在你的环境中设置这些(或者在 .env (在开始前加载):
GEMINI_API_KEY(必填):Google Gemini API密钥。您可以在设置中设置个人密钥;如果未提供,则服务器将回退到此环境变量。SESSION_SECRET(建议):Express 会话密钥。如果省略,将在运行时自动生成。
从Google AI Studio获取Gemini API密钥:https://aistudio.google.com/app/apikey
📚 数据池(RAG系统)
数据池功能利用Markdown文件作为知识库,以增强AI指令生成能力:
- 设置创建一个
pool在项目根目录中的目录 - 添加文件位置
.md包含相关信息的文件(渗透测试手册、工具文档等) - 启用进入设置 → 数据池选项卡,然后切换开关
- 显示器查看实时状态,包括文件数量、大小和最后扫描时间
示例池文件:
penetration-testing-playbook.md- 全面的渗透测试方法tool-documentation.md- 详细的工具使用指南vulnerability-database.md- 常见漏洞及利用技术
______________________________________________________________________
🌐 远程Kali连接(WebSocket)
在你自己的Kali机器上执行命令。步骤:
- 在网页应用中,打开设置并创建一个新客户端以获取令牌。
- 在你的Kali系统上:
# Download the client script
wget https://your-server.example.com/kali-client.py
# Install dependency
pip install websocket-client
# Run the client
python3 kali-client.py --token YOUR_TOKEN --server wss://your-server.example.com- 验证:
- 浏览器显示“Kali:已连接”,并附上您的客户端名称。
- 在Kali系统上的终端输出:“认证成功”。
客户端自动重连,发送心跳信号,并将结果流式返回。
安全注意事项:
- 保密您的令牌。一旦发现令牌泄露,请立即撤销并重新颁发。
- 以您打算授予的权限所对应的用户身份运行客户端。
详细指南:参见 README_KALI_CONNECTION.md。______________________________________________________________________
💬 电报机器人(可选)
- 在设置中配置您的Telegram机器人令牌和聊天ID。
- 可用命令:
/start,/help,/ping,/status,/history。 - 发送任何自然语言消息来执行命令并接收结果。
______________________________________________________________________
🖥️ 使用应用程序
- 在浏览器中打开该应用,输入一个提示,例如:
- “扫描 google.com 上的 80 和 443 端口” nmap -p 80,443 google.com - “检查 google.com 的 DNS 记录” dig google.com - “查询 facebook.com 的 WHOIS 信息” whois facebook.com
- 观看实时输出;展开/折叠结果;查看命令历史。
- 根据命令切换执行模式:自动、本地、远程。
- 配置数据池前往设置 → 数据池 以启用RAG增强功能
- 显示器状态查看实时连接状态和连接池数据统计
- 在设置中管理客户端和API密钥。
______________________________________________________________________
🛡️ 安全与限制
- 该应用程序执行基本的安全验证和工具可用性检查。
- 在本地环境中允许使用渗透测试工具。
- 在使用安全工具时,您有责任遵守相关法律法规和政策。
______________________________________________________________________
🆕 最新更新
v2.0 - RAG(检索增强生成)增强与稳定性提升
新功能:
- 数据池(RAG系统)使用Markdown文件作为知识库以减少AI幻觉
- 增强的设置用户界面全面配置,实时状态监控
- 提升了WebSocket的稳定性跨页面导航的持久连接
错误修复:
- 解决了在页面之间导航时发生的WebSocket断开连接问题
- 解决了启用数据池功能时用户界面出现空白屏幕的问题
- 修复了设置更新中的竞态条件
- 改进了错误处理和用户反馈机制
技术改进:
- 在App组件中实现集中化的WebSocket管理
- 用于组件间通信的自定义事件系统
- 优化React Query缓存管理
- 增强的错误处理和调试功能
______________________________________________________________________
🗺️ 路线图(精选)
- 数据池(RAG系统)
- 增强的设置管理
- 提升了WebSocket的稳定性
- 持久数据库存储(PostgreSQL)
- 多用户认证和角色管理
- 命令模板和已保存的提示
- 导出结果(PDF/JSON/CSV)
- 多会话并行执行
- 完整的MCP协议实现
- 输出语法高亮
- 高级RAG功能(语义搜索、文件分类)
______________________________________________________________________
📄 许可证
Original: MIT
Legend: Hades [ Joel Indra ]______________________________________________________________________
🙌 致谢
- Google Gemini 2.5 Pro(
@google/genai) - React、Vite、TailwindCSS、Radix UI、shadcn/ui
- ws(WebSocket服务器库),express(一个快速、简洁的Node.js Web应用框架),tanstack/query(一个用于查询数据的库,通常与React一起使用)
______________________________________________________________________
🤝 如何贡献(或:如何参与贡献)
贡献使得开源社区成为一个令人惊叹的学习、启发和创造之地。您所做的一切贡献都深受欢迎。 如果您有能让这个项目更好的建议,请克隆仓库并提交拉取请求。您也可以直接以“enhancement”(增强)为标签打开一个问题。 别忘了给这个项目点个星哦!再次感谢!
Getting Started
1. Fork the project repository.
2. Create your feature branch:
git checkout -b feature/AmazingFeature
3. Install dependencies (if you haven't already):
npm install
4. Make your changes and commit them with a descriptive message:
git commit -m 'feat: Add some AmazingFeature'
5. Push your changes to your forked repository's branch:
git push origin feature/AmazingFeature
6. Open a Pull Request against the main branch of the original repository.
Guidelines:
- Please provide a clear and detailed description of your changes in the pull request.
- If your PR addresses an open issue, please link to it (e.g., "Closes #123").
- Ensure your code is well-formatted and follows the existing style.______________________________________________________________________
🔗 分享
如果你喜欢这个项目:
- 在GitHub上给该仓库点个星标
- 分享你的截图,并标记作者
