域渗透
01-本地认证
02-本地密码抓取
03-网络认证
04-域基础知识
05-域环境部署
06-域认证
07-域密码抓取
08-横向移动
09-凭证传递
10-票据
11-委派
-
+
03-网络认证
浏览
1
# 一、概述 Windows网络认证是指当用户通过网络访问远程资源(文件共享、远程桌面、数据库等)时,客户端与服务器之间验证身份的过程。 Windows历史上使用过两种主要的网络认证协议: | 协议 | 适用时代 | 当前状态 | | -------- | --------------------------- | ---------------------------- | | NTLM | Windows NT 4.0 默认协议 | 出于兼容性保留,微软建议禁用 | | Kerberos | Windows 2000 起成为默认协议 | 当前域环境的默认认证协议 | Windows通过SPNEGO(Simple and Protected GSSAPI Negotiation Mechanism)协商机制,在连接建立时自动选择使用哪种协议,优先尝试Kerberos,失败时回退(Fallback)到NTLM # 二、NTLM协议 ## 概述 NTLM(NT LAN Manager)是微软开发的网络认证协议,最初随Windows NT 4.0发布,是Windows 2000之前域环境的默认认证协议。 Windows 2000之后,Kerberos取代NTLM成为域环境的默认协议,但NTLM因向后兼容需求被保留至今。 使用场景: | 场景 | 描述 | | ---------- | ---------------------------------------------- | | 域环境 | Kerberos协议为主,NTLM协议作为回退(Fallback) | | 工作组环境 | NTLM是唯一的网络认证协议 | | 本地认证 | 本地账户的网络登录始终使用NTLM协议 | ## 认证机制 NTLM协议核心机制:Challenge-Response,挑战-响应机制。 客户端向服务器证明自己"知道密码",但密码本身不在网络上传输。服务器发送一个随机挑战值(Challenge),客户端用密码的哈希值对Challenge进行加密运算,将结果(Response)返回服务器验证。 大致流程: - 第一步:客户端发起连接,向服务器声明自己的身份以及双方协商后续通信使用哪些安全特性; - 第二步:服务器收到请求包后,生成一个随机数作为挑战值,连同协商结果一起返回给客户端; - 第三步:客户端收到Challenge后,用NTLM Hash对其加密运算,生成Response,连同用户名等信息一起发送给服务器。 注意:Challenge值为16位,采用的是NTLM v2协议;Challenge值为8位,则是NTLM v1协议。 NTLM 认证是三段式: | 类型 | 名称 | 方向 | | :----- | :------------------- | :--------------- | | Type 1 | NEGOTIATE_MESSAGE | 客户端 -> 服务器 | | Type 2 | CHALLENGE_MESSAGE | 服务器 -> 客户端 | | Type 3 | AUTHENTICATE_MESSAGE | 客户端 -> 服务器 | ## 数据包分析 实验环境:两台Windows Server 2008 R2服务器,服务器A向服务器B发起SMB连接。 注意:两台服务器要切换为工作组环境。 | 服务器版本 | IP地址 | 服务器名称 | | ---------------------- | -------------- | ---------- | | Windows Server 2008 R2 | 192.168.88.202 | win08 | | Windows Server 2012 R2 | 192.168.88.201 | win12 | 在win12机器中执行: ```txt net use \\192.168.88.202\c$ /user:administrator a1b2c3.. ``` 执行命令时,通过Wireshark获取数据包:  前四条数据包用于协商  第五条数据包:NTLM协议的第一步,服务器A(192.168.88.201)向服务器B(192.168.88.202)发送 NEGOTIATE 消息,声明认证协议类型和支持的安全特性。  NTLMSSP(NT LAN Manager Security Support Provider)是 Windows 操作系统中实现 NTLM 认证的核心安全组件。 它运行在 SSPI(Security Support Provider Interface)框架之下,负责生成和解析 NTLM 认证过程中的三类消息。  ```txt mechTypes:1item:表示只提供了一种认证方式 mechToken:里面装的是一串以4e544c4d开头的十六进制数据(4e544c4d 转换成 ASCII 码正好是 NTLM)。 NTLMSSP identifier: 确认是 NTLMSSP 协议 NTLM Message Type: NTLMSSP_NEGOTIATE (0x00000001) —— 证明这是第一步协商包(Type 1)。 Negotiate Flags: 声明自己支持 128 位加密、扩展安全会话等高级特性。 Calling workstation: 显示为 NULL ``` 第六条数据包:服务器B(192.168.88.202)收到了服务器A(192.168.88.201)的协商请求后,回复此包,下发一个随机挑战码(Challenge),要求服务器A证明自己身份。   服务器B主动表明自己的身份,挑战值为a095bf6727b8986d,使用NTLM v2协议。 第七条数据包:服务器A向服务器B证明自己的身份。   用账户密码的hash值对服务器B下发的Challenge值进行加密运算,生成Response值,发送给服务器B。 第八条数据包:服务器B返回校验结果   ```txt negResult: accept-completed (0) 表示协商成功完成 如果密码错误或权限不够,这里会显示 reject (2),表示拒绝 ```
毛林
2026年11月15日 18:30
转发文档
收藏文档
上一篇
下一篇
评论(0)
登录
后可发表评论
还没有评论,来抢沙发~
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
还没有评论,来抢沙发~