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

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

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

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

工具目录

分类

查看所有分类
Loading categories
Invoke-TheHash — PowerShell Pass The Hash 实用工具 | Kitploit
工具/GitHubGitHub/kevin-robertson/invoke-thehash
密码攻击横向移动后渗透利用网络安全渗透测试身份验证
GitHubkevin-robertson/invoke-thehash

Invoke-TheHash

PowerShell Pass The Hash 实用工具

查看仓库
1.8k3137年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Invoke-TheHash

Invoke-TheHash 包含用于执行哈希传递 WMI 和 SMB 任务的 PowerShell 函数。WMI 和 SMB 连接通过 .NET TCPClient 建立。认证通过将 NTLM 哈希传递给 NTLMv2 认证协议完成。客户端无需本地管理员权限。

要求

最低 PowerShell 2.0

导入

Import-Module ./Invoke-TheHash.psd1

或

. ./Invoke-WMIExec.ps1 . ./Invoke-SMBExec.ps1 . ./Invoke-SMBEnum.ps1 . ./Invoke-SMBClient.ps1 . ./Invoke-TheHash.ps1

函数

  • Invoke-WMIExec
  • Invoke-SMBExec
  • Invoke-SMBEnum
  • Invoke-SMBClient
  • Invoke-TheHash

Invoke-WMIExec

  • WMI 命令执行函数。
参数:
  • Target - 目标主机名或 IP 地址。
  • Username - 用于认证的用户名。
  • Domain - 用于认证的域。对于本地账户或在用户名后使用 @domain 时,不需要此参数。
  • Hash - 用于认证的 NTLM 密码哈希。此函数接受 LM:NTLM 或 NTLM 格式。
  • Command - 要在目标上执行的命令。如果未指定命令,该函数将仅检查用户名和哈希是否具有对目标 WMI 的访问权限。
  • Sleep - 默认 = 10 毫秒:设置函数的 Start-Sleep 值(以毫秒为单位)。
示例:

Invoke-WMIExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose

截图:

wmi

Invoke-SMBExec

  • SMB (PsExec) 命令执行函数,支持 SMB1、SMB2.1,支持或不支持 SMB 签名。
参数:
  • Target - 目标主机名或 IP 地址。
  • Username - 用于认证的用户名。
  • Domain - 用于认证的域。对于本地账户或在用户名后使用 @domain 时,不需要此参数。
  • Hash - 用于认证的 NTLM 密码哈希。此函数接受 LM:NTLM 或 NTLM 格式。
  • Command - 要在目标上执行的命令。如果未指定命令,该函数将仅检查用户名和哈希是否具有对目标 SCM 的访问权限。
  • CommandCOMSPEC - 默认 = 启用:在 Command 前添加 %COMSPEC% /C。
  • Service - 默认 = 20 字符随机:在目标上创建和删除的服务名称。
  • Sleep - 默认 = 150 毫秒:设置函数的 Start-Sleep 值(以毫秒为单位)。
  • Version - 默认 = Auto:(Auto,1,2.1)强制使用 SMB 版本。默认行为是进行 SMB 版本协商,如果目标支持,则使用 SMB2.1。
示例:

Invoke-SMBExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose

示例:

检查目标上的 SMB 签名要求。 Invoke-SMBExec -Target 192.168.100.20

截图:

smb

Invoke-SMBEnum

  • Invoke-SMBEnum 通过 SMB2.1(支持或不支持 SMB 签名)执行用户、组、NetSession 和共享枚举任务。
参数:
  • Target - 目标主机名或 IP 地址。
  • Username - 用于认证的用户名。
  • Domain - 用于认证的域。对于本地账户或在用户名后使用 @domain 时,不需要此参数。
  • Hash - 用于认证的 NTLM 密码哈希。此函数接受 LM:NTLM 或 NTLM 格式。
  • Action - (All,Group,NetSession,Share,User) 默认 = Share:要执行的枚举操作。
  • Group - 默认 = Administrators:要枚举的组。
  • Sleep - 默认 = 150 毫秒:设置函数的 Start-Sleep 值(以毫秒为单位)。
  • Version - 默认 = Auto:(Auto,1,2.1)强制使用 SMB 版本。默认行为是进行 SMB 版本协商,如果目标支持,则使用 SMB2.1。注意,仅签名检查适用于 SMB1。
示例:

Invoke-SMBEnum -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -verbose

截图:

invoke-smbenum

Invoke-SMBClient

  • SMB 客户端函数,支持 SMB2.1 和 SMB 签名。此函数主要用于提供 SMB 文件共享能力,适用于那些没有远程命令执行权限的哈希。此函数也可用于为 Invoke-WMIExec 和 Invoke-SMBExec 暂存 payload。请注意,Invoke-SMBClient 基于 .NET TCPClient,不使用 Windows SMB 客户端。Invoke-SMBClient 比 Windows 客户端慢得多。
