TIER 0: Dancing
TIER 0: Dancing
SMB
Server Message Block 是一种网络协议,用于在计算机网络上共享文件、打印机和其他资源。它最初由微软开发,用于在 Windows 操作系统之间进行文件和资源共享。
- SMB 在 OSI 模型的应⽤层或表⽰层运⾏
- SMB 协议使用 TCP 作为传输协议,通常使用 TCP/445 端口
- Microsoft SMB 协议最常使⽤的传输层协议是 NetBIOS over TCP/IP (NBT)
SMB 相关概念
- SMB-enabled storage: 在网络上,支持 SMB 协议的存储被称为 共享(share)。这些共享可以被具有服务器地址和正确凭据的任何客户端访问。
- 访问共享:客户端可以使用正确的凭据访问 SMB 共享,以创建、编辑、检索和删除共享上的文件。这意味着只有经过身份验证的用户才能查看或与 SMB 共享的内容进行交互。
SMB 协议需要在网络拓扑中使用一些安全层来正常运行。这意味着在 SMB 中,客户端需要提供用户名和密码的组合来进行身份验证。
SMB 协议允许在网络上的存储设备上创建共享,并使用安全机制来确保只有经过身份验证的用户才能访问和操作共享中的文件。通过提供用户名和密码的组合,SMB 客户端可以访问 SMB 共享的内容。
在某些情况下,网络管理员可能配置了共享,使得未经身份验证的用户可以使用 无效的凭据 或 匿名登录 方式进行访问。这可能导致未经授权的用户获得对共享的访问权限。
smbclient
smbclient 是一个用于与 SMB/CIFS(Server Message Block/Common Internet File System)服务器进行通信的命令行工具。它提供了在命令行下访问和操作 SMB 共享的功能。
通过 smbclient,您可以使用各种命令和选项来执行以下操作:
-
访问共享:您可以使用 smbclient 连接到远程 SMB 服务器,并指定服务器的地址、共享名称以及登录凭据(用户名和密码)。一旦连接建立,您就可以浏览和操作 SMB 共享中的文件和目录。
-
上传和下载文件:使用 smbclient,您可以从本地系统上传文件到远程 SMB 共享,或从共享下载文件到本地系统。这使得在 SMB 共享和本地系统之间进行文件传输成为可能。
-
列出目录内容:您可以使用 smbclient 列出远程 SMB 共享中的文件和目录内容。这允许您查看共享中的文件和目录结构,以及文件的属性和权限信息。
-
执行命令:除了文件传输和浏览之外,smbclient 还允许您在远程 SMB 服务器上执行命令。您可以通过 smbclient 发送命令到服务器,并查看命令的输出结果。
以下是 smbclient 的一些常用参数:
-
-L <host>
:列出指定主机上可用的共享列表。 -
//<host>/<share>
:连接到指定主机上的共享。 -
-U <username>
:使用指定的用户名进行认证。 -
-N
:使用空密码进行认证。 -
-c <command>
:执行指定的命令。 -
-T <transport>
:指定传输协议,如TCP或NBT(NetBIOS over TCP/IP)。 -
-p <port>
:指定要使用的端口号。 -
-D <directory>
:设置远程共享的工作目录。 -
-d <debuglevel>
:设置调试级别,用于输出详细的调试信息。 -
-s <script>
:执行指定的脚本文件。
使用
smbclient --help
命令可以查看完整的参数列表和说明。
通信分析
SMB 协议通信分析示例:
- 客户端发送 SMB Negotiate Protocol 请求进行协议协商,服务器发送SMB Negotiate Protocol响应进行确认。
- 客户端发送 SMB Session Setup 请求进行会话建立,服务器发送 SMB Session Setup 响应进行确认。
- 客户端发送 SMB Tree Connect 请求进行共享连接,服务器发送 SMB Tree Connect 响应进行确认。
- 客户端发送 SMB Create 请求创建文件,服务器发送 SMB Create 响应进行确认。
- 客户端发送 SMB Write 请求进行写入操作,服务器发送 SMB Write 响应进行确认。
- 客户端发送 SMB Read 请求进行读取操作,服务器发送 SMB Read 响应返回数据。
- 客户端发送 SMB Close 请求关闭文件,服务器发送 SMB Close 响应进行确认。
实际的 SMB 通信过程可能还涉及其他命令和数据传输,具体的通信流程可能更加复杂。在本次靶机中主要涉及匿名登录,在 -L
列出共享列表里 WorkShares
,使用其登录 //<host>/<share>
匿名。