如何确定在远程主机上启用了什么版本的SMB?


11

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

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

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


1
好问题没有一个很好的答案,您可能需要嗅探数据包,是的,可以从命令行完成。希望有更好的方法。
东尼·罗斯

Answers:


3

最简单的方法是安装WireShark并捕获数据包,它将解码它们并向您显示协议版本。他们在其Wiki上具有SMBv2条目,因此最新版本的WireShark应该将其解码为数据包捕获。


1
在这种情况下,我将使用netmon 3.4,如果您不想安装它,则不必只运行“ netsh trace start capture = yes”,然后连接到共享,然后运行“ netsh trace stop”,得到的结果* .cab文件可由netmon 3.4读取,该文件不必在要捕获的工作站/服务器上。
托尼·罗斯

3

在Windows 8和更高版本上,可以使用powerhsell命令Get-SmbConnection来检查每个连接使用哪个SMB版本。


即使我最初的问题是针对Windows 7,也很高兴知道在Windows 8及更高版本上事情变得更容易了!
Kal

1

确定远程主机的SMB版本只有两种可能的方法。

首先是使用telnet进行横幅广告抢夺。即使那样,也不能保证任何使用都会回来。我可以成功连接到我的一台SMB服务器,但是没有得到任何有用的横幅信息。

第二种是使用网络安全扫描程序通过网络对系统进行指纹识别。您必须搜索一个好的工具思想,因为在确定运行哪个版本的SMB时仍不能保证成功。例如,我只是对网络上的nmap使用了快速扫描(我知道它在多个端点上运行microsoft SMB),但是我没有得到有关它运行的SMB版本的相关信息。


nmap是否可以检测CIF版本?好一阵子没用了。
托尼·罗斯

1
@tonyroth可能会有Nmap脚本引擎插件执行此操作。我知道一个smb漏洞检查-但您不想使用那种随意的方法,因为它会拖累服务器。=)
Wesley

1
您必须将nmap与“ -sV -p 139”标志一起使用以获取守护程序详细信息。例如。Samba smbd 3.X(工作组:XXXX)
Soviero 2012年

0

这是您提取SMB版本的方法:

  1. 以管理员身份打开Powershell。右键单击该图标,然后说“以管理员身份打开”。
  2. 用“ cd \”导航到c:\,然后选择“ c:”
  3. 现在,您将在彼此相距10秒内运行2条命令,否则Windows将关闭未使用的端口。

    3a。运行“ dir \ SERVERNAME \ C $”

    3b。运行“ Get-SmbConnection”,您的“方言”列就是您的SMB版本。

  4. 检查此链接上的矩阵,以确保操作系统对应于正确的操作系统版本,否则您将需要升级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-或-smb-3-02-您在使用/

SMB堆栈矩阵

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.