|关于内网中SSH协议的隧道利用方式


声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失 , 均由使用者本人负责 , 雷神众测以及文章作者不为此承担任何责任 。
雷神众测拥有对此文章的修改和解释权 。 如欲转载或传播此文章 , 必须保证此文章的完整性 , 包括版权声明等全部内容 。 未经雷神众测允许 , 不得任意修改或者增减此文章内容 , 不得以任何方式将其用于商业目的 。
No.1
简介
内网中大部分linux服务器与网络设备都支持ssh协议 , 而且大部分ssh协议是能够通过防火墙与边界设备 , 所以攻击者无法利用其他协议转发代理内网流量时 , 可以考虑尝试使用ssh协议 。 这里主要以常见的本地转发、远程转发、动态转发为案例
No.2 相关概念
本地转发
ssh进程的本地端口映射可以将本地的某个端口转发到远端指定机器的指定端口 , 将在本地监听一个端口 , 所有的访问端口数据都会通过SSH隧道传输到远端对应端口
远程转发
在远程主机上监听一个端口 , 所有远程主机指定的数据都会通过ssh隧道传输到本地主机的对应端口
可以发现本地转发与远程转发有些类似 , 除了端口转发时的不同 , 实际的应用场景也各不相同
本地转发--攻击机可访问内网边界 , 内网边界可访问内网服务 , 但攻击机无法直接访问内网服务 , 攻击者以本地端口以内网边界的身份访问内网服务
远程转发--攻击机无法访问内网边界及服务 , 但内网边界可访问攻击机 , 攻击机访问内网服务时就会通过攻击机与内网边界建立的ssh隧道以内网边界的名义进行访问
动态转发
本地和远程端口转发都限定了目标服务器以及目标服务器的端口 , 而动态端口转发 , 攻击机把内网边界作为自己的代理 , 不限定目标服务器及其端口 。 攻击机和内网边界之间的所有连接都是基于加密的ssh
常见ssh命令如下
ssh root@192.168.3.131
参数说明:
-C:压缩传输 , 提高传输速度
-f:将ssh传输转入后台执行 , 不占用当前的Shell
【|关于内网中SSH协议的隧道利用方式】-N:建立静默连接(建立了连接 , 但是看不到具体会话)
-g:允许远程主机连接本地用于转发的端口
-L:本地端口转发
-R:远程端口转发
-D:动态转发(socks代理)
-P:指定ssh端口
No.3 本地转发
攻击机:192.168.3.131
内网边界:192.168.3.134 10.10.10.130
内网web:10.10.10.128
攻击机:
|关于内网中SSH协议的隧道利用方式
本文插图

目标边界 , 能够访问内网web:
|关于内网中SSH协议的隧道利用方式
本文插图

内网web , 这里以phymyadmin为演示:
|关于内网中SSH协议的隧道利用方式
本文插图

假设我们需要从外网攻击机获取内网资源 , 如连接3389端口
以内网边界为跳板 , 将内网web的3389端口 , 转发到攻击机的13389端口 , 然后访问攻击机的13389端口
攻击机如下执行:
ssh -CfNg -L 13389:10.10.10.128:3389 root@192.168.3.134
13389(攻击机端口) 10.10.10.128(目标主机)3389(目标端口) 192.168.3.134(边界跳板)
|关于内网中SSH协议的隧道利用方式
本文插图

查看13389端口是否连接:
|关于内网中SSH协议的隧道利用方式
本文插图

访问攻击机的13389端口即可接入内网web服务器的3389端口:


推荐阅读