☰
Viper 横向移动实战:基于 Invoke-WMIExec 的 NTLM 哈希传递(Pass-the-Hash)
2026/10/13 1:57:42 网站建设 项目流程
  • 文档
  • 教程
  • 网络安全

【免费下载链接】Viper

Adversary simulation and Red teaming platform with AI

项目地址:https://gitcode.com/gh_mirrors/vip/Viper
点击查看免费下载

导读

本篇技术指南围绕 Viper 平台内置的「Invoke-WMIExec 哈希传递」模块展开,讲解如何利用已知用户名与 NTLM 哈希,通过 WMI 协议在目标 Windows 主机上以内存方式执行载荷并建立会话(Session)。该模块是内网横向移动阶段「基于凭证利用」路径中的典型实现,相比 Viper 中的「WMI 哈希传递」模块,它无需向当前主机上传任何文件,隐蔽性更好。读完本文你将掌握:Pass-the-Hash 在 Viper 中的完整操作流程、该模块与 WMI 明文传递/Sharpwmi/PSEXEC 等同类模块的差异选型、凭证来源(内存哈希抓取与凭据管理),以及横向移动失败时的排查思路。

模块定位:内网横向移动中的凭证利用

在 内网横向渗透 的完整链路中,获取第一台主机(跳板机)的 Session 只是起点。后续横向移动通常分为两类路径:

  • 基于漏洞的利用:如 MS17-010、WebLogic RCE 等;
  • 基于凭证的利用:使用已获取的明文密码、NTLM 哈希或会话令牌对其他主机发起认证,如 SMB、MSSQL、MySQL 以及本文讲解的 WMI 方式。

「Invoke-WMIExec 哈希传递」即属于第二类——在已经掌握目标主机合法账号与 NTLM 哈希的前提下,不依赖任何漏洞即可远程执行载荷,这正是 Pass-the-Hash 攻击思想在 Windows 内网环境中的典型落地。

模块官方定义为:

使用已知的用户名及 NTLM 哈希,通过 WMI 方式在目标主机执行载荷;模块在内存中执行 Invoke-WMIExec 方式调用 WMI,相较于「WMI 哈希传递」无需上传文件。

见 LateralMovement_PassTheHash_ByInvokeWMIExec.md。

原理剖析:哈希传递如何通过 WMI 落地

Pass-the-Hash 的本质

在 Windows 域环境中,NTLM 认证协议允许直接使用密码的哈希值进行身份验证,而不需要还原明文密码。攻击者只要获得某账号的 NTLM 哈希(例如通过内存抓取或 SAM 数据库提取),即可冒充该账号访问目标主机的远程管理服务。Viper 的该模块正是把「用户名 + NTLM 哈希」这对凭证作为输入,交给远程执行通道使用。

为什么选择 WMI

WMI(Windows Management Instrumentation)是 Windows 内置的管理框架,可通过标准 RPC 接口远程调用,允许执行进程、查询系统状态等。使用 WMI 做横向移动的优势在于:

  • Windows 系统默认自带,无需额外安装客户端;
  • 属于系统管理协议,通常不会被当作明显恶意行为;
  • 与 PsExec(依赖 SMB 管理共享)相比,不依赖 ADMIN$ 共享的访问权限。

内存执行的意义

模块说明中特别强调「内存执行 Invoke-WMIExec」。这里的 Invoke-WMIExec 是业界流行的 WMI 远程执行 PowerShell 脚本实现(常见于 Invoke-TheHash 工具集),其核心思想是在当前会话进程中直接构造 WMI 调用,并在目标主机上通过 powershell.exe 加载载荷。关键对比点在于:

  • 传统实现(如 Viper 的「WMI 哈希传递」)需要把 dswmiexec.exe 上传到当前主机再执行,会留下落盘文件,也更容易触发 AV 主动防御提示;
  • 本模块全程在内存中完成调用,无需向当前主机或目标主机上传任何文件,降低被查杀的暴露面。

该对比关系直接来源于仓库中两个模块的官方说明:WMI 哈希传递 明确写道「模块将 dswmiexec.exe 上传到当前主机,通过 dswmiexec.exe 调用对方主机的 powershell.exe,AV 主动防御可能会提示风险」,而本文主题模块的定位即「无需上传文件」的替代方案。

前置条件与适用场景

在运行该模块前,建议先确认以下条件,这与仓库横向移动文档给出的通用前提一致:

  1. 拥有目标主机的合法凭证:至少需要一个已知的用户名及其 NTLM 哈希。哈希来源见下文「凭证从哪来」小节。
  2. 目标主机网络可达:WMI 远程调用需要能连通目标主机的 135/RPC 端口及相关动态端口。若 Viper 服务器无法直连目标,需先通过已控 Session 配置内网路由,Viper 的监听、横向移动、漏洞扫描等功能会自动使用路由连接内网地址。
  3. 目标账号具备远程 WMI 权限:通常要求目标账号属于 Administrators 组或具有相应 DCOM 权限,否则认证虽成功但无法执行。
  4. 目标主机 PowerShell 可用:载荷加载依赖目标主机上的 powershell.exe。

操作方法:完整操作流程

模块位于 Viper 的横向移动(Lateral Movement)模块分类下。整体操作分为「选择模块 → 填写配置 → 执行 → 确认 Session」四步:

  1. 进入模块页面:在模块列表中检索Invoke-WMIExec或哈希传递,打开「Invoke-WMIExec 哈希传递」模块。下方截图展示了模块的操作界面与执行结果。

  1. 填写目标与凭证:在配置区依次填入目标主机 IP(或网段)、用户名以及对应的 NTLM 哈希。哈希以 Windows 抓取后常见的哈希格式填入即可。
  2. 选择监听器:为载荷指定一个监听器。若目标主机无法直接回连 Viper(如目标处于 NAT 之后),可参考横向移动文档的常见问题建议——使用正向监听(bind_xxx 类型)尝试利用。
  3. 执行并等待:提交执行后模块会在内存中调用 WMI 向目标主机发起远程 PowerShell 载荷加载。WMI 上线速度相对较慢,可参考 Viper「WMI 明文传递」模块的说明:需要等待约 20 秒确认是否有 Session 上线。

