The Windows Time service (W32Time) enables time synchronization across and within domains. (Citation: Microsoft W32Time Feb 2018) W32Time time providers are responsible for retrieving time stamps from hardware/network resources and outputting these values to other network clients. (Citation: Microsoft TimeProvider)
Time providers are implemented as dynamic-link libraries (DLLs) that are registered in the subkeys of HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W32Time\TimeProviders\. (Citation: Microsoft TimeProvider) The time provider manager, directed by the service control manager, loads and starts time providers listed and enabled under this key at system startup and/or whenever parameters are changed. (Citation: Microsoft TimeProvider)
Adversaries may abuse this architecture to establish Persistence, specifically by registering and enabling a malicious DLL as a time provider. Administrator privileges are required for time provider registration, though execution will run in context of the Local Service account. (Citation: Github W32Time Oct 2017)
T1209は「Time Providers(タイムプロバイダーの悪用)」として定義されていた、Windows環境における高度な永続化(Persistence)手法です。
Windowsがネットワーク上の時間と同期するためのシステム(Windows Timeサービス:W32Time)の仕組みを逆手に取り、OSが起動した際、または定期的な時間同期が行われるタイミングで、マルウェア(DLL)をシステム最高権限(SYSTEM)で自動実行させる手法です。
この手法で攻撃者は、「ユーザーのログインに関係なく、OSの起動と同時に、最高権限を伴ったバックドアを自動実行(常駐化)させること」を実現します。
最高権限(SYSTEM)での動作:
タイムプロバイダーはWindows Timeサービス(w32time.dll を含む svchost.exe のプロセス内)の一部としてロードされます。このプロセスは SYSTEM権限(システム最高特権) で動いているため、読み込まれたマルウェアも自動的に最高権限を手にします。
強力な永続化:
PCの電源が入っている限り、バックグラウンドで常にマルウェアを動かし続けることができます。
防御回避(カモフラージュ):
スタートアップフォルダや通常のRunレジストリ、タスクスケジューラといった「定番の永続化ポイント」を一切使いません。そのため、一般的なセキュリティ巡回ツールや管理者の目から逃れやすい(ステルス性が高い)というメリットを攻撃者に与えます。
Windowsのタイムプロバイダーは、レジストリで管理されています。攻撃者はこのレジストリを書き換えることで、自身を「正規の時間同期コンポーネント」としてシステムに誤認させます。
初期侵入と権限昇格:
攻撃者はまずターゲットのWindows端末に侵入します。システム全体のタイムプロバイダーを書き換える(HKEY_LOCAL_MACHINE領域を操作する)必要があるため、事前に管理者権限(AdministratorまたはSYSTEM)を確保しておきます。
悪意あるタイムプロバイダー(DLL)の配置:
遠隔操作(RAT)などの機能を実装し、Windowsのタイムプロバイダーとしての最低限のインターフェース(TimeProvOpen, TimeProvCommand, TimeProvClose などのエクスポート関数)を持たせた不正なDLLファイル(例: malicious_time.dll)をシステムフォルダ内に配置します。
レジストリの改ざん:
Windows Timeサービスが参照する以下のレジストリキーに、新しいタイムプロバイダーとして登録を行います。
HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\MaliciousTimeProvider)を作成し、内部の DllName という値に手順2で置いたマルウェアDLLの絶対パスを指定します。また、Enabled の値を "1"(有効)にします。サービスの再起動(トリガー):
攻撃者は net stop w32time && net start w32time などのコマンドを実行してWindows Timeサービスを強制再起動するか、次回のOS再起動を待ちます。
コード実行:
サービスが起動すると、Windowsはレジストリに基づいて登録されたすべてのタイムプロバイダーDLLを svchost.exe の中にロードします。これにより、マルウェアがSYSTEM権限で活動を開始します。
タイムプロバイダーの追加は非常に珍しいイベントであるため、レジストリの監視が最大の防御になります。
TimeProvidersレジストリの厳重な監視(最重要):
EDR(Endpoint Detection and Response)やWindowsのSysmon(Event ID 13: RegistryEvent)を活用し、HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\ 配下に対する新しいサブキーの追加や、既存の値(特に DllName)の変更を常時監視・アラート化します。通常の運用でここに新しいプロバイダーが追加されることはまずありません。
Windows Timeプロセスの挙動監視:
時間同期を担当する svchost.exe(W32Timeサービスをホストしているプロセス)が、インターネット上の不審なC2サーバーなどと断続的に通信(ビーコニング)を行っていないかをネットワークログやEDRで監視します。
アプリケーション制御(WDAC / AppLocker):
Windows Defender Application Control (WDAC) などを導入し、デジタル署名のない未承認のDLLファイルがシステム(特にSYSTEM権限のプロセス内)にロードされるのを根本からブロックします。
「正規プロセスへの完全な融合」:
マルウェアは単独の .exe ファイルとしてプロセス一覧に現れません。Windows Timeサービスを実行している本物の svchost.exe の内部(メモリ)に溶け込むため、タスクマネージャーで見ても「ただWindowsが時間同期をしているだけ」にしか見えないという、非常に高い防御回避能力を持ちます。
実装のハードル:
単に既存のDLLを上書きするのとは違い、Windows Timeサービスがエラーを起こさずに正常にロードできるよう、タイムプロバイダーとしての正しい内部構造(特定のAPI関数群をエクスポートする等)を攻撃者自身がプログラミングしておく必要があります。そのため、スクリプトキディ(初級ハッカー)ではなく、技術力の高いAPT(国家系ハッカー集団)などが好む手法です。
タイムプロバイダーの悪用に関係するシステム設計・管理上の脆弱性(弱点)には以下のようなものがあります。
CWE-15: External Control of System or Configuration Setting(システムまたは構成設定 of 外部制御)
OSの重要なバックグラウンドサービス(W32Time)の構成設定が外部から不正に変更可能になっており、実行フローの制御を奪われてしまう問題。
CWE-732: Incorrect Permission Assignment for Critical Resource(重要なリソースに対する不適切なアクセス権限の割り当て)
システム全体の起動に関わるレジストリキーやシステムフォルダのアクセス権限管理が適切でなく、特権を持つ攻撃者による自由な書き換え(永続化の設置)を許してしまう問題。
T1209(Time Providers)は、Windows OSが後方互換性やカスタマイズのために標準で提供している「正規の仕様(拡張フレームワーク)」を悪用する攻撃テクニックであるため、これ自体にCVE番号(バグの識別番号)が割り当てられているわけではありません。 しかし、攻撃者がこのタイムプロバイダー(HKLMレジストリ)を書き換えるためには、必ず「管理者権限」が必要になります。そのため、初期侵入後に「タイムプロバイダーを仕込んで最高権限での永続化を完成させるため」に、以下のようなWindowsの権限昇格(Local Privilege Escalation)の脆弱性と組み合わせて悪用されます。
CVE-2022-26923 (Windows Active Directory / ドメインコントローラーの脆弱性):
特権昇格の脆弱性です。ハッカー集団が組織のドメイン環境に侵入した際、ドメイン管理者権限やローカルのSYSTEM権限を奪取するために悪用されました。攻撃者はこの脆弱性等でシステムを完全に掌握した後、セキュリティソフトによる検出を回避して永続的に潜伏するための巧妙な隠し場所として、今回の T1209(Time Providers) を利用してレジストリを書き換える手口を使用します。
CVE-2023-21768 (Windows AFD.sys の権限昇格の脆弱性):
Windowsのカーネルコンポーネントに存在した脆弱性で、一般ユーザーから即座にSYSTEM権限へ昇格することが可能でした。野生の標的型攻撃(APT)において、この脆弱性で最高権限を得たハッカーが、その権限をシステムに「固定」して再起動後も維持するために、タイムプロバイダーの仕組みを悪用した事例が報告されています。