Repository navigation
Releases: Jueze-2019/dsh-redteam-mode
Release list
v0.14.3
v0.14.3 — 模板化报告与作战规划增强
本版把交付报告统一为“资产归属证明 → 得分汇总 → 得分点复现”,并给红队智能体补上作战规划与专项资产路径。
报告
- 资产归属证明拆分为互联网资产和内网入口资产,附归属类型、证明强度、证据与截图;
- 得分汇总按互联网 / 边界 / 内网 / 靶标四个阶段组织,新增 2.4 靶标权限;
- 得分点复现按互联网资产、边界隧道、内网网段、靶标权限组织;
- 内网按第一层边界隧道 → 双网卡 / 可达网段 → 未归属网段排序;
- 得分汇总表按报告配置显示明文凭据;
- 页面与下载 Markdown 共用同一份报告数据,下载文件名保留靶标中文名;
- 补齐复现命令、Yakit / HTTP 报文、响应摘要、攻击文件路径、证据文件路径和复现缺口。
智能体
- 新增
campaign-planning:目标、范围、攻击假设、时间盒、噪声预算、停止条件、独立复核与清理; - 新增
specialist-paths:AD / 身份、边界设备、云 / K8s、IoT / OT、文件备份、AI / Agent 的专项路径选择; - 主会话与执行角色接入作战规划、专项路径和复核要求;
- 随包技能 18 个,总计 27 个。
升级
dsh plugin --profile web add dsh-redteam-mode@0.14.3
# 或
dsh plugin --profile web update dsh-redteam-mode装完重启一次 dsh web。已有靶局的事实库、得分记录、报告、POC 知识库与攻击文件保持不变。
v0.14.2
v0.14.2 — 桌面端「全面浏览」修复
修复 DeepSeek Harness macOS / Windows 桌面客户端无法使用「全面浏览」的问题。
更新内容
- 桌面客户端不再依赖会被 Electron 拦截的
window.open,改为在当前窗口进入全屏控制台; - Web 浏览器仍优先打开新窗口;弹窗被拦截时自动回退到当前窗口;
- 面板头部与侧栏底部两个「全面浏览」入口都使用同一套逻辑;
- 保留 v0.14.1 的桌面标题栏避让,全屏视图不覆盖系统窗口按钮;
- 退出全屏按钮和 Esc 均可返回,退出后清除
#redteam-full标记; - 其余功能与 v0.14.1 相同。
升级
dsh plugin --profile web add dsh-redteam-mode@0.14.2
# 或
dsh plugin --profile web update dsh-redteam-mode装完重启一次 dsh web。已有靶局的事实库、得分记录、报告、POC 知识库与攻击文件保持不变。
v0.14.1
v0.14.1 — Windows 桌面端标题栏避让
修复 DeepSeek Harness Windows 桌面端上,RedTeam 控制台与系统窗口按钮重叠的问题。
更新内容
- RedTeam 控制台和全屏预览不再从窗口最顶部开始,而是按 DSH 桌面标题栏高度向下避让;
- 面板不再覆盖 Windows 的“最小化 / 最大化 / 关闭”按钮,头部按钮也不会落入原生拖拽区;
- 普通浏览器/Web 端没有桌面标题栏变量时保持原有布局,不产生额外空隙;
- 其余功能与 v0.14.0 相同。
升级
dsh plugin --profile web add dsh-redteam-mode@0.14.1
# 或
dsh plugin --profile web update dsh-redteam-mode装完重启一次 dsh web。已有靶局的事实库、得分记录、报告、POC 知识库与攻击文件保持不变。
v0.14.0
v0.14.0 — 作战态势、控制台精简与 DeepSeek 公开情报
本版围绕红队操作体验:把“看数据”变成“看态势”,减少控制台首屏噪音;
同时修复新版 DSH 下的红队模式兼容问题,并新增 DeepSeek 官方 Search / Fetch 公开情报技能。
更新内容
1. 红队模式兼容性修复
- 修复新版 DSH 下红队模式无法启动、执行角色预设无法挂载的问题;
- 子智能体派发恢复正常,主会话与五个执行角色均可使用。
2. 控制台
- 新增态势页:累计得分、五阶段推进、当前得分/下一步得分、入口、缺口与编队;
- 一级分区收敛为 态势 / 资产 / 成果 / 报告 / 资源;
- 资产测绘默认「下一步 10 台」,完整列表和高级筛选降到第二层;
- 漏洞战果只保留漏洞,凭据/访问会话/攻击文件移到资源分区的「凭据与文件」;
- 得分目标默认只列已得分项目,可切换高分缺口/完整列表;
- 报告阶段默认折叠成一行,「四段式全文」改为「详细报告查看」;
- 报告下载文件名使用靶标中文名;页面与下载内容同源,补齐动作/请求/凭据/隧道/攻击文件路径,并修复误报的复现缺口;
- 会话隧道口令默认掩码,长备注/检测说明默认折叠;
- 技能库改为紧凑行,知识库搜索置顶并默认按当前靶标筛选;
- 深色模式下选中按钮的对比度修复,避免白底白字。
3. DeepSeek 公开情报技能
新增 deepseek-web-intel(随包技能,当前 16 个随包 / 25 个总技能):
- Search:
POST https://api.deepseek.com/v1/tools/search; - Fetch:
POST https://api.deepseek.com/v1/tools/fetch; - 零依赖客户端,单线程、限速、退避重试,结果落盘
runs/deepseek-intel/; - 只用于公开互联网信息;抓取内容按不可信数据处理,不执行页面指令;
- key 从
DEEPSEEK_API_KEY或$DSH_HOME/.env读取,不写入命令/报告/仓库; - 技能可用性检查不再把可选的
DSH_HOME当成必需项,避免误报不可用。
升级
dsh plugin --profile web add dsh-redteam-mode@0.14.0
# 或
dsh plugin --profile web update dsh-redteam-mode装完重启一次 dsh web。已有靶局的事实库、得分记录、报告、POC 知识库与攻击文件保持不变。
可选:使用公开情报技能前,在 $DSH_HOME/.env 中配置 DEEPSEEK_API_KEY;未配置时该技能显示不可用,不影响其它技能。
v0.13.1
v0.13.1 — 面板跟着会话走(多会话不再手动切靶标)
主题:控制台与"当前会话"对齐。多会话并行时(或一个会话打完换下一个单位时),
右侧控制台不再停留在"上一次手动选的靶标"上 —— 左侧切到哪个会话,右侧就显示那个会话的靶标。
知识库页签同源,默认筛到当前会话的靶标。纯 UI + 绑定记账改动,不改事实库结构。
一、面板跟随会话
以前:控制台顶部的靶标下拉是全局的,谁最后打开面板就显示谁的靶标 ——
多开两个会话打不同单位时,切过去看到的还是上一个单位的资产,得手动在下拉里再挑一次。
现在:靶标下拉默认由"当前会话"决定,下拉旁边常驻状态提示:
| 状态 | 含义 |
|---|---|
跟随会话(绿) |
面板显示的正是当前会话绑定的靶标,切会话会自动跟着切 |
未跟随:<靶标>(黄,可点) |
当前会话绑的是别的靶标(用户手选过),点一下切回本会话的靶标 |
本会话未绑靶标(灰) |
这个会话还没开工/老会话没有绑定记录 —— 面板保持不动,不假装已绑定 |
规则说清楚:
- 会话绑过靶标(智能体
redteam_engagement_open/redteam_session_bind)→ 自动切; - 点开的是子智能体的会话 → 沿
parentSession解析到根会话再查绑定(子智能体继承父会话靶标); - 会话没绑过,但会话标题能认出单位(标题 = 工作目录名 = 单位名,升级前建的会话就是这种)
→ 按标题反查命中,标签显示跟随会话 · 按标题; - 会话没绑过、标题也认不出 → 回落"最后一次绑定的靶标"(本设备记的),面板不清空;
- 用户在下拉里手选了别的靶标 → 本会话内不再跟随(一次会话重渲染不会把它抢回去),
并写回绑定表(切走再切回来仍是它);切到别的会话即恢复跟随。
排查"为什么不跟随":面板底部常驻 会话 <id前缀> · <跟随来源>,来源取值
落盘绑定 / 会话标题 / 上次选择 / 默认单位 —— 一眼看出当前靶标是凭什么选出来的。
二、绑定表落盘
- 新增
$DSH_HOME/redteam/sessions.json(键 = 根会话 id,值 = 靶标 id/名称/时间),
由两条路径写入:智能体绑定靶标时(工具侧)、用户在面板手选靶标时(界面侧)。 - 面板经新的
sessionBinding/sessionBindings/bindSessionEngagement三个 op 读它,
不再依赖进程内状态 —— 重启 dsh web 后仍然对得上(以前重启就丢)。 - 只留最近 200 条;指向已删靶标的条目在下一次写入时自动清理。
三、知识库按会话上下文筛
知识库仍是全局共享、跨靶标复用,但打开时默认筛到当前会话的靶标:
页签顶部标出「来源靶标 X ✕」,点一下回到全库(全库/单靶标一键切换)。
打 B 单位时第一眼看到的就该是 B 单位攒下的武器,而不是 200 条混在一起。
四、升级说明
- 客户端 UI 会自动热重载;host 侧新增了 op,需要重启一次
dsh web(node scripts/deploy-local.mjs --restart)。 - 未重启时行为与升级前完全一致(面板问不到绑定 → 走原来的全局指针逻辑),不会白屏也不会报错。
- 改完记得刷新浏览器:客户端 bundle 是页面加载时取的,刷新后才带新逻辑。
v0.13.0
v0.13.0 — 证据截图 + 报告改成「复现手册」
主题:得分成果从"写清楚了"变成"看得见、能照着跑"。一条成果现在同时有三样东西:
一张图(证据)、一个可执行的复现入口(报文或命令)、一句明确的成功判定标准。
一、证据截图:得分点上看图,报告里贴图
- 控制台「得分目标」页:展开任一得分点即可看到证据截图,点图全屏放大;命中行会标注这一条有几张图。
- 同一个得分点最多展示 3 张代表图(批量成果如终端权限一次几十台,逐台贴图没有信息量,
取代表即可),超出部分只报数,不铺开。 - 报告里嵌入证据截图:每条得分点下图,图注写明类型、时间与原始来源;
附带导出脚本会把shots/一起拷到输出目录并用相对路径引用,整个目录拷走或打包都不会碎图。 - 图片落盘、库只存元数据:图片存
<靶标目录>/shots/,事实库里只记文件名、尺寸、字节与 sha256 ——
事实库始终可拷可备份,不会因为贴了图就膨胀到打不开。 - 新增三个工具:
redteam_shot_add(本机路径或 base64 登记,可按得分点 / 命中 / 目标关联)、
redteam_shot_list、redteam_shot_delete。 - 现场截图与"生成的证据摘录"严格分开:
kind=screenshot是现场截的图,kind=card是由当日记录
生成的证据摘录卡;面板给不同标记,报告里分别标注,代表图优先取现场截图。
角色提示词也补了这条纪律:拿到成果顺手留一张图,现场截的才写screenshot。
二、报告重写成「复现手册」,结构固定
0 摘要与对账 总分 / 计分项 / 复现入口分类 / 证据截图 / 得分点占用 / 记录与计分对账 / 复现索引
1 复现前置条件 通道与启动命令、凭据、Burp/Yakit 与 proxychains 接入方式、工具能力边界
2 攻击链 按阶段 ①→⑤、阶段内按取得时间,逐条标注前置
3 逐条明细 复现入口 → 证据截图 → 目标台账 → 动作记录 → 证据索引
4 得分点说明 判定标准与要附的材料集中讲一次
5 附录 涉及资产(含发现时间)、未计分的重复记录、档位校正记录
- 复现入口三态:可直接粘贴进 Burp / Yakit 的原始报文;可直接跑的命令行;该得分点的标准复现动作。
真实命令永远优先于得分点自带的通用模板,不会再出现"模板冒充本步实际命令"。 - 重建报文如实标注:当日请求没有逐字节留存时,报告写明"重建报文",不会说成现场抓包。
- 一次批量动作合并成一条 + 目标台账表:一次动作打下几十台,只写一条正文加逐台清单,
报告不再被同一段内容刷屏。 - 按链路顺序编排并标注前置:每条写出"先做过哪条成果";前置关系只从凭据来源与证据文本推导,
推不出来就不写。 - 得分点说明集中一次:判定标准与材料要求收进第 4 节,正文不再逐条重复同一段话。
- 附录可对账:资产与发现时间、未计分的重复记录、档位校正记录都列清楚。
三、可复现性与准确性的修复
- 非 HTTP 目标(数据库、SMB、隧道等)不再合成无意义的 HTTP 报文。
- 由真实报文推导命令行时保留查询串与鉴权头 —— 否则合出来的 curl 少了
Authorization,跑起来是 401。 - 逐条只列本条真正用到的凭据,不再把同资产上无关的接口 token 一并挂上。
- 面板与报告措辞统一为「复现步骤」「复现材料」,去掉内部记账口径的提示文案。
- 界面文案与报告小节名统一,报告页与导出 markdown 读到的结构一致。
四、新增脚本
node scripts/export-engagement-report.mjs --out ~/交付/<靶标>一条命令导出可移动的交付目录:报告 markdown + shots/ 证据图(相对路径引用)。
控制台「报告」页的「下载 .md」仍然可用(图片走绝对路径,适合本机查看)。
质量
零依赖回归测试 15 个文件 / 595 条断言全过(新增证据截图专项测试,覆盖"每个得分点最多 3 张"
"现场截图与生成卡片分标""图片不进库""面板与报告都能渲染出图"),build --check 无漂移。
升级
dsh plugin --profile web add dsh-redteam-mode # 或 update装完重启一次 dsh web。已有靶标的事实库、得分记录、报告与技能配置不受影响,不需要迁移 ——
新的证据截图表在打开靶标时自动创建。
v0.12.5
v0.12.5 — 控制台改版:页签精简、并发可配、技能不可用直接给修复方法
一、页签精简:12 → 9 个,相关的东西放在一起
| 原来的页签 | 现在在哪 |
|---|---|
| 当前测试 | 资产测绘页左侧,与「全部 C 段 / 外网资产 / 内网资产」同级(紫色「测」标记) |
| 智能体提示词 | 智能体页(并发配置、角色速览、提示词编辑同一页) |
| 攻击文件 | 漏洞战果页的子页签 |
旧的书签/链接(#testing / #attackfiles / #prompts)不会失效,会自动落到对应的合并后页面。
二、并发数量可以自己配了(默认 3)
控制台「智能体」页新增并发数量配置:填数字、保存,立即生效,不用再改环境变量重启 dsh web
(存 $DSH_HOME/redteam/settings.json,范围 1–10;闸门每次派活现读,面板会显示当前值来自哪里)。
⚠️ 调大不等于更快:同一个模型 API Key 的并发/速率上限是共享的,同时派太多会互相挤占,
表现为排队等待、超时、返回被截断甚至限流报错 —— 反而让测试结果不稳定。
建议从 2–3 开始,只有确认 Key 的额度足够、任务之间确实互不依赖时才调大。
三、技能库:不可用不再只说"哪里不行",而是直接告诉你"怎么修"
原来只列"缺口",现在每条不可用都写清 不可用原因 + 修复方法,例如:
- 缺工具 → 直接给装法(
bash $DSH_HOME/redteam/setup.sh --yes;系统工具给对应 apt 包名;
不在安装脚本清单里的给获取方式),并按缺失路径逐条列出缺的是哪个工具、干什么用的; - 缺
FOFA_KEY→ 给取 key 的入口与一条自测命令; - VPS 还是占位符 → 给三种填法(
REDTEAM_VPS_HOST/ 环境变量 / 直接编辑技能文件)。
覆盖面:54 个工具的安装/补配方法 + 23 份技能各自的额外修复步骤。
四、漏洞和攻击文件对上了
「漏洞战果」新增攻击文件子页签;每条漏洞的详情里新增关联攻击文件 ——
直接列出这条漏洞留下了哪些脚本 / 马 / EXP(类型、名称、说明、落盘路径)。
子页签顶部会提示还有多少文件没挂到漏洞上,方便补齐对应关系。
五、顺手修的
- 从「当前测试」切回资产列表时,点外网/内网分组或某个 C 段现在能正常切回去了。
- 「当前测试」的标记改用紫色,不再和外网资产(橙色)混在一起。
升级
dsh plugin --profile web add dsh-redteam-mode # 或 update装完重启一次 dsh web。已经有 0.12.4 的直接在控制台点「一键更新并重启」也行。
已有靶局的事实库、得分记录、报告与已配好的技能目录都不受影响,不需要迁移。
v0.12.4
v0.12.4 — 修复:更新按钮总是提示「当前是开发态安装」,点不动
解决了什么问题
在控制台点「检查更新」时,不管插件是怎么装的都会显示:
现在不能更新:
· 当前是开发态安装(profile 依赖里没有 dsh-redteam-mode,是源码软链/手动挂载的),
包管理器更新不适用。
于是「一键更新并重启」按钮一直是灰的,只能手动升级。原因是安装方式的判断写错了:
把 profile 目录当成文件路径去读,读不到就一律判成开发态。本版修好了这个误判 ——
正常安装(npm / pnpm / tarball)会正确识别为「包安装」,按钮可用。
本版改动
- 修正安装方式识别:正常安装不再被误判成开发态,更新按钮不再被无辜拦下。
- 本地源码安装也不再拦:如果你是自己 clone 仓库挂上去的,会提示"点击更新会把发布版
装进 profile,本地源码改动不再生效";点下去即可切到正式安装,之后一直能用一键更新。 - 更新执行更稳:首选包管理器不可用时自动改用另一个重试;安装后自动把插件登记进
profile 的 bundle 列表,避免"装了但重启后没生效"。
升级(本版需要手动升一次)
因为当前版本的更新按钮是坏的,升级到本版要用一次命令行:
dsh plugin --profile web add dsh-redteam-mode # 或 update装完重启一次 dsh web。从本版起,「一键更新」按钮可用了 —— 以后发新版直接在控制台点它,
自动安装并重启,不用再敲命令。
如果你是用源码挂载的开发态:
git pull && node packages/redteam-bundle/tools/build.mjs,
再重启dsh web;之后也可以直接点按钮切到发布版。
已有靶局的事实库、得分记录、报告与已配好的技能目录都不受影响,不需要迁移。
v0.12.3
v0.12.3 — 修复:DSH 0.1.7 及以上版本里控制台「技能库」打不开
解决了什么问题
在 DSH 0.1.7 及以上版本中,点开右侧控制台的技能库页签会报错、技能列表读不出来:
无法解析红队 preset 作用域:ctx.agentPresets.standingKeyFor is not a function
原因是 DSH 0.1.7 改了 preset 作用域的接口,而插件还在调旧接口。本版完成适配,
升级并重启 dsh web 后技能库恢复正常。资产库、控制台其它页签、工具与模式入口不受影响。
建议连同 0.12.1 一起理解:0.12.1 修的是"新会话里选不到「红队模式」",
本版修的是同一批 DSH 改动导致的"技能库打不开"。两个都升级才算完整适配 0.1.7+。
本版改动
- 技能库适配 DSH 0.1.7 起的 preset 接口变化,能正常列出「红队会话实际能用到的技能」
并读取技能正文;对旧版 DSH 保持兼容,行为不变。 - 保留原有的降级提示:万一将来接口再次变化,报错里会直接列出当前可用的方法名,便于定位。
兼容性
| 你的 DSH | 升级到本版后 |
|---|---|
| 0.1.7 及以上 | 技能库正常(本版修复的目标) |
| 0.1.6 及更低 | 行为不变,照常可用 |
升级
dsh plugin --profile web add dsh-redteam-mode # 或 update装完重启一次 dsh web(host 侧代码在启动时加载),然后打开右侧控制台的技能库确认。
已有靶局的事实库、得分记录、报告与已配好的技能目录都不受影响,不需要迁移。
v0.12.2
v0.12.2 — 内部整理,无功能变更
本版只做仓库与包内内容的整理,功能与 v0.12.1 完全一致,没有新增、修改或移除任何能力。
已经用 0.12.1 的话,不需要为了功能升级。
本版改动
- 清理代码与配置里的历史注释,只保留"这条约束是什么、为什么必须这样"的说明。
- 统一仓库内文档的口径(安装、版本对应关系)。
- 敏感值检查(发布前自检的一部分)改为从环境变量读取,仓库与包里不再保留任何密钥素材。
升级
dsh plugin --profile web add dsh-redteam-mode # 或 update如果你当前是 0.12.1,可以留在 0.12.1,功能上没有任何差别。