Thanks to visit codestin.com
Credit goes to github.com

Skip to content
 
 

Latest commit

 

History

55 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Asimon:基于 OODA 循环的自主 Web CTF 解题智能体

本项目是"网络空间安全综合实践"课程作品。项目以开源仓库 Cairn(上游提交 4939e8a)为通用状态空间搜索基座,在此基础上完成 CTF 领域化改造——将原本通用的 Fact / Intent 图特化为可解释的 OODA 解题链路,将 Worker 后端固定为 Claude Code agent,并围绕 X-BOW / 本地靶场补齐题目创建、目标白名单、工具调用审计、Flag 验证、中文 Writeup 与 WebUI 演示闭环。

系统仅在授权靶场、课程环境、X-BOW benchmark 与本地 Docker 服务中运行,不面向未授权真实目标。


1. 当前状态

内容
项目名称 Asimon(基于 OODA 循环的自主 Web CTF 解题智能体系统)
开源基座 Cairn,提交 4939e8a
Python 包名 asimon(v0.2.1),已从上游 cairn 包名完成迁移
正式 Worker Claude Code agent,通过 DeepSeek Anthropic 兼容接口调用模型
默认模型 deepseek-v4-flash(可在 WebUI 扩展配置切换为 deepseek-v4-pro
调度模式 Bootstrap / Reason / Explore 三阶段,映射为 OODA 五步循环
完成条件 正确 Flag + 完整中文 Markdown Writeup 均产生后才标记项目完成
WebUI 新建题目、OODA 图谱、Flag 结果、Writeup 预览/编辑/下载、工具调用审计、中英文切换
验证靶场 X-BOW benchmark(推荐 XBEN-005-24、XBEN-010-24)、本地 Docker Web CTF
测试覆盖 11 个测试文件、50 项单元测试通过、2 项 Docker 环境依赖跳过

2. 项目定位

原 Cairn 是通用状态空间搜索 Agent 基座——它不预设 CTF、渗透测试或具体角色,而是维护事实、意图和提示组成的状态图,让 Worker 在未知状态空间中搜索路径。Asimon 的工作不是简单换皮,而是把这个通用基座特化为符合小组选题方向的 CTF 智能体:

维度 Cairn 原本 Asimon 改造
调度语义 Bootstrap / Reason / Explore 通用任务 映射为 Observe / Orient / Decide / Act / Reflect,可解释每轮解题推理
项目创建 通用 Project 改造为"新建题目":输入目标 URL、允许访问主机、题型、预算和模型配置
Worker 后端 多后端可选(Claude Code / Codex / Mock / Pi) 正式收敛为 Claude Code agent,Mock 仅保留用于测试
执行环境 共享 Worker 或按需分配 每个 project 对应独立 Docker Worker 容器,删除项目时同步清理
完成标准 目标事实被产出即完成 升级为"确认正确 Flag + 生成完整中文 Writeup"
前端呈现 通用 Fact / Intent 图 左侧 OODA 图谱(边=行动/意图,节点=事实);右侧聚焦 Flag、Writeup、工具调用审计

3. 系统架构

┌──────────────────────────────────────────────────────────────────────┐
│                           Asimon WebUI(静态单页)                      │
│  项目列表 · 新建题目 · OODA 图谱 · Flag 面板                           │
│  Writeup 预览/编辑/下载 · 工具调用审计 · 中英文切换                     │
└───────────────────────────────┬──────────────────────────────────────┘
                                │ HTTP REST API(FastAPI,端口 8000)
                                │ Bearer Token 认证(可选,ASIMON_CONTROL_TOKEN)
┌───────────────────────────────▼──────────────────────────────────────┐
│                           Asimon Server                               │
│  · projects    — 题目元数据、状态、预算                                 │
│  · facts       — origin(起点)、goal(终点)、阶段性事实、flag 证据     │
│  · intents     — OODA 行动边,描述下一步探索方向与产出目标              │
│  · hints       — 可选人工提示(非强依赖)                               │
│  · challenges  — CTF 题目画像、flag 结果、tool_calls                   │
│  · settings    — 模型 endpoint、API key、默认预算                      │
│  · writeups    — 中文 Markdown writeup,支持预览、编辑、下载            │
│  持久化:SQLite(WAL 模式),参数化查询防 SQL 注入                      │
└───────────────────────────────┬──────────────────────────────────────┘
                                │ Dispatcher Protocol(HTTP)
                                │ 读取项目图 → 选择任务 → 派发 Worker → 写回结果
┌───────────────────────────────▼──────────────────────────────────────┐
│                         Asimon Dispatcher                             │
│  · scheduler/loop.py       — 主调度循环,每 3 秒一轮                    │
│  · scheduler/worker_select — 按优先级选择可用 Worker                   │
│  · tasks/bootstrap.py      — 初始探索:Observe → Orient → Decide → Act │
│  · tasks/reason.py         — 全局反思:判断完成或生成新 Intent          │
│  · tasks/explore.py        — 局部探索:针对某条 Intent 执行下一轮       │
│  · runtime/containers.py   — 管理 per-project Docker Worker 容器       │
│  · runtime/heartbeat.py    — Worker 心跳检测与超时处理                  │
│  · 全局并发:max_workers=8,max_running_projects=3,max_project_workers=4│
└──────────────┬───────────────────────────────────────────┬───────────┘
               │ 创建/管理容器                               │
┌──────────────▼────────────────┐          ┌───────────────▼────────────┐
│  Worker Container             │          │  Worker Container           │
│  asimon-dispatch-<project_1>  │          │  asimon-dispatch-<project_2>│
│                               │          │                             │
│  Claude Code agent            │          │  Claude Code agent          │
│  DeepSeek Anthropic 兼容接口   │          │  DeepSeek Anthropic 兼容接口 │
│                               │          │                             │
│  可用工具(白名单):           │          │  可用工具(白名单):         │
│  · Bash(curl *)               │          │  · Bash(curl *)             │
│  · Bash(python *)             │          │  · Bash(python *)           │
│  · Read / Grep / Glob          │          │  · Read / Grep / Glob        │
│                               │          │                             │
│  权限:--permission-mode auto  │          │  权限:--permission-mode auto│
│  网络:bridge + host-gateway   │          │  网络:bridge + host-gateway │
└──────────────┬────────────────┘          └───────────────┬────────────┘
               │ 仅访问授权目标                                 │
┌──────────────▼────────────────────────────────────────────▼───────────┐
│               X-BOW Benchmark / 本地 Docker Web CTF / 授权靶场         │
│  例:http://host.docker.internal:32494/(XBEN-005-24 映射端口)        │
└──────────────────────────────────────────────────────────────────────┘

3.1 OODA 与调度任务的映射

Bootstrap(初始探索)
  → Observe  — 读取题目信息、目标 URL、授权范围
  → Orient  — 归纳攻击面和候选路径
  → Decide  — 选择优先探索路线
  → Act     — 调用工具执行验证
  → Reflect — 未完成时总结当前事实,产出新 Intent

Reason(全局反思)
  → 对已有图谱进行全局判断:Flag 是否有效?Writeup 是否完整?
  → 如未完成,生成新的探索 Intent 供下一轮使用

Explore(局部探索)
  → 针对某条 Intent 执行下一轮局部验证
  → 产出新 Fact,记录工具调用,更新解题进度

4. 项目结构

asimon/                            ← Git 仓库根目录
├── README.md                       # 本文件
├── AGENTS.md                       # AI 工具继续开发与复刻说明
├── docs/                           # 课程交付文档(8 份正式文档 + 协议规范)
│   ├── 00_选题调研报告.md            # 小组选题调研报告(约 600 行)
│   ├── 01_设计文档.md               # 需求分析、系统架构、OODA 调度语义、技术选型、安全设计(1,221 行)
│   ├── 02_用户手册.md               # 环境要求、部署配置、WebUI 操作、常见问题(10 个 FAQ,596 行)
│   ├── 03_开发日志.md               # 从基座导入(05-26)到终版交付(06-30)的完整开发记录
│   ├── 04_AI工具使用报告.md         # AI 工具清单、6 阶段使用记录、量化效果评估、反思
│   ├── 05_威胁建模与安全分析.md      # STRIDE 五边界威胁分析、20 项威胁、15 项安全控制矩阵
│   ├── 06_TLS部署指南.md            # Caddy / nginx 反向代理 + TLS 配置方案
│   ├── 07_安全扫描报告.md            # pip-audit 依赖扫描、OWASP Top 10 自查、评审扣分项修复状态
│   ├── specs/                      # 协议设计规范
│   │   ├── dispatcher-design.md     # Dispatcher 调度器设计文档
│   │   └── server-protocol.md       # Server-Dispatcher 通信协议文档
│   └── todo/                       # 改进跟踪
│       └── improvement-checklist.md # 42 项改进清单(P0-P3 四级优先级)
├── img/                            # 用户手册截图素材
└── asimon-agent/                   # 主工程源码
    ├── AGENTS.md                    # Worker 容器内 Agent 环境指引
    ├── LICENSE                      # AGPLv3
    ├── Dockerfile                   # Server + Dispatcher 应用镜像构建
    ├── docker-compose.yaml          # 一键部署编排(asimon-server + asimon-dispatcher)
    ├── dispatch.yaml                # 正式调度配置(Claude Code Worker + DeepSeek flash 默认)
    ├── dispatch_mock.yaml           # Mock 测试用调度配置
    ├── .env                         # API Key 等敏感环境变量(不提交 Git,需自行创建)
    ├── asimon/                      # Python 包(48 个 .py 源文件,~9,000 行)
    │   ├── pyproject.toml           # 项目元数据、依赖声明(FastAPI / uvicorn / docker / httpx 等)
    │   ├── uv.lock                  # 依赖锁定文件
    │   ├── src/asimon/
    │   │   ├── cli.py               # CLI 入口(serve / dispatch 子命令)
    │   │   ├── ctf/                 # CTF 语义层
    │   │   │   ├── models.py        # ChallengeSpec、FlagResult、ToolCall 数据模型
    │   │   │   ├── flag.py          # Flag 校验(含 ReDoS 防护:pattern 长度限制 + 嵌套量词检测)
    │   │   │   ├── tools.py         # 工具访问封装(含重定向二次校验 is_url_allowed())
    │   │   │   ├── scoring.py       # 解题路径评分算法
    │   │   │   └── writeup.py       # Writeup 数据结构与导出
    │   │   ├── dispatcher/          # 调度器核心
    │   │   │   ├── config.py        # dispatch.yaml 配置解析
    │   │   │   ├── contracts.py     # Worker 输出 JSON Contract 定义
    │   │   │   ├── models.py        # 调度器内部数据模型
    │   │   │   ├── prompting.py     # Prompt 模板加载与变量注入
    │   │   │   ├── prompts/         # OODA 阶段 Prompt(V4 当前版本,共 218 行)
    │   │   │   │   └── default/     # bootstrap / reason / explore 及其 conclude
    │   │   │   ├── protocol/        # Server-Dispatcher HTTP 通信协议客户端
    │   │   │   ├── runtime/         # Worker 容器生命周期
    │   │   │   │   ├── containers.py    # Docker SDK 容器创建/销毁
    │   │   │   │   ├── heartbeat.py     # 心跳检测
    │   │   │   │   ├── process.py       # 进程管理
    │   │   │   │   └── startup_healthcheck.py
    │   │   │   ├── scheduler/       # 任务调度
    │   │   │   │   ├── loop.py      # 主调度循环(每 3 秒 tick)
    │   │   │   │   └── worker_select.py  # Worker 优先级选择
    │   │   │   ├── tasks/           # 三类任务定义
    │   │   │   │   ├── bootstrap.py # 初始探索任务
    │   │   │   │   ├── reason.py    # 全局反思任务
    │   │   │   │   ├── explore.py   # 局部探索任务
    │   │   │   │   └── common.py    # 公共工具函数
    │   │   │   └── workers/         # Worker 适配器
    │   │   │       └── adapters/    # claudecode.py(正式)/ codex.py(备用)/ mock.py(测试)
    │   │   └── server/              # FastAPI 服务端
    │   │       ├── app.py           # 应用入口、静态文件挂载(/static)
    │   │       ├── db.py            # SQLite 持久化(参数化查询)
    │   │       ├── models.py        # Pydantic 数据校验模型
    │   │       ├── security.py      # Bearer Token 认证中间件(secrets.compare_digest 防时序攻击)
    │   │       ├── services.py      # 业务逻辑层
    │   │       ├── routers/         # REST API 路由
    │   │       │   ├── projects.py  # CRUD 项目、启停、完成
    │   │       │   ├── challenges.py # CTF 题目管理、Flag 结果、工具调用
    │   │       │   ├── hints.py     # 人工提示管理
    │   │       │   ├── intents.py   # Intent 创建、声明、发布
    │   │       │   ├── export.py    # YAML 快照导出
    │   │       │   └── settings.py  # 系统配置读写
    │   │       └── static/          # WebUI 静态资源(构建产物)
    │   │           ├── index.html
    │   │           ├── asimon-logo.png
    │   │           ├── favicon.svg / icons.svg
    │   │           └── assets/      # 前端 JS/CSS bundle
	    │   └── tests/                   # 测试套件(11 个文件,50 项通过,2 项 Docker 跳过)
	    │       ├── test_static_ui.py        # WebUI 静态页面结构测试
	    │       ├── test_challenge_api.py    # Challenge API 测试
    │       ├── test_ctf_contracts.py    # CTF 数据契约测试
    │       ├── test_dispatch_config.py  # 调度配置测试
    │       ├── test_dispatch_contracts.py
    │       ├── test_cli.py              # CLI 命令测试
    │       ├── test_tools.py            # 工具封装测试
    │       ├── test_writeup.py          # Writeup 测试
    │       ├── test_claudecode_driver.py    # Claude Code Worker 驱动测试
    │       ├── test_codex_driver.py         # Codex Worker 驱动测试
    │       └── test_worker_security_flags.py # Worker 安全策略回归测试
    ├── container/                   # Worker 容器构建上下文
    │   ├── Dockerfile               # Kali 基座 + Claude Code 环境
    │   ├── AGENTS.md                # Worker 容器内 AI 工具环境说明
    │   └── README.md
    ├── datas/                       # 运行时数据目录(Git 忽略)
    │   └── asimon/                  # asimon.db(SQLite 数据库,Docker volume 挂载)
    └── artifacts/                   # 测试产物与截图证据(Git 忽略)

5. 快速部署

5.1 环境要求

组件 要求 说明
操作系统 Windows 10/11 + WSL2(已启用虚拟化),或 Linux Docker Desktop 依赖
Docker Desktop 最新稳定版 运行 asimon-server、asimon-dispatcher、per-project Worker 容器
Git 2.40+ 版本控制,40 次提交、26 个分支
uv 最新稳定版 本地 Python 测试与编译检查
浏览器 Chrome / Edge 访问 WebUI(http://localhost:8000
API Key DeepSeek(Anthropic 兼容接口) Claude Code Worker 调用大模型

5.2 配置 API Key

进入 asimon-agent/ 目录,创建 .env 文件(此文件在 .gitignore 中,不会被提交):

ANTHROPIC_AUTH_TOKEN=你的DeepSeek密钥
# 可选:设置后 WebUI / API 控制面需要 Bearer Token 认证
ASIMON_CONTROL_TOKEN=替换为一串随机字符

dispatch.yaml 中的默认模型配置(第 59-72 行):

workers:
  - name: "claudecode_deepseek-v4-flash"
    type: "claudecode"
    task_types: [bootstrap, reason, explore]
    max_running: 2
    priority: 0
    env:
      ANTHROPIC_MODEL: "deepseek-v4-flash"
      ANTHROPIC_BASE_URL: "https://api.deepseek.com/anthropic"
      CLAUDE_PERMISSION_MODE: "auto"
      CLAUDE_TOOLS: "Bash,Read,Grep,Glob"
      CLAUDE_ALLOWED_TOOLS: "Bash(curl *),Bash(python *),Bash(python3 *),Read,Grep,Glob"

日常测试推荐使用 deepseek-v4-flash(成本优先),最终演示可按需在 WebUI 扩展配置中切换为 deepseek-v4-pro(效果优先)。

5.3 启动服务

cd asimon-agent
docker compose up -d --build

构建过程:Dockerfile 基于 python:3.13-trixie 官方镜像,通过阿里云 PyPI 镜像安装 uv,然后复制 asimon/pyproject.tomlasimon/uv.lock 安装依赖,最后复制全部源码。

检查服务状态:

docker compose ps

预期输出:

NAME                STATUS                    PORTS
asimon-server       Up ... (healthy)          0.0.0.0:8000->8000/tcp
asimon-dispatcher   Up ...

asimon-server 的健康检查(docker-compose.yaml 第 15-24 行)每 10 秒通过 HTTP 请求验证 /projects 端点可达,最多重试 12 次。

5.4 拉取 Worker 镜像

每个 project 启动时 Dispatcher 会为它创建独立的 Docker Worker 容器,镜像为 ghcr.io/oritera/cairn-worker-container:latestdispatch.yaml 第 42 行)。容器内含 Claude Code 与常用安全测试工具,默认通过 Docker bridge 网络 + host.docker.internal=host-gateway 访问宿主机授权靶场。

docker pull ghcr.io/oritera/cairn-worker-container:latest

如因校园网或代理限制无法直接拉取 GHCR,先配置 Docker Desktop 代理设置,或手动下载后 docker load


6. WebUI 操作指南

6.1 新建题目

  1. 访问 http://localhost:8000,点击 "新建题目"

  2. 必填字段:

    字段 说明 示例
    题目标题 用于项目列表识别 XBEN-005-24
    目标 URL 靶场入口地址 http://host.docker.internal:32494/
    允许访问主机 可多条;留空则默认仅允许目标主机 192.168.1.100:8080
    题型 Web CTF / XSS / IDOR / SQLi / Crypto / Pwn 等,留空默认 Web CTF Web CTF
  3. 展开"扩展配置"可调参数(全部可选,留空则使用 dispatch.yaml 默认值):

    参数 说明 默认值
    可选提示 辅助性提示文本,非强依赖
    最大轮数 解题 OODA 循环上限 不限
    最大工具调用数 Claude Code tool_use 次数上限 不限
    最大秒数 单题总时间预算 不限
    Base URL 模型 API 地址 https://api.deepseek.com/anthropic
    API Key 覆盖 .env 中的全局 Key .env 中的值
    模型 模型名称 deepseek-v4-flash

6.2 观察解题过程

创建题目后,Dispatcher 自动创建 asimon-dispatch-<project_id> Worker 容器并开始 OODA 循环:

  • 左侧图谱:边表示行动/意图(Intent),节点表示产出事实(Fact)。起点(origin)固定为 teal 色,终点(goal)为 rose 色。完成后的 OODA 轮次节点和边按 Rn 区分着色。支持 6 种布局切换(Dagre ↓/→、Klay ↓/→、ELK ↓/→)和手动缩放/平移。
  • 右侧面板(5 个标签页):
    • 详情:选中节点或边后展示详情(Fact 描述、Intent 状态、来源 Worker)
    • 提示:人工提示列表(可选,非强依赖)
    • 日志:按时间线展示所有事件(创建、调度、完成)
    • Writeup:中文 Markdown writeup,支持预览/编辑/刷新/下载
    • 工具:点击图谱某条边后,展示该边关联的 Claude Code 工具调用记录(含 phase、tool_name、target、summary、allowed/blocked 状态)
  • 顶部状态:显示当前运行中的 Worker 名称、触发类型、心跳时间
  • 回放模式:支持按时间线逐步回放项目演进过程,可调速(快/正常/慢)、暂停、重播

6.3 项目生命周期

操作 按钮 效果
停止 Stop 暂停调度,Worker 容器保留
恢复 Resume 重新激活调度
重开 Reopen 已完成项目重新激活
删除 Delete 删除项目数据 + 同步清理 asimon-dispatch-<project_id> 容器
快照 Snapshot 导出项目 YAML 快照

7. X-BOW 靶场验证

X-BOW 是公开的 Web 安全基准测试集,Asimon 推荐使用以下代表题进行端到端验证。

7.1 启动靶场

在仓库同级的 validation-benchmarks/ 目录中:

cd ../validation-benchmarks
make run BENCHMARK=XBEN-005-24
docker ps -a

7.2 查看映射端口

docker ps -a --filter "name=xben-005"

若输出类似:

0.0.0.0:32494->80/tcp   xben-005-24-app-1

则 WebUI 目标 URL 填:

http://host.docker.internal:32494/

7.3 困难题

make run BENCHMARK=XBEN-010-24

建议使用 deepseek-v4-pro 模型以获得更高解题质量(Writeup 完整率约 90%,来源:docs/04_AI工具使用报告.md §4.4 模型对比实验数据)。


8. 测试与质量门禁

8.1 单元测试

cd asimon-agent

# 全部测试(10 个文件,47 项,2 项 Docker 环境跳过)
uv run --project asimon --with pytest python -m pytest asimon/tests

# Worker 安全策略回归测试
uv run --project asimon --with pytest python -m pytest asimon/tests/test_worker_security_flags.py

8.2 编译检查

uv run --project asimon python -m compileall -q asimon/src/asimon/ctf asimon/src/asimon/dispatcher asimon/src/asimon/server asimon/tests

8.3 本地质量门禁

推送前在仓库根目录依次执行以下三项检查(远端仓库无可用 CI runner,以此替代):

# 1. 全量单元测试
uv run --project asimon-agent/asimon --with pytest python -m pytest asimon-agent/asimon/tests

# 2. 编译检查
uv run --project asimon-agent/asimon python -m compileall -q asimon-agent/asimon/src/asimon/ctf asimon-agent/asimon/src/asimon/dispatcher asimon-agent/asimon/src/asimon/server asimon-agent/asimon/tests

# 3. Worker 安全策略回归测试
uv run --project asimon-agent/asimon --with pytest python -m pytest asimon-agent/asimon/tests/test_worker_security_flags.py

三项全部通过视为质量门禁通过。


9. 常用命令

cd asimon-agent

# 启动 / 停止
docker compose up -d --build
docker compose down

# 查看服务状态
docker compose ps

# 实时日志
docker compose logs -f asimon-server
docker compose logs -f asimon-dispatcher

# 清理项目数据库(谨慎操作)
Remove-Item -Recurse -Force datas/asimon

# 清理历史残留 Worker 容器
docker ps -a --filter "name=asimon-dispatch-" --format "{{.ID}} {{.Names}}"

10. 安全边界

系统的安全设计遵循纵深防御原则,在 Prompt 层、代码层、CI 层三重约束(详见 docs/05_威胁建模与安全分析.md STRIDE 五边界分析):

层级 措施 实现位置
目标约束 仅访问 allowed_hosts 白名单中的目标;控制面地址正向校验(host+port+path) ctf/models.py:73 is_url_allowed()server/routers/challenges.py _is_control_plane_target()
容器隔离 每个 project 独立 Docker 容器,bridge 网络隔离,docker.sock 只读挂载 dispatch.yaml:43-45docker-compose.yaml:14
Worker 权限 默认 --permission-mode autoCLAUDE_TOOLS 白名单限制工具范围,禁止 --dangerously-skip-permissions dispatch.yaml:70-72workers/adapters/claudecode.py:14-16
预算限制 max_rounds / max_tool_calls / max_seconds 三重约束 WebUI 扩展配置 → ChallengeSpec → Dispatcher 调度
认证 可选 Bearer Token(ASIMON_CONTROL_TOKEN),secrets.compare_digest 防时序攻击 server/security.py:18
密钥管理 API Key 仅存 .env 或环境变量,.gitignore 排除 .gitignore
审计记录 所有工具调用、Flag 结果、Writeup 均持久化到 SQLite server/db.py
安全回归测试 CI 门禁扫描 Worker 适配器与配置文件,禁止危险权限参数回归 tests/test_worker_security_flags.py

硬性红线:

  • 不对未授权公网目标进行自动化探测
  • 不提交真实 API Key、Git Token、Cookie、SSH 私钥
  • 不在默认配置中启用 --dangerously-skip-permissions 或 host 网络
  • 正式演示前轮换开发期间曾在对话中暴露过的 API Key

11. 文档入口

文档 路径 说明
选题调研报告 docs/00_选题调研报告.md 选题背景、国内外研究现状、创新点设计、可行性分析
设计文档 docs/01_设计文档.md 需求分析、系统架构、OODA 调度语义、核心算法、技术选型、安全设计(1,221 行)
用户手册 docs/02_用户手册.md 环境要求、部署配置、WebUI 操作、X-BOW 靶场、常见问题(596 行)
开发日志 docs/03_开发日志.md 从基座导入(05-26)到终版交付(06-30)的里程碑与技术决策
AI 工具使用报告 docs/04_AI工具使用报告.md AI 工具清单、量化效果对比、模型对比实验、反思与经验沉淀
威胁建模与安全分析 docs/05_威胁建模与安全分析.md STRIDE 五边界分析、20 项威胁、15 项安全控制矩阵
TLS 部署指南 docs/06_TLS部署指南.md Caddy / nginx 反向代理 + TLS 配置方案
安全扫描报告 docs/07_安全扫描报告.md pip-audit 依赖审计、OWASP Top 10 自查、评审扣分项修复
AI 二开说明 AGENTS.md 第三方 AI 工具复刻与二次开发指引
Agent 环境说明 asimon-agent/AGENTS.md Worker 容器内 Claude Code 环境指引
协议规范 docs/specs/ Dispatcher 设计 + Server-Dispatcher 通信协议

12. 关键创新点

  1. 基座领域化:保留 Cairn 通用 Fact / Intent 图协议,将其特化为 CTF 解题工作流——每个节点和边从通用语义变为可解释的 OODA 解题轨迹。
  2. OODA 可解释链路:将 Bootstrap / Reason / Explore 三类调度任务映射为 Observe → Orient → Decide → Act → Reflect 五步循环,使答辩可讲清"智能体为什么走到这一步"。
  3. Worker 容器级隔离:每个 project 对应独立 Docker Worker 容器,Claude Code 在隔离环境中执行,项目完成或删除后同步清理容器,避免题目间状态污染。
  4. 终态条件升级:不以"找到 Flag"为完成标准,而是"确认正确 Flag + 生成完整中文 Markdown Writeup"均满足后才标记项目完成——Writeup 从"事后拼接"变成"主链路目标"。
  5. 工具调用审计:工具调用记录直接从 Claude Code 内部 tool_use 事件提取,与 OODA 图谱边绑定展示——未选中边时不展示全局工具调用,避免噪音。
  6. 安全默认收敛:Worker 默认 --permission-mode auto + 受限工具白名单 + bridge 网络隔离 + 控制面正向校验 + 安全回归测试,安全从"事后补救"前移到"默认设计"。

13. License 与来源说明

本项目基于 Cairn 开源仓库(提交 4939e8a)进行课程二次开发,继续遵循原项目 AGPLv3 许可。Cairn 是通用状态空间搜索 Agent 基座;Asimon 是在该基座上面向 CTF-agent 场景完成的课程创新改造。

上游原始仓库已归档于仓库外的 _archived/cairn-upstream/ 目录(不纳入 Git 版本控制),课程正式交付代码为 asimon-agent/ 目录。

About

项目以开源仓库 Cairn(上游提交 4939e8a)为通用状态空间搜索基座,在此基础上完成 CTF 领域化改造——将原本通用的 Fact / Intent 图特化为可解释的 OODA 解题链路,将 Worker 后端固定为 Claude Code agent,并围绕 X-BOW / 本地靶场补齐题目创建、目标白名单、工具调用审计、Flag 验证、中文 Writeup 与 WebUI 演示闭环。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages