Writable Sys Path +Dll Hijacking Privesc
はじめに
システムパスフォルダに書き込みできることがわかった場合(ユーザーパスフォルダに書き込める場合は機能しません)、システム内で特権昇格が可能かもしれません。
そのためには、特権を持つサービスまたはプロセスがロードしようとしているライブラリをハイジャックする Dll Hijacking を悪用することができます。そして、そのサービスが存在しない可能性が高いDllをロードしようとするため、システムパスからロードしようとすることができます。
Dll Hijacking とは何かの詳細については、以下を参照してください:
pageDll HijackingDll Hijacking による特権昇格
不足しているDllの検出
最初に必要なのは、あなたよりも特権のあるプロセスが書き込み可能なシステムパスからDllをロードしようとしているプロセスを特定することです。
この場合の問題は、おそらくこれらのプロセスがすでに実行されていることです。必要なDllを見つけるには、プロセスがロードされる前にできるだけ早く procmon を起動する必要があります。したがって、不足している.dll を見つけるには:
C:\privesc_hijacking
フォルダを作成し、そのパスC:\privesc_hijacking
をシステムパス環境変数に追加します。これは手動で行うか、PS を使用して行うことができます:
procmon
を起動し、Options
-->Enable boot logging
に移動して、プロンプトでOK
を押します。次に、再起動します。コンピュータが再起動されると、
procmon
ができるだけ早くイベントの記録を開始します。一度 Windows が起動したら
procmon
を実行し、実行中であることを通知され、イベントをファイルに保存するかどうかを尋ねられます。はいを選択し、イベントをファイルに保存します。ファイルが生成されたら、開いている
procmon
ウィンドウを閉じ、イベントファイルを開きます。以下の フィルター を追加すると、書き込み可能なシステムパスフォルダから読み込もうとしたすべての Dll を見つけることができます:
不足している Dlls
無料の 仮想 (vmware) Windows 11 マシン でこれを実行した結果は次のとおりです:
この場合、.exe は無用なので無視し、不足している DLL は次のとおりです:
サービス | Dll | CMD line |
---|---|---|
タスク スケジューラ (Schedule) | WptsExtensions.dll |
|
診断ポリシーサービス (DPS) | Unknown.DLL |
|
??? | SharedRes.dll |
|
これを見つけた後、WptsExtensions.dll を悪用して権限昇格を行う方法を説明している興味深いブログ投稿を見つけました。これが今行うことです。
悪用
したがって、特権を昇格するためには、ライブラリ WptsExtensions.dll を乗っ取ります。パスと名前があれば、悪意のある dll を生成するだけです。
これらの例のいずれかを使用してみてください。リバースシェルを取得したり、ユーザーを追加したり、ビーコンを実行したりできます...
すべてのサービスが NT AUTHORITY\SYSTEM
で実行されているわけではないことに注意してください。一部は NT AUTHORITY\LOCAL SERVICE
で実行されており、権限が少ないため、新しいユーザーを作成することはできません。
ただし、そのユーザーには seImpersonate
権限があるため、potato suite を使用して権限を昇格することができます。したがって、この場合、リバースシェルはユーザーを作成しようとするよりも良い選択肢です。
執筆時点では、タスク スケジューラ サービスは Nt AUTHORITY\SYSTEM で実行されています。
悪意のある Dll を生成した後(私の場合は x64 リバースシェルを使用し、シェルを取得しましたが、msfvenom からだったためディフェンダーによって殺されました)、それを書き込み可能なシステムパスに WptsExtensions.dll という名前で保存し、コンピュータを再起動します(またはサービスを再起動するか、影響を受けるサービス/プログラムを再実行するために必要な操作を実行します)。
サービスが再起動されると、dll が読み込まれ実行されるはずです(ライブラリが期待どおりに読み込まれたかどうかを確認するために procmon のトリックを再利用できます)。
Last updated