CatNotBat/ai-pentest-suite

GitHub: CatNotBat/ai-pentest-suite

一个容器化的AI渗透测试代理,在Kali中通过MCP封装常用工具,实现IoT/固件测试的自动化与状态持久化。

Stars: 0 | Forks: 0

# IoT 与固件渗透测试套件 一个用于 IoT/嵌入式目标的容器化 AI 渗透测试代理。Claude 在 Kali Linux 中运行,并通过一组 MCP 服务器封装了常见渗透测试工具——nmap、john、searchsploit、NVD API 以及串口 UART 访问。发现结果和状态会在会话之间持久化。 ## 工作原理 Claude Code 作为代理运行。在启动时读取结构化的参与状态文件,通过 MCP 服务器运行渗透测试工具,并将结果写入报告文件——全程不离开当前会话。每个会话都会从上一次结束的位置继续。 ``` Host ├── mcp/ ← MCP server Python files ├── scripts/ ← entrypoint, utilities, standalone tools ├── squashfs-root/ ← extracted firmware (bind-mounted read-only at /firmware) ├── flash_dump/ ← raw flash dumps from live device (gitignored) ├── reports/ ← audit findings, written by the agent (gitignored) ├── demos/ ← runnable exploit PoC scripts, written by the agent (gitignored) ├── ENGAGEMENT_STATE.md ← persistent agent memory (gitignored) └── CLAUDE.md ← agent instructions (loaded automatically) Container (kali-rolling) ├── Claude Code ← the agent ├── /firmware ← squashfs-root mounted here (ro) └── MCP servers ├── nmap-adapter ← port scanning ├── hash-cracker ← john + rockyou wordlist ├── uart-adapter ← serial/UART hardware access ├── searchsploit ← ExploitDB search and PoC retrieval └── cve-lookup ← NVD API for CVE details and scoring ``` ## 先决条件 - Docker + Docker Compose - Claude Max 订阅(或 Anthropic API 密钥) - 提取的固件文件,位于 `./squashfs-root/` —— 使用 `unsquashfs -d squashfs-root firmware.bin` - 对于 UART:需将 USB-to-serial 适配器(CP2102、CH340 或 FTDI)焊接到目标的 TX/RX/GND 焊盘 ## 安装与设置 ``` # 提取固件 unsquashfs -d squashfs-root firmware.bin # 构建容器 docker compose up -d --build # 执行并认证(仅首次 — 令牌在命名卷中持久化) docker exec -it claude-pentest-sandbox bash claude login # 启动代理 claude ``` 开始提示:`Read the engagement state and start where you left off.` ## MCP 工具 | 服务器 | 工具 | 描述 | |--------|------|-------------| | `nmap-adapter` | `scan_target(ip, type)` | `quick` / `full` / `vuln` 扫描,返回解析后的开放端口与 NSE 脚本输出 | | `hash-cracker` | `crack_hash(hash, format)` | 针对 rockyou 字典运行 john,5 分钟超时 | | `uart-adapter` | `uart_open(port, baud)` | 打开串口连接(默认 `/dev/ttyUSB0`,波特率 115200) | | | `uart_read(timeout_s)` | 读取输出——用于捕获启动日志 | | | `uart_send(data)` | 快速写入 | | | `uart_send_recv(cmd, timeout_s)` | 写入并读取响应——用于交互式 Shell | | | `uart_send_break()` | 发送 BREAK 信号以中断 U-Boot 自动启动 | | | `uart_close()` | 关闭连接 | | `searchsploit` | `search_exploits(query)` | 按 CVE ID、产品或关键词搜索 ExploitDB | | | `get_exploit_file(edb_id)` | 通过 EDB-ID 读取完整的 PoC 源码 | | `cve-lookup` | `lookup_cve(cve_id)` | NVD 查询:CVSS 评分、描述、受影响的版本及引用 | | | `search_cves_by_keyword(kw)` | 按产品名称或关键词查找 CVE | ## UART 设置 当 USB-UART 适配器物理连接到目标的串口焊盘时: ``` # 在插入后在 HOST 上查找设备 dmesg | grep tty # 取消注释并更新 docker-compose.yml,然后重启 # devices: # - /dev/ttyUSB0:/dev/ttyUSB0 docker compose up -d ``` Claude 内部典型工作流程: 1. `uart_open("/dev/ttyUSB0", 115200)` 2. 对路由器进行上电复位,然后 `uart_read(timeout_s=60)` 捕获启动日志 3. 如果 U-Boot 显示倒计时,再次上电复位并立即调用 `uart_send_break()` 4. 从 Shell 执行:`uart_send_recv("cat /proc/mtd")`、`uart_send_recv("cat /proc/version")` ## 状态与持久化 代理会在会话之间维护 `ENGAGEMENT_STATE.md`。它会跟踪当前阶段、已发现的服务、已破解的凭据、已确认的安全发现,以及一个 `## Last Session` 叙事块,记录决策背后的 *推理过程*(而不仅仅是事实)。这使得下一个会话可以“热启动”而非从零开始。 认证令牌存储在名为 `claude-root-data` 的 Docker 命名卷中,容器重启后仍保留。 ## 发现结果与演示 所有发现结果写入 `reports/router_audit.md`。对于每一个确认的非平凡漏洞(预认证 RCE、内存损坏、协议级漏洞、漏洞链),代理会在 `demos/` 中生成一个可运行的演示脚本。仅默认凭据不足以构成有效发现。 这两个目录均被加入 `.gitignore` —— 它们可能包含已破解的密码、可用的漏洞利用程序以及在线设备的凭据。 ## 路由修复 如果路由器通过 DHCP 推送默认网关并覆盖你的互联网路由,可在主机上运行以下命令: ``` sudo bash scripts/fix_router_default_route.sh ``` 它会自动检测 NetworkManager / systemd-networkd / dhcpcd,并应用相应的持久化修复。 ## 添加新的 MCP 服务器 1. 使用 FastMCP 编写 `mcp/yourserver_server.py` 2. 通过 `register` 函数将其添加到 `scripts/entrypoint.sh` 3. 将预批准的工具调用添加到 `.claude/settings.json` 4. 重建镜像:`docker compose up -d --build` ## 自主模式 以完全自主循环运行 Claude —— 无需人工确认,会话在速率限制窗口重置时(约 5 小时)自动重启。 ``` # 从项目根目录(容器必须已经运行并认证) bash scripts/pentest_loop.sh ``` 每次会话启动 Claude 时使用 `--dangerously-skip-permissions` 并附带简短提示,用于读取 `ENGAGEMENT_STATE.md` 并继续执行“下一步操作”。会话结束时,循环等待 5 分钟并启动新一轮。会话日志写入 `reports/session_N_.log`。 **Telegram 通知(可选)** ``` export TELEGRAM_TOKEN="bot" export TELEGRAM_CHAT_ID="" bash scripts/pentest_loop.sh ``` 当设置 `TELEGRAM_TOKEN` 和 `TELEGRAM_CHAT_ID` 时,`scripts/notify.sh` 会在会话开始和结束时发送消息。该 Hook 为占位符——可在 `notify.sh` 中扩展以提供更丰富的告警。 **安全性** 自主模式的安全规则通过 `CLAUDE.md` 强制执行——范围锁定在 `192.168.1.1`,禁止外部数据外泄,禁止闪存写入。这些规则会在每个会话中自动加载。 ## 安全说明 仅在你拥有或已获得明确授权的设备上使用本容器。容器以 `network_mode: host` 运行,以便直接访问本地网络目标。
标签:AI安全代理, Claude Code, CVE查询, Docker, Docker Compose, DOS头擦除, IoT安全, John the Ripper, MCP服务器, NIDS, NVD API, SearchSploit, squashfs, UART, 串口调试, 固件安全, 固件提取, 安全防御评估, 容器化, 密码破解, 嵌入式安全, 持久化状态, 硬件接口, 自动化渗透, 请求拦截, 逆向工具