このスクリプトの目的は、通常、Windowsの構成の問題または悪い慣行によるものであるローカル特権エスカレーション(LPE)の脆弱性を特定することを目的としています。また、いくつかの搾取および爆発後のタスクに役立つ情報を収集することもできます。
スクリプトをダウンロードしてターゲットWindowsマシンにコピーした後、以下のコマンドのいずれかを使用して実行します。
注記
リポジトリ全体をクローンする必要はありません。ファイルPrivescCheck.ps1は、実行するためにPrivescCheckが必要とするすべてのコードを含むスタンドアロンPowerShellスクリプトです。
重要
以下のコマンドでは、最初のコマンド. (DOT)は、スクリプトの「ドットソーシング」に使用されるため、関数とcmdletsを現在の範囲で使用できます(PowerShell DOT Sourcing機能を参照)。
地元の特権エスカレーションの脆弱性など、重要な問題をすばやく特定します。
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck "重要な問題を特定するだけでなく、追加情報を収集し、結果を保存して読みやすいファイルを報告します。
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML "拡張および監査チェックを実行し、結果を人間の読み取り可能なレポートに保存しますが、自動レポート生成のために後で解析できます。
powershell -ep bypass -c " . .PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML,CSV,XML " PrivesCcheckで実装されているすべてのチェックにはタイプがあります。この値、およびコマンドラインで指定されたフラグは、それらが実行されているかどうかを決定します。
スクリプトが管理者として実行されない限り、タイプBaseのチェックは常に実行されます。それらは、主に特権エスカレーションの脆弱性、またはその他の重要な問題を特定することを目的としています。
Extended型のチェックは、オプション-Extendedコマンドラインで指定されている場合にのみ実行できます。これらは主に、開発や爆発後の活用に役立つ可能性のある追加情報を提供することを目的としています。
型Auditのチェックは、オプション-Auditがコマンドラインで指定されている場合にのみ実行できます。それらは主に、構成監査のコンテキストで関連する情報を提供することを目的としています。
タイプのExperimentalのチェックは、コマンドラインでオプション-Experimentalが指定されている場合にのみ実行できます。これらは、さらなる作業が必要な不安定なチェックです。注意して使用してください。
デフォルトでは、PowerShellの実行ポリシーは、クライアントにRestrictedように設定され、新しいpowershell.exeプロセスが開始されたときにサーバーにRemoteSigned 。これらのポリシーは、(署名されていない)スクリプトの実行をブロックしますが、次のように現在の範囲内でオーバーライデンすることができます。
Set-ExecutionPolicy Bypass - Scope Process - Force
. .PrivescCheck.ps1ただし、このトリックは、実行ポリシーがGPOを介して施行されている場合には機能しません。この場合、新しいPowerShellセッションを開始した後、次のようにスクリプトをロードできます。
Get-Content .PrivescCheck.ps1 | Out-String | Invoke-Expression制約付き言語モードをバイパスする一般的な方法は、この保護を実装しないため、PowerShellバージョン2の開始にあります。したがって、開発努力の重要な部分は、この互換性を維持することにかかっています。
注記
PowerShellバージョン2は、最近のバージョンのWindowsでデフォルトで引き続き有効になっていますが、手動インストールが必要な.NET Frameworkバージョン2.0なしでは実行できません。
このスクリプトをMeterPreterセッション内で実行すると、「タイムアウト」エラーが発生する可能性があります。 Metasploitには「応答タイムアウト」値があり、デフォルトでは15秒に設定されていますが、このスクリプトはほとんどの環境で実行するのにもっと時間がかかります。
meterpreter > load powershell
Loading extension powershell...Success.
meterpreter > powershell_import /local/path/to/PrivescCheck.ps1
[+] File successfully imported. No result was returned.
meterpreter > powershell_execute "Invoke-PrivescCheck"
[-] Error running command powershell_execute: Rex::TimeoutError Operation timed out. sessionsコマンド(ドキュメント)の-tオプションのおかげで、異なる値を設定することができます。次の例では、ID 1でのセッションには2分のタイムアウトが設定されています。
msf6 exploit(multi/handler) > sessions -t 120 -i 1
[*] Starting interaction with 1...
meterpreter > powershell_execute "Invoke-PrivescCheck"