SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab

一、SMB概述

SMB(ServerMessage Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议。SMB 是在会话层(session layer)和表示层(presentation layer)以及小部分应用层(application layer)的协议。SMB使用了NetBIOS的应用程序接口 (ApplicationProgram Interface,简称API),一般端口使用为139,445。另外,它是一个开放性的协议,允许了协议扩展——使得它变得更大而且复杂;大约有65个最上层的作业,而每个作业都超过120个函数,甚至Windows NT也没有全部支持到,最近微软又把 SMB 改名为 CIFS(CommonInternet File System),并且加入了许多新的特色。

图片[1]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科SMB协议是一个很重要的协议,目前绝大多数的PC上都在运行这一协议,windows系统都充当着SMB协议的客户端和服务器,所以SMB是一个遵循客户机服务器模式的协议。SMB服务器负责通过网络提供可用的共享资源给SMB客户机,服务器和客户机之间通过TCP/IP协议、或者IPX协议、或者是NetBEUI进行连接。

SMB是应用层(和表示层)协议,使用C/S架构,其工作的端口与其使用的协议有关。

当远程连接计算机访问共享资源时有两种方式:

★共享计算机地址\共IP享资源路径

★共享计算机名\共享资源路径

其中,使用计算机名访问时,SMB服务工作在NetBIOS协议之上,用的是TCP的139端口;使用IP地址访问时,用的是TCP的445端口。

二、SMB工作原理

  1. 首先客户端发送一个SMB negprot请求数据报,并列出它所支持的所有SMB协议版本。服务器收到请求信息后响应请求,并列出希望使用的协议版本。如果没有可使用的协议版本则返回0XFFFFH,结束通信。
  2. 协议确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送SesssetupX请求数据报实现的。客户端发送一对用户名和密码或一个简单密码到服务器,然后服务器通过发送一个SesssetupX应答数据报来允许或拒绝本次连接。
  3. 当客户端和服务器完成了磋商和认证之后,它会发送一个Tcon或TconX SMB数据报并列出它想访问网络资源的名称,之后服务器会发送一个TconX应答数据报以表示此次连接是否被接受或拒绝。
  4. 连接到相应资源后,SMB客户端就能够通过open SMB打开一个文件,通过read SMB读取文件,通过write SMB写入文件,通过close SMB关闭文件。

三、抓包分析SMB服务的具体过程

环境搭建

服务端:Windows7虚拟机一台(账户名:SoisMoooo;密码:111)

客户端:Windows10计算机一台(安装Wireshark)

windows7的IP:192.168.135.130

Windows10的IP:192.168.135.1

A.开启SMB协议

1、服务端(windows7)开启SMB协议,并建立一个共享文件夹:

图片[2]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科图片[3]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科

图片[4]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科图片[5]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科图片[6]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科图片[7]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科2、客户端(windows10)开启SMB协议:

图片[8]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科图片[9]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科图片[10]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科

3、输入:\\192.168.135.130\共享文件夹

填写Windows7账户名和密码

图片[11]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科B.抓包分析工作

1、TCP三次握手建立连接

图片[12]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科

2、SMB协商过程:

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

0x0202   SMB 2.002
0x0210   SMB 2.10
0x0300   SMB 3.0
0x0302   SMB 3.02
0x0311   SMB 3.11

图片[13]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科

3、通过上图Response包可以看到,希望服务端使用的版本是SMB 2.10

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

图片[14]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科4、然后服务器通过发送一个Session setup response应答数据报来允许或拒绝本次连接。

图片[15]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科

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

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

图片[16]-SMB协议(使用说明+过程详解+抓包分析) – 作者:龙渊实验室LongYuanLab-安全小百科6、最后就可以进行读写操作

原文链接

来源:freebuf.com 2020-11-04 09:43:21 by: 龙渊实验室LongYuanLab

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论