Winlogonは、SAS()を処理し、対話型ログオンセッションを管理するユーザーモードプロセスである。
概要 Winlogon.exeはWindows起動後、以下の手順を追う。
1. ウィンドウステーションの作成
キーボードやマウス、モニターを利用可能にするため、ウィンドウステーション(\Sessions\1\Windows\WindowStations\WinSta0)を作成する。この時点でWinlogon.exeは、他のプロセスがこのステーションにアクセスできないよう、SYSTEMのACEのみを含むセキュリティ記述子を付与する。
2. デスクトップの作成
二つのデスクトップセッションを作成する。一つは、アプリケーションデスクトップ(\Sessions\1\Windows\WinSta0\Default)と呼ばれ、実際にユーザーがアクセスすることのできるデスクトップである。もう一つは、Winlogonデスクトップまたはセキュアデスクトップ(\Sessions\1\Windows\WinSta0\Winlogon)と呼ばれ、資格情報ダイアログや既定でUACの昇格ダイアログを表示する。この時点でWinlogon以外のプロセスはこのウィンドウにアクセスすることはできない。
3. LSASSとのALPC通信の確立
Winlogon.exeはLsaRegisterLogonProcessを使用して、ログオンやログオフ中にデータを交換したり、パスワードの管理をするため、LSASS()とALPC()通信を確立する。
4. PRCメッセージサーバの登録
SASやログオフ、ワークステーションのロックの通知を受け取るために、RPCメッセージサーバを登録する。
5. 次のプロセスの起動
次にWinlogon.exeは、レジストリキーHKLM\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Userinitに存在する、実行可能ファイル名が書かれたコンマ区切りの文字列データを参照し、そのプロセスを作成する(通常はUserinit.exe)。
Userinit.exeは起動すると、ユーザープロファイルを読み込み、HKCU\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Shell、もしくは、HKLM\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Shellの実行可能ファイル名が書かれた文字列データを参照し、そのプロセスを作成する(通常はexplorer.exe)。その後、Userinit.exeは終了するため、explorer.exeは親プロセスを持たない。
脆弱性や不具合 Windows Vistaより前のWindowsではパスワード文字数が短い場合、LMハッシュを記録してしまうことにより、レインボーテーブル等の技術で容易にクラックされてしまう脆弱性がある。これはレジストリの設定を変更するか、パスワードを長くするしかない。 Windows XP等ではインターネット一時ファイル内の隠しフォルダ「Content.IE5」内の画像等のキャッシュデータのファイル名や拡張子が長すぎる場合にログオン時にエラーが発生しログオンできなくなるという不具合がある。何らかのWebページに脆弱性を突いたスクリプトが含まれていた、キャッシュしたデータの名前が長すぎるなどの原因があるが、発生した場合は通常の方法ではログオンできなくなるためセーフモードで起動してシステムの復元を行うなどの修復を試みるしかない通常起動以外の方法で起動した場合は管理者権限を持つユーザーのみログオンできる。。 Winlogonの脆弱性を突いてCPU使用率が異常に高くしてしまう悪質なスパイウェアが存在し、何をしなくてもCPU使用率が変動する場合、そのスパイウェアに感染した可能性がある。
脚注
関連項目 アカウント ログイン