A port monitor can be set through the (Citation: AddMonitor) API call to set a DLL to be loaded at startup. (Citation: AddMonitor) This DLL can be located in C:\Windows\System32 and will be loaded by the print spooler service, spoolsv.exe, on boot. The spoolsv.exe process also runs under SYSTEM level permissions. (Citation: Bloxham) Alternatively, an arbitrary DLL can be loaded if permissions allow writing a fully-qualified pathname for that DLL to HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors.
The Registry key contains entries for the following:
Adversaries can use this technique to load malicious code at startup that will persist on system reboot and execute as SYSTEM.
T1013「Port Monitors」(ポートモニター) は、Windowsの印刷システムを管理する仕組み(プリントプロセッサやポートモニター)を悪用して、システム起動時に悪意のあるDLLを自動的に実行させる手法です。
この手法は「永続化(Persistence)」と、高い権限を維持する「特権昇格(Privilege Escalation)」の両方を目的として使われます。
この手法で攻撃者は、「システムの再起動後も、プリントスプーラー経由でSYSTEM権限のコード実行を継続すること」を実現します。
永続化:
印刷サービスは通常、Windowsの起動と同時に開始されるため、ユーザーの操作なしで自動的にマルウェアを起動できます。
権限の奪取:
プリントスプーラーサービス(spoolsv.exe)は通常、SYSTEM権限で動作しています。そのため、ここに登録されたDLLもSYSTEM権限で実行されます。
ステルス性:
スタートアップフォルダや通常のサービス登録とは異なる「印刷設定」という目立たない場所に隠れるため、検知を回避しやすくなります。
攻撃者は、レジストリを操作するために管理者権限を確保した後にこの手法を実行します。
悪意のあるDLLの配置:
攻撃用のDLLを C:\Windows\System32\ などのシステムディレクトリに配置します。
レジストリの書き換え:
以下のレジストリキーに新しい「ポートモニター」として、配置したDLLの名前を登録します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Driver という値にマルウェアのDLL名を指定します。サービスの再起動:
システムの再起動、またはプリントスプーラーサービスの再起動を待ちます。
実行:
spoolsv.exe がレジストリを読み込み、指定されたDLLを自身のプロセス内にロードします。これにより、SYSTEM権限で攻撃コードが動き出します。
「特権的な設定変更」の監視と制限が鍵となります。
レジストリの監視:
Control\Print\Monitors 配下に対する書き込み操作を厳格に監視し、未知のモニター名やDLLが追加された場合にアラートを上げます。
バイナリ整合性の確認:
System32 内のDLLがデジタル署名されているか、ホワイトリストに含まれているかを確認します。
最小権限の原則:
攻撃者がレジストリを変更できないよう、管理者権限の不必要な利用を制限します。
スプーラーサービスの制限:
サーバー等の印刷機能が不要な環境では、Print Spoolerサービス自体を無効化します。
「正規の拡張機能」への偽装:
ポートモニターは、本来は特殊なプリンター(PDF作成ソフトなど)との通信のために使われる正規の仕組みです。攻撃者はこの仕組みを「正規の拡張」に見せかけて悪用します。
持続性の高さ:
セキュリティソフトが起動するよりも早い段階でロードされるケースがあり、防御側よりも先にシステムを掌握されるリスクがあります。
CWE-15: External Control of System or Configuration Setting:
外部からシステム設定(レジストリ)を改ざんされる不備。
CWE-427: Uncontrolled Search Path Element:
DLLの読み込みパスが適切に制御されておらず、攻撃者のDLLが優先的にロードされる問題。
このテクニックはOSの「仕様」を悪用するものであるため、特定のCVE単体よりも、印刷システム全体の脆弱性と組み合わせて語られることが多いです。
CVE-2020-1048 / CVE-2020-1337:
Windows Print Spoolerの脆弱性。これらを突くことで、本来権限のないユーザーが任意のポートモニターを作成したり、ファイルを書き込んだりすることが可能になりました。
CVE-2021-34527 (PrintNightmare):
非常に有名なプリントスプーラーの脆弱性。リモートから任意のDLLを読み込ませる(T1013と類似のメカニズム)ことが可能であり、世界中で大きな脅威となりました。
Windows標準のポートモニターには Local Port や Standard TCP/IP Port などがありますが、これら以外の見慣れない名称がレジストリに存在する場合は、詳細な調査が必要です。