此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!
在本文中,我们将了解端口转发和隧道的概念和技术。本文是这两个概念的绝对速查表。
端口转发在网络中发送数据包时会从一个地址和端口号传输通信请求。隧道是把双刃剑,已被证明有益,但是恶意用途也会给企业造成损失。有益是因为它允许组织在公共网络的帮助下创建虚拟专用网络,并为两端的用户提供巨大的成本效益。
目录
Apache 虚拟主机
实验室配置
端口转发
使用 Metasploit 进行端口转发
SSH 本地端口转发(SSH 隧道)
使用 Socat 进行端口转发
隧道施工
使用 Sshuttle 进行隧道开挖
使用凿子开凿隧道
使用 Socks5 代理的 Chisel
Rpivot 使用 Socks4 代理
动态 SSH 隧道
本地 SSH 隧道
使用 plink.exe 进行本地 SSH 隧道
使用 plink.exe 进行动态 SSH 隧道
使用 Revsocks 进行隧道施工
Metasploit(socks5 和 socks4a)
使用 DNScat2 建立隧道
ICMP 隧道
结论
Apache 虚拟主机
虚拟网络托管是您可能在各种夺旗挑战中遇到过的一个概念,最近它也被企业环境中的专业人士用来在较少的 IP 地址下托管他们的常见服务。
虚拟网络托管可以定义为在单个主机上运行多个网络服务器的方法。通过这种方法,一台计算机可以托管数千个网站。Apache 网络服务器已成为最流行的网络服务方法之一,因为它们非常普遍且灵活。
Apache 可以将自身定制为虚拟主机,允许托管单个网站。这实际上允许网络管理员使用单个服务器来托管多个网站或域。此功能非常顺畅,直到服务器可以承受托管的多个服务器的负载。
实验室配置
实验室要求包括:
-
VMware 工作站
-
Ubuntu
-
kail Linux
让我们从配置 Apache2 服务开始。为此,您需要在 Linux 系统中安装 Apache。您可以使用以下命令安装它
apt install apache2
然后我们需要为我们要托管的网站创建一个目录。
mkdir /sbin/test
然后转到/etc/apache2目录并编辑文件ports.conf,在‘Listen 80’之前添加‘ Listen 127.0.0.1:8080 ’,如下图所示。
cd /etc/apache2
nano ports.conf
cat ports.conf
现在让我们创建test.conf文件并在/etc/apache2/sites-available/中添加以下代码
nano /etc/apache2/sites-available/test.conf
现在让我们使用工具a2ensite来启用我们的网站,然后重新启动我们的 apache2。
<VirtualHost 127.0.0.1:8080>
DocumentRoot /sbin/test/
ServerName localhost
AllowEncodedSlashes NoDecode
<Directory "/sbin/test/">
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
</VirtualHost>
a2ensite test.conf
systemctl restart apache2
因此,我们在这里通过创建虚拟主机来完成实验室的设置。
端口转发
端口转发是在远程用户和本地计算机之间建立安全连接。在组织中,用户可以提供源端口号和目标端口号,以便在 Linux 的帮助下使用隧道。除此之外,他们还应该提到目的地,可以是 IP 地址或主机名称。
让我们打开 Kali Linux 机器并检查网页是否正在托管。但这里显示它不可用。因此,让我们看看如何将本地地址和端口转发到远程主机。这可以使用各种方法实现,所以让我们一一看看。
使用 Metasploit 进行端口转发
现在我们使用 Metasploit 进行 SSH 会话。在这里我们得到 meterpreter 会话,然后使用netstat命令,我们观察到端口 8080 正在本地主机上运行。
use auxiliary/scanner/ssh/ssh_login
set rhosts 192.168.1.108
set username raj
set password 123
exploit
sessions -u 1
sessions 2
netstat -antp
这里我们使用portfwd将所有流量转发到 Kali 机器,其中提到本地和远程端口以及本地地址。
portfwd add -l 8081 -p 8080 -r 127.0.0.1
当我们在Kali机器上使用127.0.0.1:8081在网页浏览器上加载该页面时,我们会看到网页内容被显示出来。
SSH 本地端口转发
它是 SSH 中用于将应用程序的端口从客户端计算机转发到服务器计算机的方法。通过利用此方法,SSH 客户端会监听已配置端口上的连接,并在收到连接时通过隧道连接到 SSH 服务器。这就是服务器连接到已配置且存在于 SSH 服务器以外的计算机上的目标端口的方式。
这将打开与 IP 为 192.168.1.108 的机器的连接,并将本地机器上端口 8080 的任何连接转发到端口 8081。
ssh -L 8081:localhost:8080 -N -f -l raj 192.168.1.108
这里我们可以看到,当我们在 Kali 机器上使用 127.0.0.1:8081 在 Web 浏览器上加载此页面时,就会显示网页内容。
使用 Socat 进行端口转发
Socat 通常是 Linux 中的一个命令行实用程序,用于在两个主机之间传输数据。在这里我们使用它进行端口转发,所有到 127.0.0.1:8080 的 TCP 连接都将重定向到端口 1234。
socat TCP-LISTEN:1234,fork,reuseaddr tcp:127.0.0.1:8080 &
当我们在Kali机器上使用192.168.1.108:1234在网页浏览器上加载该页面时,看到网页内容显示出来。
隧道施工
隧道是使用公共网络远程访问资源的过程。建立的隧道是点对点的,远程用户可以在隧道的另一端进行链接。隧道协议的工作是封装来自远程用户的流量,并将其发送到公共网络的另一端,然后解封装并发送给其目标用户。默认情况下,隧道不加密,其安全级别由所选的 TCP/IP 协议确定。
让我们看看如何使用各种方法和工具进行隧道施工。
实验室要求
-
Kali Linux,IP 地址为192.168.1.2
-
Ubuntu 有 2 个 NIC,包含两个 IP 地址 - 192.68.1.108、192.168.226.128
-
Metasploitable 2 的 IP 地址为192.168.226.129
穿梭巴士
Sshuttle 有助于在 SSH 的帮助下从本地计算机生成到远程 Kali Linux 的 VPN 连接。为了正常运行,必须在本地计算机上拥有 root 访问权限,但远程 Kali Linux 可以拥有任何类型的帐户。Sshuttle 可以在特定客户端计算机上同时运行多次。
让我们看看如何使用 Sshuttle 来访问具有不同子网的 Metasploitable 2 机器,该机器使用 Ubuntu 机器,该机器有两个具有不同子网的互联网地址,但也有 Kali Linux 所在的子网。
现在让我们检查一下 Kali Linux 机器的 IP 地址
检查 Ubuntu 机器的 IP 地址,我们发现它有两个具有不同子网的 IP 地址。
让我们在 Kali Linux 机器中安装工具Sshuttle 。
apt install sshuttle
使用 Sshuttle 与 Ubuntu ([email protected]) 以及 Metasploitable 2(192.168.226.129) 的地址建立远程连接。输入 Ubuntu 的密码,即可连接。
sshuttle -r raj@192.168.1.108 192.168.226.129
随后,当您在 Kali Linux 的浏览器中输入 Metasploitable 2 IP 地址时,您将能够通过端口 80 访问 Metasploitable 2。
因此,我们在这里看到,使用 Sshuttle,我们首先将 Kali Linux 与 Ubuntu 连接起来。一旦与 Ubuntu 建立连接,使用它,就可以在 Kali Linux 和 Metasploitable 2 之间建立连接。
凿
它是一个 TCP/UDP 隧道,有助于传输并使用 SSH 进行保护。它包括客户端和 Kali Linux。它通常用于穿越防火墙,但也可用于为网络提供安全连接。让我们看看它是如何工作的。
首先,让我们在 Kali Linux 机器上安装 Chisel 和 golang。
注意:Golang 是编写 Chisel 的编程语言,因此为了正常运行我们还安装了 golang。
git clone https://github.com/jpillora/chisel.git
apt install golang
现在,我们有了 chisel 源代码的副本,现在可以继续为 Linux 构建二进制文件,因此使用 go build 编译 chisel 的包来开始。
go build -ldflags="-s -w"
./chisel server -p 8000 --reverse
在 Ubuntu 上安装 Chisel
现在让我们在 Ubuntu 上安装 chisel 和 golang,并编译所有软件包。
git clone https://github.com/jpillora/chisel.git
apt install golang
cd chisel/
go build -ldflags="-s -w"
完成后,让我们在 Ubuntu 上运行 chisel 来连接 Kali Linux 和 Metasploitable 2。
./chisel client 192.168.1.2:8000 R:5000:192.168.226.129:80
在 Kali Linux 机器上打开 Web 浏览器,检查在本地地址和端口 5000 上创建的 Kali Linux 与 Metasploitable 2 之间的连接。
Chisel 使用 Socks5 代理
我们可以按照上面凿子中所示的 Ubuntu 和 Kali Linux 中的初始设置步骤继续进行。
在 Kali Linux 上监听 8000 端口,并允许客户端指定反向端口转发。这里反向隧道已激活。
./chisel server -p 8000 --reverse
在 ubuntu 机器中,下一步是使用新的反向 socks 选项连接到我们的客户端。
./chisel client 192.168.1.2:8000 R:socks
现在我们将 Ubuntu 连接到 Metasploitable 2。
./chisel client 192.168.1.2:8000 R:8001:192.168.226.129:9001
在这里,我们将 Socks5 客户端(Metasploitable 2)指向使用 Ubuntu 的 Kali Linux。
./chisel server -p 9001 --socks5
现在让我们在 Kali Linux 中打开 Web 浏览器并配置代理设置。这里我们手动配置代理,因此,将 SOCKS 主机地址输入为本地地址,即 127.0.0.1,并在端口 1080 上选择socks5 代理。此外,在“无代理”框中输入本地地址。
当您在 Kali Linux 机器中打开 Web 浏览器并添加 Metasploitable 2 IP 时,您会看到 Kali Linux 已连接到 Metasploitable 2。
Rpivot 使用 Socks4 代理
RPIVOT 通常使用 socks 4 代理将流量通过隧道传输到内部网络。其工作原理类似于 SSH 动态端口转发,但方向相反。它还具有客户端-服务器架构。当在计算机上运行客户端时,它将通过隧道传输流量,为此应启用 Kali Linux,以便它可以监听来自客户端的连接。
让我们在 Kali Linux 机器上安装 Rpivot。然后转到其目录并启动端口 9999 上的侦听器,该侦听器在与客户端连接时在端口 127.0.0.1 上创建 socks 版本 4 代理
git clone https://github.com/klsecservices/rpivot.git
python server.py --server-port 9999 --server-ip 192.168.1.2 --proxy-ip 127.0.0.1 --proxy-port 1080
现在在Ubuntu机器上安装 rpivot 并将其与 Kali Linux 连接
git clone https://github.com/klsecservices/rpivot.git
python client.py --server-ip 192.168.1.2 --server-port 9999
现在转到 Kali Linux 机器上的 Web 浏览器,并手动配置代理。将 Socks 主机地址设置为本地地址,将端口设置为 1080。选择Socks 版本 4 ,并在“无代理”中输入本地地址。
现在,当您在 Kali Linux 机器上打开 Web 浏览器时,您将能够看到 Metasploitable 2 的 IP 地址和连接。
欢迎关注“三沐数安”,请分享给更多的网安爱好者,大家一起研究网络安全技术。三沐专注于数据安全建设和网络安全建设,解决您身边的网络安全问题,成为您的安全好帮手
原文始发于微信公众号(三沐数安):端口转发和隧道备忘单(上)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论