当前位置: 首页 > article >正文

Windows密码的网络认证---基于挑战响应认证的NTLM协议

一,网络认证NTLM协议简介

        在平时的测试中,经常会碰到处于工作组的计算机,处于工作组的计算机之间是无法建立一个可信的信托机构的,只能是点对点进行信息的传输。

        举个例子就是,主机A想要访问主机B上的资源,就要向主机B发送一个存在于主机 B上的一个账户,主机B接收以后会在本地进行验证,如果验证成功,才会允许主机A进行相应的访问。

        NTLM 协议是一种基于 挑战(Challenge)/ 响应(Response认证机制,仅支持Windows的网络认证协议。

它主要分为协商、质询和验证三个步骤:

  • 协商,这个是为了解决历史遗留问题,也就是为了向下兼容,双方先确定一下传输协议的版本等各种信息。
  • 质询,这一步便是Challenge/Response认证机制的关键之处,下面会介绍这里的步骤。
  • 验证,对质询的最后结果进行一个验证,验证通过后,即允许访问资源。

二,基本的流程

认证成功

        首先,client会向server发送一个username,这个username是存在于server上的一个用户;

        接着会在本地查询是否存在这样的一个用户,如果存在,将会生成一个16位的随机字符,即challenge,然后用查询到的这个usernameNTLM hash和challenge进行加密,生成challenge1,将challenge1存储在本地,并将 challenge传给client;

        当client接收到challenge时,将发送的username所对应的NTLM hash对challenge进行加密即response,并 response发送给server;

        server在收到response后,将其与challenge1进行比较,如果相同,则验证成功;

        如果不相同,则验证失败;

认证失败

        首先,client会向server发送一个username,这个username是存在于server上的一个用户;

        当server接收到这个信息时,首先会在本地查询是否存在这样的一个用户,如果不存在,则直接返回认证失败;

三,NTLM协议v1v2区别

NTLM v1

  • 安全性较低:NTLM v1的认证过程相对简单,安全性较低。它容易受到中间人攻击和重放攻击等。
  • 认证机制:在NTLM v1中,客户端首先向服务器发送一个包含用户名(以明文形式)和挑战消息的请求。服务器接收到这个请求后,会用自己的密钥对这个挑战消息进行加密,并发送给客户端作为响应。客户端随后会用自己的密钥对挑战消息进行加密,并将这个加密后的消息发送给服务器进行验证。

NTLM v2

  • 增强的安全性:相较于NTLM v1,NTLM v2提供了更强的安全性。它引入了对响应消息的额外加密层,使得攻击者更难破解。
  • 改进的认证机制:在NTLM v2中,客户端和服务器之间的挑战和响应过程更加复杂。除了挑战消息外,还引入了目标信息(如服务器名称和域名)和时间戳,这些都被加入到加密计算中。这增加了攻击者伪造有效响应的难度。
  • 兼容性:尽管NTLM v2提供了更强的安全性,但它仍然需要与旧的系统和应用程序兼容。因此,许多现代Windows系统同时支持NTLM v1和v2,但默认情况下可能更倾向于使用v2进行认证。

四,抓包测试

实验环境:

server2019:192.168.20.153

server2008:192.168.20.154

在2019这个机器上已经安装wireshark;

在2008上已经存在一个管理员用户,为Administrator用户;

密码为com.1234;

使用下面的命令进行网络连接;

net use \\192.168.20.154 /u:Administrator com.1234

使用wireshark进行抓包;

接下来分析抓到的数据包;

接下来根据NTLMv2格式,找出各个字段对应的值;

username::domain:challenge:HMAC‐MD5:blob

username:对应数据包中 user name
domain:对应数据包中的 Domain name
HMAC‐MD5:对应数据包中的NTProofStr
blob:数据库包中rsponse去掉HMAC‐MD5的值

10号数据包发送username和password;

11号返回challenge;

12号返回response的数据包;

username:Administrator
domain:ADMIN

challenge:afa477384221e315

NTProofStr:24f00e683ff25a2163601ccc751ba732
rsponse:24f00e683ff25a2163601ccc751ba732010100000000000063af3e97b02edb0160c9af9d01a6f7c20000000002000a00410044004d0049004e0001001400530045005200560045005200320030003000380004001200610064006d0069006e002e0063006f006d000300280053006500720076006500720032003000300038002e00610064006d0069006e002e0063006f006d0005001200610064006d0069006e002e0063006f006d000700080063af3e97b02edb0106000400020000000800300030000000000000000100000000200000219d0a74dcdbdf803b0712aab3af7d3cc94960eaaf5d459b1e46bd5c4a0793fd0a001000000000000000000000000000000000000900260063006900660073002f003100390032002e003100360038002e00320030002e00310035003400000000000000000000000000

接下来构造NTLMv2格式;

Administrator::ADMIN:afa477384221e315:24f00e683ff25a2163601ccc751ba732:010100000000000063af3e97b02edb0160c9af9d01a6f7c20000000002000a00410044004d0049004e0001001400530045005200560045005200320030003000380004001200610064006d0069006e002e0063006f006d000300280053006500720076006500720032003000300038002e00610064006d0069006e002e0063006f006d0005001200610064006d0069006e002e0063006f006d000700080063af3e97b02edb0106000400020000000800300030000000000000000100000000200000219d0a74dcdbdf803b0712aab3af7d3cc94960eaaf5d459b1e46bd5c4a0793fd0a001000000000000000000000000000000000000900260063006900660073002f003100390032002e003100360038002e00320030002e00310035003400000000000000000000000000

在kali中使用命令进行爆破;(拥有一个强大的字典)

john --format=netntlmv2 1.txt --wordlist=rockyou.txt

这样就得到了账户的密码;


http://www.kler.cn/a/379717.html

相关文章:

  • H265编码丢帧问题分析
  • 火山引擎VeDI数据服务平台:在电商场景中,如何解决API编排问题?
  • 2024年9月电子学会青少年软件编程Python等级考试(四级)真题试卷
  • 基于人脸识别PCA算法matlab实现及详细步骤讲解
  • VSCode 1.82之后的vscode server离线安装
  • 无人机的就业前景怎么样?
  • asynDriver-6-端口驱动
  • MQTT自动发送消息工具(自动化测试MQTT)
  • R语言贝叶斯:INLA下的贝叶斯回归、生存分析、随机游走、广义可加模型、极端数据的贝叶斯分析
  • 黑马官网最新2024前端就业课V8.5笔记---CSS篇(2)
  • 家常菜点餐|基于java和小程序的家庭大厨家常菜点餐系统设计与实现(源码+数据库+文档)
  • Socket篇(网络通信)
  • SQL与数据库
  • C++设计模式结构型模式———组合模式
  • 【系统架构设计师】2022年真题论文: 论区块链技术及应用(包括解题思路和素材)
  • Vue:模板 MVVM
  • 为什么说高级工程师研究的不仅是器件的稳态,模拟器件的开关过程
  • PostgreSQL 触发器的深入探讨
  • 【高等数学】3-2多元函数积分学
  • flutter 专题七 Flutter面试之渲染流程
  • 硬件在环仿真建模之电路拓扑建模与数学建模
  • java-智能识别车牌号_基于spring ai和开源国产大模型_qwen vl
  • oceanbase V4.2.2社区版集群离线部署
  • 图像边缘算法复现研究
  • 详解:枚举类
  • 【力扣专题栏】K个一组对链表进行翻转,如何实现分组翻转链表?