
アクティブなユーザーセッションに関する情報をリモートコンピューターから取得して表示します。管理者権限は不要です。
このツールは、リモートレジストリサービスを利用して、リモートコンピューター上の 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 は、リモートレジストリが 2000ms(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