raghavpathak30/PwnBot

GitHub: raghavpathak30/PwnBot

PwnBot是一款AI辅助的渗透测试工具,旨在提高渗透测试效率和自动化程度。

Stars: 0 | Forks: 0

# PwnBot PwnBot 是一个专注于授权渗透测试工作流程(HTB 实验室、个人实验室和赏金猎人计划)的 Python CLI 聊天机器人。它帮助进行侦察、利用策略、提权路径和报告指导,并包括针对当前 CVEs/工具/主题的轻量级网络搜索上下文。 ## 它能做什么 - 与流式 AI 响应的交互式终端聊天 - 在 4 个 Groq LLM 上自动模型故障转移,以应对速率限制 - `/run ` — 在本地执行 nmap/gobuster/ffuf,自动解析输出,通过 searchsploit 获取利用建议 - `/shell ` — 启动交互式反向 shell 或监听器 - `/recon` — 当设置目标 IP 时自动进行 3 扫描 nmap 侦察 - `/paste` — 多行输入用于工具输出或代码 - `/report` — 从会话数据生成 markdown 渗透测试报告 - `/target` — 跟踪每个会话的 IP、域名、端口、凭据、备注 - 会话日志保存到 `logs/` 作为 markdown 格式 - 在 CVE 模式和版本字符串上自动触发网络搜索 - 3 种参与模式:`htb`、`bugbounty`、`recon` ## 命令 | 命令 | 描述 | |---|---| | `/run ` | 运行本地命令,解析输出,发送到 AI | | `/shell ` | 启动交互式 shell 或监听器 | | `/recon` | 自动 nmap 侦察 | | `/paste` | 多行输入(nmap 输出、代码等) | | `/report` | 生成 markdown 渗透测试报告 | | `/target` | 查看管理目标状态 | | `/set ip ` | 设置目标 IP(提示自动侦察) | | `/mode htb|bugbounty|recon` | 切换参与模式 | | `/model` | 显示活动模型和可用性 | | `/help` | 显示详细帮助 | ## 要求 - Python 3.8+ - 一个 Groq API 密钥 - 列在 `requirements.txt` 中的依赖项 ## 安装 1. 克隆此存储库。 2. 移动到项目目录。 3. 安装依赖项: ``` pip install -r requirements.txt ``` ## 使用方法 1. 导出您的 Groq API 密钥: ``` export GROQ_API_KEY="your-api-key" ``` 2. 启动 PwnBot: ``` python PwnBot.py ``` ## 可用命令 - `/help` - 显示帮助文本。 - `/clear` - 清除聊天历史(保留目标状态和模式)。 - `/history` - 显示当前内存中用户轮次的数量。 - `/target` - 显示当前目标状态表。 - `/set ip ` - 设置目标 IP(提示自动侦察)。 - `/set domain ` - 设置目标域名。 - `/set port ` - 添加一个开放端口。 - `/set creds ` - 添加凭据。 - `/note ` - 添加带时间戳的目标备注。 - `/save` - 将目标状态保存到 `session_target.json`。 - `/mode htb|bugbounty|recon` - 更改参与模式。 - `/model` - 显示活动模型和排名可用性。 - `/model set ` - 切换到特定可用模型。 - `/paste` - 粘贴多行内容(例如 nmap 输出、源代码) — 在新行上输入 `END` 时完成。可选地添加后续问题。 - `/run ` - 在本地执行 shell 命令,捕获输出,并带有可选上下文发送到 PWNBOT。包括: - **自动工具解析** — 检测并解析 nmap、gobuster、ffuf 输出。 - **利用建议** — 通过 searchsploit 查询易受攻击的服务(仅限 nmap 扫描)。 - **输出截断** — 限制 stdout 为 3000 个字符,stderr 为 1000 个字符,以防止令牌溢出。 - **shell 构造警告** — 管道(`|`)、重定向(`>`)、分号(`;`)不受支持;使用单独的终端执行复杂命令。 - `/shell ` - 在终端中直接运行交互式命令(监听器、pwncat、PTY 升级)。使用 `Ctrl+C` 返回 PWNBOT。 - `/recon` - 手动触发当前设置的目标 IP 的自动侦察。 - `/exit` 或 `/quit` - 保存目标状态并退出。 ## 详细功能 ### 自动侦察 (`/set ip` 或 `/recon`) 当您使用 `/set ip ` 设置目标 IP 时,PwnBot 会提供运行自动化侦察: - 运行三个 **sudo nmap** 扫描:服务检测、完整端口扫描和 UDP 扫描。 - 截断输出以防止令牌溢出。 - 自动将结果发送到 LLM 进行分析。 - 提取开放端口、服务和操作系统信息。 注意:自动侦察需要您的环境中 nmap 的 sudo 权限。 ### 交互式 Shell (`/shell`) 使用 `/shell` 执行需要直接终端交互的命令(例如 netcat 监听器或 shell 升级): - `/shell nc -lvnp 4444` - `/shell pwncat-cs -lp 4444` - `/shell python3 -c 'import pty; pty.spawn("/bin/bash")'` ### 工具输出解析 PwnBot 自动分析来自常见渗透测试工具的输出: - **nmap** — 提取开放端口、服务和操作系统信息。 - **gobuster** — 按 HTTP 状态码分组发现的路径。 - **ffuf** — 按 HTTP 状态码分组 URL。 解析的见解在输出发送到 LLM 之前显示在单独的面板中。 ### 利用建议 对于 nmap 扫描,PwnBot 会查询 searchsploit 以提出已知利用: - 从 nmap 输出中提取服务名称和版本。 - 使用 `--no-colour` 对 `searchsploit` 进行查询(如果已安装),以获得干净的输出。 - 显示找到的前 5 个服务。 需要您的系统上安装 `searchsploit`。 ## 安全注意事项 - **命令执行** — PwnBot 使用 `subprocess.Popen()` 与 `shell=False` 和 `shlex.split()` 安全地解析命令。这防止了 shell 注入攻击。 - **Shell 限制** — 由于使用 `shell=False`,复杂的 shell 构造不受支持: - 管道(`|`) — 使用单独的终端或重定向到文件。 - 重定向(`>`、`>>`) — 使用单独的终端。 - 分号(`;`) — 在单独的终端中链式命令。 - PwnBot 将在您尝试这些操作时发出警告。 - **API 密钥** — 总是将您的 `GROQ_API_KEY` 设置为环境变量,切勿将其硬编码。 - **日志** — 会话日志和目标状态存储在本地 `logs/` 和 `session_target.json` 中。 ## 小贴士 - 使用 `/mode htb`、`/mode bugbounty` 或 `/mode recon` 来调整 PWNBOT 的响应风格以适应您的参与类型。 - `/run` 命令的输出会自动解析以获得特定工具的见解。尝试运行 `nmap -sV ` 以查看利用建议。 - 当您需要交互式进程时使用 `/shell`(例如监听器、反向 shell 处理、TTY 升级)。 - 多行 nmap 输出可以通过 `/paste` 粘贴进行分析,而无需将原始输出发送到 LLM(用于保留上下文)。 - PWNBOT 通过 `session_target.json` 跟踪您的目标上下文跨会话 — 使用 `/save` 或 `/exit` 来持久化更改。 - 在速率限制下模型回退是自动的。检查 `/model` 以查看排名可用性。 - 使用箭头键导航命令历史;历史记录保存在 `~/.pwnbot_history` 中。 ## 许可证 仅设计用于授权测试。尊重范围界限,在测试之前获得书面许可。
标签:Sysdig, 逆向工具