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

本文详细介绍了SMB协议,特别是SMBv1的结构和命令,包括SMB_Header、SMB_Parameters和SMB_Data。通过示例展示了SMB命令如SMB_COM_NEGOTIATE、SMB_COM_SESSION_SETUP_ANDX和SMB_COM_TREE_CONNECT_ANDX的用途。此外,还提到了SMBv2和SMBv3的特性和命令,如SMB2_NEGOTIATE和SMB2_SESSION_SETUP。
摘要由CSDN通过智能技术生成

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 消息概例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CIFS(Common Internet File System) 协议 CIFS 是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机的服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议现在是局域网上用于服务器文件访问和打印的协议。象SMB协议一样,CIFS在高层运行,而不象TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。 SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445。 服务器信息块(SMB协议是一种IBM协议,用于在计算机间共享文件、打印机、串口等。SMB 协议可以用在因特网的TCP/IP协议之上,也可以用在其它网络协议如IPX和NetBEUI 之上。   SMB 一种客户机/服务器、请求/响应协议。通过 SMB 协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机、邮件槽(mailslot)、命名管道(named pipe)等资源。   在 TCP/IP 环境下,客户机通过 NetBIOS over TCP/IP(或 NetBEUI/TCP 或 SPX/IPX)连接服务器。一旦连接成功,客户机可发送 SMB 命令到服务器上,从而客户机能够访问共享目录、打开文件、读写文件,以及一切在文件系统上能做的所有事情。   从 Windows 95 开始,Microsoft Windows 操作系统(operating system)都包括了客户机和服务器 SMB 协议支持。Microsoft 为 Internet 提供了 SMB 的开源版本,即通用 Internet 文件系统 (CIFS)。与现有 Internet 应用程序如文件传输协议(FTP)相比, CIFS 灵活性更大。对于 UNIX 系统,可使用一种称为 Samba 的共享软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值