前言¶
在 DSH(DeepSeek Harness)里做逆向相关任务时,常见做法是本机放好样本、再手动调用 Ghidra、IDA 或 REA 等工具链。样本在远程服务器或隔离环境时,需要先 SSH 登录、定位文件、拷到本地,再在会话里描述路径——步骤分散,也不利于智能体按统一契约回收结构化结果。
下面介绍社区插件 dsh-remote-rea(维护者 ccr-wer):在 DSH 内登记远程主机,经 SSH 预检并拉取目标文件,再调用远端 REA(及可选 Ghidra 等后端)做只读静态分析,把摘要与 Evidence 落到本地数据目录。插件强调「只分析、不利用」,不支持把 Windows 当作远端 shell 目标。
这是什么¶
dsh-remote-rea 是 DSH 生态下的「远程连接 + 逆向分析」插件,当前版本 0.1.1,以 MIT 发布。它在 SkillHub 上归类为模型推理相关能力;仓库地址:https://github.com/ccr-wer/dsh-remote-rea,目录页:https://www.skillhub.cn/plugins/ccr-wer/dsh-remote-rea。
宿主侧通过纯 JS 的 ssh2 连远端;分析侧依赖远端已安装的 Node 与 REA(或 npx rea-agents)。本插件不读取工具参数里的口令,主机库是后续拉取与分析的前置条件。
三个工具与调用关系¶
插件向 DSH 暴露三个工具,用法上需先维护主机别名,再拉取或分析。
| 工具 | 作用 | 关键入参 |
|---|---|---|
remote_hosts |
主机库增删改查:别名、认证方式、连通性 test、从 ~/.ssh/config 导入 |
action + alias 等 |
remote_fetch_binary |
预检(存在 / 大小 / 类型 / sha256)→ 拉取 → 本地复算 sha 比对 → 写 JSON 报告 | alias、remotePath(绝对路径) |
remote_rea_analyze |
拉取后探测能力面、选 provider/operation、下发分析子命令、Evidence 落盘并出摘要 | alias、remotePath、可选 provider |
remote_rea_analyze 未指定 provider 时会自动路由,选路范围是「REA 广告面」与「已用 --help 核对过的 CLI 绑定」的交集;缺一项则不会下发对应子命令。
支持范围与预检行为¶
宿主:Windows / macOS / Linux 均可;Node >=18(package.json 声明,作者开发环境为 Windows 侧 24.x 与 WSL 侧 22.22.1)。
远端:
- 操作系统须为 POSIX shell(Linux / macOS)。运行时若探测到
MINGW*/MSYS*/CYGWIN*/Windows*,会直接拒绝,提示使用 POSIX shell 目标。 - 远端 Node 须为 22.19+ / 24.11+ / 26+(不支持 23 和 25);不达标时只报版本要求,不下发任何 rea 命令。
- 远端需要 GNU coreutils 或可降级的子集;
stat、file等在 BSD/macOS 上有 documented 的降级路径(例如大小用wc -c,类型失败则按扩展名猜测并在 note 中说明)。
若远端既无全局 rea 也无 npx,会提示安装 Node 22.19+ 或全局安装 rea。
安全边界与数据落盘¶
设计原则写得很明确:
- 只分析、不利用:不执行目标、不注入、不改写工件。
- 提权硬闸门:每条远端命令下发前检查,命中
sudo或--break-system-packages会抛错且不下发。 - 写类 REA 操作:绑定表里没有带
mutates_artifact的已核对 CLI,靠白名单选路,而非运行期按 effects 拦截。 - 口令不进工具参数:密码类认证只接受环境变量名
passwordEnv;列表/详情为脱敏投影。
数据根目录优先级:$REVERSE_HOME → $DSH_HOME → ~/.reverse。
- 报告:
<数据根>/reports/fetch-<alias>-<ts>.json、analyze-<alias>-<ts>.json - 拉取样本:
<数据根>/targets/<文件名> - Evidence:
<数据根>/evidence/<evidence_id>.json,路径写在报告的analysis.evidencePath
工具返回体不含远端原始 stdout 或全量 Evidence,只给摘要与路径。
安装与启用¶
在 DSH 主目录下安装并挂载(命令来自项目 README):
cd <DSH home> && DSH_HOME=<DSH home> dsh plugin --profile web add dsh-remote-rea
cd <项目根> && DSH_HOME=<DSH home> dsh --profile web --host 127.0.0.1 --no-open
ssh2 / cpu-features 需要 pnpm 允许构建脚本。在 profile 的 pnpm-workspace.yaml 中增加:
allowBuilds:
cpu-features: true
ssh2: true
装完后需重启 dsh web 并强制刷新浏览器。若使用 desktop profile,插件由 Electron 应用内管理,命令行对该 profile 安装会被拒绝。
典型用法(流程)¶
- 用
remote_hosts登记别名(可从~/.ssh/config导入),必要时做test连通性检查。 - 对已知绝对路径调用
remote_fetch_binary,确认预检与 sha256 一致后再做深度分析。 - 调用
remote_rea_analyze;需要 Ghidra 深分析且环境就绪时,可显式传provider:"ghidra"(见下文限制)。
需要真机回归时,仓库提供分步测试脚本(如 node test/run-controller-tests.mjs、node test/run-analyze-tests.mjs 等),可通过 --alias 与 --store 指向已登记的主机库。
Ghidra 与其它已知限制¶
使用前建议通读 README 中的「已知限制」:
- Ghidra 路径已接入但未在作者环境实装验证;自动选路不包含 Ghidra,仅显式
provider:"ghidra"且 REA readiness 判可用时才走。需自备 Ghidra 12.1.x 解包目录并设置GHIDRA_INSTALL_DIR,以及 PATH 上的 JDK 21。 rea-artifact-graph的findings=0是结构性的,深度分析仍主要依赖 Ghidra 路线。- 冷缓存预热可能长达数分钟;默认
npxTimeoutMs为 600000,可按调用覆盖。 npx --yes rea-agents@latest版本可能漂移,排查时可锁具体版本号。
适用场景与注意¶
适合:已在 DSH 会话中工作、样本在 Linux/macOS 远端、希望由智能体按工具契约完成「登记主机 → 拉取 → REA 静态分析 → 本地结构化落盘」的团队或个人。
注意:
- 插件以当前 DSH 进程权限运行;安装前请阅读 源码 与许可证,并理解 SSH 与远端命令的实际影响。
- SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系;星标与分类信息以目录页为准。
pnpm peers check对@deepseek-ai/dsh-tools/@deepseek-ai/cordis的 missing peer 在 DSH profile 下可能是静态误报,实际由 DSH 运行时提供,落在 peer 范围内可忽略。
结尾¶
dsh-remote-rea 把远程样本获取与 REA 逆向分析收进 DSH 的三个工具里,用主机库、预检、sha 校验和提权闸门约束操作面,适合「只分析、不利用」的 POSIX 远端场景。进一步了解实现细节与测试方式,见 GitHub 仓库 与 SkillHub 目录页。