NTLM认证

本文详细介绍了NTLMHash在Windows本地认证中的作用,包括其生成过程、本地认证流程和NTLM协议的工作机制。讨论了LMHash的弱点,并提及了NTLMv2的安全改进。此外,还探讨了哈希传递攻击(PassTheHash)的概念和应用场景,以及Responder工具在内网渗透中的应用。
摘要由CSDN通过智能技术生成
NTLM (NT LAN Manager) Hash
(1)NTLM Hash是支持Net NTLM认证协议以及本地认证过程中一个
重要参照物,长度为32位,由数组与字母组成。
(2)Windows本身不存储用户明文密码,它会将用户的明文密码经过
加密算法后存储在SAM数据库中。
SAM路径:C:\Windows\System32\config\SAM
(3)当用户登录时,将用户输入的明文密码页加密成NTLM Hash,
与SAM数据库中的NTLM Hash进行比较,NTLM Hash的前身是LM Hash,
基本不在使用。
NTLM Hash的产生
admin->hex=61646d696e
61646d696e->Unicode=610064006d0069006e00
610064006d0069006e00->MD4=NTLM Hash
首先将明文密码转换为十六进制之后经过Unicode编码使用MD4算法
加密得到NTLM Hash。
本地认证流程
Windows Logon Process(winlogon.exe)是Windows NT用户登录程序,
用于管理用户登录和退出。
LSASS用于微软Windows系统的安全机制,它用于本地安全和登录策略。
(1)winlogon.exe接收用户输入
(2)lass接收输入信息
(3)加密获得密码NTLM Hash读取SAM数据库与用户名比较
(4)比较结果相同:将User SID与Group SID发送给Winlogon.exe准备登录界面
(5)比较不同则登录失败
LM Hash
(1)将所有小写字母转换为大写字母
(2)将密码转为16进制,分两组,填充为14个字符,空余使用0x00字符填充
(3)将密码分割位两组一组7个字节
(4)将每组转化为比特流,不足56bit则在左边加0
(5)将比特流按照7比特一组,分出8组,末尾加0
(6)将每组比特流转换为16进制,作为被加密的值,使用DES(使用的Key
是固定的为KGS!@#$%即0x4B47532140232425)加密,
得到8个结果,每个结果转换为16进制。
(7)连接两个DES加密字符串,就是LM Hash
可以发现的是如果不足7字节后面将全部补位0因此是固定的。
固定值:AA-D3-B4-35-B5-14-04-EE
LM Hash可以发现是比较脆弱的的,首先Key是固定的而且还可以判断是否大于
7个字符(14个字符分割成两部分小于7则固定Hash)。
Windows网络认证(工作组)
在内网渗透中,竟然遇到工作组环境,而工作组环境是一个逻辑上的网络环境(工作区)
,隶属于工作组的机器之间无法互相建立一个完美的信任机制,只能点对点,是比较落后
的认证方式没有信托机构。
假设A主机与B主机属于同一个工作组环境,A想访问B主机上的资料,需要将一个存在于B
主机上的账号凭据发送至B主机,经过认证才能够访问B主机上的资源。
常见的服务:SMB(网络文件共享系统,文件共享与打印机相关)服务端口:445
NTLM(NT LAN Manager)协议
早期SMB协议在网络上传输明文口令。后来出现LAN Manager Challeng/Response 验证机制
,简称LM,它是如此简单以至于很容易就被破解。
微软提了WindowsNT挑战/响应验证机制,称之为NTLM。现在已经有了更新的NTLMv2和Kerberos
验证体系。
比如SMB协议(负责文件的操作相关的动作)在认证方面仍然使用了NTLM协议,
在很多Windows协议中都是类似的在认证方面使用NTLM协议。
挑战(Challeng)/响应(Response)
(1)协商:
客户端主要在这一步想服务器确认协议版本,是V1还是V2,当然并止这些。
协商(版本确定等)->质询->验证
(2)质询:
第二步质询完整过程:
(2.1)客户端向服务端发送用户信息(用户名)请求。
(2.2)服务端接受到请求判断本地账号是否有用户名share_user没有则认证失败,
如果有生成一个16位的随机数,被称为“Challenge”,
使用登录用户名对应的NTLM Hash(服务端自己的SAM数据查找的NTLM Hash)加密Challenge(16位随机字符),
生成Challenge1。同时,生成Challenge1后,将Challenge(16位随机字符)
发送给客户端。//Net NTLM Hash=NTLM Hash(Challenge)
Challenge1被称为Net NTLM Hash
(2.3)客户端接受到Challenge后,使用将要登录到账号对应的NTLM Hash(客户端发送的NTLM Hash)加密
Challenge生成Response,然后将Response发送到服务器端。
(2.4)服务器端接受到客户端的Response后,比对Chanllenge1和Response是否相等,
相等则通过验证。
(3)验证
第三步验证:这一步其实就是服务器接受到Response后与服务器的Net NTLM Hash比较是否相等。
NTLMv2协议
NTLM v1与NTLM v2最显著的区别就是Challenge与加密算法不同,
共同点就是加密的过程都是NTLM Hash。
NTLM v1与NTLM v2的区别
Challage:NTLM v1的Challenge有8位,NTLM v2的Challenge为16位。
Net-NTLM Hash: NTLM v1的主要加密算法是DES,NTLM v2的主要加密算法是HMAC-MD5。
Responder与smbexec工具
Responder可以开启服务端的HTTP的和SMB协议、如果客户端访问这个服务器,
默认情况下会将用户名和Net NTLM Hash生响应发送到服务端,流程与NTLM协议
流程一样,只是这个服务端并不是真正的服务端而是Responder伪造的,可以通过
该手法获取用户的Net NTLM Hash并且可以破解获得出NTLM Hash但是需要很大的时间成本
才行,如果是LM协议的话破解相对轻松很多,更容易获得LM Hash。
Pass The Hash(哈希传递)
在内网渗透中,我们经常需要抓取管理员密码、NTLM Hash通过搜集这些信息有助于
我们扩大战果、尤其是在域环境下。
(1)什么是哈希传递
哈希传递是能够在不需要账号明文密码的情况下完成认证的一个技术,比如NTLM Hash、
LM Hash都不需要明文密码因此都可以被称为Hash传递攻击。
(2)哈希传递的作用
解决渗透中获取不到明文密码,破解不了NTLM Hash的MD4算法而又想扩大战果的问题。
Pass The Hash 必要条件
(1)哈希传递需要被认证的主机能够访问服务器
(2)哈希传递需要被传递认证的用户名
(3)哈希传递需要传递的认证用户的NTLM Hash
Pass The Hash 原理分析
(1)要完成一个NTLM认证,第一步需要客户端将主机要参与认证的用户名发送至服务器端,
等待服务器端给出的Challenge。
客户端将用户名(share_user)发送给服务端
服务端验证用户成功将Chanllenge发送给客户端
客户端将Response发送给服务端
Response中的Net NTLM Hash与服务端的Net NTLM Hash一致则验证成功
其实哈希传递就是使用用户名对应的NTLM Hash将服务器给出的Chanllenge加密,
生成一个Response,来完成认证。
利用工具:CrackMapExec
命令:cme smb(使用smb协议) 192.168.3.5 -u administrator -H xxxxxxx -x whoami
Smbmap、Smbexec、Metasploit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚构之人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值