SessionExec を使用すると、コマンド出力を抑制するオプションを使用して、特定のセッション ID またはすべてのセッションを対象として、Windows システム上の他のセッションで指定されたコマンドを実行できます。
このツールは、James Forshaw によってずっと前にリリースされた EOP COM Session Moniker エクスプロイト コードに触発されています。
SessionExec は、Windows API を利用してセッション情報をクエリし、それらのセッション内にプロセスを作成します。
Visual Studio のビルド ツールから次のコマンドを実行して SessionExec.cs をコンパイルします。
csc /reference:System.Runtime.InteropServices.dll /reference:System.Runtime.InteropServices.RuntimeInformation.dll SessionExec.cs /out:SessionExec.exe
または、同じスクリプトであるInvoke-SessionExec.ps1
を使用することもできますが、Reflective Load メソッドを使用してメモリ内で実行されます。
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/Leo4j/SessionExec/main/Invoke-SessionExec.ps1')
The-Viper-One によってコーディングされたこのツールの純粋な PowerShell 実装もここで見つけることができます。
SessionExec.exe[/NoOutput]
Invoke-SessionExec[/NoOutput]
quser
コマンドを使用して、どのセッションが使用可能であるかを確認します。次に、特定のセッションまたはAll
セッションでコマンドを実行します。
自分がネットワーク内の 1 つまたは複数のマシンのローカル管理者であり、それらのターゲットにユーザー セッションがある場合は、SessionExec と Find-LocalAdminAccess を一緒に使用して、それらのユーザーのいずれかがネットワーク内の他のマシンに対してローカル管理者アクセス権を持っているかどうかを確認できます。ネットワーク。
存在する場合は、それらのマシン上でセッションを持つユーザーに対してこのプロセスを繰り返すことができます。この一連のアクションは、理論的にはドメイン全体の侵害につながる可能性があります。
さらに、Amnesiac を使用してシェルを取得したり、NTLMv2 ハッシュをキャプチャして中継したり、TGT を取得したりするなど、すべて自動化された方法で行うことができます。
私はこのコンセプトを Amnesiac に実装し、The-Viper-One と協力して PsMapExec にも実装することに取り組んでいます。
現時点では、概念実証 (PoC) を以下に示します。