NTLM协议原理分析
创始人
2024-05-30 15:04:58
0

LM Hash 和 NTLM Hash

windows用户的密码以哈希的形式保存在SAM文件中“%SystemRoot%\system32\config\SAM”。域用户的密码以哈希的形式保存在域控的 NTDS.dit 文件中。 密码的哈希值格式如下

用域名:uid:LM哈希:NTLM哈希:::

由于LM Hash 有安全缺陷,所以Windows Vista 和 Windows Server 2008开始,默认情况下只存储 NTLM Hash,LM Hash 将不再存储。

Windows认证分类

而NTLM中继(NTLM Relay)是指在NTLM认证过程中设置中间人对HTLM认证的请求截获并转发的一种攻击行为。

在 Windows 中,最常见的两种认证体系为 NTLM 认证和 Kerberos 认证。NTLM认证就是利用 NTLM Hash 进行的认证,可以分为本地认证和网络认证。

NTLM本地认证

windows用户的密码保存在SAM文件中“%SystemRoot%\system32\config\SAM”。计算机启动时,操作系统会让winlogon.exe 程序显示登录界面(输入框),当你输入用户密码进行登录时,lsass.exe会将你输入的明文密码加密成NLTM哈希,再sam文件中的哈希进行对比,一致则登陆成功

NTLM网络认证

NTLM网络认证,即可用于工作组的认证,也可用于域环境。NTLM 有 NTLMv1 、NTLMv2 、NTLMsession v2 三个版本,目前使用最多的是NTLMv2版本。比如当我们访问同一局域网的一台主机上的SMB共享时需提供凭证后才能成功进行访问,这就涉及到NTLM网站认证。

下面介绍NTLM网络认证的原理及利用方式

NTLM认证机制

NTLM(NT LAN Manager)是一套安全协议,利用NTLM哈希进行认证。NTLM认证是一种基于Challenge/Response的验证协议

NTLM在工作组环境的认证

N在认证过程中会发送以下三种类型的消息:

  • TYPE 1 协商:双方确定传输协议的版本、明文用户名。

  • TYPE 2 质询:生成Challenge

  • TYPE 3 身份验证:发送Response

NTLM版本

协商会确认NTLM版本,分为:NTLM v1、NTLM v2、NTLM v2 Session,目前使用最多的是NTLM v2。NTLMv1与NTLM v2最显著的区别就是Challenge与加密算法不同,共同点就是加密的原料都是NTLM Hash,NTLM v1的Challenge有8位,NTLM v2的Challenge为16位;NTLM v1的主要加密算法是DES,NTLM v2的主要加密算法是HMAC-MD5。

比如,局域网的两台主机A和主机B,暂且将主机A称为client,主机B称为server

工作组中:

  1. 当客户端要访问服务器上某个受保护的服务时,需要输入服务器的用户名和密码进行验证。此时客户端会在本地缓存一份服务器密码的NTLM hash,然后向服务器发送协商消息。

  1. 服务器收到客户端的协商信息后,生成并回复质询消息。该消息中包含了一个由服务端生成的16位随机值challenge,服务器也会在本地缓存该值。

  1. 客户端收到质询消息后,会使用步骤1中缓存的服务器的NTLM hash对Challenge进行加密生成Response,接着再生成Net-NTLM hash=Challenge+Response+用户名等,再将Net-NTLM hash封装到身份验证消息中发往服务器。

  1. 服务器在收到身份验证消息后,用自己密码的NTLM hash对Challenge进行加密生成Response2,并比较Response2与Response是否一致。如果一致,就证明客户端掌握了服务器的密码,认证成功,否则认证失败。

NTLM在域环境的认证

在域环境中,由于所有域用户的哈希值都 存储在域控制器的NTDS.dit中,服务器本身无法计算Response消息,因此需要与域控建立一个安全通道,并通过域控完成最后的认证流程。前三个步骤同工作组环境的认证

  1. 当域用户输入自己的账号和密码登录客户端主机时,客户端会将用户输入的密码转换为NTLM hash并缓存。当用户想访问域内某台服务器上的资源时,客户端会向服务器发送TYPE1 Negotiate消息

  1. 同NTLM在工作组环境中的认证

  1. 同NTLM在工作组环境中的认证


  1. 服务器收到客户端发来的TYPE 3消息后,会将消息通过 Netlogon协议转发给域控制器。

  1. 域控制器根据TYPE 3消息中的用户名获取该用户名的NTLM hash,用NTLM hash对原始的Challenge进行加密并生成Response,然后将其与TYPE 3消息中Response对比。如果一致,就证明客户端掌握了服务器密码,认证成功,否则认证失败。

  1. 服务器根据域控返回的验证结果,对客户端进行相应的回复。

NTLM协议抓包分析

实验环境工作组

  • 主机A:192.168.125.129

  • 主机B:192.168.125.130

主机A访问主机B的共享并成功认证时

 net use \\192.168.125.130\c$ win7.com /user:administrator

可以看到整个过程分为4步

  • Session Setup Request, NTLMSSP_NEGOTIATE 协商

  • Session Setup Response, Error: STATUS_MORE_PROCESSING_REQUIRED, NTLMSSP_CHALLENGE 返回challenge

  • Session Setup Request, NTLMSSP_AUTH, User: \administrator 提交ntlm hash

  • Session Setup Response 返回认证成功

当认证失败时,整个认证过程也是4步,前三步和认证成功的过程一致,只有最后一步不一致

  • Session Setup Request, NTLMSSP_NEGOTIATE 协商

  • Session Setup Response, Error: STATUS_MORE_PROCESSING_REQUIRED, NTLMSSP_CHALLENGE 返回challenge

  • Session Setup Request, NTLMSSP_AUTH, User: \administrator 提交ntlm hash

  • Session Setup Response, Error: STATUS_LOGIN_FAILURE 返回认证失败

