Writable Sys Path +Dll Hijacking Privesc
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
導入
もしあなたが System Path フォルダに書き込みできる と判明した場合(User Path フォルダに書き込みできてもこれは機能しない点に注意)、システム上で 権限昇格 できる可能性があります。
そのために、権限が自分より高いサービスやプロセスが読み込もうとするライブラリをハイジャックする Dll Hijacking を悪用できます。サービスが読み込もうとしている Dll がシステム全体に存在しない可能性が高い場合、あなたが書き込みできる System Path からロードしようとします。
Dll Hijackig が何かについての詳細は次を参照してください:
Privesc with Dll Hijacking
欠落している Dll の検出
最初に必要なのは、あなたより高い権限で動作しており、あなたが書き込みできる System Path から Dll をロードしようとしているプロセスを特定することです。
この場合の問題は、これらのプロセスが既に実行中であることが多い点です。どの Dll が不足しているかを見つけるには、サービスがロードされる前(プロセスが読み込まれる前)にできるだけ早く procmon を起動する必要があります。したがって、欠落している .dll を見つけるには次を行います:
- Create the folder
C:\privesc_hijackingand add the pathC:\privesc_hijackingto System Path 環境変数. You can do this 手動で or with 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")
}
- Launch
procmonand go toOptions–>Enable boot loggingand pressOKin the prompt. - 次に、再起動(reboot)します。コンピュータが再起動すると
procmonはできるだけ早くイベントの recording を開始します。 - Windows が起動したら再度
procmonを実行すると、実行中である旨を通知され、イベントをファイルに保存するかどうかを尋ねられます。yes を選んで events をファイルに保存してください。 - ファイル が生成されたら、開いている
procmonウィンドウを 閉じ、生成された events file を開きます。 - 次のような filters を追加すると、書き込み可能な System Path フォルダからある process がロードしようとした すべての DLL を見つけられます:
.png)
見つからなかった DLL
この手順を無料の仮想環境(vmware)の Windows 11 マシンで実行したところ、以下のような結果になりました:
.png)
この場合は .exe は使えないので無視してください。見つからなかった DLL は以下からロードされようとしていました:
| Service | Dll | CMD line |
|---|---|---|
| Task Scheduler (Schedule) | WptsExtensions.dll | C:\Windows\system32\svchost.exe -k netsvcs -p -s Schedule |
| Diagnostic Policy Service (DPS) | Unknown.DLL | C:\Windows\System32\svchost.exe -k LocalServiceNoNetwork -p -s DPS |
| ??? | SharedRes.dll | C:\Windows\system32\svchost.exe -k UnistackSvcGroup |
これを見つけた後、同様に abuse WptsExtensions.dll for privesc を説明している興味深いブログ記事を見つけました。これがこれから 実際に行うこと です。
Exploitation
権限昇格のために、ライブラリ WptsExtensions.dll をハイジャックします。パスと名前が分かっているので、あとは 悪意のある dll を生成 すれば良いだけです。
try to use any of these examples を参照して作成できます。rev shell を取得したり、ユーザを追加したり、beacon を実行したりといったペイロードを実行できます。
Warning
すべてのサービスが
NT AUTHORITY\SYSTEMで実行されているわけではなく、NT AUTHORITY\LOCAL SERVICEなど権限の低いアカウントで実行されている場合があります。その場合は新しいユーザを作成するための権限を悪用できないことがあります。
ただし、そのユーザはseImpersonate権限を持っているため、 potato suite to escalate privileges を使って更に権限を上げることが可能です。したがって、このケースではユーザ作成を試みるよりも rev shell を狙う方が現実的です。
執筆時点では Task Scheduler サービスは Nt AUTHORITY\SYSTEM で実行されています。
悪意のある DLL を生成したら(私の場合は x64 rev shell を使いシェルを得ましたが、msfvenom 由来のため Defender に検出されました)、書き込み可能な System Path に WptsExtensions.dll という名前で保存し、コンピュータを再起動するか(またはサービスを再起動するなどして)該当サービス/プログラムを再実行してください。
サービスが再起動されると、dll がロードされ実行されるはずです(期待通りにライブラリがロードされたかどうかは、再度 procmon の手法を使って確認できます)。
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
HackTricks

