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,您可以使用各种命令和选项来执行以下操作:

  1. 访问共享:您可以使用 smbclient 连接到远程 SMB 服务器,并指定服务器的地址、共享名称以及登录凭据(用户名和密码)。一旦连接建立,您就可以浏览和操作 SMB 共享中的文件和目录。

  2. 上传和下载文件:使用 smbclient,您可以从本地系统上传文件到远程 SMB 共享,或从共享下载文件到本地系统。这使得在 SMB 共享和本地系统之间进行文件传输成为可能。

  3. 列出目录内容:您可以使用 smbclient 列出远程 SMB 共享中的文件和目录内容。这允许您查看共享中的文件和目录结构,以及文件的属性和权限信息。

  4. 执行命令:除了文件传输和浏览之外,smbclient 还允许您在远程 SMB 服务器上执行命令。您可以通过 smbclient 发送命令到服务器,并查看命令的输出结果。

以下是 smbclient 的一些常用参数:

  1. -L <host>:列出指定主机上可用的共享列表。

  2. //<host>/<share>:连接到指定主机上的共享。

  3. -U <username>:使用指定的用户名进行认证。

  4. -N:使用空密码进行认证。

  5. -c <command>:执行指定的命令。

  6. -T <transport>:指定传输协议,如TCP或NBT(NetBIOS over TCP/IP)。

  7. -p <port>:指定要使用的端口号。

  8. -D <directory>:设置远程共享的工作目录。

  9. -d <debuglevel>:设置调试级别,用于输出详细的调试信息。

  10. -s <script>:执行指定的脚本文件。

使用 smbclient --help 命令可以查看完整的参数列表和说明。

通信分析

SMB 协议通信分析示例:

sequenceDiagram
participant Client
participant Server

Client->>Server: SMB Negotiate Protocol Request
Server-->>Client: SMB Negotiate Protocol Response

Client->>Server: SMB Session Setup Request
Server-->>Client: SMB Session Setup Response

Client->>Server: SMB Tree Connect Request
Server-->>Client: SMB Tree Connect Response

Client->>Server: SMB Create Request
Server-->>Client: SMB Create Response

Client->>Server: SMB Write Request
Server-->>Client: SMB Write Response

Client->>Server: SMB Read Request
Server-->>Client: SMB Read Response

Client->>Server: SMB Close Request
Server-->>Client: SMB Close Response

  • 客户端发送 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> 匿名。

TIER 0: Dancing的更多相关文章

  1. Hack The Box( Starting Point )

    Hack The Box [Starting Point] 初始点 -- 了解渗透测试的基础知识. 这一章节对于一个渗透小白来说,可以快速的成长.以下将提供详细的解题思路,与实操步骤. TIER 0 ...

  2. 2000条你应知的WPF小姿势 基础篇<1-7>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know ...

  3. Windows Live Write 日志客户端

    下载地址 下载地址:http://wl.dlservice.microsoft.com/download/E/4/9/E494934D-C33E-486A-AB1A-82248C800922/zh-c ...

  4. ssd可以用作redo 盘吗?

                                               ssd可以用作redo 盘吗? 1.ssd有写磨损,而且ssd的写性能也不是非常好,ssd只是随机读特别好,因为 ...

  5. [No0000129]WPF(1/7)开始教程[译]

    概要 在我使用了半年多 WPF 后,是时候写点关于 WPF 基础方面的东西了.我发表了一系列针对具体问题的文章.现在是到了让大家明白为什么说WPF是一款在界面开发上带来革命的产品了. 本文针对初级-中 ...

  6. OpenStack_Swift源代码分析——Ring的rebalance算法源代码具体分析

    1 Command类中的rebalnace方法 在上篇文章中解说了,创建Ring已经为Ring加入设备.在加入设备后须要对Ring进行平衡,平衡 swift-ring-builder object.b ...

  7. [ NOIP 2009 ] TG

    \(\\\) \(\#A\) \(Spy\) 给出两个长度均为\(N\)相同的样例串,建立第一个串各个字符向第二个串对应位置字符的映射,并用映射转换给出的长度为\(M\)第三个串,输入保证只有大写字符 ...

  8. 3、用js文件写mongo命令+update命令

    一.用js写一个模拟用户登录日志表的信息 var userName = "chengxiang"; //声明一个登录名 var timeStamp = Date.parse(new ...

  9. python-多任务编程01-线程(threading)

    并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已) 并行:指的是任务数小于等于cp ...

  10. 利用 PGO 提升 .NET 程序性能

    引子 .NET 6 开始初步引入 PGO.PGO 即 Profile Guided Optimization,通过收集运行时信息来指导 JIT 如何优化代码,相比以前没有 PGO 时可以做更多以前难以 ...

随机推荐

  1. Servlet中/和/*的区别详解

    Servlet中/和/*的区别详解 问题 在搭建springmvc项目时,DispatcherServlet配置为/*时welcome-file-list失效了报404异常, 配置为/时可以正常访问, ...

  2. css之伪元素选择器

    注:本博客内容来自尚硅谷禹神的前端入门课程 什么是伪元素? 很像元素,但不是元素(element),是元素中的一些特殊位置. 伪元素语法中的::可以用:,因为css2中没有明确区分伪类和伪元素,但是s ...

  3. openstack neutron 报错

    openstack neutron /etc/neutron下面没有dhcp文件 查错发现安装时候打错

  4. 【技巧】JS代码这么写,前端小姐姐都会爱上你

    前言 缘由 JS代码小技巧,教你如何守株待妹 你想听的故事: 顶着『前端小王子』的称号,却无法施展自己的才能. 想当年本狗赤手空拳打入前端阵地,就是想通过技术的制高点来带动前端妹子.奈何时不待我,前端 ...

  5. 纯css+html+js模仿elementui组件

    文件下载链接地址https://files.cnblogs.com/files/ht955/UIcomponents.zip?t=1717405975&download=true

  6. kettle从入门到精通 第五十八课 ETL之kettle HTTP post使用教程

    1.今天群里有位朋友问我有没有关于调用http接口的kettle 示例,我下意识的去翻我的公众号推文,愣是没找到.果断开始撸. 2.本次演示流程通过调用接口[网易云音乐随机歌曲],然后解析返回的数据, ...

  7. Go版RuoYi

    RuoYi-Go  https://github.com/Kun-GitHub/RuoYi-Go 1. 关于我 个人介绍 2. 介绍 后端用Go写的RuoYi权限管理系统 (功能正在持续实现)后端 G ...

  8. java把时间戳转换成时间_(转)java时间与时间戳互转

    java中时间精确到毫秒级,所以需求时间需要 除以1000 //将时间转换为时间戳 public static String dateToStamp(String s) throws Exceptio ...

  9. Vulnhub Fall Walkthrough

    Recon 二层本地扫描,发现目标靶机. ┌──(kali㉿kali)-[~] └─$ sudo netdiscover -r 192.168.80.0/24 Currently scanning: ...

  10. C# SM2算法 加密,解密,签名,验签

    最近时间在整SM2算法,在网上看到不少代码,基本都是使用BouncyCastle库,现在这个版本算比较好的拿来分享给大家. 首先引入包 Portable.BouncyCastle 完整代码见Gitee ...