在认证的整个过程中,不过认证成功还是失败,都会返回challenge,前面的认证原理已经讲过。

那返回的challenge在哪里了?

如下,NTLM Server Challenge: 745d99992196a1b2,这个16位长的字符串就是challenge

Net-NTLM hash组成

Net-NTLM hash v2的格式如下

username::domain:challenge:HMAC-MD5:blob

username和domain如下所示,这里domain为NULL即为空

challenge

HMAC-MD5对应数据包中的NTProofStr

blob对应NTLM Response值中去掉NTProofStr值后剩余的后半部分,如下

所以完整的NTLMv2数据为如下,此数据为Net-NTLM hash。

username::domain:challenge:HMAC-MD5:blob

administrator:::de80d8c98d613290:2d10d365458e1d0477882e2f9ad26d12:010100000000000065bd67e73550d90172b7652a991cd25c0000000002001000410044004d0049004e002d005000430001001000410044004d0049004e002d005000430004001000610064006d0069006e002d005000430003001000610064006d0069006e002d00500043000700080065bd67e73550d90106000400020000000800300030000000000000000000000000300000a1eda9cbf6aefc8eb7eb43b5db4c6f011f5a8dbb4fd5bfa1192814b27b579fc70a001000000000000000000000000000000000000900280063006900660073002f003100390032002e003100360038002e003100320035002e00310033003000000000000000000000000000

然后使用hashcat即可破解

把hash放进hash.txt中,执行如下

hashcat.exe -m 5600 hash.txt pass.txt

获取出明文密码win7.com

Net-NTLM hash的利用

实战中可以通过中间人等方式截获客户端的认证请求,并获取Net-NTLM hash。红队人员可以选择对Net-NTLM hash进行暴力破解并获取客户端用户的明文密码。除了爆破外,还有另外一种利用方法,即NTLM Relay。

相关内容

热门资讯

我的妈妈初中作文800字【精... 我的妈妈初中作文800字 篇一我妈妈是一个温柔而坚强的女人。她照顾我和家庭的同时,也努力工作,为我们...
夜色温柔初中作文【优选5篇】 夜色温柔初中作文 篇一夜色温柔初中作文夜晚,是一天中最安静、最神秘的时刻。当太阳沉入地平线,天空渐渐...
《翡翠森林》观后感900字(... 《翡翠森林》观后感900字 篇一《翡翠森林》是一部以自然为主题的纪录片,通过展示翡翠森林的美丽景色和...
我和妈妈的故事-初中记叙文(... 我和妈妈的故事-初中记叙文 篇一妈妈是我生命中最重要的人,她是我最亲密的伙伴,也是我最坚强的支持者。...
我们是一家人初中作文【优质6... 我们是一家人初中作文 篇一我们是一家人家,是我们生活的港湾,是我们心灵的归宿。而我们,是一个幸福温馨...
初中作文:飘落的樱花【实用5... 初中作文:飘落的樱花 篇一樱花是一种美丽而短暂的花朵,它的开放总是给人们带来无尽的惊喜和美好的回忆。...
解开缚心的绳索作文(优质6篇... 解开缚心的绳索作文 篇一绳索,是一种用来束缚的工具,它可以用来捆绑、困住甚至勒死人。然而,有时候,这...
我是谁作文【最新6篇】 我是谁作文 篇一我是谁?这是一个看似简单却又复杂的问题。每个人都有自己独特的身份和故事,我也不例外。...
我们一家人初中作文(经典6篇... 我们一家人初中作文 篇一我们一家人初中作文我是一个初中生,家中有爸爸、妈妈和一个比我小两岁的弟弟。我...
初中生作文600字【推荐6篇... 初中生作文600字 篇一:我的暑假生活暑假终于到了,这是我最期待的时刻。我有一个丰富多彩的暑假计划,...
尊重的作文【优选6篇】 尊重的作文 篇一尊重是一种基本的社会道德,是我们与他人相处时应当遵循的原则。尊重他人不仅能够维护社会...
十年后的我初中作文【优秀6篇... 十年后的我初中作文 篇一我的初中生活是我成长的重要阶段,十年后回顾起来,我深深地感慨万分。初中时期,...
我的生日_(精彩6篇) 我的生日_ 篇一今天是我的生日,我迫不及待地等待着这一天的到来。在这一天,我将和家人、朋友一起庆祝,...
学会放弃的初中作文【优选6篇... 学会放弃的初中作文 篇一在我们的成长过程中,学会放弃是一个非常重要的能力。放弃并不意味着失败,相反,...
闯江湖600字作文【实用6篇... 闯江湖600字作文 篇一:我的江湖初试江湖,是一个神秘而又充满诱惑的地方。作为一个热血青年,我无法抵...
初一作文祖国颂【优选3篇】 初一作文祖国颂 篇一祖国,是我们生活的家园,是我们永远的依靠和坚实的后盾。我深深地热爱着这片土地,因...
关于季节的作文七年级作文精选... 关于季节的作文七年级作文 第一篇如果用春夏秋冬来诠释人生,那么生机是夏的代言,清爽是秋的形象,冷漠是...
由你选择作文【精选3篇】 由你选择作文 篇一标题:友情的力量友情是一种无私的情感,它可以让我们感受到温暖和力量。在我们的生活中...
争当四好少年作文(精选3篇) 争当四好少年作文 篇一争当四好少年作文作为当代少年,我们要时刻牢记自己的使命和责任,争当四好少年。四...
初一军训作文【精彩6篇】 初一军训作文 篇一军训的日子军训是我们初中生活中的一段特殊时光。虽然只有短短的十天,但对我们来说却是...