9.2 KiB
書き込み可能なSys Path +Dll Hijacking Privesc
AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)をチェック!
HackTricksをサポートする他の方法:
- HackTricksにあなたの会社を広告したい、またはHackTricksをPDFでダウンロードしたい場合は、サブスクリプションプランをチェックしてください!
- 公式PEASS & HackTricksグッズを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションをチェックする
- 💬 Discordグループに参加するか、telegramグループに参加するか、Twitter 🐦 @carlospolopmでフォローする。
- HackTricksのGitHubリポジトリとHackTricks CloudにPRを提出して、あなたのハッキングのコツを共有する。
はじめに
システムパスフォルダに書き込みができることがわかった場合(ユーザーパスフォルダに書き込みができる場合は機能しません)、システムで権限を昇格できる可能性があります。
それを行うために、サービスまたはプロセスがより高い権限でロードしているライブラリをハイジャックする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をサポートする他の方法:
- HackTricksに広告を掲載したい、またはHackTricksをPDFでダウンロードしたい場合は、サブスクリプションプランをチェックしてください!
- 公式PEASS & HackTricksグッズを入手してください。
- The PEASS Familyを発見してください。私たちの独占的なNFTsコレクションです。
- 💬 Discordグループに参加するか、テレグラムグループに参加するか、Twitter 🐦 @carlospolopmでフォローしてください。
- HackTricksとHackTricks CloudのgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有してください。