windows本地认证
本地认证概述
本地认证最简单的例子就是我们的电脑上存储着自己的账号密码,无论电脑是否联网,只要能开机,就可以输入账号密码登录到电脑中,工作组就是采用本地认证。
那认证流程是什么样子呢?简单流程如下
winlogon.exe(即Windows Logon Process):是Windows NT 用户登陆程序,用于管理用户登陆和退出.用户注销、重启、锁屏后,操作系统会让winlogon.exe显示登陆界面
lsass.exe是一个系统进程,用于微软Windows系统的安全机制。它用于本地安全和登陆策略
SAM文件是位于C\windows\system32\config\目录下的,用于储存本地所有用户的凭证信息,但是这并不代表着你可以随意去查看系统密码
普通人:不能删,不能改,不能看, 不能复制
SAM文件和lsass.exe进程详解
SAM文件是Windows的用户账户数据库,所有用户的登录名及口令等相关信息都会保存在这个文件中,格式简单如下
用户名称:LM-HASH值:NTLM-HASH值
administrator:LM-HASH值:NTLM-HASH值
SAM文件中的密码并不是以明文的形式存在,他是加密后存储在SAM文件中
Lsass.exe进程的作用非常重要,它主要负责管理本地安全策略和认证机制。这些策略包 括密码策略、账户策略、用户权限、域策略等等。同时,它还负责对用户进行身份验证, 以确保只有授权的用户才能访问系统资源。
1、将winlogon传过来的明文账号密码进行加密,然后和SAM 文件中的密文账号密码作对比。如果对比成功就登陆成功
2、将收到的明文账号密码在本地内存中保留一份用作备用
LM-Hash加密步骤
Windows操作系统通常使用两种方法对用户的明文密码进行加密处理。一部分为 LM-Hash,另一部分为 NTLM-Hash。
在 Windows操作系统中,Hash的结构通常如下: username:RID:LM-HASH:NT-HASH
LM Hash(全称为“LAN Manager Hash”)是微软在早期 Windows 操作系统中引入的一种散列加密算法,旨在提高系统的安全性,其核心基于 DES 加密。然而,LM Hash 安全性较低,容易被破解。从 Windows Vista 和 Windows Server 2008 开始,微软默认禁用了 LM Hash,但为了兼容性,未完全移除该机制。LM Hash 的明文密码长度限制为 14 位以内,因此若要彻底避免使用 LM Hash,可以将用户密码设置为超过 14 位。当 LM Hash 被禁用时,攻击者通过工具捕获的 LM Hash 通常会显示为 “aad3b435b51404eeaad3b435b51404ee”,表示该值为空或被禁用。
为提升安全性并兼顾兼容性,微软设计了 NTLM Hash 作为替代方案。NTLM Hash 基于 MD4 算法进行加密。从 Windows Vista(个人版)和 Windows Server 2003(服务器版)起,Windows 系统默认采用 NTLM Hash 作为认证方式。
1、将明文口令转换为其大写形式 假设这里以明文Admin@123为例,转换为大写格式为:
Admin@123----> ADMIN@123
2、将字符串大写后转换为16进制字符串
ADMIN@123---> 41 44 4D 49 4E 40 31 32 33
3、密码不足14字节要求用0补全
41 44 4D 49 4E 40 31 32 33---> 41 44 4D 49 4E 40 31 32 33 00 00 00 00 00
4、将上述编码分成2组7字节
第一组:41 44 4D 49 4E 40 31
第二组:32 33 00 00 00 00 00
5、将每一组7字节的十六进制转换为二进制,每7bit一组末尾加0,再转换成十六进制 组成得到2组8字节的编码
第一组:0100000010100010000100101010100010010100011100100000000001100010
40A2 12A8 9472 0062
第二组:
0011001000011000110000000000000000000000000000000000000000000000
3218 C000 0000 0000
6、将以上步骤得到的两组8字节编码,分别作为DES加密key为魔术字符串KGS!@#$% 进行 加密 KGS!@#$%的16进制为 4B47532140232425
最终结果6F08D7B306B1DAD4B75E0C8D76954A50
NTLM-Hash加密步骤
NTLM-Hash是微软为了在提高安全性的同时保证兼容性而设计的散列加密算法。 NTLM Hash 是基于MD4加密算 法进行加密的。个人版从 Windows vista以后,服务器版从 Windows Server 2003以后, Windows操作系统的认证方式均为 NTLM Hash。
继续以明文密码Admin@123为例
1、将明文口令转换成十六进制的格式
Admin@123--->41646D696E40313233
2、将16进制转换成Unicode格式,即在每个字节之后添加0x00
41646D696E40313233 --->410064006D0069006E004000310032003300
3、对Unicode字符串作MD4加密,生成32位的十六进制数字串 570a9a65db8fba761c1008a51d4c95ab
接下来我们使用工具去查看下计算是否一致
LM-HASH:6F08D7B306B1DAD4B75E0C8D76954A50 NTLM-HASH: 570a9a65db8fba761c1008a51d4c95ab
使用命令
QuarksPwDump.exe --dump-hash-local
前面有提到:当 LM Hash 被禁用时,攻击者通过工具捕获的 LM Hash 通常会显示为 “aad3b435b51404eeaad3b435b51404ee”,表示该值为空或被禁用。
对比发现NTLM值一样
那怎么看LM-Hash是否一样呢,可以用mimikatz
使用命令运行
minikatz.exe
然后提权到debug
privilege::debug
运行抓密码的命令
sekurlsa::logonPasswords
对比发现LM和NTLM值都一样
标签:00,NTLM,Hash,windows,LM,认证,Windows,本地,加密 From: https://www.cnblogs.com/freedom-h/p/18674966