Skip to content

Threonine/hackathon-pentest

Repository files navigation

腾讯云黑客松 · 智能渗透 Agent

本项目是「腾讯云黑客松 · 智能渗透挑战赛」的参赛 Agent 框架,基于 Claude Agent SDK 驱动。采用 Orchestrator + 专家子 Agent 架构,可自动调度 Web 渗透与内网渗透操作员完成比赛挑战。

⚠️ 代码与 prompt 和比赛平台 API、规则高度耦合,并非通用 CTF 工具,仅供参考和二次开发。

⚠️ 免责声明:本工具仅用于授权的 CTF 竞赛、红队演练及安全教学环境。禁止对任何未授权目标进行扫描或攻击。使用者须自行承担一切法律责任。


架构

┌─────────────────────────────────────────┐
│           Orchestrator Agent            │
│  (主循环 / 调度 / 状态监控 / 交接恢复)     │
└─────────────────────────────────────────┘
                    │
      ┌─────────────┴─────────────┐
      ▼                         ▼
┌─────────────┐           ┌─────────────┐
│ web_pentester│           │network_pentester│
│  Web 渗透    │           │  内网渗透      │
│  子 Agent   │           │  子 Agent     │
└─────────────┘           └─────────────┘
  • Orchestrator — 主控循环,负责读取挑战列表、分发任务、监控进度、处理异常与交接恢复。
  • web_pentester — Web 安全专家,执行漏洞扫描、代码审计、利用与 Flag 提交。
  • network_pentester — 网络渗透专家,负责隧道搭建、横向移动、内网扫描与后渗透。

快速开始

1. 克隆仓库

git clone <repo-url>
cd pentest-agent

2. 下载依赖二进制

构建 Docker 镜像前,需要先下载第三方渗透工具二进制:

./binaries/download.sh

该脚本会自动获取 chisel、fscan 等开源工具的官方 Release。Stowaway 需要手动编译放置,详见脚本提示。

3. 配置环境变量

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)

4. 构建并运行

docker build -t pentest-agent .
docker run --rm -it --env-file .env pentest-agent

项目结构

pentest-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

挑战平台 API 约定

你的挑战平台需要暴露以下 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!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/xxx)
  3. 提交改动 (git commit -am 'Add xxx')
  4. 推送分支 (git push origin feature/xxx)
  5. 创建 Pull Request

请确保代码风格与现有项目保持一致。


协议

本项目采用 GNU General Public License v3.0 开源。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors