欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Windows ❀ 本地认证

程序员文章站 2024-02-14 12:52:10
...

Windows 本地认证

1、本地认证的基础知识
在本地登陆的情况下,操作系统会使用用户输入的密码作为凭据去与系统中的密码进行校验,如果成功的话表明验证通过,操作系统的密码存储在C盘的目录下:

C:\Windows\System32\config\SAM

SAM用于存储本地所有用户的凭证信息,但是这并不代表你可以随意查看系统密码,我们登陆系统的时候系统会自动读取SAM文件中的密码与我们输入的密码进行比对,如果认证相同则登陆成功;
Windows自身是不会保持明文密码的,SAM文件中保存的为Hash值;

Hash
翻译为哈希,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值,这种转换是一种压缩映射,也就是散列值的空间通常小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值;

2、NTLM的认证过程
NTLM Hash的生成过程:
当用户注销、重启、锁屏后,操作系统会让Windows显示登陆界面,当winlogon.exe接收到账号密码输入之后,会将密码交给Lsass进程,这个进程会存一份明文密码,将明文密码加密成NTLM Hash,与SAM数据库比较认证;
winlogon.exe(Windows Logon Process)是Windows NT用户登陆程序,用于管理用户登陆和退出,Lsass用于微软Windows系统的安全机制,是用于本地安全和登陆策略;
例如当用户输入密码admin时,操作系统会将admin转换为十六进制,经过Unicode转换后,再调用MD4加密算法进行加密,这个加密结果是十六进制,这个值为NTLM Hash;

admin -> hex(十六进制编码)= 61646d96e
61646d96e -> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634

3、本地认证流程
winlogon.exe -> 接收用户输入值 -> Lsass.exe -> 转换为NTLM Hash值与SAM文件中保存内容进行对比 -> 认证是否成功 -> 认证成功后,将UID、GID发送给winlogon.exe,准备登录桌面

相关标签: Windows