EternalWindows
LSA / LSAの位置づけ

重要なセキュリティ操作は、信頼されたプロセスの中で行われるべきといえます。 たとえば、ユーザーをログオンさせるためのコードを通常のプロセス内で実行した場合、 そのコードが本来のコードとは別のものに変更され、 ユーザーを不正にログオンさせるような方法が成立してしまうことが予測されます。 LSA(Local Security Authority)とは、ログオン関連の処理において核となるDLLであり、 これはlsass.exeというシステムプロセスにロードされて実行されることになっているため、 ログオン処理は安全に行われることになります。 今回は、lsass.exeが行う主な作業のうち、LSAに関連する話題を取り上げます。

プロセスがLogonUserを呼び出してユーザーをログオンさせようとした場合、 その旨がLSAに通知されることになります。 ログオンを成功させるためには、まずユーザー名やパスワードが正しいかを確認しなければならないため、 認証パッケージが公開している関数を呼び出して認証が行われることになります。 LSA自体が、認証を行っているわけではないことに注意してください。 認証パッケージという認証を行うDLLが存在することで、 開発者が独自の認証パッケージを追加するような柔軟性も増すことになるのです。 認証パッケージによる認証が成功した場合、LSAはそのユーザーのためにトークンを作成することになります。 トークンには、そのユーザーが属しているグループや、割り当てられている特権などを格納しなければならないため、 グループに関してはSAMから、特権及びユーザー権利に関してはポリシーデータベースから取得することになります。 ユーザー権利は、ユーザーにどのようなログオン方法が許可されているかを表しているため、 これを基にユーザーが許可されていないログオンを行っていないかを確認することになります。 問題がない場合は、必要な情報をトークンに格納して呼び出し側に返します。

次に、ログオンに関係するコンポーネントを示します。 Lsassという赤枠で囲まれた中に存在するボックスは、全てLsassにロードされるDLLです。

コンポーネント 実体 説明
Lsass lsass.exe システムプロセスの1つ。 lsasrv.dllが提供する関数の呼び出しや、イベントロガーに監査記録の転送などを行う。
LSAサーバー lsasrv.dll LSAのことであり、ユーザー認証やポリシーの管理を行うDLL。 lsasrv.dllはLsassが行う作業の大半を占めている。
SAMサーバー samsrv.dll ローカルマシンで定義されているユーザー名やグループを保存するデータベースの管理を行うDLL。
Active Directoryサーバー ntdsa.dll ドメイン内のユーザーやグループ、コンピュータなどのオブジェクトを格納するデータベースを持つディレクトリサービス。 ドメインは、いくつかのコンピュータとそれらのコンピュータに関連するセキュリティグループの集合であり、 それらが1つの単位としてActive Directoryで表される。
Net Logonサービス nelogon.dll ドメインコントローラとのセキュアな通信チャンネルを確立するサービス。 Windows NT LAN Managerのv1とv2の認証情報は、このチャンネルを通して送信される。
Kerberosサービス kdcsvc.dll kerberos.dllのログオン要求に応答するサービス。 KerberosサービスはKDC(キー配布センター)と呼ばれることもある。
MSV1_0 msv1_0.dll 認証パッケージの1つ。 主にローカルコンピュータへの対話ログオンに利用され、 SAMサーバーが公開する関数を呼び出して認証を行う。 ドメインのログオンにはKerberosが利用されるが、 ドメインコントローラがネットワーク上で発見できないような場合は、 キャッシュされた認証情報を基にローカルコンピュータへログオンする。
Kerberos kerberos.dll 認証パッケージの1つ。 ドメインへの対話ログオンのために使用され、 ドメインコントローラ上で実行されているKerberosサービスと通信する。
ポリシーデータベース HKLM\SECURITY 監査ポリシーやユーザーに与える特権、さらに認証にあたって信頼するドメインや、 シークレットを管理するデータベース。
SAM HKLM\SAM 定義済みのローカルユーザーやグループ、 及びパスワードやその他の属性を保存するデータベース。
Active Directory ntdsa.dit ドメイン内のオブジェクトを管理するデータベース。 ドメインのユーザーとグループのパスワード情報や特権情報はActive Directoryに格納され、 Active Directoryはドメインのドメインコントローラに指定されているコンピュータ間で複製される。
Winlogon winlogon.exe システムプロセスの1つ。 コンソールへのログオンの際に、GINAを呼び出してダイアログを表示し、 認証が成功した場合はログオンしたユーザーのためにexplorer.exeを起動する。
GINA msgina.dll WinlogonプロセスにロードされるDLL。 ユーザー名やパスワードを取得するためのログオンダイアログボックスを提供する。


戻る