SMB-relay
SMB 中继攻击
在 SMB-中继攻击中,攻击者不会尝试使用 Responder 破解从网络收集的哈希值,而是将这些哈希值中继到其他计算机,希望一台计算机能够允许它们获得访问权限。
基本流程
SMB 中继利用网络上常见自动化系统的定期身份验证尝试。这些自动化系统对网络上的设备执行常规管理任务。为此,他们尝试使用 NTLM 连接到网络的任何设备进行登录/身份验证。
正常功能
该服务尝试向服务器进行身份验证。服务器以质询进行响应,通常“如果您确实是您所说的用户,则使用用户的密码哈希加密该质询并将其发回。”
客户端上的服务使用用户的密码对质询进行加密,并将新值发送回服务器。服务器使用用户的密码解密答案,如果解密为发送的原始质询,则对服务进行身份验证。
剥削
攻击者可以通过捕获服务和服务器之间的流量、修改它,并实质上劫持服务服务器的身份验证(攻击机器得到身份验证)来利用此易受攻击的交换。
通过劫持身份验证,攻击者可以获得*发送挑战的目标服务器的访问权限。
要求:
- SMB 签名已禁用
- 管理员凭据:中继的用户凭据必须是管理员凭据,否则您不会从获取它们中获得太多好处。
- 此外,您无法将凭据转发给自己(攻击者)。凭证必须转发到另一台计算机。
剥削
识别没有 SMB 签名的主机
首先,我们必须找到目标网络上禁用 SMB 签名的主机。
什么是 SMB 签名?
SMB 签名是 Microsoft 从 Windows 2000 开始添加到 SMB 协议中的安全机制。它通过使用会话密钥生成的签名对每条消息进行签名,从而保护客户端和服务器之间发送的消息的完整性。
这防止攻击者篡改消息,因为任何篡改都会更改哈希值,从而向系统发出信号,表明消息在传输过程中遭到破坏。
使用 nmap
Nmap 有一个脚本,它将报告网络上哪些主机禁用了 SMB 签名。要运行它,只需使用:
1 | ┌──(hakcypuppy㉿kali)-[~] |
无论返回的不需要 SMB 签名的目标有多少,都将每个目标添加到名为 targets.txt 的文件中。
使用 Responder 和 smbrelayx.py 进行中继
一旦我们找到了一个好的主机,我们将使用 Responder 和 smbrelayx.py 的组合来捕获哈希,然后将 if (使用我们自己的服务器)中继到目标。
首先,我们必须更新 Responder 配置,使其不充当服务器(因为 impacket 脚本将为我们执行此操作)。/usr/share/responder/responder.conf
1 | [Responder Core] |
响应者
我们给响应者的命令将告诉响应者监听我们指定的接口并被动捕获网络上的哈希值:
1 | respnder -I eth0 -dwPv |
ntlmrelayx.py
ntlmrelayx.py 脚本来自 python impacket,它将处理将响应者捕获的哈希值中继到目标设备。
1 | ntlmrelayx.py -tf targets.txt -smb2support -c 'whoami' |
tf:目标文件-smb2support:支持 SMB 版本 2-c:在目标系统上执行的命令
成功
成功中继到目标后,impacket 将打印目标设备上帐户的本地 SAM 哈希值。理想情况下,其中之一来自管理员帐户。
[!资源]
- Microsoft:SMB 签名概述
- Mark Baggett:SMB 中继揭秘…
- Cowdex:SMB 中继攻击
- 我的其他笔记(全文链接),所有这些都可以在[此处](https://github.com/TrshPuppy/obsidian-notes)找到