首页
社区
课程
招聘
[原创] OpenSecurity 2.0 无人值守完成 CTF 所有 Web 挑战
发表于: 2026-10-1 18:54 378

[原创] OpenSecurity 2.0 无人值守完成 CTF 所有 Web 挑战

2026-10-1 18:54
378

它是一套多 agent 安全分析系统,覆盖 Web、二进制、密码学、移动、AI 安全五个方向,跑在 OpenCode 之上的安全分析系统,它的特点:

当前沉淀的知识来源于几方面:打CTF沉淀知识、提取已有Writeup文档、花钱买。

一句话版本差异:1.0(master 分支)会做分析;2.0 让它独立把任务做完。

OpenSecurity 2.0 实战记录 · SunshineCTF 2026

先给结论:我的安全分析系统在 SunshineCTF 2026 上解出了一批 CTF 题。从启动到交出答案,全程无人值守。 这不是演示,是真实赛题上的战绩:系统负责解题,人只负责两件事:给题,和提交。

图 1:SunshineCTF 2026 的 Web 题区(图中标记为 SOLVED 的题目,均由本系统完成):
图片描述

图 2:SiteCheck(456 分)提交判题通过(Correct):
图片描述

先解释图 1 里唯一没变绿的 SiteCheck:

SiteCheck 是这批题里被卡得最久的一道,战线因此跨过了赛事结束时间。但赛后题目实例仍在线、平台也仍接受判题,图 2 就是赛后提交的判题结果:Correct。它没赶上计分板,但被完整解出来了。

这批题(全部 Web 方向):

先看两张图:一张是系统架构(由什么组成),一张是一次任务里的协作(怎么运转)。

图片描述

↑ 图 3:系统架构。运行时(OpenCode 宿主)调用控制台(本地服务),控制台依赖资源与目标(本地能力 · 分析对象)。

一句话说明:运行时(分析系统本体)把任务做出来,控制台把环境备好,资源与目标提供两者使用的本地能力(知识 / 记忆 / 模型 / 工具 / 出口)。

一句话读懂:人只出现在两端。分析 Agent 负责干活:它用工具链访问网络(大轰炸时由 AI 切到代理模块);用知识库查方法论、用记忆库做实时查询、过程留痕与自动沉淀(记忆库的向量化由本地模型完成);插件层在运行时全程护航:停下了就推回去(无人值守),跑久了就提醒盘点(反思)。下面逐块展开。

按方向组织的方法论文库。它不只是资料堆,每个方向都写明"什么场景、用什么打法、具体命令是什么、怎么判断成败"。它是"慢资产":不自动生长,每次更新都来自复盘后的提炼。用途:让系统面对陌生题目时,先查手册再动手。

记忆库有三件事:

用途:让系统每次都在上一轮经验之上开工。

长任务里最贵的错误,是在死路上闷头加速。反思模块按"距上次盘点时长 × 工具调用密度"的数字规则定期触发(默认 30 分钟):忙碌时把一条反思提醒附在命令输出之后(不打断工作),空闲时发一条唤醒消息;配套协议要求先落盘实验结果,再做方向盘点(继续 / 换向 / 放弃 / 深挖)。用途:防止长任务跑偏。

AI 跑长任务最大的敌人是"停":模型给出阶段性结论后就会安静等人。这套机制在系统空闲时检查"完成标记":没有标记,就注入"未完成就继续做"的恢复消息;模型真正完成时输出标记,机制自停。标记每次随机生成,防止模型学会"假装完成"。用途:几十小时级的任务,没有人盯着也能推进。

用途:任务不因等人点击而停摆。

长任务有一种更隐蔽的"停":权限询问。分析中途若弹出权限询问(最常见的是访问任务目录之外的路径),人不在电脑前,流程就会一直挂起、等人点击。

2.0 的对策是超时自动拒绝:按类型计时,默认 60 秒、默认只对"目录外访问"生效;秒数与生效类型都可在控制台调整。超时后自动拒绝,并把一句引导反馈随被拒结果交给模型(提示它检查路径、或把访问写进脚本再执行),模型自行改道,任务继续。

这块在 SiteCheck 时还没有,是之后从别的题目踩到痛点补上的。

批量扫描、验证这类"大轰炸"阶段最容易触发目标限流。代理模块的作用是:一条线路被限流,就自动换另一条;被限流的地址先冷却一段时间、暂不触碰。用途:任务不因限流、封锁而中断。

记忆库的"存"与"查",需要把内容变成向量。存知识时算一次、查知识时算一次,语义相近就能匹配(哪怕用词不同)。这一步由本地模型 BGE-M3 完成;检索出的候选再由本地 Reranker(重排序模型)按相关性排序;截图里的文字(比如 SiteCheck 的 flag)则由本地 OCR 模型提取。

为什么放在本地?一个直接原因是省钱:当前这台设备的硬件足以运行这三个模型(合计约 7.6GB),本地推理的边际成本几乎为零。当然,这是有条件的,如果你的硬件不如这台、跑不动本地模型,可以把模型卸载到局域网里的另一台机器(远程推理节点),或者用线上模型。

系统还带一个控制台,随服务端一起启动;浏览器打开 http://localhost:5173/ 就能看到。控制台是整套系统的"驾驶舱":

图 4:控制台首页。Docker、模型、Python 依赖、外部工具的就绪状态一屏可见:
图片描述

