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, 逆向工具