Winlogon

From Wikipedia, the free encyclopedia

Winlogonは、SAS(英語: Secure attention sequence)を処理[1]し、対話型ログオンセッションを管理するユーザーモードプロセスである[2][3]

概要

Winlogon.exeはWindows起動後、以下の手順を追う。

1. ウィンドウステーションの作成

キーボードやマウス、モニターを利用可能にするため、ウィンドウステーション(\Sessions\1\Windows\WindowStations\WinSta0)を作成する。この時点でWinlogon.exeは、他のプロセスがこのステーションにアクセスできないよう、SYSTEMのACEのみを含むセキュリティ記述子を付与する[3][1]

2. デスクトップの作成

二つのデスクトップセッションを作成する。一つは、アプリケーションデスクトップ(\Sessions\1\Windows\WinSta0\Default)と呼ばれ、実際にユーザーがアクセスすることのできるデスクトップである[3]。もう一つは、Winlogonデスクトップまたはセキュアデスクトップ(\Sessions\1\Windows\WinSta0\Winlogon)と呼ばれ、資格情報ダイアログや既定でUACの昇格ダイアログを表示する。この時点でWinlogon以外のプロセスはこのウィンドウにアクセスすることはできない[3]

3. LSASSとのALPC通信の確立

Winlogon.exeLsaRegisterLogonProcessを使用して、ログオンやログオフ中にデータを交換したり、パスワードの管理をするため、LSASS(英語: Local Security Authority Subsystem Service, Lsass.exe)とALPC(英語: Advanced Local Procedure Call)通信を確立する[3]

4. PRCメッセージサーバの登録

SASやログオフ、ワークステーションのロックの通知を受け取るために、RPCメッセージサーバを登録する[3]

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は親プロセスを持たない[3]

脆弱性や不具合

  • Windows Vistaより前のWindowsではパスワード文字数が短い場合、LMハッシュを記録してしまうことにより、レインボーテーブル等の技術で容易にクラックされてしまう脆弱性がある。これはレジストリの設定を変更するか、パスワードを長くするしかない。
  • Windows XP等ではインターネット一時ファイル内の隠しフォルダ「Content.IE5」内の画像等のキャッシュデータのファイル名や拡張子が長すぎる場合にログオン時にエラーが発生しログオンできなくなるという不具合がある。何らかのWebページに脆弱性を突いたスクリプトが含まれていた、キャッシュしたデータの名前が長すぎるなどの原因があるが、発生した場合は通常の方法ではログオンできなくなるためセーフモードで起動してシステムの復元を行うなどの修復を試みるしかない[4]
  • Winlogonの脆弱性を突いてCPU使用率が異常に高くしてしまう悪質なスパイウェアが存在し、何をしなくてもCPU使用率が変動する場合、そのスパイウェアに感染した可能性がある。

脚注

関連項目

Related Articles

Wikiwand AI