6.5.9. 身份认证

6.5.9.1. SID

  • Windows使用SID来唯一表示安全主体 ,包括用户和组。Windows NT 6.x中, 系统服务也有SID标识。

  • 查看账户的SID
    • whoami / user

    • PsGetSid

    • user2sid

  • 从Windows Vista/Server 2008(NT 6.0)开始,每个服务程序都 有自己的SID,而账户的名称则为“NT SERVICE<服务名称>”

  • 查看服务SID及其账户名称
    • sc.exe showsid <service name>

    • psgetsid <sid>

6.5.9.2. 相关程序

6.5.9.2.1. Winlogon

  • 可信任的进程,负责管理与安全有关的用户交互
    • 协调登录过程,在登录时启动用户的第一个进程,处理注销过程,以管理其他各种与安全有关的操作,包括在登录时输入口令、更改口令、锁住/解锁工作站等。

    • 创建可用的桌面。

    • 向操作系统注册一个安全维护序列(SAS, Secure Attention Sequence),默认为Ctrl+Alt+Delete。

    • 维护工作站状态。

    • 实现超时处理。

  • 向GINA发送事件通知消息,提供可供GINA调用的各种接口函数。

  • 保证其操作对其他进程不可见,从而防止登录密码等信息被截获。

6.5.9.2.2. GINA动态链接库

  • 提供了Winlogon用户标识和验证用户的输出函数。
    • WlxActivateUserShell、WlxDisplaySASNotice、WlxInitialize、WlxLoggedOnSAS、WlxLoggedOutSAS、WlxLogoff、WlxNegotiate、WlxScreenSaverNotify、WlxShutdown、WlxStartApplication、WlxWkstaLockedSAS

  • 微软提供的GINA是MSGINA.dll,但允许被用户替换来自行定 制系统的用户识别和身份验证。
    • [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionWinlogon] "GinaDLL"="ginadll.dll"

6.5.9.2.3. 身份验证程序包

  • 身份验证程序包的任务
    • 验证用户;

    • 为用户新建LSA登录会话;

    • 返回绑定到用户安全令牌中的SID。

  • 身份验证程序包位于DLL动态链接库中
    • 在系统启动期间被LSA所链接,接受输入的登录证书,通过验证 程序决定是否允许用户登录。

  • Windows安装的身份验证程序包
    • 独立(工作组)环境:MSV1_0, %SystemRoot%System32Msv1_0.dll

    • 域环境:Kerberos, %SystemRoot%System32Kerberos.dll

6.5.9.2.4. LogonUI

LogonUI,Logon user interface,登录用户接口

  • 为了保护Winlogon进程不崩溃,LogonUI由Winlogon按需启动,真正加载Credential provider,为用户提供验证身份的图形化界面。

  • LogonUI是用户模式下的进程,即 %SystemRoot%System32LogonUI.exe

6.5.9.2.5. CP

CP,Credential provider,凭证提供者

  • Credential provider是运行在LogonUI进程内的COM对象, 位于一些DLL文件中(触发SAS热键后由Winlogon按需启动 ),用来获取用户的用户名、密码、智能卡PIN码或者生物数据(比如指纹、视网膜信息)

  • 标准的CP是 %SystemRoot%System32authui.dll 和 %SystemRoot%System32SmartcardCredentialProvider.dll.