参数:
  • Username - 用于认证的用户名。
  • Domain - 用于认证的域。对于本地账户或在用户名后使用 @domain 时,不需要此参数。
  • Hash - 用于认证的 NTLM 密码哈希。此函数接受 LM:NTLM 或 NTLM 格式。
  • Action - 默认 = List:(List/Recurse/Delete/Get/Put) 要执行的操作。
      • List: 列出目录内容。
      • Recurse: 递归列出目录及其所有子目录内容。
      • Delete: 删除文件。
      • Get: 下载文件。
      • Put: 上传文件,并将创建时间、访问时间和最后写入时间设置为与源文件一致。
  • Source
      • List 和 Recurse: 目录的 UNC 路径。
      • Delete: 文件的 UNC 路径。
      • Get: 文件的 UNC 路径。
      • Put: 要上传的文件。如果未指定完整路径,则文件必须位于当前目录。当使用 'Modify' 开关时,'Source' 必须是一个字节数组。
  • Destination
      • List 和 Recurse: 不使用。
      • Delete: 不使用。
      • Get: 如果使用,该值将是下载文件的新文件名。如果未指定完整路径,将在当前目录中创建文件。
      • Put: 上传文件的 UNC 路径。必须指定文件名。
  • Modify
      • List 和 Recurse: 函数将输出一个包含目录内容的对象。
      • Delete: 不使用。
      • Get: 函数将输出下载文件的字节数组,而不是将文件写入磁盘。建议仅对较小的文件使用此选项,并将输出发送到变量。
      • Put: 将一个字节数组上传到新的目标文件。
  • NoProgress - 禁止显示上传和下载进度条。
  • Sleep - 默认 = 100 毫秒:设置函数的 Start-Sleep 值(以毫秒为单位)。
  • Version - 默认 = Auto:(Auto,1,2.1)强制使用 SMB 版本。默认行为是进行 SMB 版本协商,如果目标支持,则使用 SMB2.1。注意,仅签名检查适用于 SMB1。
示例:

列出根共享目录的内容。 Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Source \\server\share -verbose

示例:

从根开始递归列出共享内容。 Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Recurse -Source \\server\share

示例:

递归列出共享子目录内容并将结果输出到变量。 $directory_contents = Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Recurse -Source \\server\share\subdirectory -Modify

示例:

删除共享上的文件。 Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Delete -Source \\server\share\file.txt

示例:

删除共享子目录中的文件。 Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Delete -Source \\server\share\subdirectory\subdirectory\file.txt

示例:

从共享下载文件。 Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Get -Source \\server\share\file.txt

示例:

从共享子目录下载文件并重命名。 Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Get -Source \\server\share\subdirectory\file.txt -Destination file.txt

示例:

从共享下载文件到字节数组变量(而非磁盘)。 $password_file = Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Get -Source \\server\share\file.txt -Modify

示例:

上传文件到共享子目录。 Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Put -Source file.exe -Destination \\server\share\subdirectory\file.exe

示例:

从字节数组变量上传文件到共享。 Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Put -Source $file_byte_array -Destination \\server\share\file.txt -Modify

截图:

invoke-smbclient

Invoke-TheHash

  • 用于对多个目标运行 Invoke-TheHash 函数的函数。
参数:
  • Type - 设置所需的 Invoke-TheHash 函数。设置为 SMBClient、SMBEnum、SMBExec 或 WMIExec 之一。
  • Target - 目标主机名、IP 地址、CIDR 表示法或 IP 范围列表。
  • TargetExclude - 要从目标列表中排除的主机名、IP 地址、CIDR 表示法或 IP 范围列表。
  • PortCheckDisable - (开关) 禁用 WMI 或 SMB 端口检查。由于此函数尚未多线程化,端口检查通过在尝试完整的同步 TCPClient 连接之前检查 WMI 或 SMB 端口是否开放来加速函数。
  • PortCheckTimeout - 默认 = 100:设置 WMI 或 SMB 端口检查的无响应超时时间(毫秒)。
  • Username - 用于认证的用户名。
  • Domain - 用于认证的域。对于本地账户或在用户名后使用 @domain 时,不需要此参数。
  • Hash - 用于认证的 NTLM 密码哈希。此模块接受 LM:NTLM 或 NTLM 格式。
  • Command - 要在目标上执行的命令。如果未指定命令,该函数将仅检查用户名和哈希是否具有对目标 WMI 或 SCM 的访问权限。
  • CommandCOMSPEC - 默认 = 启用:仅 SMBExec 类型。在 Command 前添加 %COMSPEC% /C。
  • Service - 默认 = 20 字符随机:仅 SMBExec 类型。在目标上创建和删除的服务名称。
  • SMB1 - (开关) 强制使用 SMB1。仅 SMBExec 类型。默认行为是进行 SMB 版本协商,如果目标支持则使用 SMB2。
  • Sleep - 默认 = WMI 10 毫秒,SMB 150 毫秒:设置函数的 Start-Sleep 值(以毫秒为单位)。
示例:

Invoke-TheHash -Type WMIExec -Target 192.168.100.0/24 -TargetExclude 192.168.100.50 -Username Administrator -Hash F6F38B793DB6A94BA04A52F1D3EE92F0

截图:

ithsmb

下载工具