0x00 前言
SSH协议
在内网中,几乎所有的Linux/UNIX服务器和网络设备都支持SSH协议。在一般情况下, SSH协议是被允许通过防火墙和边界设备的,所以经常被攻击者利用。同时,SSH协议的传输过程是加密的,所以我们很难区分合法的SSH会话和攻击者利用其他网络建立的隧道。攻击者使
用SSH端口隧道突破防火墙的限制后
,能够建立-些之前无法建 立的TCP连接。
一个 普通的SSH命令如下。
ssh root@192.168.1.1
创建SSH隧道的常用参数说明如下。
-C:压缩传输,提高传输速度。
-f:将SSH传输转人后台执行,不占用当前的Shell。
-N:建立静默连接(建立了连接,但是看不到具体会话)。
-g:允许远程主机连接本地用于转发的端口。
-L:本地端口转发。
-R:远程端口转发
-D:动态转发(socks代理)
-P:指定SSH端口
0x01 本地转发
如下图所示,测试环境为:左侧为攻击者VPS ( Kali Linux192.168.200.23);右侧是-一个小型内网,包含三台服务器;外部VPS可以访问内网Web服务器,但不能访问WIN7,内网Web服务器和WIN7可以互相访问。测试目标为:以Web服务器为跳板,访问WIN7的3389端口。
配置说明
192.168.200.10(仅主机)
192.168.200.23 (仅主机)
192.168.100.34(NAT)、192.168.200.34(仅主机)
192.168.100.7(NAT)
以Web服务器192.168.200.34为跳板,将内网win7的3389端口映射到VPS机器192.168.200.23的2333端口,再访问VPS的2333端口,就可以访问192.168.100.7的3389端口了。在VPS上执行如下命令,会要求输人Web服务器(跳板机)的密码,如图3-70所示。ssh -CfNg -L 2333(VPS 端口):192.168.100.7(目标主机) :3389(目标端口)
ssh -CfNg -L 2333:192.168.100.7:3389 root@192.168.200.34
-C:压缩传输,提高传输速度。
-f:将SSH传输转人后台执行,不占用当前的Shell。
-N:建立静默连接(建立了连接,但是看不到具体会话)。
-g:允许远程主机连接本地用于转发的端口。
-L:本地端口转发。
-R:远程端口转发
-D:动态转发(socks代理)
-P:指定SSH端口
执行如下命令,查君本地2333端口是否已经连接。可以看到,在进行本地映射时,本地的SSH进程会监听2333端口,如图下图所示。
netstat -tulup | grep 2333
执行如下命令,在本地系统中访问VPS的2333端口。可以发现,已经与win7(192.168.100.7)的3389端口建立连接
rdesktop 127.0.0.1:2333
SSH进程的本地端口映射可以将本地(客户机)的某个端口转发到远端指定机器的指定端口;本地端口转发则是在本地(客户机)监听一个端口,所有访问这个端口的数据都会通过SSH隧道传输到远端的对应端口。
0x02 远程转发
。。。。正在研究
192.168.200.20不能访问192.168.100.34
但是192.168.100.34可以访问192.168.200.20
有懂网络的小伙伴可以给我说说QWQ
0x03动态转发
配置说明
192.168.200.10(仅主机)
192.168.200.23 (仅主机)
192.168.100.34(NAT)、192.168.200.34(仅主机)
192.168.100.7(NAT)
在linux(192.168.200.23)上执行以下命令,然后输入192.168.200.34的密码
ssh -CfNg -D 9999 root@192.168.200.34
再查看一下9999端口是否在运行
netstat -tulup | grep 9999
接下来在linux(192.168.200.23)上的浏览器打开,设置网络代理,通过浏览器访问内网win7(192.168.200.7)
选着“手动代理配置” > “SOCKS主机”127.0.0.1, > “端口”9999
通过网络代理访问win7(192.168.100.7)
动态端口映射就是建立一个SSH加密的SOCKS4/5代理通道,
任何支持SOCK4/5协议的程序都可以使用这个加密通道进行代理访问。
总结一下
在内网中,几乎所有的Linux/UNIX服务器和网络设备都支持SSH协议。在一般情况下, SSH协议是被允许通过防火墙和边界设备的,所以经常被攻击者利用。同时,SSH协议的传输过程是加密的,所以我们很难区分合法的SSH会话和攻击者利用其他网络建立的隧道。攻击者使