NTLM认证相关攻击技巧(较全)
字数 1509 2025-08-19 12:42:16

NTLM认证相关攻击技巧全面指南

0x00 NTLM认证攻击简介

NTLM协议是Windows两大认证协议之一,攻击方法主要分为两类:

  1. SMB欺骗:通过监听网络流量获取NTLM认证凭证
  2. 中继攻击:将获取的认证凭证转发到其他目标进行利用

0x01 前置知识学习

(1) NTLM认证过程与NET-NTLM v1\v2

NTLM认证采用质询/应答(Challenge/Response)模式,流程如下:

  1. 客户端发送包含明文用户名的请求
  2. 服务器生成16位随机Challenge并返回
  3. 客户端使用密码hash加密Challenge生成Response
  4. 服务器验证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名称解析顺序

  1. hosts文件
  2. DNS缓存/服务器
  3. LLMNR和NetBIOS

(3) SMB认证过程

SMB协议

  • 用于计算机间共享文件、打印机等
  • 基于TCP-NETBIOS,端口139/445
  • 认证协议演变:LM → NTLM → Kerberos

SMB工作原理

  1. 客户端发送支持的SMB版本列表
  2. 服务器选择版本
  3. 客户端发起用户/共享认证

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签名状态

工作组中继

  1. 修改Responder.conf相关参数为OFF
  2. 使用MultiRelay.py监听
  3. 诱使目标访问不存在共享

域中继
可中继域控或域管理员组成员的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认证

防御建议

  1. 禁用LLMNR和NetBIOS
  2. 启用SMB签名
  3. 限制NTLM使用,优先使用Kerberos
  4. 监控异常NTLM认证请求
  5. 使用强密码策略防止hash破解

总结

NTLM协议攻击是内网渗透中的重要技术,理解其认证流程和协议交互是成功利用的关键。通过本文介绍的各种技术,安全测试人员可以全面评估网络中的NTLM相关风险。

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认证的常用命令 : (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) 工作组环境 : 域环境 : 同样方法可获取域用户凭证 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格式 破解命令 : NTLMv1 Hash破解 可使用在线服务https://crack.sh/get-cracking/ 0x04 Windows版本工具 1. Responder.exe 适用于Windows平台 2. Inveigh PowerShell版本 : C#版本 : 需要.NET 3.5环境 0x05 NTLM其他玩法 1. NTLM v1还原NTLM hash 适用于旧系统(如2003) 2. 将系统降级为v1 3. 使用InternalMonologue获取凭证 无需网络监听,直接获取本地用户凭证 4. 浏览器欺骗 IE/Edge可通过img标签触发NTLM认证 防御建议 禁用LLMNR和NetBIOS 启用SMB签名 限制NTLM使用,优先使用Kerberos 监控异常NTLM认证请求 使用强密码策略防止hash破解 总结 NTLM协议攻击是内网渗透中的重要技术,理解其认证流程和协议交互是成功利用的关键。通过本文介绍的各种技术,安全测试人员可以全面评估网络中的NTLM相关风险。