系列文章第一章节之基础知识篇
内网渗透(一)之基础知识-内网渗透介绍和概述
内网渗透(二)之基础知识-工作组介绍
内网渗透(三)之基础知识-域环境的介绍和优点
内网渗透(四)之基础知识-搭建域环境
内网渗透(五)之基础知识-Active Directory活动目录介绍和使用
内网渗透(六)之基础知识-域中的权限划分和基本思想
内网渗透(七)之基础知识-企业常见安全域划分和结构
内网渗透(八)之基础知识-企业域中计算机分类和专业名
系列文章第二章节之内网信息收集篇
内网渗透(九)之内网信息收集-手动本地信息收集
内网渗透(十)之内网信息收集-编写自动化脚本收集本地信息
内网渗透(十一)之内网信息收集-内网IP扫描和发现
内网渗透(十二)之内网信息收集-内网端口扫描和发现
内网渗透(十三)之内网信息收集-收集域环境中的基本信息
内网渗透(十四)之内网信息收集-域环境中查找域内用户基本信息
内网渗透(十五)之内网信息收集-域环境中定位域管理员
内网渗透(十六)之内网信息收集-powershell基础知识
内网渗透(十七)之内网信息收集-powershell收集域内信息和敏感数据定位
系列文章第三章节之Windows协议认证和密码抓取篇
内网渗透(十八)之Windows协议认证和密码抓取-本地认证(NTML哈希和LM哈希)
注:阅读本编文章前,请先阅读系列文章,以免造成看不懂的情况!
Windows网络认证之基于挑战响应认证的NTLM协议
网络认证NTLM协议简介
在平时的测试中,经常会碰到处于工作组的计算机,处于工作组的计算机之间是无法建立一个可信的信托机构的,只能是点对点进行信息的传输。举个例子就是,主机A想要访问主机B上的资源,就要向主机B发送一个存在于主机B上的一个账户,主机B接收以后会在本地进行验证,如果验证成功,才会允许主机A进行相应的访问。
NTLM 协议是一种基于 挑战(Chalenge)/响应(Response) 认证机制,仅支持Windows的网络认证协议。
它主要分为协商、质询和验证三个步骤:
协商:这个是为了解决历史遗留问题,也就是为了向下兼容,双方先确定一下传输协议的版本等各种信息。
质询:这一步便是Chalenge/Response认证机制的关键之处,下面会介绍这里的步骤。
验证:对质询的最后结果进行一个验证,验证通过后,即允许访问资源
NTLM协议认证流程
认证成功
1、首先,client会向server发送一个username,这个username是存在于server上的一个用户
2、首先server会在本地查询是否存在这样的一个用户,如果存在,将会生成一个16位的随机字符,即Chalenge,然后用查询到的这个user的NTLM hash对Chalenge进行加密,生成Chalenge1,将Chalenge1存储在本地,并将Chalenge传给client。
3、当client接收到Chalenge时,将发送的username所对应的NTLM hash对Chalenge进行加密即Response,并Response发送给server。
4、server在收到Response后,将其与Chalenge1进行比较,如果相同,则验证成功
认证失败
1、首先,client会向server发送一个username,这个username是存在于server上的一个用户
2、当server接收到这个信息时,首先会在本地查询是否存在这样的一个用户,如果不存在,则直接返回认证失败
NTML协议v1和v2区别
NTLM V2协议,NTLMv1与NTLM v2最显著的区别就是Challenge与加密算法不同,共同点就是加密的原料都是NTLM Hash
NTLM v1的Challenge有8位,NTLM v1的主要加密算法是DES
NTLM v2的Challenge为16位,NTLMv2的主要加密算法是HMAC‐MD5
抓包分析
1、实验环境如下
机器名称 | IP地址 | 账号密码 |
---|---|---|
实验机器 (windows 10) | 192.168.41.132 | 自己的 |
靶机(windows server 2008 ) | 192.168.41.130 | kkk/Admin@123 |
2、windows 10 上 已经安装了 wireshark
3、使用如下命令进行远程连接,并且使用wireshark 包
net use \\192.168.41.130 /u:kkk Admin@123
4、前5个数据包中前四条是协商,第五个是认证的第一个数据包
5、第6个数据包就是返回chalenge挑战值
分析该数据包得到chalenge值 53fb7eb8d40cc777
6、第7个数据包就是返回response的数据包
rsponse数据如下:
3d00ee8a5618f85651098b8005883d5c0101000000000000f790f7af9b92d8019cba65f5e39a1ea90000000002000e00
42004d002d00320030003000380001000e0042004d002d00320030003000380004000e0042004d002d00320030003000
380003000e0042004d002d00320030003000380007000800f790f7af9b92d80106000400020000000800300030000000
0000000001000000002000009906b326309f0ba76eb46b2271795e5d12df73e87035391df48f0fad1ce073380a001000
000000000000000000000000000000000900260063006900660073002f003100390032002e003100360038002e003400
31002e003100330030000000000000000000
7、接下来得到NTLMv2 数据,NTLMv2格式如下:
username::domain:challenge:HMAC‐MD5:blob
username:对应数据包中 user name
domain:对应数据包中的 Domain name
HMAC‐MD5:对应数据包中的NTProofStr
blob:数据库包中rsponse去掉HMAC‐MD5的值
8、最终的到HTLNv2如下:
kkk:::53fb7eb8d40cc777:3d00ee8a5618f85651098b8005883d5c:0101000000000000f790f7af9b92d8019cba65f5
e39a1ea90000000002000e0042004d002d00320030003000380001000e0042004d002d00320030003000380004000e00
42004d002d00320030003000380003000e0042004d002d00320030003000380007000800f790f7af9b92d80106000400
0200000008003000300000000000000001000000002000009906b326309f0ba76eb46b2271795e5d12df73e87035391d
f48f0fad1ce073380a001000000000000000000000000000000000000900260063006900660073002f00310039003200
2e003100360038002e00340031002e003100330030000000000000000000
9、使用hashcat 破解密码
hashcat ‐m 5600
kkk:::53fb7eb8d40cc777:3d00ee8a5618f85651098b8005883d5c:0101000000000000f790f7af9b92d8019cba65f5
e39a1ea90000000002000e0042004d002d00320030003000380001000e0042004d002d00320030003000380004000e00
42004d002d00320030003000380003000e0042004d002d00320030003000380007000800f790f7af9b92d80106000400
0200000008003000300000000000000001000000002000009906b326309f0ba76eb46b2271795e5d12df73e87035391d
f48f0fad1ce073380a001000000000000000000000000000000000000900260063006900660073002f00310039003200
2e003100360038002e00340031002e003100330030000000000000000000 1.txt ‐‐force
10、使用hashcat破解得到密码