如何确定 SMB 客户端是否已从我的 Windows Server 2012 建立签名的 SMB 通信?

如何确定 SMB 客户端是否已从我的 Windows Server 2012 建立签名的 SMB 通信?

有没有办法从我的 Windows 2012 Server 中查找客户端是否已建立签署的通讯

网络会话提供了基本细节,但没有提到签名。

C:\>net session \\a.b.c.d
User name       Administrator
Computer        a.b.c.d
Guest logon     No
Client type
Sess time       00:08:02
Idle time       00:07:50

Share name     Type     # Opens

--------------------------------------
test           Disk     0
The command completed successfully.

有没有Powershell 命令或者任何可以提供此类信息的管理工具或命令?提前致谢。

编辑 1: 我也尝试了以下内容。获取 SmbConnection应该在客户端上执行,以查找客户端已建立连接的服务器。

PS C:\Users\Administrator> Get-SmbConnection | Select-Object -Property *
ContinuouslyAvailable : False
Credential            : domain\administrator
Dialect               : 3.00
Encrypted             : False
NumOpens              : 3
ServerName            : server1
ShareName             : test
UserName              : SERVER1\Administrator
PSComputerName        :
CimClass              : ROOT/Microsoft/Windows/SMB:MSFT_SmbConnection
CimInstanceProperties : {ContinuouslyAvailable, Credential, Dialect, Encrypted...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties

答案1

截至撰写本文时,真正了解这一点的唯一方法是通过 Wireshark 或网络监视器观察正在协商的网络连接。

目前,还没有任何东西可以通过 API、WMI 类等公开这些数据。

Powershell Get-SMBConnectioncmdlet将要以后再向您提供此信息,但不是今天。

该 cmdlet 只是MSFT_SmbConnectionWMI 类的包装器。

Get-WmiObject -Namespace 'Root\Microsoft\Windows\SMB' MSFT_SmbConnection

返回完全相同的信息。如果你去阅读MSDN 文档对于该 WMI 类,您将看到文档除了您今天看到的属性Signed之外还列出了一个属性。Encrypted

class MSFT_SmbConnection
{
  string  ServerName;
  string  ShareName;
  string  UserName;
  uint32  SmbInstance;
  string  Credential;
  uint64  NumOpens;
  string  Dialect;
  boolean ContinuouslyAvailable;
  boolean Encrypted;
  boolean EnableLoadBalanceScaleOut;
  boolean Signed;  // ^_^ *trollface*
};

文档继续说道:

数据类型:布尔值

访问类型:只读

TBD。(待定)

Windows Server 2012 R2、Windows 8.1、Windows Server 2012、Windows 8:Windows Server Technical Preview 和 Windows 10 Technical Preview 之前不支持此属性。

Windows 10 预览版是首次亮相。就是这样。

答案2

为了 Google 的利益,我也一直在努力发现我的 SMB 签名是否真的有效。我发誓 Get-SmbConnection 昨天没有返回“Signed”属性,但今天当我运行时(在我的 Windows 10 1903 x64 机器 PSVersion 5.1.18362.145 上):

PS C:\WINDOWS\system32> Get-SmbConnection | fl *
SmbInstance           : Default
ContinuouslyAvailable : False
Credential            : DOMAIN\user
Dialect               : 3.0.2
Encrypted             : False
NumOpens              : 1
Redirected            : False
ServerName            : server.domain
ShareName             : share
Signed                : False
UserName              : DOMAIN\user
PSComputerName        :
CimClass              : ROOT/Microsoft/Windows/SMB:MSFT_SmbConnection
CimInstanceProperties : {ContinuouslyAvailable, Credential, Dialect, Encrypted...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties

“Signed” 是返回的属性,显示 True 或 False。

但是在我的 Server 2012 R2 PSVersion 5.1.14409.1018 上目前没有。同事在 Windows 10 1809 PSVersion 5.1.17763.592 上也有。

相关内容