图 5:控制台配置页,包含工具、模型、代理、行为、开发五类配置:
图片描述

另有一组支撑件不单独展开:任务路由(给每道题挑最合适的 agent)、子 agent 体系、任务目录与工作记忆、以及 1000+ 安全工具组成的工具链。

题目:SiteCheck 是一个"网站体检"服务:提交一个 URL,它派一架自动巡检无人机去访问、记录加载时间、回传一张截图,并且"礼貌地拒绝访问内网地址"。翻译成安全语言:这是一道 SSRF(服务端请求伪造)题,而真正的考点在于"无人机":它自带一个完整的浏览器环境和一套自己的登录会话。

破局的攻击链只有四步:

过程:09-27 开跑,09-29 凌晨破局(跨约 32 小时)。受"只在早晚跑"的成本策略影响,战线被拉长。赛后提交,判题通过(图 2)。下面按模块拆开看:这道题里,系统到底靠什么把仗打完。

知识库:开局先读 Web 方法论(分析流程、证据纪律)定下框架,分析按这套流程推进,决定分析的技法,如果手册没有则现场试验。下一道同类题,可以直接查表。

记忆库:开工第一件事就是查它("是否存在 SiteCheck 或同类 SSRF 题目的记录"),命中一条 SSRF 过滤绕过变体全集,[::1] 等 IPv6 环回等价写法就在清单里;分析全程,每一步执行(工具调用与结果)按任务写入记忆库,随时可回查,压缩恢复也靠它;收官时,解法条目由分析 Agent 自行判断后落库,此后按技法词回查可稳定召回。对本任务,它是随查随用的经验库与可回溯的过程台账。下一道同类题,可通过MCP从记忆库查出技法。

反思模块:这道题的分析过程中,它 4 次触发(每次背后是 94 / 65 / 40 / 39 次工具调用)。它不是灵感来源,是纪律:把长跑切成段、定期交作业,防止在死路上闷头加速。

无人值守模块:这道题的破局就是它完成的。空闲时,它注入了一条"未完成就继续"的恢复消息,把停下的任务重新推动起来:94 秒后关键实验完成,137 秒后 flag 到手。它还纠正过一次"假完成":模型交卷说"分析完成",但没有输出完成标记,机制不认账、把它推回去继续(事后证明推得对:那时离解出还有 38 分钟);最终检测到正确标记、自动停止。

代理模块:这道题的扫描与批量验证阶段持续密集、高并发。期间共 16 次自动换线路,任务无需暂停等待、始终保持高并发,没有中断。

本地模型:flag 就是从无人机截图里读出来的:本地 OCR 文字识别两次 + 直读,三方交叉验证;记忆库的"存"与"查",向量化与重排序由本地模型完成。

核心机制之外,系统还把围绕一场比赛的常用动作做成了斜杠命令,在会话里输入命令名即可调用。挑五个比较有意思的:

覆盖一场比赛的几个阶段:挑比赛、题目落盘、情报侦察、报告产出、机制复盘。

2.0 把不少能力放到了本地运行,对机器有一定要求。以下是我的测试机(MacBook Pro / M4 Pro / 48GB 统一内存)上的实际占用:

对于使用Mac笔记本的建议:内存 32GB 起步,48GB 更从容(Apple Silicon 走统一内存 + Metal 加速;其他平台的本地模型可走 Ollama / torch 后端,独显按约 8GB 显存预留)。磁盘另需 25GB+(工具镜像与模型缓存)。

机器不够强也有出路:系统支持把三个模型加载到局域网里的另一台机器(远程推理节点,我就是让一台闲置的 Mac Mini 来分担),本机内存占用随之释放。

关于版本:因为 2.0 对硬件有上述要求,它暂时还没有合并到 master;一段时间后,它一定会合并进 master。硬件符合要求的读者,现在就可以拉取 Tag ≥ 2.0 的版本使用。

几条使用建议:


[招生]科锐逆向工程师培训(2026年11月13日实地,远程教学同时开班, 第57期)

最后于 2026-10-2 08:33 被不歪编辑 ,原因:
收藏
点赞 ・24
打赏
分享
最新回复 (13)
雪    币: 215
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2 楼
期待更多优质内容的分享,论坛有你更精彩!
2026-10-2 03:47
0
雪    币: 1965
活跃值: (3126)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3 楼
牛逼
2026-10-4 09:55
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4 楼
666
2026-10-5 10:51
0
雪    币: 191
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5 楼
想想更牛B   期待!!
2026-10-6 00:08
0
雪    币: 191
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6 楼
膜顶
2026-10-6 00:21
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7 楼
看看
2026-10-6 23:53
0
雪    币: 200
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8 楼
顶膜
2026-10-7 21:06
0
雪    币: 248
活跃值: (810)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9 楼
666
2026-10-11 12:18
0
雪    币: 1204
活跃值: (170)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10 楼
666
2026-10-11 22:52
0
雪    币: 28
活跃值: (1510)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11 楼
66666666
2026-10-17 15:37
0
雪    币: 154
活跃值: (96)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12 楼
牛呀老哥
2026-10-20 09:48
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13 楼
666
2天前
0
雪    币: 614
活跃值: (1368)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14 楼
666
1小时前
0
游客
登录 | 注册 方可回帖
返回