SMB 中继攻击 (SMB Relay Attack):“借刀杀人”的凭证劫持

在当今复杂的网络环境中,企业内网安全面临着重重挑战。其中,一种被称为"SMB 中继攻击"SMB Relay Attack)的凭证劫持技术,以其"借刀杀人"的巧妙手法,成为内网渗透中不可小觑的威胁。这种攻击方式无需破解密码,即可利用受害用户的合法认证信息,在网络中横向移动并提升权限,对企业数据和系统构成严重威胁。本文将深入剖析 SMB 中继攻击的原理、关键技术、常用工具及其在内网渗透中的应用,并探讨相应的防御策略。

一、何为 SMB 协议与 NTLM 认证?

要理解 SMB 中继攻击,我们首先需要了解其所依赖的两个核心概念:SMB 协议和 NTLM 认证。

1. SMB 协议(Server Message Block SMB 协议,即服务器消息块协议,是微软公司开发的一种网络文件共享协议,广泛应用于 Windows 环境中,用于实现文件、打印机等资源的共享访问。它允许网络上的计算机之间进行通信,共享文件、目录和串行端口。SMB 协议通常运行在 TCP 端口 445 上。在企业内网中,SMB 服务的普遍性使其成为攻击者进行侦察和利用的常见目标。

2. NTLM 认证(NT LAN Manager NTLM 是一种挑战/响应(Challenge/Response)认证协议,用于验证 Windows 网络中用户或计算机的身份。当客户端尝试访问 SMB 共享资源时,会发生以下认证过程:

  • 客户端向服务器发送一个认证请求。
  • 服务器生成一个随机的"挑战"Challenge),并将其发送给客户端。
  • 客户端使用其密码的哈希值(NT Hash)对这个挑战进行加密,生成一个"响应"Response),然后将响应发送回服务器。
  • 服务器收到响应后,会用存储的用户密码哈希值(或通过域控制器验证)对相同的挑战进行加密,生成一个期望的响应。
  • 如果客户端发送的响应与服务器计算出的期望响应一致,则认证成功,客户端获得访问权限。

NTLM 认证的这一机制,尤其是其在设计上的一些固有缺陷,为 NTLM Relay 攻击提供了可乘之机。

二、SMB 中继攻击的核心原理:NTLM Relay

SMB 中继攻击本质上是一种 NTLM Relay 攻击,它利用了 NTLM 认证协议的弱点,即缺乏对认证消息来源和目的地的验证,以及缺乏相互认证机制。攻击者通过中间人(Man-in-the-Middle, MitM)技术,截获并转发受害用户的 NTLM 认证请求,从而在目标服务器上冒充受害用户获得未经授权的访问。

