检索并显示远程计算机上活跃用户会话的信息。无需管理员权限。
该工具利用远程注册表服务查询远程计算机上的 HKEY_USERS 注册表配置单元。它识别并提取与活跃用户会话关联的安全标识符(SID),并将其转换为相应的用户名,从而提供当前登录用户的信息。
如果提供了 -CheckAdminAccess 开关,它将通过 Invoke-WMIRemoting 认证到您拥有本地管理员访问权限的目标来收集会话(这很可能检索到更多结果)。
需要注意的是,远程注册表服务必须在远程计算机上运行才能使该工具正常工作。在我的测试中,如果该服务已停止但其启动类型设置为“自动”或“手动”,则一旦查询,该服务将在目标计算机上自动启动(这是原生行为),并检索到会话信息。如果设置为“已禁用”,则无法从目标检索任何会话信息。
在内存中加载 Invoke-SessionHunter
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/Leo4j/Invoke-SessionHunter/main/Invoke-SessionHunter.ps1')
如果在没有参数或开关的情况下运行,它将通过查询当前域中所有计算机的远程注册表来检索活跃会话
Invoke-SessionHunter
通过认证到您拥有本地管理员访问权限的目标来收集会话(在目标上运行 'klist sessions' 命令)
Invoke-SessionHunter -CheckAsAdmin
您可以按以下格式提供凭据
Invoke-SessionHunter -CheckAsAdmin -UserName "ferrari\Administrator" -Password "P@ssw0rd!"
Invoke-SessionHunter 设计用于将您的主机、当前用户以及提供的用户名排除在范围之外。
因此,它们不会出现在检索到的会话中。
如果您希望将它们包含在检索结果中,请提供 -ShowAll 和/或 -IncludeLocalHost 开关。
Invoke-SessionHunter -ShowAll -IncludeLocalHost
Invoke-SessionHunter 将跳过任何远程注册表在 2000 毫秒(2 秒)内未能响应的目标。
您可以通过提供 -Timeout 参数来控制超时时间 | 默认值 = 2000,对于较慢的网络请增大此值。
Invoke-SessionHunter -Timeout 5000
使用 -Match 开关仅显示您拥有管理员访问权限且存在特权用户登录的目标
Invoke-SessionHunter -Match
所有开关均可组合使用
Invoke-SessionHunter -CheckAsAdmin -UserName "ferrari\Administrator" -Password "P@ssw0rd!" -Timeout 5000 -Match

Invoke-SessionHunter -Domain contoso.local
Invoke-SessionHunter -Targets "DC01,Workstation01.contoso.local"
Invoke-SessionHunter -Targets c:\Users\Public\Documents\targets.txt
Invoke-SessionHunter -Servers
Invoke-SessionHunter -Workstations
Invoke-SessionHunter -Hunt "Administrator"
Invoke-SessionHunter -RawResults
注意:如果主机不可达,可能会挂起一段时间
Invoke-SessionHunter -NoPortScan