hacktricks/windows-hardening/windows-local-privilege-escalation/dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md

9.2 KiB
Raw Blame History

書き込み可能なSys Path +Dll Hijacking Privesc

AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)をチェック!

HackTricksをサポートする他の方法:

はじめに

システムパスフォルダに書き込みができることがわかった場合(ユーザーパスフォルダに書き込みができる場合は機能しません)、システムで権限を昇格できる可能性があります。

それを行うために、サービスまたはプロセスがより高い権限でロードしているライブラリをハイジャックするDll Hijackingを悪用できます。そのサービスは、システム全体に存在しない可能性のあるDllをロードしようとしており、書き込み可能なシステムパスからロードしようとします。

Dll Hijackingとは何かについての詳細は、以下をチェックしてください:

{% content-ref url="../dll-hijacking.md" %} dll-hijacking.md {% endcontent-ref %}

Dll HijackingによるPrivesc

不足しているDllの探索

最初に必要なのは、あなたよりも高い権限で実行されているプロセスを特定することであり、そのプロセスは書き込み可能なシステムパスからDllをロードしようとしています

この場合の問題は、おそらくそれらのプロセスはすでに実行されていることです。サービスに不足しているDllを見つけるには、できるだけ早くprocmonを起動する必要がありますプロセスがロードされる前に。不足している.dllを見つけるには:

  • フォルダ C:\privesc_hijacking を作成し、パス C:\privesc_hijackingシステムパス環境変数に追加します。これは手動で行うか、PSを使用して行うことができます:
# Set the folder path to create and check events for
$folderPath = "C:\privesc_hijacking"

# Create the folder if it does not exist
if (!(Test-Path $folderPath -PathType Container)) {
New-Item -ItemType Directory -Path $folderPath | Out-Null
}

# Set the folder path in the System environment variable PATH
$envPath = [Environment]::GetEnvironmentVariable("PATH", "Machine")
if ($envPath -notlike "*$folderPath*") {
$newPath = "$envPath;$folderPath"
[Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine")
}
  • procmon を起動し、Options --> Enable boot logging に進んで、プロンプトで OK を押します。
  • その後、再起動します。コンピュータが再起動されると、procmon はできるだけ早くイベントの記録を開始します。
  • Windows起動したら procmon を再度実行します。実行すると、既に実行中であったことを通知し、イベントをファイルに保存するかどうか尋ねますはいと答えて、イベントをファイルに保存します
  • ファイル生成された後、開いている**procmon** ウィンドウを閉じイベントファイルを開きます
  • 以下のフィルターを追加すると、書き込み可能なSystem PathフォルダからいくつかのプロセスがロードしようとしたDllを全て見つけることができます:

見逃されたDll

無料の仮想 (vmware) Windows 11マシンでこれを実行した結果、以下のようになりました:

この場合、.exeは役に立たないので無視してください。見逃されたDLLは以下のものでした

サービス Dll CMD line
タスクスケジューラ (Schedule) WptsExtensions.dll C:\Windows\system32\svchost.exe -k netsvcs -p -s Schedule
診断ポリシーサービス (DPS) Unknown.DLL C:\Windows\System32\svchost.exe -k LocalServiceNoNetwork -p -s DPS
??? SharedRes.dll C:\Windows\system32\svchost.exe -k UnistackSvcGroup

これを見つけた後、WptsExtensions.dllを悪用してprivescする方法を説明する興味深いブログ投稿を見つけました。これが今から行うことです。

悪用

権限を昇格させるために、WptsExtensions.dll ライブラリをハイジャックします。パス名前がわかっていれば、悪意のあるdllを生成するだけです。

これらの例を試してみることができます。実行できるペイロードには、リバースシェルを取得する、ユーザーを追加する、ビーコンを実行するなどがあります...

{% hint style="warning" %} すべてのサービスが NT AUTHORITY\SYSTEM で実行されているわけではないことに注意してください。一部は NT AUTHORITY\LOCAL SERVICE で実行されており、権限が少ないため、新しいユーザーを作成することはできません。ただし、そのユーザーには seImpersonate 権限があるため、ポテトスイートを使用して権限を昇格させることができます。したがって、この場合はユーザーを作成しようとするよりもリバースシェルを取得する方が良い選択です。 {% endhint %}

執筆時点でタスクスケジューラサービスはNt AUTHORITY\SYSTEMで実行されています。

悪意のあるDllを生成したら私の場合はx64リバースシェルを使用しましたが、msfvenomからだったためディフェンダーによって殺されました、書き込み可能なSystem PathにWptsExtensions.dllという名前で保存し、コンピュータを再起動します(またはサービスを再起動するか、影響を受けるサービス/プログラムを再実行するために必要なことを何でもします)。

サービスが再開されると、dllはロードされ実行されるはずです(ライブラリが期待通りにロードされたかどうかを確認するためにprocmon のトリックを再利用することができます)。

htARTE (HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ!

HackTricksをサポートする他の方法