NTLM协议

Windows本地认证#

当我们开机登录输入密码的时候,系统会将我们输入的明文密码加密成NTLM hash,此时再同sam文件里的值进行对比,如果相同,则登录成功。NTLM hash的前身是LM hash,SAM文件中存储的就是密码的哈希值

默认路径:C:\Windows\System32\config\SAM

NTLM hash 的产生:明文->hex编码->Unicode编码->MD4,py中有NTLM库可以直接实现

windows 网络认证#

在内网渗透中,经常会遇到工作组环境,而工作组环境是一个逻辑上的网络环境(局域网工作区),因为在工作组中并不存在一个信托机构,所以隶属于工作组的机器之间是无法建立一个完美的信任机制的,只能点对点进行认证

假如在一个工作组中有a,b两个机器,a想远程访问b上的文件,那么这个时候a机器的操纵者则需要将一个存在于b机器上的账户凭证发送给b机器,经过认证后才能访问。

最常见的服务:445端口的smb服务
smb协议:一个用于进行共享文件资源的一个协议

NTLM(NT LAN Manager)协议#

早期smb协议在网络上传输明文口令,后来出现LAN Manager Challenge/Response 验证机制,简称LM,由于他的不安全性,微软在后面的更新中提出了windowsNT挑战/响应验证机制,称之为NTLM。发展到现在已经有了更新的NTLM V2以及Kerberos验证体系。

smb协议本身只提供了资源相关的共享服务,在认证方面,采用的是NTLM协议,可以类比我们远程访问windows的共享文件夹时,在认证我们身份的方面,也是采用的NTLM协议,在windows的好多服务的"认证层"上,使用的都是我们的NTLM协议。当然如果是在域内,认证方面会采用kerberos协议进行认证

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

1、协商#

客户端主要在这一步向服务端确认协议的版本,是NTLM v1还是NTLM v2还是其他的比如LM协议。

NTLM v1与NTLM v2的差别

NTLM v1与NTLM v2最大的差别就是challenge与加密算法不同

challenge:NTLM v1的challenge有8位,NTLM v2的challenge有16位

Net-NTLM hash:NTLM v1的主要加密算法是DES,NTLM v2的主要加密算法是HMAC-MD5

2、质询#

就是挑战/响应认证机制起作用的范畴

质询的完整过程:

(1)客户端向服务端发送用户信息(用户名)请求

(2)服务器接受到请求,判断本地账户列表是否有用户名,如果有,生成一个16位的随机数,被称之为“Challenge”,使用登陆用户名对应NTLM Hash加密Challenge(16位随机字符),生成Challenge1,生成一个Net-NTLM Hash存在内存中,同时,生成Challenge1后,将Challenge(16位随机字符)发送给客户端。

(3)客户端接收到Challenge后,使用将要登陆的账户对应的NTLM Hash加密Challenge生成Response,然后将Response发送至服务器端。

(4)验证,服务器接收到客户端的Response后,对比Challenge1与Response是否相等,若相等,则认证通过。

3、验证#

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

wireshark 对NTLM协议抓取并获取Net-NTLMhash#

1.访问共享#

主机192.168.16.20访问主机192.168.16.10的共享

2.数据抓取#

抓到的数据包,这里也可以看到,访问共享是基于SMB协议的。Negotiate Protocol Response,是进行协商

下面这条数据包,服务器向客户端返回16位长的challenge

接着下一条数据,客户端将发送的用户名所对应的NTLM hash对Chalenge进行加密得到Response,即这里的 “ntlmv2_response” 的值。

3. Net-NTLMhash格式介绍及拼接#

NTLMv2的格式为:username::domain:challenge:NTProofStr:blob
username就是你发送过去账号名 domain即host name

其中 response由 NTProofStr+blob两部分组成, blob对应数据包中Response去掉NTProofStr的后半部分

接下来使用hashcat爆破即可

hashcat使用#

kali中自带该工具

使用hashcat破解Net-NTLMhash

-m:hash-type,5600对应NetNTLMv2,详细参数可查表:https://hashcat.net/wiki/doku.php
-o:输出文件
字典文件为zd.txt
--force代表强制执行,测试系统不支持Intel OpenCL

记得内存一定内存在4GB以上,不然会跑不出来!!!

找到该题的Net-NTLM-v2-Hash值为:administrator::WIN2008:8c6ed1811a3f7dae:231ba3ca5560858acb0085e255d8d626:0101000000000000e5bf79e972f7d901ba794888efa8b8e800000000020008004800410043004b000100040044004300040010006800610063006b002e0063006f006d0003001600440043002e006800610063006b002e0063006f006d00050010006800610063006b002e0063006f006d0007000800e5bf79e972f7d9010600040002000000080030003000000000000000000000000030000046fc5f0d124bc9b99b5b560c14cd7c7e217f08f22ef5f223679ec2c576230fa30a001000000000000000000000000000000000000900240063006900660073002f003100390032002e003100360038002e00310036002e0031003000000000000000000000000000

直接用hashcat爆破

这里我们使用rockyou字典

将Admin@123加密一下,得到0e7517141fb53f21ee439b355b5a1d0a,即为flag!

作者:Yu3Bing

出处:https://www.cnblogs.com/Yu3Bing/p/18686425

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Yu3Bing  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示
dark_mode
主题色彩
menu
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu