聊聊NTLM认证协议

时间:2022-12-13 18:12:57

近期发现多家安全媒体发布NTLM协议漏洞的文章。他们越说越术语,越说越官方,如此这般下去,他们写出来到底给谁看?大雅就是俗,让我来一篇俗文。啥是NTLM呢?微软windows系统的用户账号存储密码哈希值的方式。一般有LM,NTML,NTLMv2.(NT LAN Manager)windows系统的局域网管理,管理账号密码存储方式的协议。有这个认知就行了。

比如你设置密码为password123456,那么NTML的存储方式就是把它转换成了哈希值存储。第一次听说哈希?比如把1,变成哈希可能会是flkadjl2135等乱码。MD5就是最常见的哈希函数之一,用来把1,输出成为乱码。还有更多的哈希函数,特征就是输出结果不一样。

哈希有一个特征,那就是把明文(比如1)输出为乱码(密文,比如abcd),我们可以把1-1000一个个的用哈希函数输出结果,手里就有1-1000对应的哈希值,这个输出结果被称为彩虹表。破解密码就是根据生成的密文,看对应的明文是多少。其实就是在表中搜索,abdc对应的是不是1。

要防止密码被破解的可能,就是把密码设置得更长更复杂,比如设置为:password123456/-*ABCD&*==***¥¥,即使用彩虹表或超级计算机群也无法在可接受的时间内对其进行枚举的生成密文,再去搜索密文对应的明文是什么。

要拿到windows系统中的账号密码,我们需要权限(SYSTEM权限)才能获取到,安全账号管理器(SAM)数据库中存储的windows用户和密码。有工具可以拿到这些,比如大名鼎鼎的meterpreter。

就算拿到账号密码又有什么用呢,我们破解不了密码的哈希值。不需要破解,直接拿它去登陆。这样,我们就拥有了该系统的高权限账号。

还有一种身份认证环节,是kerverso令牌,如果你用meterpreter成功入侵系统,而域管理员用户登陆过这台机器,一个kerbreos令牌就会发送到服务器上并将在随后的一段时间之内有效。我们可以使用这个活动令牌来入侵系统,通过meterpreter可以假冒域管理员的角色,而不需要破解密码。

扯了这么多协议,从来没看见有人指一指在哪,我来指。如图,大概所有的其他类似安全认证协议都差不多就集中在这里。

不同的系统,显示出不一样的选项。多个系统观察就知道了。

聊聊NTLM认证协议