当前位置:   article > 正文

内网渗透从零到一之SMB协议1_smb1协议

smb1协议

0x00

在内网利用PTH进行横向移动时常使用的atexec/smbexec/psexec等都有smb协议的身影,而笔者对smb协议理解的也比较粗浅,所以对smb协议进行一个系统的学习,并作个记录。

0x01 SMBv1

CIFS协议是SMB协议的一个特定版本的特定叫法,本质还是SMB协议。其它的SMB协议版本对应有其它的叫法,这个叫法也可以说是方言。

服务器消息块 (SMB) 协议是网络文件共享协议,如 Microsoft Windows中实现的称为 Microsoft SMB 协议。 定义特定版本的协议的消息数据包集称为方言。 常见的 Internet 文件系统 (CIFS) 协议是 SMB 的方言。

CIFS协议可以进行客户端和服务器之间传输文件,也可以用于访问集中式打印队列,以及使用命名管道进行进程间通信。

0x010 SMBv1 消息结构

SMBv1消息由三部分构成

固定长度的SMB标头(SMB_Header)
可变长度的参数块(SMB_Parameters)
可变长度的数据块(SMB_Data)
0x0100 SMB_Header
SMB_Header结构如下

SMB_Header{
UCHAR Protocol[4];
UCHAR Command;
SMB_ERROR Status;
UCHAR Flags;
USHORT Flags2;
USHORT PIDHigh;
UCHAR SecurityFeatures[8];
USHORT Reserved;
USHORT TID;
USHORT PIDLow;
USHORT UID;
USHORT MID;
}
Command位用于表示发送的是什么命令,用命令对应的命令代码表示,比如我要发送SMB_COM_CREATE_DIRECTORY命令,则填充Command位为0x00,SMB_COM_CREATE_DIRECTORY命令的意思是创建一个新目录。其它命令可查看文档

在这里插入图片描述

SMB_Header结构的其它位的含义可以查看文档

0x0101 SMB_Parameters

SMB_Parameters结构如下

SMB_Parameters{
UCHAR WordCount;
USHORT Words[WordCount] (variable);
}
WordCount作为Words数组的宽度决定SMB_Parameters的大小,当WordCount为0时SMB_Parameters大小为1字节。

0x0102 SMB_Data

SMB_Data结构如下

SMB_Data{
USHORT ByteCount;
UCHAR Bytes[ByteCount] (variable);
}
WordCount作为Bytes数组的宽度决定SMB_Data的大小,当ByteCount为0时SMB_Data大小为2字节。

0x011 消息概例

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/899014
推荐阅读
相关标签
  

闽ICP备14008679号