导语:一般的隧道是两个内网进行数据传输和交流的桥梁。隧道通常是将内网中的数据和协议信息封装然后在公共网络上进行传输,于是就可以通过隧道访问到内网里面的数据和协议信息。

SSH隧道:隧道的概念是将一种网络协议封装在了另外一个协议里面。这里我们是将这些通讯协议放到了ssh协议里面,所有的流量都是加密的。由于隧道协议传输涉及将流量数据重新打包为其他格式的内容,于是打包前进行加密可以有效的防止数据丢失或窃取,并且通信过程和传统隧道相比是非常隐蔽的。

SSH隧道的种类:

1. 动态SSH隧道
2. 本地SSH隧道
3. 远程SSH隧道

让我们开始今天的内容吧~
目的:建立远程PC和不同网络的本地系统之间的SSH连接。

我已经搭建好了实验环境,在以下网络中包含三个系统:

SSH 服务端(两个网卡):
IP 192.168.1.104 和远程系统连接
IP 192.168.10.1 和本地网络192.168.10.2进行连接。
SSH 客户端:
IP 192.168.10.2
远程系统(不在内网当中)

接下来的图片我会尝试解释远程PC试图连接到不在同一网络的机器(192.168.10.2)。为了和SSH客户端建立连接,远程PC会通过SSH隧道与SSH客户端进行通信,进而访问本地网络,和SSH客户端连接。
需要注意的是:SSH服务是必须得启动的。

0.jpg

下面的图片展示了SSH服务端的IP设置,他有两个网卡,一个IP是192.168.1.104,另外一个是192.168.10.1。

1.png

下图是展示了SSH客户端的IP设置:

2.png

通过windows进行动态SSH隧道建立

远程PC正在尝试通过22端口与SSH服务端进行连接,并且成功的登陆进去。这里我们使用putty建立SSH服务端(ubuntu)和远程PC(Windows)的通信。

3.png

远程计算机使用相同的方法和SSH客户机进行连接,结果失败,原因是他们处在不同的网络当中。

4.png

动态SSH隧道建立过程

在左边框选择SSH->Tunnel项目,然后在源端口上填写7000,类型选择动态连接,然后点击添加。

5.png

现在通过22端口连接192.168.1.104,填写完之后点击open:

6.png

就像你看到的那样,首先他会和SSH服务端进行连接:

7.png

现在继续在putty中登陆,这是填写的就是SSH客户机的IP,以及22端口,填写完成之后,点击open:

8.png

打开之前putty运行的窗口,在Proxy(代理模块)进行如下操作:

选择代理类型:SOCKS 5
代理主机:127.0.0.1
代理端口:7000
点击建立连接

9.png

这样我们就可以通过7000端口与SSH客户机进行连接:

10.png

在80端口通过kali linux进行动态SSH隧道建立

接下来我们会解释下kali linux用户如何通过SSH隧道与内网客户机进行连接的。

ssh -D 7000 [email protected]

输入完这条命令之后会提示你输入登录密码,如下图:

11.png

接下来就是设置网络代理了:

打开浏览器中的网络代理板块,选择手动设置代理,然后开启SOCKS v5。

12.png

于是我们通过浏览器就可以访问到了内网机器192.168.10.2的80端口。

13.png

在22端口上通过kali linux进行动态ssh隧道建立

用下面命令与SSH服务端进行连接:

14.png

通过apt安装tscoks:

apt install tsocks

tsocks是用于拦截传出网络的连接,并且将所有连接都进行socks服务重定向的库。

15.png

打开tsokcs.conf文件编辑socks服务器的IP以及端口,在我们这种情况下,我们需要添加下面两行代码,然后保存就可以了。

Server = 127.0.0.1
Server_port = 7000

16.png

现在我们通过代理就可以连接到SSH的客户机:

tscoks ssh [email protected]

输入密码就可以好好享受SSH隧道带来的乐趣了~

17.png

在windows下进行本地隧道建立

本地隧道是访问特定SSH客户机进行通信的过程。他可以允许你连接到没有在互联网上的机器。
远程隧道和本地隧道的唯一区别就是:动态隧道需要SOCKS代理进行传输TCP流量,本地隧道只需要目标的IP地址就可以进行传输。
本地SSH转发过程:
使用putty通过22端口连接到SSH服务器(192.168.1.104),在左侧菜单中选择SSH转发。

18.png

将源端口填写为7000,连接种类为本地
目的地址为102.168.10.2:22,点击添加
当所有步骤都进行完毕之后就可以点击OPEN

19.png

首先他会将远程PC和SSH服务端进行连接。

20.png

再重新打开一个putty界面,进行以下步骤:
主机名填写localhost,端口填写7000,连接类型:SSH

点击OPEN进行连接

21.png

我们成功的通过7000端口连接到了SSH客户机

22.png

通过Kali Linux进行本地SSH隧道建立

现在切换到Kali Linux来进行本地SSH转发,和动态转发相比,这一过程是非常简单的。在本地机器上执行以下命令:

ssh -L 7000:192.168.10.2:22 [email protected]

23.png

再重新打开一个终端,输入下方命令访问SSH客户端:

ssh [email protected] -p 7000

我们可以成功的通过7000端口连接到了SSH客户机。

24.png

通过Putty进行远程SSH隧道

远程隧道是用于当客户机想要访问不在本地网络的远程系统时起作用。
首先我们需要在SSH服务端(ignite)安装putty,然后进行以下步骤:
输入远程系统的IP 192.168.1.108
连接端口:22
访问SSH->转发模块

25.png

在源端口中填写7000,连接类型为远程连接
目的地址为192.168.10.2:22

当所有步骤进行完毕之后点击open进行连接:

26.png

现在我们已经连接到了远程系统:

27.png

继续回到远程系统,执行以下命令:

ssh [email protected] -p 7000

从下图中可以看出,我们已经通过7000端口与SSH客户机成功通信:

28.png

通过ubuntu进行远程SSH隧道

如果你不喜欢使用putty进行远程隧道,你可以执行下面命令:

ssh -R 7000:192.168.10.2:22 [email protected]

192.168.10.2是我们本地客户机(raj)的IP,102.168.1.108是远程系统的IP。

29.png

在远程系统中执行下面命令,就可以与SSH客户机进行连接:

ssh [email protected] -p 7000

如下图,就可以看到已经成功建立:

30.png

源链接

Hacking more

...