本项目是「腾讯云黑客松 · 智能渗透挑战赛」的参赛 Agent 框架,基于 Claude Agent SDK 驱动。采用 Orchestrator + 专家子 Agent 架构,可自动调度 Web 渗透与内网渗透操作员完成比赛挑战。
⚠️ 代码与 prompt 和比赛平台 API、规则高度耦合,并非通用 CTF 工具,仅供参考和二次开发。
┌─────────────────────────────────────────┐
│ Orchestrator Agent │
│ (主循环 / 调度 / 状态监控 / 交接恢复) │
└─────────────────────────────────────────┘
│
┌─────────────┴─────────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ web_pentester│ │network_pentester│
│ Web 渗透 │ │ 内网渗透 │
│ 子 Agent │ │ 子 Agent │
└─────────────┘ └─────────────┘
- Orchestrator — 主控循环,负责读取挑战列表、分发任务、监控进度、处理异常与交接恢复。
- web_pentester — Web 安全专家,执行漏洞扫描、代码审计、利用与 Flag 提交。
- network_pentester — 网络渗透专家,负责隧道搭建、横向移动、内网扫描与后渗透。
git clone <repo-url>
cd pentest-agent构建 Docker 镜像前,需要先下载第三方渗透工具二进制:
./binaries/download.sh该脚本会自动获取 chisel、fscan 等开源工具的官方 Release。Stowaway 需要手动编译放置,详见脚本提示。
cp .env.example .env
# 编辑 .env,填入你的挑战平台地址与 LLM 网关密钥关键配置项:
| 变量 | 说明 |
|---|---|
PENTEST_SERVER_HOST |
挑战平台 API 地址(如 127.0.0.1:8000) |
PENTEST_AGENT_TOKEN |
Agent 身份令牌 |
ANTHROPIC_BASE_URL |
Anthropic 兼容网关地址 |
ANTHROPIC_API_KEY |
LLM API 密钥 |
PENTEST_MAX_TURNS |
Orchestrator 单轮最大 turns(默认 200) |
PENTEST_AGENT_MAX_TURNS |
子 Agent 最大 turns(默认 80) |
docker build -t pentest-agent .
docker run --rm -it --env-file .env pentest-agentpentest-agent/
├── pentest_agent/ # 核心源码
│ ├── agent.py # Orchestrator 主循环
│ ├── agents/ # 子 Agent 定义
│ ├── api.py # 异步 HTTP 客户端
│ ├── cli.py # pentest-cli 命令行工具
│ ├── config.py # 配置读取
│ ├── console.py # 多 Agent 颜色化日志
│ ├── prompts.py # 系统 Prompt
│ └── report.py # 运行报告 / 时间线
├── binaries/ # 第三方工具二进制(通过 download.sh 获取)
├── tunnels/ # 隧道工具使用说明
├── Dockerfile
├── entrypoint.sh
├── pyproject.toml
└── README.md
你的挑战平台需要暴露以下 5 个端点:
| 端点 | 方法 | 说明 |
|---|---|---|
/api/challenges |
GET | 列出所有挑战 |
/api/start_challenge |
POST | 启动挑战实例(参数:code) |
/api/stop_challenge |
POST | 停止挑战实例(参数:code) |
/api/submit |
POST | 提交 Flag(参数:code, flag) |
/api/hint |
POST | 获取提示(参数:code,可选,会扣分) |
欢迎 Issue 与 PR!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/xxx) - 提交改动 (
git commit -am 'Add xxx') - 推送分支 (
git push origin feature/xxx) - 创建 Pull Request
请确保代码风格与现有项目保持一致。
本项目采用 GNU General Public License v3.0 开源。