首页 > 其他分享 >SMB协议原理抓包分析

SMB协议原理抓包分析

时间:2022-11-21 14:34:23浏览次数:48  
标签:协议 注册表 发送 服务器 原理 SMB 抓包 客户端

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协议

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

  

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

4.可以分析SMB工作原理

4.1首先客户端发送一个SMB negotiate protocol request请求数据报,并列出它所支持的所有SMB协议版本  

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  

4.3协议确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送session setup request请求数据报实现的。客户端发送一对用户名和密码或一个简单密码到服务器。  

4.5然后服务器通过发送一个Session setup response应答数据报来允许或拒绝本次连接。 

4.6当客户端和服务器完成了磋商和认证之后,它会发送一个Tree connect rerquest SMB数据报并列出它想访问网络资源的名称  

4.7之后服务器会发送一个tree connect response应答数据报以表示此次连接是否被接受或拒绝  

4.8连接到相应资源后,SMB客户端就能够干一些读、写(需要有权限)等操作了  

 三、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}

  

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

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

   

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

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

  

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版本进行通信。

  

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

 

标签:协议,注册表,发送,服务器,原理,SMB,抓包,客户端
From: https://www.cnblogs.com/bonelee/p/16911322.html

相关文章

  • PHPStorm配置PHP调试环境,xdebug调试原理
    之前的调试环境有一点混乱,所以决定重新配置一遍,写这篇文章记录出现的问题,希望能够帮助到你们搭建环境windowsphpstudyapache/nginxphp7.3phpstormxdebug+chromephpstudy......
  • InnoDB体系结构及工作原理
    概念InnoDB主要包括了内存池、后台线程以及存储文件。INNODB的三大特性:插入缓存,两次写,自适应hash内存池又是由多个内存块组成的,主要包括BufferPool、redolog缓冲等,解决cpu......
  • 计算机组成原理中的单位换算
    在描述存储容量、文件大小等时,\(K、M、G、T\)通常用2的幂次表示,如\(1\mathrm{~Kb}=2^{10}\mathrm{~b}\)在描述速率、频率等时,\(\mathrm{k}、\mathrm{......
  • 【Spring系列】- Spring事务底层原理
    Spring事务底层原理......
  • Dubbo-Activate实现原理
    前言在Dubbo中有Filter使用,对于Filter来说我们会遇到这样的问题,Filter自身有很多的实现,我们希望某种条件下使用A实现,另外情况下使用B实现,这个时候我们前面介绍@SPI和@Adap......
  • Vue笔记 - 样式穿透原理及使用方法
    样式穿透目录样式穿透1.为什么需要样式穿透1.1为什么样式会失效2.如何使用样式穿透2.1实例1.为什么需要样式穿透在开发中引入了第三方组件库(如element-ui),但又想......
  • 深入浅出学习透析Nginx服务器的基本原理和配置指南「负载均衡篇」
    负载均衡之前的章节内容中【深入浅出学习透析Nginx服务器的基本原理和配置指南「初级实践篇」】和【深入浅出学习透析Nginx服务器的基本原理和配置指南「进阶实践篇」】,我......
  • Vue3笔记 - 浅析Vue2和Vue3响应式原理及两者差异
    浅析Vue2和Vue3响应式原理及两者差异目录浅析Vue2和Vue3响应式原理及两者差异vue2的响应式vue2中为数据添加响应式模拟Vue2实现响应式原理vue3的响应式vue3中为数据添加响......
  • 【I/O模型】异步IO的原理和使用
    为什么要有异步I/O异步IO相比同步IO不会阻塞当前程序的执行,可以继续向下执行。即当应用程序发起一个IO操作后,调用者不会立刻得到结果,而是在内核完成IO操作后,通过信号或回......
  • 深入理解通知服务NotificationListenerService原理
    前言在上一篇​​通知服务NotificationListenerService使用方法​​中,我们已经介绍了如何使用NotificationListenerService来监听消息通知,在最后我们还模拟了如何实现微信......