Windows本地认证
本地认证即用户的账户密码存储在本机电脑中,无论电脑是否联网,都可输入正确的账户密码进行登录。
工作组内的电脑采用的就是本地认证
本地认证流程
winlogon.exe
Windows Logon Process(即winlogon.exe),是Windows NT 用户登陆程序,用于管理用户登录和退出。
该进程的正常路径应是C:\Windows\System32,且是以 SYSTEM 用户运行
lsass.exe
lsass.exe是一个系统进程,用于微软Windows系统的安全机制。 它用于管理本地安全策略和认证策略。
这些策略包括密码策略、账户策略、用户权限、域策略等等,除此之外,还对用户进行身份验证,以确保只有授权的用户才能访问系统资源。
lsass程序的作用:
1、将winlogon传过来的明文账户密码进行加密,然后和SAM文件中的密文账户密码作对比,如果对比成功则登录成功。
2、将收到的明文账户密码在本地内存中一份作为备用
SAM文件
对于Windows,SAM文件是位于C:\windows\system32\config\sam,用于存储本地所有用户的凭证信息。
但对应普通用户而言,不能进行增加、修改、查看、复制。
详解
- SAM文件是Windows的用户账户数据库,所有用户的登录名及口令等相关信息都会保存在这个文件中。
- SAM文件中的密码并不是以明文的形式存在,而是加密后存储在SAM文件中
文件中的账户存储格式为:
用户名:LM-HASH值:NTLM-HASH值,例如:administrator:LM-HASH值:NTLM-HASH值
SAM文件和lsass.exe文件关系
LM-HASH
对于Windows操作系统通常使用两种方法对用户的明文密码进行加密处理,一部分为LM-HASH,另一部分为NTLM-HASH。
SAM文件中的hash值结构为username:RID:LM-HASH:NTLM-HASH
LM-HASH概述
挑战/响应验证机制
LM Hash的全名为"LAN Manager Hash",是微软为了提高 Windows操作系统的安全性而采用的散列加密算法,其本质是DES加密。
尽管 LM Hash较容易被破解,但为了保证系统的兼容性,Windows只是将LM Hash禁用了(从 Windows vista和 Windows Server2008版本开始, Windows操作系 统默认禁用 LM Hash)。
LM Hash明文密码被限定在14位以内,也就是说,如果要停止使用 LM Hash,将用户的密码设置为14位以上即可。
如果 LM Hash被禁用了,攻击者通过工具抓取的LM Hash通常为 “aad3b435b51404eead3b435b51404ee”(表示 LM Hash为空值或被禁用) 。
操作系统所用HASH
为了解决LM加密和身份验证方案中固有的安全弱点,Microsoft 于1993年在Windows NT 3.1中引 入了NTLM协议。
下面是各个版本对LM和NTLM的支持:
加密类型 | 2000 | XP | 2003 | Vista | Win7 | 2008 | Win8 | 2012 | Win10 | 2016 | Win11 |
---|---|---|---|---|---|---|---|---|---|---|---|
LM-HASH | √ | √ | √ | √ | |||||||
NTLM-HASH | √ | √ | √ | √ | √ | √ | √ |
LM-HASH值的加密流程
用户密码例如:a1b2c3..
1、将明文口令转换为大写
A1B2C3..
2、将大写的字母转换为16进制
41 31 42 32 43 33 2E 2E
3、密码不足14字节,要求 用0补齐
41 31 42 32 43 33 2E 2E 00 00 00 00 00 00
4、将上述编码分为2组7字节
第一组:41 31 42 32 43 33 2E
第二组:2E 00 00 00 00 00 00
5、将每一组7个字节的16进制转换为2进制,每7bit一组末尾加0,再转换为16进制
第一组:41 31 42 32 43 33 2E
二进制:01000001001100010100001000110010010000110011001100101110
每7bit一组末尾补0
01000000
10011000
01010000
01000110
00100100
00011000
11001100
01011100
合并后:0100000010011000010100000100011000100100000110001100110001011100
转为16进制:409850462418CC5C
第二组:2E 00 00 00 00 00 00
二进制:00101110000000000000000000000000000000000000000000000000
每7bit之后补0
00101110
00000000
00000000
00000000
00000000
00000000
00000000
00000000
合并后:0010111000000000000000000000000000000000000000000000000000000000
转为16进制:2E00000000000000
6、将上述步骤得到的两组8字节编码,分别作为DES加密,key为魔术字符串 KGS!@#$% 进行加密。
KGS!@#$% 的16进制为4B47532140232425,最后将两组加密后的密文进行拼接,即得到LM-HASH值
第一组:FCEECFE68DE61CD8
第二组:5AACD84CD494924F
两组进行拼接
用户密码 a1b2c3..的LM-HASH值为FCEECFE68DE61CD85AACD84CD494924F
NTLM-HASH
概述
NTLM Hash是微软为了在提高安全性的同时保证兼容性而设计的散列加密算法。
NTLM Hash 是基于MD4加密算法进行加密的,个人版从 Windows vista以后,服务器版从 Windows Server 2003以后, Windows操作系统的认证方式均为 NTLM Hash
加密规则
1、将明文口令转换为16进制
以a1b2c3..为例
16进制:61 31 62 32 63 33 2e 2e
2、将16进制转换为Unicode格式,即在每个字节之后添加0X00
6100310062003200630033002E002E00
3、对Unicode字符串作为MD4加密,生成32位的16进制值
b6fedcbb1ab4f59dd213d03eb992b759
SAM文件值
用户名为administrator
密码为a1b2c3..
存储后的密文格式为 administrator:500:FCEECFE68DE61CD85AACD84CD494924F:B6FEDCBB1AB4F59DD213D03EB992B759
hash值对比
使用工具提取系统中sam文件的存储值
QuarksPwDump.exe
mimikatz.exe
本文系作者 @小白学安全 原创发布在 xbxaq.com 站点,未经许可,禁止转载!
评论