Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

SMB2

用途

SMB2 是现代 Windows 文件共享使用的 Server Message Block 协议版本,SMB3 也沿用同一类 Wireshark 解析入口和显示过滤器 smb2。在抓包中看到它,通常是在分析文件共享、登录会话、共享挂载、文件读写、锁、通知、命名管道或 SMB over TCP 的性能问题。

不要把 SMB2 和旧版 SMB 混淆:旧版 SMB 使用 0xFF 'S' 'M' 'B' 签名,SMB2/SMB3 使用 0xFE 'S' 'M' 'B' 签名。Wireshark 对 SMB2 和 SMB3 都使用 smb2 过滤器。

分析入口

任务优先看什么说明
判断是否协商到 SMB2/SMB3[SMB2/NegotiateProtocol](/wiki/wireshark/archive/smb2-negotiate-protocol)客户端可先通过 SMB Negotiate 探测服务器是否支持 SMB2,随后切换到 SMB2 会话。
看认证和会话建立SMB2/SessionSetup、User IDUser ID 标识同一 TCP 会话上的已认证用户。
看访问了哪个共享SMB2/TreeConnect、Tree IDTree ID 由服务器在共享连接成功后分配,作用域受会话限定。
看文件打开和读写SMB2/CreateSMB2/ReadSMB2/WriteSMB2/Close先定位文件句柄,再跟读写和关闭。
看异步或取消STATUS_PENDING、PID、SMB2/Cancel挂起请求会使用 PID 帮助后续取消或完成匹配。
看签名Header Flags 的 Signature 位、Signature 字段S 位设置时,SMB2 头中包含签名字段。

常用显示过滤器

text
smb2

只显示 SMB2/SMB3 流量。

text
tcp.port == 445

抓包或初筛常用入口。SMB2 主要运行在 TCP 445 上;旧环境也可能涉及 139。

text
smb2.cmd == 0

查看 NegotiateProtocol,用于确认协议协商阶段。

text
smb2.cmd == 1

查看 SessionSetup,用于分析认证和会话建立。

text
smb2.cmd == 3

查看 TreeConnect,用于定位连接到哪个共享。

text
smb2.cmd == 8 || smb2.cmd == 9

查看 Read/Write,用于聚焦文件读写流量。

text
smb2.nt_status

查看带 NT Status 的 SMB2 报文。进一步定位具体错误时,可在 Wireshark 字段提示中选择对应状态值。

常见问题

SMB2 和 SMB3 为什么都用 smb2 过滤器?

因为 SMB2 与 SMB3 的数据包签名相同,Wireshark 对两者使用同一个 dissector 和显示过滤器入口。版本差异需要在协商结果和具体字段中继续查看。

SMB2 常见版本和系统对应关系是什么?

版本引入的操作系统
2.0.2Windows Vista、Server 2008
2.1.0Windows 7、Server 2008 R2
3.0.0Windows 8、Server 2012
3.0.2Windows 8.1、Server 2012 R2
3.1.0Windows 10、Server 2016

SMB2 头里哪些字段最值得先看?

字段用途
NT_Status响应状态和错误码,排查失败请求时优先看。
Opcode / Command当前命令类型,例如协商、会话建立、读写、关闭。
Flags区分请求/响应、签名、链式 PDU 等状态。
Chain Offset当前 NBT PDU 内下一个 SMB2 PDU 的偏移。
Command Sequence Number用于匹配请求和响应,初始协商从 0 开始递增。
Process ID异步完成、取消请求等场景中用于定位挂起操作。
Tree ID标识已连接的共享。
User ID标识当前 TCP 会话上的已认证用户。
SignatureS 位设置时包含 SMB2 Signing 的签名字段。

原页面里的 opcode 列表如何使用?

常用命令可以按任务理解:协商和认证看 NegotiateProtocolSessionSetup;共享连接看 TreeConnect;文件生命周期看 CreateReadWriteClose;目录变化和取消看 NotifyCancelBreak。详细子页面可从底部相关页面进入。

相关页面

于 2020-08-11 23:24:50 UTC 从 https://wiki.wireshark.org/SMB2 导入

相关 Wireshark Wiki 页面

网络分析技术档案