
Windows権限昇格ツール。SeImpersonate特権を名前付きパイプの偽装を介して悪用し、複数の実行方法(CreateProcessWithTokenW、CreateProcessAsUserW、CreateUser、BindShell)によるSYSTEMアクセスをサポートします。
まず初めに、@splinter_code 氏と @decoder_it 氏に感謝します。RoguePotato を基にしています。このコードはそれに大きく依存しています。
これは SeImpersonate 権限を使用して SYSTEM を取得するための、また別の Potato です。しかし、以下の点で異なります。
CreateProcessWithTokenW だけを使用するわけではありません。代わりに、CreateProcessWithTokenW、CreateProcessAsUserW、CreateUser、BindShell から選択できます。このプロジェクトは、名前付きパイプサーバーを開き、接続する任意のユーザーを偽装し、その後上記のオプションのいずれかを実行します。将来、新しい SYSTEM 認証トリガーが公開された場合でも、このツールは権限昇格に使用できます。その場合、別のパイプ名を使用するだけです。
例:
c:\temp\MultiPotato> MultiPotato.exe -t CreateUser
デフォルトでは、SYSTEM アカウントまたは他のアカウントが認証できるように 60 秒(THEAD_TIMEOUT で変更可能)の時間があります。これは、例えばパッチ未適用の MS-EFSRPC 関数を介して行うことができます。デフォルトでは、MultiPotato はパイプ名 \\.\pipe\pwned/pipe/srvsvc をリッスンします。これは MS-EFSRPC と組み合わせて使用することを目的としています。他の SYSTEM 認証トリガーの場合は、-p パラメータでこの値を調整できます。
c:\temp\MultiPotato> PetitPotamModified.exe localhost/pipe/pwned localhost
もちろん、有効な低権限ユーザーを使用してリモートシステムから PetitPotam.py をトリガーとして使用することも可能です。
c:\temp\MultiPotato> MultiPotato.exe -t CreateProcessAsUserW -p "pwned\pipe\spoolss" -e "C:\temp\stage2.exe"
そして、以下のようにトリガーします。
c:\temp\MultiPotato>MS-RPRN.exe \\192.168.100.150 \\192.168.100.150/pipe/pwned
重要: MS-RPRN のテストでは、localhost または 127.0.0.1 をターゲットとして使用できませんでした。ネットワーク IP アドレスまたは FQDN を使用する必要があります。さらに、これが機能するには Printer Service が有効になっている必要があります。
c:\temp\MultiPotato> MultiPotato.exe -t BindShell -p "pwned\pipe\spoolss"
最近、SQL インジェクションと XP_CMDShell を介して MSSQL サーバーを侵害できるペネトレーションテストがありました。しかし、すべての公開 Potato はこのターゲットシステムでサービスアカウントから SYSTEM に権限昇格するのに失敗しました。SYSTEM 認証トリガーが問題だったわけではありません。代わりに、CreateProcessWithTokenW が常に NTSTATUS コード 5 (アクセス拒否) で失敗しました。これは私にとってあまり意味がなく、エッジケースかもしれません。その理由の一つとして、SYSTEM を偽装した後のプロセス作成をローカルエンドポイント保護がブロックした可能性があります。
そこで、代替案を探し、Twitter で何人かに尋ねました。再び @splinter_code 氏に感謝します。CreateProcessAsUserW を使用する方法を説明してくれました。これにより、侵害された MSSQL サーバー上で正常に動作し、SYSTEM の C2 コールバックを取得できました。