Appearance
Appearance
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 ID | User ID 标识同一 TCP 会话上的已认证用户。 |
| 看访问了哪个共享 | SMB2/TreeConnect、Tree ID | Tree ID 由服务器在共享连接成功后分配,作用域受会话限定。 |
| 看文件打开和读写 | SMB2/Create、SMB2/Read、SMB2/Write、SMB2/Close | 先定位文件句柄,再跟读写和关闭。 |
| 看异步或取消 | STATUS_PENDING、PID、SMB2/Cancel | 挂起请求会使用 PID 帮助后续取消或完成匹配。 |
| 看签名 | Header Flags 的 Signature 位、Signature 字段 | S 位设置时,SMB2 头中包含签名字段。 |
smb2只显示 SMB2/SMB3 流量。
tcp.port == 445抓包或初筛常用入口。SMB2 主要运行在 TCP 445 上;旧环境也可能涉及 139。
smb2.cmd == 0查看 NegotiateProtocol,用于确认协议协商阶段。
smb2.cmd == 1查看 SessionSetup,用于分析认证和会话建立。
smb2.cmd == 3查看 TreeConnect,用于定位连接到哪个共享。
smb2.cmd == 8 || smb2.cmd == 9查看 Read/Write,用于聚焦文件读写流量。
smb2.nt_status查看带 NT Status 的 SMB2 报文。进一步定位具体错误时,可在 Wireshark 字段提示中选择对应状态值。
smb2 过滤器? 因为 SMB2 与 SMB3 的数据包签名相同,Wireshark 对两者使用同一个 dissector 和显示过滤器入口。版本差异需要在协商结果和具体字段中继续查看。
| 版本 | 引入的操作系统 |
|---|---|
| 2.0.2 | Windows Vista、Server 2008 |
| 2.1.0 | Windows 7、Server 2008 R2 |
| 3.0.0 | Windows 8、Server 2012 |
| 3.0.2 | Windows 8.1、Server 2012 R2 |
| 3.1.0 | Windows 10、Server 2016 |
| 字段 | 用途 |
|---|---|
| NT_Status | 响应状态和错误码,排查失败请求时优先看。 |
| Opcode / Command | 当前命令类型,例如协商、会话建立、读写、关闭。 |
| Flags | 区分请求/响应、签名、链式 PDU 等状态。 |
| Chain Offset | 当前 NBT PDU 内下一个 SMB2 PDU 的偏移。 |
| Command Sequence Number | 用于匹配请求和响应,初始协商从 0 开始递增。 |
| Process ID | 异步完成、取消请求等场景中用于定位挂起操作。 |
| Tree ID | 标识已连接的共享。 |
| User ID | 标识当前 TCP 会话上的已认证用户。 |
| Signature | S 位设置时包含 SMB2 Signing 的签名字段。 |
常用命令可以按任务理解:协商和认证看 NegotiateProtocol、SessionSetup;共享连接看 TreeConnect;文件生命周期看 Create、Read、Write、Close;目录变化和取消看 Notify、Cancel、Break。详细子页面可从底部相关页面进入。
于 2020-08-11 23:24:50 UTC 从 https://wiki.wireshark.org/SMB2 导入