如何找出远程主机上启用了哪个版本的 SMB?

如何找出远程主机上启用了哪个版本的 SMB?

我的本地计算机运行的是 Windows 7,它支持最新发布的 SMB 协议版本 (SMB 2.1)。我还有一个远程主机,我不知道该远程主机上安装了什么操作系统或 SMB 支持软件;我只知道远程主机支持一些SMB 协议的版本。

如何从我的 Windows 7 计算机的命令提示符(或 PowerShell)中找出该远程主机支持哪个版本的 SMB?

编辑:虽然我上面提到了 Windows 7,但我确信这个问题与许多系统/网络管理员或桌面支持人员有关,这就是为什么我在这里而不是在 superuser.com 上发布这个问题。

答案1

https://nmap.org/nsedoc/scripts/smb-protocols.html

示例用法

nmap -p445 --script smb-protocols <target>
nmap -p139 --script smb-protocols <target>

答案2

在 Windows 8 及更高版本中,您可以使用 powerhsell 命令Get-SmbConnection检查每个连接使用了哪个 SMB 版本。

答案3

最简单的方法是安装WireShark并捕获数据包,它会解码数据包并显示协议版本。它们有一个维基百科上的 SMBv2 条目,因此最新版本的 WireShark 应该可以在数据包捕获中对其进行解码。

答案4

以下是获取 SMB 版本的操作:

  1. 以管理员身份打开 Powershell。右键单击图标并选择“以管理员身份运行”。

  2. 现在,您将在 10 秒内运行 2 个命令,否则 Windows 将关闭未使用的端口。

    1. 跑步dir \\SERVERNAME\C$

    2. 运行Get-SmbConnection:您的“方言”列是您的 SMB 的版本。

  3. 检查此链接上的矩阵以确保操作系统对应于正确的操作系统版本,否则您需要升级您的 SMB。

https://blogs.technet.microsoft.com/josebda/2013/10/02/windows-server-2012-r2-which-version-of-the-smb-protocol-smb-1-0-smb-2-0-smb-2-1-smb-3-0-or-smb-3-02-are-you-using/

SMB 堆栈矩阵

相关内容