DeepSeek Harness Desktop 的安全测试插件 -- aker
ITroyeSivan
ITroyeSivan
网络安全者
2026年11月5日 11:27
河南
去阅读
===================================
免责声明
请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。个人微信:ivu123ivu
QUOTE
大多数安全工具都在抢你的桌面。这个工具不抢,它只想在你的输入框上方,多留一个 下拉框 。
一定要在虚拟机运行,工具下载链接:
公众号后台回复:20261105
链接仅一天有效,每日更新
看到一个安全工具,第一反应通常是「它有几个模块、能扫什么」。Saker 不太适合这么看。它没有自己的主界面、没有独立的安装包图标,也不管你的模型和工具装在哪——这些全部交给宿主。它自己只负责一件事: 把安全测试做成宿主里的一个模式 。
这个选择带来一种很奇怪的手感:你打开的还是那个熟悉的桌面端,说话的方式还是聊天,只是新建会话时模型列表里多了一项,输入框上方多了一个场景下拉。剩下的东西——范围怎么写、预算怎么算、证据怎么存——全被塞进了看不见的地方。这篇就照这个顺序讲: 它是什么、界面长什么样、几个不太一样的决定 。
本文看点
01
它寄生在别人的桌面上
02
六个面板,全是抽屉
03
证据为什么是个哈希
01
WHAT IT IS
先把这个误会说清楚
Saker 不是一个双击就能打开的软件。它是 DeepSeek Harness Desktop(下面简称 dsh Desktop)的一个插件包: 15 个功能插件加 1 个根模式包 。你装的仍然是官方那个桌面端,装完之后新建会话,模型列表里多出一项叫 Saker 的选项。宿主本身的设计口号是「一切皆插件」,这个项目算是把这句话用到了极致。
| 项目 | 情况 |
|---|---|
| 形态 | 插件包 + 模式包,不自带界面 |
| 宿主 | 0.2.2-rc.1,兼容 0.2.1-rc.5 / 0.2.1-rc.2 / 0.2.0-rc.2 |
| 平台 | Windows 10 / 11 |
| 运行时 | Node.js 24.9 及以上 |
| 许可 | MIT,随包 Semgrep 规则不随之转 MIT |
| 当前版本 | 0.6.2 |
所以它的能力边界,一半由自己决定,一半由宿主决定。宿主给什么模型、给多少轮、允不允许调工具,它就只能在这个格子里做事。这也是为什么它的文档里反复出现「宿主实际支持范围」这种说法—— 不是推责任,是真的有限制 。
三种场景,一个入口
新会话选 Saker,然后在输入框上方选场景。三个场景的差别不在功能,在于 你到底在测什么 。
| 场景 | 适合的需求 | 常用内容 |
|---|---|---|
| 自由测试 | SRC 研究、授权资产排查、已知漏洞验证 | 网址、域名、资产清单、账号、报文、JS、源码 |
| 案例测试 | 按项目环境说明和既有案例逐项检查 | Word、Excel、文本、检查表与重测 |
| 比赛模式 | CTF 单题研究、多题分工、本地或离线解题 | 题面、附件、实例、命令进程、候选答案 |
「常规测试、Nday 发现、0Day 挖掘」这三个词容易让人以为是三道工序。文档里写得很直白:它们是 研究重点,不是工具白名单,也不是必经阶段 。你手上只有域名,就先做信息收集;手上已经有请求和账号,直接开始也行。
15
功能插件
50
内置提示词
26
自由测试工具面
这三个数字正好概括了它的做法:插件负责能力,模板负责起点,工具面负责收窄。还有一件事值得单独说——它把 9 个旧插件(攻击图谱、行动记忆、WebShell 管理、方法栈等)从默认路径里 明确退役 了,清单里直接禁止打包、安装和激活。旧会话和旧数据不动,但功能不再往前带。这种「删功能」的动作,在快速迭代的项目里不常见。
02
THE INTERFACE
六个面板,全是抽屉
下面六张都是桌面端的真实截屏。看的时候注意一件事:几乎没有「页面跳转」,所有东西都是贴在聊天旁边的 抽屉和弹窗 ——它不想让你离开当前这轮对话。
一 · 主界面:一个几乎空的窗口
— 自由测试:中间一个输入框,其余全是入口
窗口中间就一行字、一个输入框。真正属于 Saker 的东西只有输入框上方那一条:左边是会话名和「自由测试」下拉,紧跟一个「当前:自由测试」的标记,右边四个入口—— 协作关、添加文件、写提示词、设置 。左下角还有个「完全权限」的下拉,这是它给自己留的刹车片;右下角显示当前模型,图里是 DeepSeek V4.1 Flash。界面朴素到有点过分,但所有能改的东西都在这一条上面。
二 · 写提示词:50 篇,九组
— 模板抽屉:搜索、填字段、插入输入框
这是个右侧抽屉,不是新页面。左边搜索框的提示语是「搜索:越权 / 接口 / Nday…」,看得出来按同义词匹配。内置 50 篇,分九组:开始测试 4 篇、信息收集 7 篇、分析资料 7 篇、深入研究 8 篇、已知漏洞 4 篇、结果与继续 5 篇、案例测试 4 篇、比赛模式 10 篇,外加 1 篇自定义。
选一篇之后只填必要字段(图里只有一个「目标地址」),其余收在「更多信息(3)」里。底部那句「最终文字(发送前可修改)」一直可见,右边三个按钮的分工很清楚:可以复制走,可以另存为个人模板,而 「插入输入框」只改草稿,不会发送 。这个细节很小,但决定了你敢不敢随手点。
三 · 设置:只有三个问题
— 任务设置:方向、什么时候问、什么时候汇报
没有一屏开关,只有三个问题。测试方向(常规测试 / Nday 发现 / 0Day 挖掘)、什么时候问我(图里选「自行推进」)、什么时候汇报(任务结束时 / 发现问题时 / 每完成一个步骤时)。下面一行小字解释了代价: 汇报偏好不额外调用模型总结 。把「AI 要不要停下来问你」变成一个可调参数,而不是写死在流程里,这是整篇文档里我最愿意抄的一条。
四 · 案例测试:先解析,后调模型
— 添加测试文档:本地解析,不调模型,不访问网站
它先把话说在前面:Word、Excel 或文本,只在本地解析,不立刻调用模型,也不访问网站。粘贴框里可以写环境说明——项目名、入口地址、几个账号。表格里能识别的表头和后续数据行,会在开始时 由程序直接拆成检查项 ;拆不动的保留原文交给模型读。所以那张检查表不是你让模型现编的清单,而是文档里那一条条要求,加上「测试要求 / 执行情况 / 结论 / 结果说明」四列。
五 · 比赛模式:flag 不做任何改写
— 比赛模式:题面、附件、实例归到同一题下
题目按题保存,附件名是一串内容哈希(competition-attachment-0065bce0…),所以同名文件不会串到别的题。命令区四个按钮:运行、继续读取、从头读取、停止——长输出可以接着读,交互进程可以继续写 stdin。最后那个框叫「候选答案或 stdin」,旁边一行小字: 保留原始大小写和字符 。flag 不做去空格、不改编码,通不通过由你或平台判断,程序不替你认定。
六 · MCP:四个数字分开摆
— MCP 工作台:服务器 2、已启用 2、已连接 2、工具 181
四个数字分开摆是有原因的。服务器和已启用说的是配置,已连接说的是服务真的活着,工具数说的是连上之后能调多少。Burp、Yakit 没启动时,前两个数字还在,后两个会掉下去—— 配置存在不等于服务在线 ,这句话在它的文档里出现不止一次。
这六张来自项目自带的文档目录,是桌面端的真实截屏,图里的目标是 example.test 这类示例。我没有在本机重跑——它要求先装好官方 Desktop 并配好模型,本文只做介绍,不假装自己跑过。
03
DECISIONS
四个不太一样的决定
功能清单哪家都能写,真正能看出作者想法的是那些「不做」的地方。这四个是我翻源码和文档时记下来的。
① 场景不只是换提示词,还换工具面
切场景的时候,暴露给模型的工具会跟着收。0.2.2 这一版把自由测试的静态工具面从 39 项压到 26 项,代码里的说法是「按真实可限制工具集收起」。这么做的原因不难猜:工具越多,模型每轮要读的列表越长,选错的概率越高。
② 子代理默认是 0 个
很多多智能体产品的默认姿态是「先派出去五个」。这里是反的:默认没有子代理,要派之前得先核对实际存活列表,同一个站点不另建, 下级代理不许再分派 。结束前先存一份短报告,等宿主给出终态再释放;关闭失败仍然占着名额。上限也不是随便写的,取宿主实际支持范围(官方桌面默认 0–8,最高 16)。
③ 知识库被拿掉了
公共漏洞知识库和 Nday 资料库已经退出产品。要 CVE、公告、PoC、EXP,就在当前任务里直接联网读或读你给的文件。架构文档给的理由只有六个字: 不维护公共替代库 。听着像偷懒,其实是个判断——一个内置的、永远滞后的漏洞库,比没有更危险,因为它会让人以为「查过了」。
④ 证据是一个哈希
「发现的问题」里,每条结论都要挂证据。多数工具的做法是存一段描述,Saker 的做法是算一个指纹:把资产、检查项、基线请求、方法版本规范化之后一起做 sha256,得到 saker-verification-basis/1:… 这样一串东西。请求、账号、修订任何一个变了,指纹就变,缓存不能复用。
「它证明的是记录一致,不是解释正确。」
这句不是我的评价,是 verification-basis.mjs 文件头第二行的英文注释,直译过来就是这个意思。一个工具肯在代码里承认自己只能证明「同一份证据」,不能证明「你的解读对」,这比在页面上写「AI 驱动」实在得多。
04
SCOPE & EGRESS
三道闸:范围、预算、出站
这三样东西在大多数工具里是文档里的免责声明,在这里是三层会真的拦人的机制。
第一层 · 范围
「目标、范围或已有材料」这一栏接受完整 URL、多行 URL、域名、\*.example.com、IP、CIDR,也接受用自然语言写的排除项。程序会保留你的原始文本,再生成一条 可编辑的理解结果 ,把「包含什么、排除什么」摆出来给你看。这一条很关键:模型理解错了范围,你能当场看见,而不是等它跑完。
范围、预算、权限的放宽,都不会由模型或文档自动生效,它必须先变成一条等你确认的变更。
换句话说,你在聊天里说「顺便看看隔壁那个站」,AI 不会照做,它会生成一条待确认的扩范围请求。确认之后沿用原任务和已用额度,不重置账本——这点比拦下来更重要,否则每次扩范围都等于重新开一局。
第二层 · 预算
操作次数、时间、模型调用都是可选项, 不预填「30 次」「15 分钟」 。主代理、子代理、后台标题生成共享同一份额度,用完保留结果、停止新的生成。文档里也老实说了:这里限的是宿主的调度次数,不能当成 token 或适配器内部重试的硬上限。这种「说清自己管不到哪」的写法,现在很少见。
第三层 · 出站
这一层是我没预料到的。除了目标流量,它还给「基础设施出站」(模型、知识同步、包下载)加了一道总闸,策略写在一个 JSON 里:
...policy.json
$DSH\_HOME/saker-egress/policy.json
{
\"version\": 1,
\"mode\": \"allow\" | \"allowlist\" | \"frozen\",
\"allowHosts\": [\"github.com\", \"registry.npmjs.org\"]
}
三档:全放、只放白名单、基础设施出站全冻。比赛断网或者护网现场,切到第三档就是一句话的事。每次判定还会往 audit.jsonl 写一行,带原因。
NOTE
审计文件单行上限 256KB、只留最近 400 行,很明显是为了长时间连续作业不把磁盘写爆。源码注释里写明它参照了 OpenAI Codex 的 network policy,也写明「不引入 OS 级沙箱」——它只做策略和留痕,不做隔离执行面。别把它当容器用。
05
INSTALL
装法:四步,两行命令
安装顺序不能反,因为它要往宿主的 profile 里写依赖,宿主必须已经初始化过、并且完全退出。
STEP 01装官方桌面端
装 DeepSeek Harness Desktop,打开完成首次初始化,配好一个能用的模型,然后 完全退出 (托盘里也要退干净)。Saker 只适配 0.2.2-rc.1 及几个指定的旧版本,装之前先对一下版本号。
STEP 02解压发布包
解压 Saker-0.6.2-desktop.zip,找个固定目录放着。这个目录之后不能删,原因见下一章。
STEP 03先检查,再安装
在解压目录开 PowerShell。加 --check 只做检查不动文件,这一步值得跑,能提前发现版本不匹配和路径不对。
...powershell
node scripts/install-desktop.mjs --desktop-dir \"C:/path/to/DeepSeek Harness\" --check
node scripts/install-desktop.mjs --desktop-dir \"C:/path/to/DeepSeek Harness\"
安装器会先备份配置,再把 16 个包塞进一个事务里装完,会话、账号、个人模板、浏览器和 MCP 配置都保留,最后刷新桌面的「Saker (dsh Desktop)」快捷方式。
STEP 04用新快捷方式启动
双击「Saker (dsh Desktop)」,新建会话选 Saker,然后在输入框上方挑场景。第一次还要进「安全配置」填本机工具路径,去「MCP 工作台」把 Burp / Yakit 的服务拉起来。
装坏了怎么退
每次更新都会在 %USERPROFILE%\.dsh\backups\desktop-<时间> 留一份更新前档案——关键配置、依赖、已启用插件;加 --backup-data 还会整体复制会话数据。回退先看方案再动手:
...powershell
node scripts/restore-desktop.mjs # 只列方案,不写文件
node scripts/restore-desktop.mjs --apply # 退出 Desktop 后执行
回退前会逐字节核对配置副本,任一不符就停;执行时先把当前配置另存一份,所以回退本身还能再回退。卸载就简单了:官方「插件」页点掉,或者退出后用 dsh plugin --profile desktop remove dsh-saker。卸载不会删历史会话和交付文件。
06
GOTCHAS
五个真实的坑
它绑宿主版本
桌面端升级到新版本,插件可能直接激活失败。0.6.2 的更新日志里大半篇幅在讲这个:Session Projection 换了接口、tools.restrict() 改了规则、几个服务被移除。先看 Saker 有没有跟上,再升宿主。
配置在,服务不在
Burp、Yakit 的 MCP 配置保存了,不代表进程在跑。没启动时已连接为 0、可用工具为 0,此时不要以为是配置坏了去重建一份。
解压目录别当缓存删
安装后插件依赖指向解压目录里的 dist/desktop 下的 tgz。清磁盘的时候顺手删掉,下次启动就报错。
截图和导出会带东西
导出的请求、截图和文件可能含账号、Cookie、Token、业务数据。作者自己在文档里提醒了两次:分享前先核一遍。
额度都是自己的
模型服务、商业扫描器、资产平台配额全部自备。它只负责把调用串起来,不送额度。
NOTE
项目自述仍在快速迭代,仅供个人学习与授权实验,暂不建议用于生产环境或正式项目交付。文档里还有一句话值得记住:模型和扫描器的结果需要复核,任务结束不代表所有业务功能都已覆盖。
END
一定要在虚拟机运行,工具下载链接:
公众号后台回复:20261105
链接仅一天有效,每日更新
·今 日 推 荐·
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论