【唯科普】Windows认证原理入门篇

百家 作者:唯品会安全 2020-03-04 01:54:07


鸣 谢

VSRC感谢业界小伙伴——Mils 投稿精品科普类文章。VSRC欢迎精品原创类文章投稿,优秀文章一旦采纳发布,将有好礼相送,我们已为您准备好了丰富的奖品!

(活动最终解释权归VSRC所有)




Tips:此文适合Windows认证入门科普文,大牛请自行绕过。

唯科普

01

基本原理

Windows密码的路径是:%SystemRoot%System32configsam  (即”SAM路径“)
当我们登陆系统时,系统会自动地读取SAM文件中的密码与我们输入的密码进行比对,密码会被转换为NTLM HASH(NT LAN Manager)进行存储。
Windows本身不存储用户的明文密码,Windows会将用户的明文密码经过加密算法后存储在SAM数据库中,当用户登陆时,将用户输入的明文密码也加密成NTLM HASH,与SAM数据库中的NTLM HASH进行比较 (NTLM Hash的前身是LM HASH,基本已淘汰,算法脆弱,但是xp2003内老系统仍旧存在)。
LM HASH主要存在的安全问题是:密码不区分大小写(因为最开始会把密码统一转换为大写)、密码最长为14位、可通过加密后的值反推加密前的密码位数、DES加密强度较弱等。




唯科普

02

NTLM HASH生成原理三步骤详解

第一步:hex (16进制编码)                         

第二步:Unicode编码(ASCII转Unicode) 

第三步:MD4加密得到NTML HASH          


*参考:MD4是麻省理工学院教授Ronald Rivest于1990年设计的一种信息摘要算法。它是一种用来测试信息完整性的密码散列函数的实行。其摘要长度为128位,一般128位长的MD4散列被表示为32位的十六进制数字。这个算法影响了后来的算法如MD5、SHA 家族和RIPEMD等。




唯科普

03

Windows本地认证流程

注销或开机后:弹出输入账号密码的界面,用于接受用户输入 (实际会有个本地进程:winlogon.exe进程,用于管理用户的登陆和退出);

进程(1):winlogon.exe进程,将账号密码给lsass.exe进程进行处理,并将密码缓存在进程中;

进程(2):lsass.exe进程,将密码转换为NTLM HASH,读取SAM数据库与用户名进行比较;

若比较结果相同,则将User SID与Group SID发给winlogon.exe,并准备登陆界面;若比较结果不同,则登陆失败。




唯科普

04

Windows网络认证原理

局域网工作组:缺少信托机构(银行:两者之间进行交易所必须信任的中间人)
工作组的环境是一个逻辑上的网络环境(工作区),隶属于工作组的机器之间无法互相建立一个完美的信任机制,只能点对点,是较为落后的认证方式,没有信托机构。
假设A主机与B主机在一个工作主组环境,A想要访问B主机上的资源,需要将一个存在于B主机上的账户凭证发送至B主机,经过认证才能访问B主机上的资源。传输数据由协议来规范数据如何传递,最常见的服务:SMB服务 端口445。




唯科普

05

NTLM协议——NT LAN Manager

认证如此简单因此需要协议来规范,于是就产生了NTLM协议。

SMB协议:早期在网络上传输的是明文口令;

LM协议:后来出现了LAN Manager Challenge/Response挑战和验证机制,简称LM,较脆弱;

NTLM协议:后续微软提出WindowsNT挑战/响应验证机制“NTLM”,NTLM支持SMB(SMB是个服务,操作上的)。




唯科普

06

挑战和响应机制 (NTLM V2)

第一步:协商


确认协议版本,是V1还是V2?


第二步:质询


质询的完整过程:

(1)服务器判断用户是否存在:

客户端向服务器端发送用户主机信息(必须包含用户名),服务器用客户端请求的用户名来判断服务器内是否有这个用户;

若没有这个用户,那么认证过程就是失败的;若有,则继续:

(2)服务器生成16位Challenge:

服务器接受到请求之后生成一个16位随机数Challenge,服务器使用登录用户名对应的NTLM HASH;

(3)服务器生成Net NTLM HASH:

服务器用本机SAM文件数据库内NTLM HASH 加密 16位随机数 Challenge生成Challenge1 即“Net NTML HASH”;

(4)服务器返回16位Challenge:

服务器将之前生成的16位随机数Challenge再发送给客户端;

(5)客户端生成Response:

客户端接受到Challenge之后,使用将要登陆到账户对应的NTLM HASH加密Challenge生成Response,然后将Response发送到服务端 ;


第三步:验证


(6)服务端比对Response是否等于Net NTLM HASH:

比对服务器端收到客户端的Response后,比对NET NTLM HASH与Response是否相等,相等则通过。 




唯科普

07

实战验证

(1)修改mdmin账户密码为vsrc@2020。

(2)通过Pythonnthash.hash函数能直接得出vsrc@2020对应的NTLM HASH为:7b86d7692a8b1de47817434f08671229;


(3)根据NTLM HASH的生成原理推算也同样得到7b86d7692a8b1de47817434f08671229;

第一步:将vsrc@2020进行十六进制的转换后输出结果如下;


第二步:转码为Unicode得到结果如下;


第三步:将760073007200630040003200300032003000进行MD4加密后得到结果如下


(4)将lsass保存在内存中的信息dump成为本地lsass.dmp文件;

(5)获取lsass.dmp文件内容并查看mdmin账户密码的NTLM HASH值:与分步骤推算的值一致,再一次得到7b86d7692a8b1de47817434f08671229;

验证完成。



参考资料链接:

1、https://docs.microsoft.com/en-us/windows/win32/secauthn/microsoft-ntlm 2、https://docs.microsoft.com/en-us/windows/win32/secauthn/microsoft-kerberos 3、https://www.insecurity.be/blog/2018/01/21/retrieving-ntlm-hashes-and-what-changed-technical-writeup/


精彩原创文章投稿有惊喜!

欢迎投稿!

VSRC欢迎精品原创类文章投稿,优秀文章一旦采纳发布,将为您准备的丰富奖金税后1000元现金或等值礼品,上不封顶!如若是安全文章连载,奖金更加丰厚,税后10000元或等值礼品,上不封顶!还可领取精美礼品!可点击“阅读原文”了解规则。(最终奖励以文章质量为准。活动最终解释权归VSRC所有)



我们聆听您宝贵建议


不知道,大家都喜欢阅读哪些类型的信息安全文章?

不知道,大家都希望我们更新关于哪些主题的干货?

现在起,只要您有任何想法或建议,欢迎直接回复本公众号留言!

精彩留言互动的热心用户,将有机会获得VSRC赠送的精美奖品一份!

同时,我们也会根据大家反馈的建议,选取热门话题,进行原创发布!


点击阅读原文进入   【VSRC征稿】宅家副业攻略请查收!



关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接