- 文档
- 教程
- 网络安全
【免费下载链接】Viper
Adversary simulation and Red teaming platform with AI
导读
本篇技术指南围绕 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 主动防御可能会提示风险」,而本文主题模块的定位即「无需上传文件」的替代方案。
前置条件与适用场景
在运行该模块前,建议先确认以下条件,这与仓库横向移动文档给出的通用前提一致:
- 拥有目标主机的合法凭证:至少需要一个已知的用户名及其 NTLM 哈希。哈希来源见下文「凭证从哪来」小节。
- 目标主机网络可达:WMI 远程调用需要能连通目标主机的 135/RPC 端口及相关动态端口。若 Viper 服务器无法直连目标,需先通过已控 Session 配置内网路由,Viper 的监听、横向移动、漏洞扫描等功能会自动使用路由连接内网地址。
- 目标账号具备远程 WMI 权限:通常要求目标账号属于 Administrators 组或具有相应 DCOM 权限,否则认证虽成功但无法执行。
- 目标主机 PowerShell 可用:载荷加载依赖目标主机上的 powershell.exe。
操作方法:完整操作流程
模块位于 Viper 的横向移动(Lateral Movement)模块分类下。整体操作分为「选择模块 → 填写配置 → 执行 → 确认 Session」四步:
- 进入模块页面:在模块列表中检索
Invoke-WMIExec或哈希传递,打开「Invoke-WMIExec 哈希传递」模块。下方截图展示了模块的操作界面与执行结果。
- 填写目标与凭证:在配置区依次填入目标主机 IP(或网段)、用户名以及对应的 NTLM 哈希。哈希以 Windows 抓取后常见的哈希格式填入即可。
- 选择监听器:为载荷指定一个监听器。若目标主机无法直接回连 Viper(如目标处于 NAT 之后),可参考横向移动文档的常见问题建议——使用正向监听(bind_xxx 类型)尝试利用。
- 执行并等待:提交执行后模块会在内存中调用 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.exe | Session 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 生态内获取凭证的常见路径包括:
- 内存哈希抓取:通过 获取 Windows 内存哈希 模块(基于 Hashdump 从内存与 SAM 数据库提取哈希)。该文档同时提醒:对于域控主机,Hashdump 的耗时与域用户数量成正比,域越大耗时越长。
- Kiwi 明文/哈希抓取:凭证抓取工具 kiwi 可在已控 Windows 主机上抓取明文密码或哈希,为后续渗透做准备,详见横向渗透文档中的「本机密码」环节。
- 凭据管理集中维护:抓取到的密码/哈希会自动存入 Viper 的凭证管理页面;该页面支持手动添加用户名与密码/哈希,添加后这些凭证即可被模块直接引用,无需重复填写。
推荐的标准流程是:已控主机 → 抓取内存哈希 → 存入凭据管理 → 在本模块中选择/填入该哈希 → 对内网其他主机发起横向移动,形成「一次抓取、多处复用」的攻击链。
故障排查与注意事项
结合仓库横向渗透文档的「常见问题」与各 WMI 模块的官方提示,实践中需重点留意:
- 未获取到 Session:凭证可能无法登录目标主机,或利用通道本身受限。文档给出的两条核心排查方向:一是确认凭证与目标账号权限;二是若目标主机无法直接回连 Viper,改用正向监听(bind_xxx)尝试利用。
- WMI 上线慢:WMI 通道建立会话较慢,需要等待约 20 秒确认,不要过早判定失败。
- PowerShell 命令超长:改用 stager 类型监听,避免把完整载荷内联到远程命令中。
- 防火墙与端口:目标主机的 WMI/RPC 端口(135 及动态端口)需可访问,必要时先通过内网路由打通连接。
- AV 告警:相比上传 dswmiexec.exe 的方案,本模块内存执行方式已规避文件落盘,但远程 PowerShell 加载行为本身仍可能被主机侧的 EDR/AV 关注,实战中应结合免杀与流量规避手段使用。
相关文档与进一步阅读
- 模块官方说明:LateralMovement_PassTheHash_ByInvokeWMIExec.md(英文)、(中文)
- 横向渗透完整方法论:内网横向渗透
- 同类对比:WMI 哈希传递、WMI 明文传递、Sharpwmi 横向移动、PSEXEC 明文/哈希传递
- 凭证来源:获取 Windows 内存哈希、凭证管理、内网路由配置
- 文档
- 教程
- 网络安全
【免费下载链接】Viper
Adversary simulation and Red teaming platform with AI
相关推荐
claude-red 横向移动技能实战:Pass-the-Hash、NTLM Relay 与内网隧道渗透方法论
claude red 横向移动技能实战:Pass the Hash、NTLM Relay 与内网隧道渗透方法论 本指南以开源技能库 claude red 的 S
AI 技能网络安全渗透测试红蓝对抗应用安全espeak-ng 嵌入式TTS实战:从交叉编译到树莓派传感器播报
espeak ng 嵌入式TTS实战:从交叉编译到树莓派传感器播报 场景切入:50MB 空闲空间,传感器数据要出声 板卡的 SD 卡只剩 50MB 空闲,而你搭
语音音频Viper 横向移动实战:MS17-010(Eternalblue CSharp)利用模块详解
Viper 横向移动实战:MS17 010(Eternalblue CSharp)利用模块详解 本文聚焦 Viper 红队平台内置的 MS17 010 利用(C
文档教程网络安全
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考