首页 > 其他分享 >NTLM认证协议

NTLM认证协议

时间:2023-09-18 22:15:24浏览次数:36  
标签:协议 Hash NTLM 用户 认证 密码 客户端

NTLM认证协议

介绍

NTLM(NT LAN Manager)最早使用在Windows NT操作系统,被广泛应用于工作组和域环境。现在在一些旧系统或者老的应用程序可能还在使用,用于用户身份验证(在网络上验证用户的身份,以便他们可以访问共享资源,如文件、打印机和应用程序)。NTLM协议的认证, 包括 NTLMv1 和 NTLMv2 两个版本。

认证原理

NTLM的认证原理主要通过对比客户端和服务端加密后的数据,判断其是否一致,以确定用户身份。即NTLM通过挑战-响应机制来工作,服务器向客户端发送随机挑战,客户端使用用户密码的散列值生成响应,服务器验证响应以确定用户的身份。

在C:\Windows\System32\config目录下的SAM文件(可视为一个数据库)是操作系统存储用户名、密码哈希值以及帐户等各种属性的地方,这里保留了计算机本地所有用户的凭证信息。(Windows本身不保存明文密码,只保留密码的Hash)

NTLM和SAM的交互:

当用户登录Windows计算机需要输入密码的时候,操作系统会使用SAM的信息来验证用户的真实性,如果通过验证则可以访问其用户下被授权的资源。

验证的过程是NTLM协议来验证,但NTLM不存储信息,需要依靠SAM提供信息

大概交互过程:

winlogon.exe -> 接收用户输入 -> lsass.exe -> (认证)

首先,用户注销、重启、锁屏后,操作系统会让winlogon显示登录界面,也就是输入框,接收输入后,将密码交给lsass进程这个进程中会存一份明文密码,将明文密码加密成NTLM Hash,对SAM数据库比较认证。

NTLM Hash与NTLM

NTLM Hash是NTLM协议中的一个关键概念(NTLM网络认证协议是以NTLM Hash作为根本凭证进行认证的协议),用于存储用户密码的散列值。NTLM Hash是密码的散列表示,而不是明文密码。

NTLM Hash的产生

需要经过3次不同的加密,分别是十六进制编码、unicode转化,MD4加密,最后的十六进制加密结果就是NTML Hash

admin -> hex(16进制编码) = 61646d696e
61646d696e -> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634

hash密码格式

Windows环境下hash密码格式为:用户名称:SID:LM-HASH值:NT-HASH值

Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::
用户名:Administrator
SID:500
LM-HASH:C8825DB10F2590EAAAD3B435B51404EE
NT-HASH:683020925C5D8569C23AA724774CE6CC

Windows下LM Hash值生成原理

  1. 密码准备:首先,将用户的密码转换为大写字母。LM Hash 不区分大小写,所以所有的字符都被强制转换为大写。
  2. 密码填充:如果密码的长度不足 14 个字符,会用空格字符填充至 14 个字符。
  3. 密码分割:然后,将这 14 个字符的密码分成两个 7 字符的块。
  4. 字符转换:将每个 7 字符块转换为 56 位的二进制数值。这是通过将每个字符转换为 8 位 ASCII 码值,并将其合并成一个 56 位的二进制数。
  5. 创建两个 56 位块:将第一个 7 字符块的 56 位数分成两个 32 位块和一个 8 位块。将第二个 7 字符块的 56 位数分成两个 32 位块。
  6. 使用 DES 加密:使用两个 DES 密钥(通常是固定的)对这两个 32 位块进行分别加密。这将生成两个 64 位的二进制数。
  7. 合并两个 64 位块:将这两个 64 位块合并成一个 128 位的 LM Hash 值。

Windows下NTLM Hash生成原理:

  1. 密码准备:首先,将用户的密码转换为 Unicode 格式。Unicode 是一种字符编码,它支持更广泛的字符集,而不仅仅是 ASCII 字符。NTLM 使用 Unicode 编码来处理密码。

  2. 创建密码的散列值:接下来,使用密码的 Unicode 编码形式来创建密码的散列值。通常,这个过程涉及到以下步骤:

  • 使用 UTF-16 编码(Unicode 编码的一种形式)将密码转换为字节序列。UTF-16 使用 2 个字节来表示每个字符。

  • 对密码的字节序列应用一种哈希函数,通常使用 MD4(Message Digest Algorithm 4)算法。这将生成一个固定长度的散列值(通常是 16 字节,即 128 位)。

  1. 得到 NTLM Hash:生成的散列值就是 NTLM Hash。这个 128 位的散列值被用于在 Windows 中验证用户的身份。

NTLM认证过程

NTLM协议的认证过程分为三步:

  • 协商

    主要用于确认双方协议版本

  • 质询

    挑战(Chalenge)/响应(Response)认证机制起作用的范畴

  • 验证

    主要是在质询完成后,验证结果,是认证的最后一步

完整过程

协商

  • 客户端向服务器发送登录请求。

