网络安全技术之内网安全-04-SMB隧道

一、SMB隧道简介

SMB(Server Message Block)协议是一种在计算机网络中共享文件、打印机和其他资源的通信协议。它最初由微软开发,用于在局域网中的计算机之间共享文件和资源,445端口运行

  1. 打印机共享:SMB协议支持打印机的共享,允许用户在网络中使用共享打印机进行打印操作。通过SMB协议,用户可以连接到其他计算机上的共享打印机,并发送打印任务进行打印。

  2. 文件共享:SMB协议允许计算机之间共享文件和目录。通过SMB协议,用户可以在网络中访问其他计算机上的共享文件夹,并进行文件的读取、写入和管理操作。

进行网络扫描看看有没445端口开放,开发了445,那么就可以进行基于smb搭建隧道

二、基于SMB实现主机上线

2.1 架构环境

2.1 实现主机1上线

主机1和控制节点之间没有防火墙,所以用正向和反向链接,都可以实现主机上线

本例用 反向 链接实现主机1上线

1)创建监听器

2)生成后门程序

主机1 成功上线

2.1 实现主机2上线

主机1主机2 之间没有防火墙,所以可以直接上线

此例中,用 正向 链接实现 主机2 上线

1)建一个监听器,类型是bind的

2)生成这个后门

然后将这个后门放到 主机2 上,再然后,用 主机1 去链接 主机2 的2222端口,就可以实现 主机2 的上线

3)基于主机1的会话,链接主机2

2.1 实现主机3上线

在架构中,2008前面是有防火墙的,但是这里 先把防火墙关了,先让2008上线

1)先创建监听器

2)生成后门

3)在主机3上传后门,并上线

在主机2的会话中,执行 connect 20.20.20.2,链接会话


接下来实现有防火墙的情况

添加防火墙规则

在添加了规则以后,主机3就下线了

这是因为从外部,可以访问80端口,但是其他的端口都是无法访问的。

此时如果后门监听的是3333端口,是无法从 主机2 向当前主机的3333端口发送请求过来的,都被防火墙拦截了,所以无法上线了

现在的解决思路就是用反向链接

因为 主机3 是没有外网的,所以是无法和控制器通信的。此时的 主机3 只能返回给 主机2

具体的实现原理是

主机2 上,设置一个监听器,监听发送过来的数据

然后再生成一个木马,这个木马用 主机2 上生成的监听器

具体实现

1)首先在 主机2 会话上,配置一个转发上线

 这个ip别写错了,这里写的ip是 主机2 上可以和 主机3 通信的那个ip:20.20.20.1

2)此时就多了一个监听器,而且是反向的

 2)用这个监听器来生成一个木马 ​​​

 用这个木马可以实现主机成功上线

2.1 实现主机4上线

再次分析架构环境

1)此时,在 主机4 前面有防火墙,限制了入站数据,所以 主机4 这个想上线,就需要用反向模式。

2)需要注意,主机4 反向的话,也就是数据需要向外发,发送到 主机3,可这个过来的数据,对于 主机3 来说,就是进站了,因此,此时用反向的方式,来实现让 主机4 上线,也无法实现。

这种情况下,就要考虑用隧道了,因为此时主机4允许访问打印机,所以就考虑用smb隧道,而且正向链接的方式,来实现主机4的上线

1)先创建一个smb监听器

 监听器,其实就是一个管道,没有IP,也没有端口, 因此,是不需要创建后门的。创建了也没用

 下面扫描30网段中,开了445端口的主机

 正常情况下,会看到30.30.30.2主机上线,也就是那个 主机4

  • 前面说了,主机3 上有防火,所以不能用反向的方式让 主机4 上线

  • 那么我们现在的做法就是用正向的方式,在 主机3 上,用正向的方式,主动链接 主机4。此时正向链接是基于smb协议隧道实现的。

注意:在测试环境中,由于网络、内存不足等影响,或者虚拟机是克隆出来等的各种原因的影响,会导致无法扫描扫30.30.30.2,此时可以手动添加主机30.30.30.2

我个人测试发现,克隆主机的主机名冲突会导致主机4无法上线。

 

还要注意一个问题:手动添加的主机,最好进行一次扫描,这样才能让手动添加的主机被识别到

 

 ​​​​​​

下面对找到的那个主机进行横向移动  

选择一个用户、会话、监听器  

 

最终完成主机4上线

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Docker Compose 中部署 SMB 络卷可以使用 `volumes` 属性和 `smb` 驱动。下面是部署 SMB 络卷的示例: ``` version: "3" services: app: image: myapp volumes: - myvol:/app/data volumes: myvol: driver: local driver_opts: type: smb o: username=myuser,password=mypassword device: //192.168.1.100/share ``` 在上面的示例中,我们定义了一个名为 `myvol` 的卷,并将其挂载到了应用程序的 `/app/data` 目录下。`myvol` 卷的类型为 `smb`,并指定了 SMB 服务器的地址和共享目录。我们还指定了 SMB 用户名和密码,以便在访问共享目录时进行身份验证。 需要注意的是,使用 SMB 卷需要先在宿主机上安装相应的 SMB 客户端程序和驱动程序。例如,在 Linux 系统上,需要安装 `cifs-utils` 包来支持 SMB 卷。在 Windows 系统上,可以通过添加络驱动器的方式来访问 SMB 共享目录。 另外,需要指定 SMB 用户名和密码来进行身份验证。如果不希望在 Compose 文件中明文指定密码,可以考虑使用环境变量或密钥文件等方式来存储密码。例如,可以在 Compose 文件中使用以下方式指定 SMB 密钥文件: ``` version: "3" services: app: image: myapp volumes: - myvol:/app/data environment: - SMB_PASSWORD_FILE=/run/secrets/smb_password secrets: - smb_password volumes: myvol: driver: local driver_opts: type: smb o: username=myuser,password_file=/run/secrets/smb_password device: //192.168.1.100/share secrets: smb_password: file: ./smb_password.txt ``` 在上面的示例中,我们使用 `secrets` 属性来指定 SMB 密钥文件。密钥文件的内容存储在 `smb_password.txt` 文件中,可以使用 `docker secret create` 命令来创建密钥文件。在 Compose 文件中,我们将密钥文件挂载到了 `/run/secrets/smb_password` 目录下,并在 `environment` 和 `driver_opts` 属性中使用了 `SMB_PASSWORD_FILE` 和 `password_file` 来指定密码文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值