dsh-remote-rea:在 DSH 里通过 SSH 拉取远端二进制并用 REA 做静态逆向

前言

在 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。

安全边界与数据落盘

设计原则写得很明确:

  1. 只分析、不利用:不执行目标、不注入、不改写工件。
  2. 提权硬闸门:每条远端命令下发前检查,命中 sudo 或 --break-system-packages 会抛错且不下发。
  3. 写类 REA 操作:绑定表里没有带 mutates_artifact 的已核对 CLI,靠白名单选路,而非运行期按 effects 拦截。
  4. 口令不进工具参数:密码类认证只接受环境变量名 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 安装会被拒绝。

典型用法(流程)

  1. 用 remote_hosts 登记别名(可从 ~/.ssh/config 导入),必要时做 test 连通性检查。
  2. 对已知绝对路径调用 remote_fetch_binary,确认预检与 sha256 一致后再做深度分析。
  3. 调用 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 目录页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