SSH端口转发

前言

之前看到一篇文章已经记了一笔,可以通过SSH的端口实现CS派生msf的shell,然后再linux环境下可以使用ssh来进行内网的穿透和代理功能,然后最近在公众号又看到一篇,于是摘抄总结下作为自己的理解笔记

SSH介绍

ssh能够提供客户端到服务端的加密传输,当http、ftp等协议被防火墙所拦截时,可以考虑使用SSH的端口转发功能,将其它TCP端口的网络数据通过SSH连接来转发。

-C 压缩传输,增加传输的效率,
-f 将SSH传输放在后台执行,不占用当前的SHELL
-N 建立静默连接,就是建立了连接,但是看不到具体的会话;还有一种说法是不允许执行命令
-g 允许远程主机连接本地用于转发端口
-L 本地端口转发
-R 远程端口转发
-D 动态转发
-P 指定SSH客户端连接的服务器端口
-q 表示安静模式,不向用户输出任何警告信息
-t 参数在SSH直接运行远端命令时,提供一个互动式 Shell。
远程端口转发前提:

1.sshd_config里要打开AllowTcpForwarding选项,否则-R远程端口转发会失败。
2.默认转发到远程主机上的端口绑定的是127.0.0.1,如要绑定0.0.0.0需要打开sshd_config里的GatewayPorts选项

本地转发

将发送到本地端口的请求,转发到目标端口,常用做跳板机实现单个端口通信转发
攻击者kali 跳板机kali 内网centos
情况:centos不允许攻击者Kali访问,允许跳板机Kali访问

目标:从攻击者访问到内网192.168.254.150的服务
再攻击机kali上执行如下命令
ssh -N -L 54321:192.168.254.150:22 root@192.168.0.137
通过跳板机192.168.0.137将本地主机54321端口数据转发到192.168.254.150的22端口
此时攻击者kali主机可以通过ssh连接本地54321端口,连接到centos主机的ssh服务
数据流向:kali1与kali2通过ssh加密传输数据,kali2接受到加密传输的数据后解密,将解密后的数据流量转发到内网centos的22端口上,也就是ssh服务

远程转发

CS派生msf

将发送到远程端口的请求,转发到目标端口,常用于内网穿透
首先虚拟机Msf上通过ssh连接远程vps并且通过端口转发,将VPS的某个端口转发到本地。至此,VPS的某个端口收到流量就回自动通过隧道转发到本地的某个端口上

ssh -C -f -N -g -R 0.0.0.0:85:127.0.0.1:1234 root@IP -p 22
passwd xxxx


这条语句的意思就是里用ssh远程端口转发,将vps上的85端口转发到本地的1234端口上。其实就是类似frp的反向代理,正常的Frp代理是通过将内网端口和外网端口建立一个隧道,这时访问外网端口相当于直接访问到内网某个端口,这里就是通过监听端口设置在85,受控主机与vps 85端口进行数据传输,于是通过ssh远程端口转发,将vps 85端口获取的数据转发到本地主机的1234端口。其实就可以看作是将本地1234端口映射到vps的85端口
然后CS通过原先的shell增加一个会话,然后设置为foreign shell,host设置VPS IP,端口设置VPS转发端口

端口转发

攻击者kali 跳板机kali 内网centos

目标:从攻击者访问到内网192.168.254.150的服务
在跳板机上执行如下命令
ssh -N -R 192.168.0.3:12345:192.168.254.150:80 root@192.168.0.3
此时攻击机kali通过访问本地12345端口就相当于访问192.168.254.150的80端口
数据流向:跳板机Kali主动通过SSH连接攻击机Kali,跳板机和攻击机中间应该还有一个小的端口转发的过程,当攻击机Kali访问本机12345端口的时候,跳板机接受到流量然后解密后再将解密后的流量发送给内网主机Centos

本地转发和远程转发的区别

通过上述可以看到,可以通过本地转发和远程转发都可以实现攻击机访问自身端口然后将数据导向内网主机Centos
两者主要的区别在于跳板机和攻击机之前,本地转发是一个正向代理连接的过程,远程转发更像是反向连接的过程

动态转发

就是正向的socks代理

在攻击机Kali执行如下命令
ssh -qTfnN -D 1080 root@192.168.0.137
这是我们就已经通过192.168.0.137这台主机代理进内网了,在本地通过proxychains代理本地1080端口即可利用正向socks进入该内网网段中
数据流向:攻击机Kali与跳板机Kali通过SSH加密传输socks协议流量,然后跳板机服务端解密并且解析socks协议获得解密流量,然后跳板机将数据流量转发到本机指定的Ip和Port
这样就相当于全端口式的本地转发,通过跳板机将流量定向到自己指定的Ip和Port处

参考摘抄自:巧用SSH转发功能深入穿透内网

posted @ 2021-02-18 22:46  yunying  阅读(582)  评论(0编辑  收藏  举报