SuperAPI AI 工具集

pentest-r1-autonomous-penetration-testing

安全与审计

查看项目

更新于 10-15 14:07

技能介绍

Pentest-R1 是一个两阶段强化学习框架,目标是训练大语言模型(LLM)执行自主渗透测试与 CTF 挑战。它把离线强化学习(基于专家演练数据)与在线强化学习(在交互式 CTF 环境中)结合起来,以培养稳健的攻击推理能力。

用途 该项目面向安全研究与渗透测试自动化方向,用于训练和评估 LLM 在攻击推理、命令生成与多轮交互中的表现。它同时覆盖离线学习与在线交互两类训练范式。

主要能力

  • 两阶段训练流程:Stage 1 为离线强化学习,Stage 2 为在线强化学习。
  • Stage 1 在 500 多条真实世界专家渗透测试演练(walkthrough)数据集上训练基础 LLM。
  • Stage 2 在交互式 CTF 环境中进行微调,并接收实时反馈。
  • 提供奖励模型(PentestRewardModel)用于评估渗透测试动作,包含成功奖励、部分奖励与失败惩罚。
  • 提供 CTF 环境封装(CTFEnvironment),基于 Docker 与 InterCode-CTF 镜像,支持启动挑战容器、执行命令与清理。
  • 提供多轮推理智能体(MultiTurnAgent),根据当前观测生成下一步动作,并维护对话历史。
  • 提供评估循环(evaluate_on_ctf_challenges),在 CTF 挑战集上评估模型,记录是否解出与轮数。
  • 使用 GRPO(Group Relative Policy Optimization)进行训练。

使用方式 环境要求:Python 3.11.11;Docker(用于 Stage 2 与可复现环境);NVIDIA Container Toolkit(用于 GPU 支持);CUDA 12.4 运行时(可选,用于 GPU 加速)。

基础安装: git clone https://github.com/KHenryAegis/Pentest-R1.git cd Pentest-R1 pip install -r requirements.txt

Docker 环境(推荐用于可复现性): source setup-docker.sh docker run --rm -it
--name pentest-r1
-v "$(pwd)":/root/Pentest-R1
-v ~/.cache/huggingface:/root/.cache/huggingface
-v ~/.cache/triton:/root/.cache/triton
-v ~/.cache/torch_extensions:/root/.cache/torch_extensions
-w /root/Pentest-R1
--gpus all
--net=host
pentest-r1:ubuntu22.04

Stage 1 离线强化学习: python grpo_stage1.py 关键配置包括模型名 unsloth/Meta-Llama-3.1-8B-Instruct、max_seq_length=4096、load_in_4bit=True,以及 PEFT/LoRA 配置(r=16、lora_alpha=32、target_modules 为 q_proj/k_proj/v_proj/o_proj、lora_dropout=0.05、bias=none、task_type=CAUSAL_LM)。

Stage 2 在线强化学习: cd train_ctf_env docker build -t intercode-ctf . cd .. python grpo_multi_turn_stage2.py

数据加载与预处理:使用 datasets.load_dataset 加载 JSON 格式的专家演练数据(jsonl),示例字段包括 challenge、steps(含 action、command、reasoning)与 flag。preprocess_function 将挑战与步骤格式化为 prompt 与 response。

训练配置:使用 transformers.TrainingArguments,示例参数包括 output_dir="./pentest-r1-checkpoints"、num_train_epochs=3、per_device_train_batch_size=4、gradient_accumulation_steps=4、learning_rate=5e-5、warmup_steps=100、logging_steps=10、save_steps=500、save_total_limit=3、fp16=True、report_to="wandb"、remove_unused_columns=False。

环境变量:HF_TOKEN(模型下载)、WANDB_API_KEY(日志)、CUDA_VISIBLE_DEVICES(GPU 选择)、HF_HOME、TRITON_CACHE_DIR 等缓存目录。

适用场景

  • 安全研究中的自主渗透测试与 CTF 挑战求解。
  • 训练与评估 LLM 的攻击推理与多轮交互能力。
  • 在可复现的 Docker 环境中进行强化学习实验。

限制与注意事项

  • 资料未提供收费、价格或商业授权信息。
  • 资料未提供模型在具体基准上的量化效果数据。
  • 资料未提供除已列平台外的其他平台支持信息。
  • 训练依赖 GPU 与 Docker 环境;CUDA 显存不足时可采用梯度检查点、减小 batch size、使用 8-bit 或 4-bit 量化。
  • 研究使用 unsloth==2025.5.10;若不可用,requirements.txt 中指定了最接近的版本(unsloth_zoo==2025.5.11 及指定 commit 的 unsloth)。
  • 模型加载失败时可尝试不使用量化(dtype=torch.float16、load_in_4bit=False),必要时清理 HuggingFace 缓存。
  • Docker 容器问题可通过查看日志、验证网络连通性、使用 --no-cache 重建镜像排查。
  • 多 GPU 训练可设置 ddp_find_unused_parameters=False 与 local_rank,并使用 torchrun 启动。

参考信息:论文 arXiv:2508.07382;基础模型 Meta-Llama-3.1-8B-Instruct;微调框架 Unsloth;交互训练环境 InterCode-CTF。