质询

  • 服务器生成一个随机的挑战(challenge)并将其发送给客户端。

  • 客户端接收挑战后,使用用户的密码和一些其他信息(如用户名和域名)来计算一个响应(response)。

  • 客户端将响应发送回服务器。

验证

  • 服务器接收响应后,使用相同的信息和存储在数据库中的用户密码的哈希值来计算一个期望的响应。

  • 服务器将期望的响应与客户端发送的响应进行比较。如果它们匹配,客户端被授权访问请求的资源。

参考资料

PTH(Pass The Hash)哈希传递攻击手法与防范

responder介绍和教程

域环境搭建

标签:协议,Hash,NTLM,用户,认证,密码,客户端
From: https://www.cnblogs.com/ntrack/p/17713197.html

相关文章

  • Springboot简单功能示例-5 使用JWT进行授权认证
    springboot-sample介绍springboot简单示例-使用JWT进行授权认证跳转到发行版查看发行版说明软件架构(当前发行版)Springboot3.1.3hutoolbcprov-jdk18on安装教程gitclone--branch自定义加密进行登录验证[email protected]:simen_net/springboot-sample.git主要功......
  • Oracle OCP 19c认证考试1Z0-082题库最新解析 第十四题
    14.ExaminethedescriptionoftheSATES1tableSALES2isatablewiththesamedescriptionasSALES1SomesalesdataiscontainederroneouslyinbothtablesYoumustdisplayrowsfromSALES1andSALES2andwishtoseetheduplicatestooWhichsetoperatorge......
  • ​产品办理欧盟CE认证以后可以出口哪些国家?
    近年来,在欧洲经济区(欧洲联盟、欧洲自由贸易协会成员国,瑞士除外)市场上销售的商品中,CE认证标志的使用越来越多,CE标志加贴的商品表示其符合安全、卫生、环保和消费者保护等一系列欧洲指令所要表达的要求。欧盟EU25个成员国:欧盟EU和欧洲经济区EEA国家需要CE标志欧盟EU25个成员国:Austria......
  • ​产品办理欧盟CE认证以后可以出口哪些国家?
    近年来,在欧洲经济区(欧洲联盟、欧洲自由贸易协会成员国,瑞士除外)市场上销售的商品中,CE认证标志的使用越来越多,CE标志加贴的商品表示其符合安全、卫生、环保和消费者保护等一系列欧洲指令所要表达的要求。欧盟EU25个成员国:欧盟EU和欧洲经济区EEA国家需要CE标志欧盟EU25个成员国:Austria......
  • 基于 SMB 协议收集信息
    使用smb_version基于SMB协议扫描版本号msf5>useauxiliary/scanner/smb/smb_version设置扫描目标,注意多个目标使用逗号+空格隔开msf5auxiliary(scanner/smb/smb_version)>showoptions#设置msf5auxiliary(scanner/smb/smb_version)>setRHOSTS192.168.146.135m......
  • 最近亚马逊严查 电热水壶认证加拿大CSA22.1和SOR/2016-181标准和要求
    最近亚马逊严查电热水壶认证加拿大CSA22.1和SOR/2016-181标准和要求近日,亚马逊平台发布公告,要求在加拿大站销售的所有电水壶必须有ISO17025实验室出具的符合CSA22.1和SOR/2016-181标准的认证证书。卖家们应尽快上传相关资料以避免产品被强制下架,截止日期为2023年10月30日。电水壶......
  • 基于 SNMP 协议收集主机信息
    我们使用root用户先到Metasploitable2-Linux主机上修改一下SNMP服务,因为默认服务是不对外开放的。 msfadmin@metasploitable:~#vim/etc/default/snmpd改第11行SNMPDOPTS='-Lsd-Lf/dev/null-usnmp-I-smux-p/var/run/snmpd.pid127.0.0.1'为:SNMPDOPTS=......
  • 极验率先推出一键认证安全版,供客户自主免费升级,规避日常运营中的风险盲区
    2017年6月1日,互联网服务开始响应《中华人民共和国网络安全法》的要求实施账号实名认证。由此,手机号码成为网络世界最主要的“身份证”,也让本机号码一键认证成为可能。其中,极验是最早的直连三大运营商的五家供应商之一,早在2017年就正式对外提供一键认证接口。一键认证于2020年进入普......
  • 基于 tcp 协议收集主机信息
    使用Metasploit中的nmap和arp_sweep收集主机信息Metasploit中也有NMAP工具root@xuegod53:~#msfconsolemsf5>db_nmap-sV192.168.1.1ARP扫描msf5>useauxiliary/scanner/discovery/arp_sweep查看一下模块需要配置哪些参数msf5auxiliary(scanner/disc......
  • 网络协议的重要性与应用:理解进程间通信和网络分层结构(下)
    引言在之前的章节中,我们重点介绍了TCP/IP网络模型的应用层、传输层和网络层,强调了它们的重要性。现在,我们将继续讨论下一个主题:数据链路层和物理层。这两个层级是网络通信中至关重要的一部分,它们负责处理实际的数据传输和物理连接。请继续阅读,我们将深入解析这些层级的功能和作用......