提示:若模块提示 PowerShell 命令超长,请改用 stager 类型监听器(先回连加载器,再在内存中下载并执行完整载荷),这是 Viper 同类 WMI 模块文档中共同给出的建议。

同类模块选型对比

Viper 模块目录下同时提供了多条 WMI/哈希传递类横向移动通道,各自实现与暴露面不同。为了便于选型,基于仓库对应模块文档整理如下对比:

模块远程执行方式本地落盘认证凭证主要风险/说明
Invoke-WMIExec 哈希传递内存调用 Invoke-WMIExec,目标 powershell.exe 加载载荷无文件上传用户名 + NTLM 哈希隐蔽性较好,本文主题
WMI 哈希传递上传 dswmiexec.exe 后调用目标 powershell.exe上传 dswmiexec.exeSession Token 或用户名密码AV 主动防御可能提示风险;模块说明提示无需内网路由
WMI 明文传递调用本机 wmic.exe + 目标 powershell.exe无Session Token 或用户名密码调用系统 wmic.exe,AV 会提示风险;WMI 上线较慢需等 20 秒
Sharpwmi 横向移动内存执行定制 Sharpwmi.exe,调用目标 powershell.exe无指定用户名密码或当前用户内存哈希相比 WMI 明文传递不调用本地 wmic.exe
PSEXEC 明文/哈希传递基于 SMB 管理共享的 PsExec 方式—哈希及密码依赖 SMB 通道

从上表可以看出选型逻辑:

  • 追求隐蔽、已有哈希→ 首选本文的 Invoke-WMIExec 哈希传递;
  • 无哈希但已控主机可上传工具→ 可退而求其次使用 WMI 哈希传递(注意其上传动作可能触发 AV);
  • 只有明文密码且接受 AV 告警→ WMI 明文传递(调用系统 wmic.exe);
  • 希望内存执行且凭证灵活→ Sharpwmi 横向移动(支持内存哈希、手动输入、凭据库三种凭证来源)。

说明:各模块文档中「无需内网路由」的表述,指的是该通道由已控 Session 主机直接向外发起连接、不依赖 Viper 服务端到目标的路由;若执行载体是 Viper 服务端,仍需按内网路由配置打通到目标的路径。

凭证从哪来:为哈希传递准备弹药

Pass-the-Hash 的核心输入是「用户名 + NTLM 哈希」,Viper 生态内获取凭证的常见路径包括:

  1. 内存哈希抓取:通过 获取 Windows 内存哈希 模块(基于 Hashdump 从内存与 SAM 数据库提取哈希)。该文档同时提醒:对于域控主机,Hashdump 的耗时与域用户数量成正比,域越大耗时越长。
  2. Kiwi 明文/哈希抓取:凭证抓取工具 kiwi 可在已控 Windows 主机上抓取明文密码或哈希,为后续渗透做准备,详见横向渗透文档中的「本机密码」环节。
  3. 凭据管理集中维护:抓取到的密码/哈希会自动存入 Viper 的凭证管理页面;该页面支持手动添加用户名与密码/哈希,添加后这些凭证即可被模块直接引用,无需重复填写。

推荐的标准流程是:已控主机 → 抓取内存哈希 → 存入凭据管理 → 在本模块中选择/填入该哈希 → 对内网其他主机发起横向移动,形成「一次抓取、多处复用」的攻击链。

故障排查与注意事项

结合仓库横向渗透文档的「常见问题」与各 WMI 模块的官方提示,实践中需重点留意:

  1. 未获取到 Session:凭证可能无法登录目标主机,或利用通道本身受限。文档给出的两条核心排查方向:一是确认凭证与目标账号权限;二是若目标主机无法直接回连 Viper,改用正向监听(bind_xxx)尝试利用。
  2. WMI 上线慢:WMI 通道建立会话较慢,需要等待约 20 秒确认,不要过早判定失败。
  3. PowerShell 命令超长:改用 stager 类型监听,避免把完整载荷内联到远程命令中。
  4. 防火墙与端口:目标主机的 WMI/RPC 端口(135 及动态端口)需可访问,必要时先通过内网路由打通连接。
  5. AV 告警:相比上传 dswmiexec.exe 的方案,本模块内存执行方式已规避文件落盘,但远程 PowerShell 加载行为本身仍可能被主机侧的 EDR/AV 关注,实战中应结合免杀与流量规避手段使用。

相关文档与进一步阅读

  • 模块官方说明:LateralMovement_PassTheHash_ByInvokeWMIExec.md(英文)、(中文)
  • 横向渗透完整方法论:内网横向渗透
  • 同类对比:WMI 哈希传递、WMI 明文传递、Sharpwmi 横向移动、PSEXEC 明文/哈希传递
  • 凭证来源:获取 Windows 内存哈希、凭证管理、内网路由配置
  • 文档
  • 教程
  • 网络安全

【免费下载链接】Viper

Adversary simulation and Red teaming platform with AI

项目地址:https://gitcode.com/gh_mirrors/vip/Viper
点击查看免费下载

相关推荐

上一篇:Apache MXNet 社区贡献指南:从搭建开发环境到提交正式 Pull Request 的完整流程
下一篇:重新定义翻译体验:免秘钥无限次使用的DeepL翻译插件

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询