返回市场
赫拉

赫拉

作者:joelindra2 星标更新:2025-10-18

项目介绍

【技术文档摘要】: 下载

HERA — 强大的渗透测试代理

通过自然语言描述来运行Kali Linux安全工具。这个基于Web的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客户端)或本地(服务器)执行,带有清晰的状态徽章。
  • 安全防护栏:上下文感知验证以防止明显破坏性的系统命令。
  • 专业终端UI:暗色主题,终端样式,结果折叠/展开及历史记录。
  • 增强设置管理:全面配置并实时状态监控。
  • 个人API密钥支持:使用自己的Gemini API密钥(按用户设置)。
  • Telegram机器人集成(可选):使用Telegram发送提示。
  • 改进的WebSocket稳定性:页面导航时持久连接。

🧠 工作原理

  1. 输入一个提示(例如,“扫描example.com上的80和443端口”)。
  2. 如果启用了数据池,系统将从markdown文件加载相关上下文。
  3. 后端请求Gemini生成带有RAG上下文的确切Kali命令。
  4. 命令的安全性和工具可用性进行验证。
  5. 如果连接了Kali客户端,命令通过/kali-ws发送并在你的机器上执行;否则在服务器上本地执行。
  6. 输出通过WebSocket实时流式传输回浏览器。

高层次流程:

提示 → 数据池上下文 → Gemini(命令 + 安全性 + RAG)→ 选择模式(远程/本地)→ 执行 → 流式传输结果

🗂️ 技术与架构

  • 客户端: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增强
  • 数据池:基于文件系统的RAG系统用于markdown文件
  • 远程客户端:使用websocket-client的轻量级Python脚本
  • 集成:可选的Telegram机器人通过node-telegram-bot-api

仓库布局:

client/           # React应用(UI,页面,组件)
server/           # Express服务器,路由,Gemini集成,WebSocket,池读取器
pool/             # 用于RAG知识库的markdown文件
kali-client.py    # 远程客户端用于你的Kali机器

关键服务器文件:

  • server/gemini.ts:提示 → 命令,安全性分析,RAG集成
  • server/executor.ts:进程执行和流式传输
  • server/routes.ts:REST API + WebSocket端点(/ws/kali-ws
  • server/telegram.ts:Telegram机器人集成
  • server/poolReader.ts:数据池文件扫描和处理
  • server/storage.ts:设置和数据持久化

🚀 快速开始

前提条件:

  • Node.js 18+(推荐20+)
  • npm 9+
  1. 安装
npm install
  1. 开发环境运行
# 启动Express并使用tsx提供Vite客户端
npm run dev
  1. 生产环境构建
npm run build
  1. 启动生产服务器
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命令生成:

  1. 设置:在项目根目录创建一个pool目录
  2. 添加文件:放置包含相关信息的.md文件(渗透测试手册,工具文档等)
  3. 启用:前往设置 → 数据池标签并切换开关
  4. 监控:查看实时状态包括文件数量、大小和最后扫描时间

示例池文件:

  • penetration-testing-playbook.md - 综合渗透测试方法论
  • tool-documentation.md - 工具使用指南
  • vulnerability-database.md - 常见漏洞和利用技术

🌐 远程Kali连接(WebSocket)

在自己的Kali机器上执行命令。步骤:

  1. 在web应用中,打开设置并创建新客户端以获取令牌。
  2. 在你的Kali盒上:
# 下载客户端脚本
wget https://your-server.example.com/kali-client.py

# 安装依赖
pip install websocket-client

# 运行客户端
python3 kali-client.py --token YOUR_TOKEN --server wss://your-server.example.com
  1. 验证:
  • 浏览器显示“Kali:已连接”以及你的客户端名称。
  • Kali终端输出:“认证成功”。

客户端自动重连,发送心跳信号,并流式传输结果。

安全注意事项:

  • 保密你的令牌。如果泄露,请撤销并重新发放。
  • 在你打算授予权限的用户下运行客户端。

详细指南:参阅README_KALI_CONNECTION.md


💬 Telegram机器人(可选)

  • 在设置中配置你的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幻觉
  • 增强设置UI:全面配置并实时状态监控
  • 改进的WebSocket稳定性:页面导航时持久连接

错误修复:

  • 修复了在页面间导航时WebSocket断开的问题
  • 解决了启用数据池功能时UI空白屏幕问题
  • 修复了设置更新中的竞态条件
  • 改进了错误处理和用户反馈

技术改进:

  • 在App组件中集中管理WebSocket
  • 自定义事件系统用于组件间通信
  • 优化React Query缓存管理
  • 增强错误处理和调试

🗺️ 路线图(精选)

  • 数据池(RAG系统)
  • 增强设置管理
  • 改进的WebSocket稳定性
  • 持久数据库存储(PostgreSQL)
  • 多用户身份验证和角色
  • 命令模板和保存提示
  • 导出结果(PDF/JSON/CSV)
  • 多会话并行执行
  • 完整的MCP协议实现
  • 输出语法高亮
  • 高级RAG功能(语义搜索,文件分类)

📄 许可

原始:MIT
传奇:Hades [ Joel Indra ]

🙌 致谢

  • Google Gemini 2.5 Pro (@google/genai)
  • React,Vite,TailwindCSS,Radix UI,shadcn/ui
  • ws,express,tanstack/query

🤝 如何贡献

贡献使得开源社区成为一个学习、启发和创造的绝佳场所。您所做的任何贡献都深表感谢。 如果您有一个建议可以使该项目变得更好,请分叉仓库并创建一个拉取请求。您也可以简单地打开一个带有“enhancement”标签的问题。 别忘了给项目点赞!再次感谢!

开始
1. 分叉项目仓库。

2. 创建您的功能分支:
git checkout -b feature/AmazingFeature

3. 安装依赖(如果尚未安装):
npm install

4. 修改并提交更改,附带描述信息:
git commit -m 'feat: 添加一些AmazingFeature'

5. 将更改推送到您的分叉仓库的分支:
git push origin feature/AmazingFeature

6. 对原始仓库的主要分支打开一个拉取请求。

指南:
- 请在拉取请求中提供清晰详细的更改描述。
- 如果您的PR解决了开放问题,请链接到它(例如,“关闭#123”)。
- 确保您的代码格式良好并遵循现有风格。

🔗 分享

如果你喜欢这个项目:

  • 在GitHub上给仓库点赞
  • 分享你的截图并标记作者