Winlogon.exe is a Windows component responsible for actions at logon/logoff as well as the secure attention sequence (SAS) triggered by Ctrl-Alt-Delete. Registry entries in HKLM\Software[Wow6432Node]Microsoft\Windows NT\CurrentVersion\Winlogon\ and HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\ are used to manage additional helper programs and functionalities that support Winlogon. (Citation: Cylance Reg Persistence Sept 2013)
Malicious modifications to these Registry keys may cause Winlogon to load and execute malicious DLLs and/or executables. Specifically, the following subkeys have been known to be possibly vulnerable to abuse: (Citation: Cylance Reg Persistence Sept 2013)
Adversaries may take advantage of these features to repeatedly execute malicious code and establish Persistence.
T1004「Winlogon Helper DLL」 は、Windowsのログオンプロセスを管理する Winlogon サービスに悪意のあるDLLを登録し、ユーザーのログイン時に自動的にコードを実行させる手法です。
「永続化(Persistence)」と「権限昇格(Privilege Escalation)」の両方に使われる、非常に伝統的かつ強力な手法です。
この手法で攻撃者は、「ユーザーがログインするたびに、システム権限でマルウェアを自動起動させること」を実現します。
永続化:
PCが再起動されたり、ユーザーが一度サインアウトしたりしても、次回のログイン時に確実にマルウェアを再起動させます。
権限の維持:
Winlogonは高い権限(SYSTEM)で動作するため、登録されたDLLもその特権を引き継いで実行される場合があります。
認証情報の傍受:
ログオンプロセスに介在するため、ユーザーのパスワード入力時などに動作し、認証情報を盗み取る足がかりにされます。
攻撃者は、レジストリを書き換えるために管理者権限を入手した後にこの操作を行います。
悪意のあるDLLの配置:
攻撃用のDLLをシステム上の目立たない場所(例:C:\Windows\System32\ など)に配置します。
レジストリの書き換え:
Windowsレジストリの以下のキーを編集します。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell や Userinit、あるいは Notify という項目に、悪意のあるDLLや実行ファイルのパスを追記します。実行の待機:
ユーザーが次回ログインするのを待ちます。
コードの自動実行:
Winlogonが起動する際、レジストリに登録されたパスを読み込み、マルウェアを読み込んで実行します。
「レジストリの監視」と「権限の保護」が防御の要です。
レジストリの監視:
Winlogon キー配下(特に Shell、Userinit、Notify)の変更を監視し、身元不明なDLLが追加された場合にアラートを上げるようにします。
Autorunsの活用:
Sysinternalsの Autoruns ツールを使用して、Winlogonに関連するスタートアップ項目に不審なものがないか定期的にチェックします。
最小権限の原則:
一般ユーザーにレジストリの重要な箇所を編集する権限を与えないことで、侵入されても永続化の設定を困難にします。
EDRによるプロセス監視:
ログオン時に不審な子プロセスが winlogon.exe や userinit.exe から生成されていないか監視・遮断します。
「正規の場所」への紛れ込み:
WinlogonはWindowsの正常な動作に必須のプロセスであるため、ここに登録されると、一見しただけでは正規のシステムファイルとの区別がつきにくくなります。
Notifyキーの廃止(補足):
Windows 7以降、Winlogon\Notify を使った手法は公式にはサポートされなくなりましたが、依然として他の項目(Shell や Userinit)は有効な攻撃対象です。
CWE-15: External Control of System or Configuration Setting:
外部(攻撃者)によってシステムの重要な設定(レジストリ)を制御・変更されてしまう不備。
CWE-427: Uncontrolled Search Path Element:
実行ファイルやDLLを読み込む際のパス指定が不適切で、攻撃者の用意したファイルが優先的に読み込まれてしまう問題。
T1004は設定の悪用であるため、特定のソフトウェア脆弱性(CVE)というよりは、OSの仕様を突いた攻撃として分類されます。しかし、これを実現するために悪用される関連脆弱性はあります。
CVE-2014-4113:
Windowsのカーネルモードドライバーの脆弱性。これを利用して特権昇格を行い、その後の永続化手段としてWinlogonレジストリの書き換え(T1004)が行われるケースがありました。
CVE-2020-0683:
Windows MSIインストーラーの特権昇格脆弱性。管理権限を奪取した後に、WinlogonヘルパーDLLなどの仕組みを使ってシステムへの定着を図る攻撃フローが想定されます。
Userinit の値が通常 C:\Windows\system32\userinit.exe,(コンマを含む)になっているか確認してください。これに加えて別のパスが記述されている場合は、感染の可能性を疑う必要があります。
この攻撃手法を利用する脅威アクターは登録されていません。