首页 > 其他分享 >SMB协议原理抓包分析——本质上和FTP下载文件的思路是一样的

SMB协议原理抓包分析——本质上和FTP下载文件的思路是一样的

时间:2023-06-02 22:02:13浏览次数:54  
标签:FTP 协议 发送 注册表 服务器 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协议原理抓包分析——本质上和FTP下载文件的思路是一样的_安全分析

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

  

SMB协议原理抓包分析——本质上和FTP下载文件的思路是一样的_服务端_02

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

4.可以分析SMB工作原理

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

SMB协议原理抓包分析——本质上和FTP下载文件的思路是一样的_服务器_03

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协议原理抓包分析——本质上和FTP下载文件的思路是一样的_服务端_04

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

SMB协议原理抓包分析——本质上和FTP下载文件的思路是一样的_客户端_05

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

SMB协议原理抓包分析——本质上和FTP下载文件的思路是一样的_服务端_06

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

SMB协议原理抓包分析——本质上和FTP下载文件的思路是一样的_安全分析_07

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

SMB协议原理抓包分析——本质上和FTP下载文件的思路是一样的_安全分析_08

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

SMB协议原理抓包分析——本质上和FTP下载文件的思路是一样的_安全分析_09

 三、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协议原理抓包分析——本质上和FTP下载文件的思路是一样的_客户端_10

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

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

   

SMB协议原理抓包分析——本质上和FTP下载文件的思路是一样的_服务器_11

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

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

  

SMB协议原理抓包分析——本质上和FTP下载文件的思路是一样的_客户端_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协议原理抓包分析——本质上和FTP下载文件的思路是一样的_服务器_13

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

SMB协议原理抓包分析——本质上和FTP下载文件的思路是一样的_客户端_14

 

标签:FTP,协议,发送,注册表,服务器,SMB,抓包,客户端
From: https://blog.51cto.com/u_11908275/6405230

相关文章

  • Android利用tcpdump抓包
    [b]Instructions[/b][url]http://source.android.com/porting/tcpdump.html[/url][b]SourceCodeandDocuments[/b][url]http://www.tcpdump.org/[/url][b]CompiledBinaryDownload[/b][url]http://www.strazzere.com/android/tcpdump[/url]......
  • python mitmproxy抓包库
    一.简介mitmproxy是一款用Python编写的支持HTTP(S)的中间人代理工具。它可以拦截、查看、修改、重放和保存HTTP/HTTPS流量,支持命令行界面和图形界面,可用于安全测试、网络调试、API开发和反向工程等场景。mitmproxy具有很高的灵活性和扩展性,可以通过插件机制进行定制化开发和功能......
  • 【sftpUtil】
    依赖:<!--sftp--><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.54</version></dependency> 代码:p......
  • docker安装FTP
    1.拉取镜像dockerpullfauria/vsftpd2.创建容器并运行dockerrun-d-v<本机挂载目录>:/home/vsftpd\-p20:20\-p21:21\-p21100-21110:21100-21110\-eFTP_USER=<登录名>\-eFTP_PASS=<登录密码>\-ePASV_ADDRESS=<ipaddressofyourserver>\-e......
  • arm-linux的TFTP 服务器搭建和测试
    这里并不会费劲的去介绍TFTP协议,那个意义不大,主要是教大家如何操作,在这个过程中进步。网络协议非常复杂,完整的网络协议一个人将资料看一遍,估计这辈子就过去了。在这个庞大的网络工程中,不同的工程师分别做不同的工作,作为嵌入式linux工程师,要做的就是拿别人做好的东西移植,在嵌......
  • 玩转服务器之数据传输篇:如何快速搭建FTP文件共享服务器
    FTP文件共享服务器介绍FTP服务(FileTransferProtocol,FTP)是最早应用于主机之间数据传输的基本服务之一,是目前使用最广泛的文件传送协议。FTP文件共享服务器在日常办公中可以实现多人之间文件的传递和共享,极大提高协同办公的效率。Vsftpd是一款在Linux发行版中最受推崇的FTP服务......
  • vsftpd安装
     注意事项:FTPS数据存取介质磁盘不能为lvm格式,且不能挂载到lvm的目录下1、yum -y install  ftp vsftpdvsftpd:version3.0.2  mkdir-p/etc/vsftpd/vsftpd_user_conf2、编辑vsftpd的主配置文件(centos6和centos7的主配置文件vsftpd.conf不一样,其余的配置步骤一样)Cen......
  • vsftpd日志配置及查看——可以将vsftpd记录在系统日志里
    vsftpd日志配置及查看vsftpdftp服务器的日志设置,可以通过修改主配置文件/etc/vsftpd.conf实现。主配置文件中与日志设置有关的选项包括xferlog_enable、xferlog_file和dual_log_enable等。 xferlog_enable 如果启用该选项,系统将会维护记录服务器上传和下载情况的日志文件。默......
  • wireshark 仅抓取 DNS 报文——直接在过滤器抓包里写 udp port 53 即可
    ......
  • ChunJun FTP Connector 功能扩展解读
    本文将从FTPConnector的功能详解,自定义文件切割及自定义FileFormat三个方面为大家带来ChunJunFTPConnector的功能扩展分享。FTPConnector详解FTP是用于在网络上进行文件传输的一套标准协议,它工作在OSI模型的第七层,TCP模型的第四层,即应用层,提供一种在服务器和客户......