SSH:两台设备之间进行远程登录的协议(SSH本身就是一个隧道协议)
远程文件传输scp命令(scp是基于SSH的)
拓扑:
SSH隧道搭建的条件
1.获取到跳板机权限
2.跳板机中SSH服务启动
SSH端口转发分类:
静态端口转发:①本地端口转发 - 指的是将访问本地X端口的流量转发到其他主机
②远程端口转发 - 远程端口转发(Remote Port Forwarding)是通过SSH(Secure Shell)协议将远程服务器上的端口转发到本地主机的技术。
动态端口转发:动态端口转发可以把本地主机A上运行的SSH客户端转变成一个SOCKS代理服务器;动态转发就是不再进行转发端口的限制,而是去读取应用发起的请求;如(进行web访问,就将该流量转发到目标主机的80端口或443端口中;SSH访问就是将访问流量导向到目标主机的22号端口中)
不同类型转发的相关参数
-L: 本地端口转发
-R:远程端口转发
-D: 动态端口转发
ssh进行端口转发的通用参数
-C:压缩传输 (压缩-->文件的大小变小 ---->提升传输的速率)
-f:将SSH转入后台,不占用当前Shell
-N:静默连接
-g:允许远程主机连接本地进行端口转发
SSH隧道示意图
静态端口转发和动态端口转发都被封装到SSH隧道中,从外面看起来就像是使用SSH进行管理。
本地端口转发(在攻击主机上做)
步骤:
场景:在Kali中使用hydra工具对跳板机进行爆破获取跳板机的账号密码;需要注意的是:此时kali无法直接访问到目标主机,而跳板机可以直接访问到目标主机;这个时候就可以使用SSH进行端口转发;(爆破出跳板机账号密码后就可以在攻击主机kali中进行设置)
Kali 中输入:
ssh -CNfg -L 7788:10.10.10.134:3389 root@1.1.1.136
ssh -CNfg -L 本地的开放端口:目标主机IP:目标主机端口 跳板机用户名@跳板机IP
测试效果:
kali:攻击主机直接通过rdesktop命令访问本地的7777端口,即可连接到目标主机的3389端口
rdesktop 1.1.1.130:7777
其他端口也是同理;
远程端口转发(在跳板机上做)
ssh -CNfg 1.1.1.130:8888:10.10.10.134:3389 kali@1.1.1.130
ssh -CNfg 攻击主机IP地址:攻击主机的端口:目标主机的IP地址:目标主机的端口 攻击主机账户@攻击主机IP
将访问kali 8888端口的流量转发到目标主机的3389端口中
设置完成后可以发现kali主机上的8888端口开启
测试:
在kali中进行测试
需要注意:此时如果使用rdesktop 1.1.1.130(攻击主机):8888(流量转发端口)无法进行访问,因为该端口转发的方式为远程端口转发;
如果要访问正常则需要进行如下访问(这个小细节咱们不用去细究,只要记住在进行远程端口转发的时候我们在进行连接的时候要去连接本地回环网卡的相关端口即可)
rdesktop 127.0.0.1:8888
动态端口转发:
动态端口转发就是一个socks5代理,封装在ssh隧道中;比较方便:只要一条命令,和配置相关代理选项即可让相关程序流量走代理
相关指令:
ssh -CNfg -D 12345 root@1.1.1.136
ssh -CNfg -D 本地socks5端口 跳板机用户@跳板机密码
如果要使用rdesktop进行验证则需要配置对应的proxychains4代理配置文件
指定本地12345端口为socks5代理端口
测试:
proxychains4 rdesktop 10.10.10.134
proxychain4 rdesktop $目标主机IP地址