1. "借刀杀人"的认证过程 SMB 中继攻击的整个过程可以形象地比喻为"借刀杀人"

  • 诱捕(Coercion/Poisoning:攻击者首先需要将自己置于受害客户端和合法服务器之间。这通常通过网络欺骗技术实现,例如 LLMNR/NBT-NS 投毒(Poisoning)、ARP 欺骗(ARP Spoofing)或利用某些服务(如 Exchange Server PushSubscription)强制受害者向攻击者控制的机器发起认证请求。当受害者尝试访问一个不存在的资源或名称解析失败时,攻击者可以伪装成该资源或服务器,诱导受害者向其发送认证请求。
  • 截获(Interception:当受害客户端向攻击者机器发送 NTLM 认证请求时,攻击者会截获这个请求中的 NTLM 挑战/响应(通常是 NetNTLMv2 哈希)。
  • 中继(Relay:攻击者不会尝试破解这个哈希,而是将截获到的 NTLM 认证响应实时转发(中继)到网络中的另一个目标服务器。这个目标服务器会误以为是受害客户端在请求认证。
  • 冒充与访问(Impersonation & Access:目标服务器收到中继的认证响应后,会将其与自身计算的响应进行比对。由于响应是合法的,目标服务器会认为认证成功,并授予攻击者(冒充受害用户)访问权限。攻击者无需知道受害用户的明文密码,甚至无需破解哈希,即可获得目标服务器的访问权限。

2. NTLM Relay 的关键弱点 NTLM Relay 攻击之所以有效,主要归结于以下几点 NTLM 协议的弱点:

  • 缺乏相互认证NTLM 协议在认证过程中,客户端通常不会验证服务器的身份,服务器也不会验证客户端的真实来源。攻击者可以利用这一点,伪装成合法服务器或客户端。
  • SMB 签名未启用SMB 签名(SMB Signing)是一种重要的安全机制,它通过在 SMB 数据包中添加数字签名来验证数据包的完整性和真实性。如果目标服务器未强制启用 SMB 签名(在许多 Windows 桌面操作系统中默认为禁用或不强制),攻击者就可以在不被检测的情况下中继认证请求。
  • 哈希而非密码NTLM 认证使用的是密码哈希进行挑战/响应,而不是明文密码。这意味着即使攻击者截获了认证流量,也无法直接获取明文密码,但 NTLM Relay 攻击绕过了破解密码的步骤,直接利用哈希进行认证。

三、核心工具解析:Responder Multi-Relay

SMB 中继攻击的实践中,有几个强大的工具扮演着至关重要的角色,其中最著名的当属 Responder Impacket 工具集中的 ntlmrelayx(或 Responder MultiRelay 模块)。

1. Responder Responder 是一款功能强大的开源工具,主要用于 LLMNRNBT-NS MDNS 投毒,以及模拟多种服务(如 SMBHTTPLDAPRDP 等)。它在 SMB 中继攻击链中的作用是:

  • 名称解析投毒:当受害主机尝试解析一个不存在的名称时,Responder 会响应这些请求,并将其 IP 地址伪装成受害者想要访问的资源,从而诱导受害者向攻击者机器发起认证。
  • 捕获 NTLM 哈希Responder 作为一个监听器,可以捕获网络中流动的 NTLM 认证尝试,获取 NetNTLMv2 哈希。
  • 配合中继:在进行 SMB 中继攻击时,通常需要将 Responder 的内置 SMB HTTP 服务器关闭(SMB=Off  HTTP=Off),因为我们不希望 Responder 直接处理认证请求,而是希望将这些请求转发给 ntlmrelayx  MultiRelay 模块进行中继。

2. Multi-Relay ntlmrelayx Multi-Relay Responder 的一个模块,而 ntlmrelayx 则是 Impacket 工具集中的一个关键组件,它们都负责执行 NTLM 认证的中继操作,并能进行更高级的利用。

  • 中继功能:当 Responder 诱捕到认证请求后,ntlmrelayx  Multi-Relay 会接收这些请求,并将 NTLM 认证响应转发到预设的目标服务器。
  • 多协议支持ntlmrelayx 支持跨协议中继,例如将 HTTP 认证请求中继到 SMB 服务,或将 SMB 认证请求中继到 LDAP 服务,这大大增加了攻击的灵活性和成功率。
  • 多目标攻击:这些工具支持同时攻击多个目标,可以通过提供目标列表文件(如 targets.txt)来批量执行中继攻击,并可以监听目标文件的变化自动更新目标列表。
  • 有效载荷执行:一旦中继成功,ntlmrelayx 可以选择执行多种有效载荷(Payload),例如:
    • 在目标机器上获得一个 Shell(如 Meterpreter shellWindows shell)。
    • 在目标机器上执行任意命令。
    • 转储本地 SAM 数据库的哈希值,进一步获取更多凭证。
    • 利用域服务(如 LDAP)进行 Active Directory 账户操作,例如配置 Kerberos RBCD(资源基于约束的委派)以实现权限提升。
  • 凭证劫持:通过这些工具,攻击者无需破解哈希,即可直接利用截获的认证信息,完成对受害用户凭证的劫持,并以受害者的身份在目标系统上执行操作。

四、SMB 中继攻击在内网渗透中的应用

SMB 中继攻击是内网渗透中一种极其有效的技术,它使得攻击者能够:

1. 初始立足点与横向移动(Lateral Movement 即使攻击者在内网中没有有效的用户凭证,也可以通过 SMB 中继攻击获取一个初始立足点。一旦成功中继到一个没有强制 SMB 签名的目标机器,并且被中继的账户在该机器上具有本地管理员权限,攻击者就可以获得该机器的控制权。这为攻击者在内网中进行横向移动打开了大门,可以进一步扫描网络、发现更多脆弱主机,并利用新获得的凭证访问其他系统。

2. 权限提升(Privilege Escalation 如果攻击者中继的凭证属于一个具有更高权限的用户(例如域管理员),并且目标服务器也未启用 SMB 签名,攻击者就有可能在整个域中实现权限提升。例如,利用 ntlmrelayx 将计算机账户的 NTLM 凭证中继到域控制器的 LDAP 服务,并通过修改 msDS-AllowedToActOnBehalfOfOtherIdentity 属性来配置 Kerberos RBCD,从而获得对其他机器的远程管理权限。

3. 凭证收集与持久化(Credential Dumping & Persistence 通过成功中继攻击获得的 Shell 访问权限,攻击者可以进一步执行凭证收集工具(如 Mimikatz),从内存中转储其他用户的密码哈希或明文凭证。这些新获得的凭证可以用于后续的攻击活动,甚至可以用于建立持久化访问,确保即使系统重启,攻击者也能重新进入。

4. 绕过密码复杂度策略 SMB 中继攻击的"借刀杀人"特性意味着密码强度对攻击几乎没有影响。即使组织实施了极其严格的密码复杂度策略,只要存在 NTLM 认证和未启用 SMB 签名的脆弱点,攻击者仍然可以成功劫持凭证并获得访问权限,而无需进行耗时且可能失败的密码破解尝试。

五、防御 SMB 中继攻击的策略

鉴于 SMB 中继攻击的强大威力,组织必须采取多层次的防御策略来抵御此类威胁:

1. 强制启用 SMB 签名(SMB Signing 这是防御 SMB 中继攻击最有效的方法之一。在所有 Windows 客户端和服务器上强制启用 SMB 签名,可以确保 SMB 通信的完整性和真实性。一旦启用,任何篡改或中继的 SMB 数据包都将被拒绝。

  • 在组策略中配置"Microsoft 网络客户端:数字签名通信(始终)""Microsoft 网络服务器:数字签名通信(始终)""已启用"
  • 需要注意的是,SMB 签名可能会对网络性能产生轻微影响,但在安全性面前,这种权衡是值得的。

2. 禁用 NTLM 认证(或限制其使用) 如果业务允许,尽可能禁用 NTLM 认证,并优先使用更安全的 Kerberos 认证协议。对于遗留系统或应用程序无法使用 Kerberos 的情况,应严格限制 NTLM 的使用范围和场景。

  • 在组策略中配置"网络安全:限制 NTLM:入站 NTLM 流量""网络安全:限制 NTLM:审核入站 NTLM 流量"等策略。

3. 启用扩展保护认证(Extended Protection for Authentication, EPA EPA 可以帮助防止 NTLM Relay 等中间人攻击,通过通道绑定(Channel Binding)机制确保客户端只能向其预期的服务器进行认证。Exchange Server 等服务已默认启用 EPA

4. 禁用 LLMNR/NBT-NS 禁用 LLMNRLink-Local Multicast Name Resolution)和 NBT-NSNetBIOS Name Service)可以有效阻止 Responder 等工具进行名称解析投毒,从而减少 SMB 中继攻击的初始诱捕阶段。

5. 最小权限原则与账户分层(Account Tiering 实施严格的最小权限原则,确保用户账户只拥有完成其工作所需的最低权限。同时,采用账户分层模型,将高权限账户(如域管理员)与普通用户账户隔离,并严格限制高权限账户的登录范围,防止其在不安全的机器上进行认证。

6. 本地管理员权限限制 确保普通用户账户不具有本地管理员权限。如果攻击者中继的账户在目标机器上没有本地管理员权限,将大大限制其攻击后的横向移动和权限提升能力。

7. 网络分段与监控 将内网进行合理的网络分段,隔离敏感资产。同时,部署强大的网络监控和安全信息与事件管理(SIEM)系统,对异常的认证行为、名称解析请求和 SMB 流量进行实时检测和告警。关联 IP 地址和主机名,可以帮助识别可疑的 NTLM Relay 活动。

结语

SMB 中继攻击,作为一种利用 NTLM 认证缺陷的"借刀杀人"式凭证劫持技术,在内网渗透中具有极高的效率和隐蔽性。它无需破解密码,即可帮助攻击者实现横向移动、权限提升和数据窃取,对企业网络安全构成严重威胁。然而,通过强制启用 SMB 签名、限制 NTLM 使用、禁用不安全的名称解析协议以及实施严格的权限管理和网络监控等综合防御策略,企业可以显著降低遭受 SMB 中继攻击的风险,有效保护其内网资产和敏感数据。在日益严峻的网络安全形势下,理解和防范此类高级攻击,是每个组织不可或缺的安全实践。

评论

此博客中的热门博文

gemini转发国内的部署教程

移动 IP 技术:如何在不同网络间无缝切换?

公共 Wi-Fi 安全吗?你需要知道的风险