mRemoteNG 连接配置解密
mRemoteNG 是 Windows 上常用的远程连接聚合器,把 SSH、RDP 等连接与凭据集中存放在一个 XML 配置里。通过 LFI、路径穿越读到这个文件,就可能一次性恢复多台主机的登录凭据。
仅限授权环境
配置解密与凭据重放仅用于授权评估与取证环境,解出的凭据不得扩散。
定位配置文件
配置默认存于:
%APPDATA%\mRemoteNG\confCons.xml
通过 LFI/路径穿越读 Windows 文件时,高价值目标包括:
| 文件 | 价值 |
|---|---|
%APPDATA%\mRemoteNG\confCons.xml | 连接与凭据主体 |
%APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt | PowerShell 历史,能看出运维装过 mRemoteNG |
读取手法见 LFI 任意文件读取与运行时信息收集。
配置结构
每个连接对应一个 Node 节点:
<Node ... Username="..." Password="<base64密文>" Protected="<base64>" />
Protected 字段解密后为 ThisIsNotProtected 时,表示该节点没有额外加密,字段按常规方式处理即可。
加密机制
| 要素 | 值 |
|---|---|
| 主密码 | 默认 mR3m,大量环境从未修改 |
| 密钥派生 | PBKDF2-HMAC-SHA1,1000 轮 |
| 块加密 | AES-256-CBC(旧版)或 AES-256-GCM(新版) |
GCM 的坑:salt 必须作为 AAD 参与认证。漏掉会报 MAC check failed,很容易误判成"主密码不对"。
解密脚本要点
- 先按 GCM 解(salt 作为 AAD),失败再回退 CBC。
- 确认默认密码是否生效:解出
ThisIsNotProtected即默认密码mR3m有效。 - 解出各节点的 Username / Password 字段。
凭据重放
解出的 Username / Password 组合可直接重放到 SMB、WinRM、RDP 等远程管理协议,验证哪些连接配置里是真实有效凭据。
复核要点
- 看到
MAC check failed先检查 AAD 是否带上,再怀疑密码。 - 混用新旧版本配置时,注意 CBC / GCM 块加密模式差异。
- 解密成功的标志是拿到可读的 Username / Password,而不是仅仅不报错。
防御建议
- 修改默认主密码
mR3m,并保证足够长度。 - 收紧配置文件 ACL,限制
%APPDATA%\mRemoteNG的读取范围。 - 凭据不落盘:使用 DPAPI 或外部凭据库保存连接凭据。
- 对含凭据的配置文件启用审计与异常读取告警。