Winlogon, LSASS and Userinit简介

Winlogon, LSASS and Userinit

Windows logon进程(/Windows/System32/Winlogon.exe)处理用户的登录和登出。当secure attention sequence (SAS)击键组合输入时 Winlogon被通知有一个用户登陆请求。Windows默认的SAS组合是Ctrl+Alt+DeleteSAS是为了保护用户,防止密码捕捉程序模拟登陆进程,因为这个键盘顺序不能被用户模式下的程序打断。

Logon进程在鉴定认证上是利用一个可替换的叫GINA(Graphical Identification and Authentication)DLL完成的。标准的Windows GINAMsgina.dll,它实现了默认的windows登陆接口。然而,开发者能够提供他们自己的GINA DLL来实现其他的鉴定和认证机制而代替标准的windows用户名/密码思路(例如基于声音识别的)。另外。Winlogon能够加载网络提供者附加的DLLs,来完成二级认证。这个性能允许多个网络提供者在正常的登陆时一次收集到所有的鉴定和认证信息。

当用户名和密码被捕捉时,它们就被发送到本地安全认证服务进程(/Windows/System32/Lsass.exe)进行鉴别。LSASS调用适当的认证包(以DLL实现的)来完成真正的确认,例如检查一个密码是否与活动目录或者SAM(注册表中包含用户和组的说明部分)中的相匹配。

在成功鉴定后,LSASS调用一个在安全相关的监控器中(例如NtCreateToken)的函数来生成包含用户安全描述的访问记号对象。这个访问记号随即被Winlogon用来创建在用户session的初始的进程。初始进程存储在注册表中的键值是HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon. 下面的Userinit。(默认的是Userinit.exe,但是也可以有不止一个的镜像在列表里)。

Userinit完成一些用户环境(例如运行登陆脚本和应用组策略)的初始化,然后在注册表里寻找Shell的值,创建一个进程来运行系统定义的shell(默认是Explorer.exe)。然后Userinit退出。这就是为什么Explorer.exe显示不出来父进程的原因——它的父进程已经退出。

你可能感兴趣的:(学海拾贝)