如何防范AD横向移动-SMB中继攻击?
摘要:本文通过 Google 翻译 Lateral Movement – NTLM Relay Attacks 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。 注:因 LDAP 概念模糊的原因,本文刻意删除了有关
本文通过 Google 翻译 Lateral Movement – NTLM Relay Attacks 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。
注:因 LDAP 概念模糊的原因,本文刻意删除了有关 LDAP 中继利用的部分。
导航
0 前言
1 SMB 中继攻击概述
2 枚举已禁用 SMB 签名的主机
2.1 SMB 签名启用与否的影响
2.2 Nmap 枚举
2.3 RunFinger.py 枚举
2.4 Crackmapexec 枚举
3 启动 Responder
4 SMB 中继攻击:Responder + ntlmrelayx.py
4.1 命令用法一:标准用户 + SMBClient Shell
4.2 命令用法二:本地管理员用户 + SAM 哈希转储
4.3 命令用法三:本地管理员用户 + 命令执行 1
4.4 命令用法四:本地管理员用户 + 命令执行 2
0、前言
在这篇文章中,我们将探讨可用于执行 NTLM 中继攻击的 SMB 中继攻击技术,以便横向移动并访问网络中其它机器的资源。建议在开始学习本文之前,先回顾一下 《AD 侦查-LLMNR 毒化》这篇文章的内容,然后再看看本文是如何使用 Responder 和 ntlmrelayx.py 工具来发起 SMB 中继攻击的。
注:任何基于 NTLM 认证协议的应用均可能遭受 NTLM 中继攻击,例如:SMB、HTTP、LDAP 这些应用。而在本文中,将主要介绍针对 SMB 发起的 NTLM 中继攻击,又称 SMB 中继攻击。
1、SMB 中继攻击概述
SMB 中继攻击是指攻击者捕获用户发出的 Net-NTLM 哈希,然后将其中继以访问网络上已禁用 SMB 签名的另一台计算机。
此外,SMB 中继攻击在不同的工作场景中又有着不一样的利用方式,如:
(1)在工作组环境中,机器之间相互没有信任关系,因此想中继到其它机器是不太现实的。但是可以中继到机器自身的,只不过这种方式微软已通过补丁 MS08-068 做了限制,严禁在中继到机器自身。
(2)在域环境中,普通域用户默认可以登录除域控外的其它所有机器,因此可以将域用户的 Net-NTLM 哈希中继到域内的其它机器。所以,SMB 中继攻击在域中会更为常见。
如果被中继的帐户恰好在被中继的机器上具有本地管理权限,那么就可以利用它们的权限转储主机上的 SAM 哈希或获取主机上的 SYSTEM shell。
注:在域环境中,身份验证通常优先使用 Kerberos 协议,NTLM 作为回退机制。当 Kerberos 不可用时,例如无法获取服务票据或目标服务不支持 Kerberos,客户端会自动回退使用 NTLM。而中继攻击,如使用 ntlmrelayx.py 实现的攻击,依赖于受害者使用 NTLM 协议进行身份验证。因此,该攻击程序通常通过控制网络流量或与目标服务建立不支持 Kerberos 的连接,从而促使客户端使用 NTLM,进而实现认证中继。
2、枚举已禁用 SMB 签名的主机
为了可以发起 SMB 中继攻击,我们需要做的第一件事就是找到那些在网络中已禁用 SMB 签名的机器。
2.1、SMB 签名启用与否的影响
启用后,在尝试传递凭据时,域会知道你不是那个真正的人,因为数据包未由你签名,因此它不会让你进入。
禁用后,域将不会检查请求来源的真实性,而只是看到用户 + 哈希值,并允许你进入系统。(前提是你有权限)
在 Windows Server 系统中,SMB 签名默认处于“已启用且必需”的状态;然而,在任何工作站上,它却默认显示“已启用但非必需”的状态。虽然显示“已启用”,但我们仍可以执行中继攻击,因为“非必需”本质上等同于禁用。
2.2、Nmap 枚举
要枚举主机的 SMB 签名状态,我们可以利用 nmap 预装的脚本 smb2-security-mode.nse 进行检查。
举个例子,假设我们通过 nmap 来扫描网络中打开 445 端口的主机有哪些。
nmap -Pn 172.16.1.0/24 -p445
可以看到有 3 台 Windows 主机开放了 445 端口。为此,我们可以将这 3 个 IP 保存在 SMB_IPs.txt 文件中。
