SMB协议原理抓包分析

SMB协议原理抓包分析

目录:

1.SMB概述

2.SMB原理

3.SMB配置

一、SMB概述

SMB(全称是Server Message Block)是一个协议名,可用于在计算机间共享文件、打印机、串口等,电脑上的网上邻居就是靠它实现的。

SMB 是一种客户机/服务器、请求/响应协议。通过 SMB 协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机等资源。

SMB一开始的设计是在NetBIOS协议上运行的,而NetBIOS本身则运行在NetBEUI、IPX/SPX或TCP/IP协议上。

NetBIOS 使用下列端口:UDP/137(NetBIOS 名称服务)、UDP/138(NetBIOS 数据报服务)、TCP/139(NetBIOS 会话服务);SMB 使用下列端口:TCP/139、TCP/445。  #NetBIOS用于局域网内主机名发现。

二、SMB服务工作原理

① 首先客户端发送一个SMB negprot请求数据报,并列出它所支持的所有SMB协议版本。服务器收到请求信息后响应请求,并列出希望使用的协议版本。如果没有可使用的协议版本则返回0XFFFFH,结束通信。

② 协议确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送SesssetupX请求数据报实现的。客户端发送一对用户名和密码或一个简单密码到服务器,然后服务器通过发送一个SesssetupX应答数据报来允许或拒绝本次连接。

③ 当客户端和服务器完成了磋商和认证之后,它会发送一个Tcon或TconX SMB数据报并列出它想访问网络资源的名称,之后服务器会发送一个TconX应答数据报以表示此次连接是否被接受或拒绝。

④ 连接到相应资源后,SMB客户端就能够通过open SMB打开一个文件,通过read SMB读取文件,通过write SMB写入文件,通过close SMB关闭文件。

抓包分析如下:

实验环境,win10(客户端)开启SMB协议,win7(SMB协议服务端)开启SMB协议并建立一个共享文件的夹,用于测试SMB协议的通信过程

1.开启SMB协议

SMB协议原理抓包分析_第1张图片

2.服务端创建一个共享文件夹

  SMB协议原理抓包分析_第2张图片

3.客户端开启抓包,通过UNC路径访问共享文件夹,输入用户名和密码

4.可以分析SMB工作原理

4.1首先客户端发送一个SMB negotiate protocol request请求数据报,并列出它所支持的所有SMB协议版本  SMB协议原理抓包分析_第3张图片

4.2服务器收到请求信息后响应请求,并列出希望使用的协议版本。如果没有可使用的协议版本则返回0XFFFFH,结束通信。可以看到下图服务端希望使用的版本是SMB2.1 注意:win7虽然默认开启smbv1(只要开启共享服务),但是由于windows的安全机制,版本协商就高不就低,除非客户端版本只有SMBv1或者服务端只有SMBv1,这里就可以利用了:客户端可以恶意把版本设置为只能是SMBv1,这样服务端和客户端协商通过只能用SMBv1了。

版本对应关系如下:

0x0202   SMB 2.002
0x0210    SMB 2.1
0x0300    SMB 3.0
0x0302    SMB 3.02
0x02FF    SMB2  SMB协议原理抓包分析_第4张图片

4.3协议确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送session setup request请求数据报实现的。客户端发送一对用户名和密码或一个简单密码到服务器。  SMB协议原理抓包分析_第5张图片

4.5然后服务器通过发送一个Session setup response应答数据报来允许或拒绝本次连接。 SMB协议原理抓包分析_第6张图片

4.6当客户端和服务器完成了磋商和认证之后,它会发送一个Tree connect rerquest SMB数据报并列出它想访问网络资源的名称  SMB协议原理抓包分析_第7张图片

4.7之后服务器会发送一个tree connect response应答数据报以表示此次连接是否被接受或拒绝  SMB协议原理抓包分析_第8张图片

4.8连接到相应资源后,SMB客户端就能够干一些读、写(需要有权限)等操作了  SMB协议原理抓包分析_第9张图片

 三、SMB服务配置管理

1.启动网络共享,见上面的图

2. Windows 7、Windows Server 2008 上检测是否开启SMB

SMB 服务器上的 SMB v1:powershell 方法  默认启用,(未创建注册表项),所以不会返回 SMB1 值

2.1检测:Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}

  SMB协议原理抓包分析_第10张图片

2.2禁用SMB1   #这是再检测就可以看到有SMB1,因为禁用是在修改注册表

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force

   SMB协议原理抓包分析_第11张图片

2.3启用SMB1  #就是修改注册表的SMB对应的为1

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force

  SMB协议原理抓包分析_第12张图片

2.4检测SMBV2和v3,禁用和启用和上面的方法一样。

注册表编辑器:

若要在 SMB 服务器上启用或禁用 SMBv1,请配置以下注册表项:

注册表子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

注册表项: SMB1

REG_DWORD: 0 = 已禁用

REG_DWORD: 1 = 已启用

默认值: 1 = 已启用(未创建注册表项)

若要在 SMB 服务器上启用或禁用 SMBv2,请配置以下注册表项:

注册表子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

注册表项: SMB2

REG_DWORD: 0 = 已禁用

REG_DWORD: 1 = 已启用

默认值: 1 = 已启用(未创建注册表项)

注意进行这些更改后,必须重启计算机。

3.设置把WIN7的SMBV2禁用掉(这时只留下SMBV1了),测试客户端和服务端是否协商用smbv1版本进行通信。

  SMB协议原理抓包分析_第13张图片

4.抓包分析文件共享过程,这里只分析客户端发送协商之后,服务器响应给的版本,其他过程和上面的分析类似。 SMB协议原理抓包分析_第14张图片

 

转载于:https://www.cnblogs.com/yuzly/p/10480438.html

你可能感兴趣的:(SMB协议原理抓包分析)