🧐 引言:当 AI 拿起了“手术刀”
我们都知道 Claude很强,但它通常被困在聊天框里。它能写出完美的 Payload,却无法发送请求;它懂逆向逻辑,却无法运行 GDB。
如果给 AI 装上“手”(执行命令)和“海马体”(长期记忆),会发生什么?
今天,我们将利用最新的 MCP (Model Context Protocol) 协议,配合 Cursor 编辑器和 Docker 容器,打造一个全自动 CTF 解题智能体。它不仅能跑 Nmap、写 Python 脚本、解 RSA,还能在解题过程中不断“学习”并扩充自己的工具库。
🛠️ 架构蓝图
我们的“超级黑客”由三部分组成:
大脑 (Client):Mac/PC 上的 Cursor (https://cursor.com/cn)。 躯体 (Host):一台 Linux 服务器(承载算力)。 隔离沙箱 (Docker):预装 Kali 工具集的容器(确保安全,防止 AI 误删服务器)。
第一步:打造“军火库” (服务端配置)
首先,登录你的 Linux 服务器。我们需要构建一个包含全栈 CTF 工具(Web/Pwn/Crypto/Misc)的 Docker 镜像。
1. 准备目录
mkdir -p ~/ctf_agent/data/my_toolkitcd ~/ctf_agent2. 编写 Dockerfile
这是整个方案的基石。我们将集成 RsaCtfTool、Zsteg、Pwntools 等核心工具,并解决常见的构建报错。
vim Dockerfile:
Dockerfile
FROM kalilinux/kali-rolling# 0. 基础配置:非交互模式 (防止安装过程弹窗卡死)ENV DEBIAN_FRONTEND=noninteractive# 1. 预先配置 Wireshark 权限,避免弹窗RUN echo "wireshark-common wireshark-common/install-setuid boolean true" | debconf-set-selections# 2. 安装系统核心 & 编译器 & 网络工具RUN apt-get update && apt-get install -y --no-install-recommends python3 python3-pip python3-venv curl wget git vim iputils-ping dnsutils netcat-traditional build-essential libssl-dev libffi-dev libgmp-dev libmpc-dev libmpfr-dev # 流量分析 tshark tcpdump # 逆向与Pwn gdb gdb-multiarch ltrace strace radare2 binutils # 隐写术 (移除过时包以确保构建成功) binwalk exiftool steghide foremost pngcheck # 数据库 sqlite3 && apt-get clean && rm -rf /var/lib/apt/lists/*# 3. 安装 Python 核心攻击库RUN pip3 install --break-system-packages mcp[cli] pwntools requests ropper capstone filebytes scapy pillow pycryptodome gmpy2 z3-solver sympy# 4. 安装 Ruby 工具 (Zsteg 是 PNG 隐写神器)RUN apt-get update && apt-get install -y rubygems && gem install zsteg# 5. 部署 RsaCtfTool (RSA 自动化攻击全家桶)WORKDIR /optRUN git clone https://github.com/RsaCtfTool/RsaCtfTool.git && cd RsaCtfTool && pip3 install -r requirements.txt --break-system-packages# 6. 配置工作目录WORKDIR /ctf_workspace# 7. 保持活跃CMD ["tail", "-f", "/dev/null"]3. 构建并启动容器
这一步将把宿主机的 ~/ctf_agent/data 挂载进去,保证 AI 下载的新工具和生成的记忆数据库永久保存。
# 构建镜像docker build -t ctf-agent:latest .# 启动容器docker run -d --name ctf-container --restart=always -v ~/ctf_agent/data:/ctf_workspace --cap-add=SYS_PTRACE --security-opt seccomp=unconfined ctf-agent:latest第二步:构建“神经中枢” (MCP Server)
我们需要写一个 Python 脚本,作为 AI 与 Docker 之间的翻译官。它提供了三个核心能力:执行命令、记忆存储、记忆检索。
在宿主机建立文件:~/ctf_agent/data/ctf_mcp_server.py
import sqlite3import subprocessimport osfrom mcp.server.fastmcp import FastMCP# 初始化 Agentmcp = FastMCP("CTF-Elite-Agent")DB_PATH = "/ctf_workspace/knowledge_base.db"# --- 🧠 记忆系统 ---def init_db(): conn = sqlite3.connect(DB_PATH) c = conn.cursor() c.execute('''CREATE TABLE IF NOT EXISTS memory (category TEXT, keywords TEXT, content TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP)''') conn.commit() conn.close()init_db()@mcp.tool()def remember_insight(category: str, keywords: str, content: str) -> str: """[LEARN] 将实战经验、Payload或新工具路径存入永久记忆库。""" try: conn = sqlite3.connect(DB_PATH) c = conn.cursor() c.execute("INSERT INTO memory (category, keywords, content) VALUES (?, ?, ?)", (category, keywords, content)) conn.commit() conn.close() return f"✅ Saved to memory: [{category}] {keywords}" except Exception as e: return f"Memory Error: {str(e)}"@mcp.tool()def recall_knowledge(query: str) -> str: """[THINK] 解题前必做:搜索历史经验。""" try: conn = sqlite3.connect(DB_PATH) c = conn.cursor() c.execute("SELECT category, content FROM memory WHERE keywords LIKE ? OR content LIKE ?", (f'%{query}%', f'%{query}%')) rows = c.fetchall() conn.close() if not rows: return "No specific memories found." return "n".join([f"--- [{row[0]}] ---n{row[1]}" for row in rows]) except Exception as e: return f"Recall Error: {str(e)}"# --- ⚡ 执行系统 ---@mcp.tool()def execute_shell_command(command: str) -> str: """[ACTION] 在 Kali 容器中执行 Shell 命令。""" try: # 120秒超时,防止命令挂死 result = subprocess.run(command, shell=True, capture_output=True, text=True, timeout=120) output = f"STDOUT:n{result.stdout}nSTDERR:n{result.stderr}" return output[:4000] # 截断防止 Token 溢出 except Exception as e: return f"Execution Error: {str(e)}"if __name__ == "__main__": mcp.run()第三步:连接“大脑” (Cursor 配置)
回到你的 Mac/PC,打开 Cursor。
SSH 连接:确保 Cursor 已连接到你的 Linux 服务器。 配置 MCP:
点击右上角齿轮 ⚙️ -> Features -> MCP。 点击 Add New MCP Server。 关键点:建议直接修改 .cursor/mcp.json文件以避免格式错误。
配置内容如下:
JSON
{ "mcpServers": { "CTF Agent": { "command": "/usr/bin/docker", "args": [ "exec", "-i", "ctf-container", "python3", "/ctf_workspace/ctf_mcp_server.py" ] } }}配置成功后,你应该能看到 MCP 状态灯变绿,显示 tools enabled。
第四步:注入“灵魂” (.cursorrules)
这是让 AI 变聪明的关键。我们在项目根目录创建 .cursorrules 文件,强行定义它的行为逻辑和自我进化协议。
这个文件(.cursorrules)需要创建在您当前 Cursor 打开的项目根目录下。由于您已经通过 SSH 连接到了 Linux 服务器,这个文件实际上是创建在您的 Linux 服务器上的项目文件夹里。点击左上角的 "Editor" 单词。点击后,侧边栏就会切换回标准的文件资源管理器(显示文件夹和文件列表)。切换回 "Editor" 后:您就会看到项目的文件列表了,然后就可以按照之前的步骤:右键点击空白处 -> 新建文件。命名为 .cursorrules。粘贴规则内容Role: Ultimate CTF Agent (Self-Evolving)你是一名拥有长期记忆的 CTF 专家,运行在安全的 Kali Docker 环境中。⚔️ 核心协议 (必须遵守)1. 🔍 启动阶段 [Recall]**: - 收到任何任务,**必须**先调用 `recall_knowledge` 搜索历史经验。 - 比如遇到 SQL 注入,先搜数据库里有没有存过的 Bypass 技巧。2. 🛠️ 工具自动扩充 [Auto-Expansion]**: - 当发现缺少某个工具(如 dirsearch)时,**不要报错**,直接执行: 1. `git clone` 工具到 `/ctf_workspace/my_toolkit/`。 2. `pip install` 依赖。 3. 调用 `remember_insight` 记录新工具的路径和用法。3. 📚 经验固化 [Save]**: - 拿到 Flag 后,必须总结 Payload 并存入记忆库。## 技能树- Crypto: 优先用 `/opt/RsaCtfTool/RsaCtfTool.py` 自动化攻击。- Web: 允许编写 Python 脚本进行 SQLi/RCE 测试。- Pwn: 使用 checksec -> ropper -> pwntools 流程。🎉 实战演示:它能做什么?
现在,你可以直接在 Chat 窗口给它下达指令:
用户:“目标是一个 RSA 题目,给了 pubkey.pem 和 flag.enc,帮我解密。”
AI 的自动化操作流:
思考:调用 recall_knowledge查找 RSA 攻击经验。行动:调用 execute_shell_command运行RsaCtfTool。结果:自动尝试 Wiener Attack、共模攻击等,拿到 Flag。 进化:自动将这次的解题参数存入数据库。
用户:“需要用 JNDI-Injection-Exploit 工具,但我没装。”
AI 的自动化操作流:
行动:自动去 GitHub 下载工具到 /ctf_workspace/my_toolkit/。配置:自动编译或安装依赖。 记忆:记录“JNDI 工具已安装在 xxx 路径”。 执行:直接调用新工具开始攻击。
结语
通过这套方案,我们不再是拥有一个“会聊天的 AI”,而是拥有了一个会操作终端、会查数据库、会自己下载工具的养成系黑客助手。
随着你带它做的题目越来越多,它的 knowledge_base.db 会越来越丰富。也许有一天,它真的能带你在 CTF 赛场上大杀四方。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...