Tunneling and Port Forwarding

从零开始学习AWS黑客技术 htARTE(HackTricks AWS红队专家)

Try Hard Security Group


Nmap提示

Bash

主机 -> 跳板 -> 内部A -> 内部B

SSH

SSH图形连接(X)

本地端口到端口

在SSH服务器中打开新端口 --> 其他端口

端口到端口

本地端口 --> 受损主机(SSH) --> 第三台主机:端口

Port2hostnet (proxychains)

本地端口 --> 受损主机(SSH) --> 任何地方

反向端口转发

这对通过 DMZ 从内部主机获取反向 shell 非常有用:

VPN隧道

您需要在两台设备上都有root权限(因为您将要创建新的接口),并且sshd配置必须允许root登录: PermitRootLogin yes PermitTunnel yes

在服务器端启用转发。

在客户端上设置新路由

SSHUTTLE

您可以通过ssh将所有流量通过主机隧道到一个子网络。 例如,转发所有流向 10.10.10.0/24 的流量

使用私钥连接

Meterpreter

端口到端口

本地端口 --> 受损主机(活动会话) --> 第三台主机:端口

SOCKS

SOCKS

另一种方法:

Cobalt Strike

SOCKS代理

在团队服务器中打开一个端口,监听所有可以用来通过beacon路由流量的接口。

rPort2Port

rPort2Port 本地

reGeorg

https://github.com/sensepost/reGeorg

您需要上传一个Web文件隧道:ashx|aspx|js|jsp|php|php|jsp

Chisel

您可以从https://github.com/jpillora/chisel的发布页面下载 您需要为客户端和服务器使用相同的版本

socks

端口转发

Rpivot

https://github.com/klsecservices/rpivot

反向隧道。隧道从受害者端启动。 在 127.0.0.1:1080 上创建一个 socks4 代理。

通过NTLM代理进行中继

Socat

https://github.com/andrew-d/static-binaries

绑定 shell

反向 shell

端口到端口

通过socks进行端口到端口的转发

通过 SSL Socat 进行 Meterpreter

您可以绕过未经身份验证的代理,在受害者控制台中执行以下代码而不是最后一行代码:

https://funoverip.net/2011/01/reverse-ssl-backdoor-with-socat-and-metasploit/

SSL Socat Tunnel

/bin/sh 控制台

在客户端和服务器端创建证书

远程端口到端口

将本地SSH端口(22)连接到攻击者主机的443端口

Plink.exe

这就像是一个控制台版本的 PuTTY(选项与 ssh 客户端非常相似)。

由于这个二进制文件将在受害者中执行,并且它是一个 ssh 客户端,我们需要打开我们的 ssh 服务和端口,以便我们可以建立一个反向连接。然后,只需将本地可访问端口转发到我们机器上的一个端口:

Windows netsh

端口到端口

您需要是本地管理员(对于任何端口)

SocksOverRDP & Proxifier

您需要通过系统获得RDP访问权限。 下载:

  1. SocksOverRDP x64 二进制文件 - 该工具使用Windows远程桌面服务功能中的Dynamic Virtual Channels (DVC)。DVC负责在RDP连接上隧道传输数据包

在您的客户端计算机上加载**SocksOverRDP-Plugin.dll**,如下所示:

现在我们可以使用mstsc.exe连接到受害者的RDP,并且我们应该收到一个提示,表示SocksOverRDP插件已启用,并且它将在127.0.0.1:1080上监听。

通过RDP连接并在受害者机器上上传并执行SocksOverRDP-Server.exe二进制文件:

现在,在您的机器(攻击者)上确认端口1080正在监听:

现在,您可以使用Proxifier 通过该端口代理流量。

通过Proxifier代理Windows GUI应用程序

您可以使用Proxifier 让Windows GUI应用程序通过代理进行导航。 在Profile -> Proxy Servers中添加SOCKS服务器的IP和端口。 在Profile -> Proxification Rules中添加要代理的程序名称以及要代理的IP连接。

NTLM代理绕过

前面提到的工具:Rpivot OpenVPN也可以绕过它,设置配置文件中的这些选项:

Cntlm

http://cntlm.sourceforge.net/

它对代理进行身份验证,并在本地绑定一个端口,该端口被转发到您指定的外部服务。然后,您可以通过此端口使用您选择的工具。 例如,将端口443转发。

现在,如果您在受害者中设置SSH服务监听端口443。您可以通过攻击者端口2222连接到它。 您还可以使用连接到localhost:443的meterpreter,而攻击者正在监听端口2222。

YARP

由Microsoft创建的反向代理。您可以在这里找到它:https://github.com/microsoft/reverse-proxy

DNS隧道

Iodine

https://code.kryo.se/iodine/

在两个系统中都需要root权限来创建tun适配器,并使用DNS查询在它们之间传输数据。

隧道速度会很慢。您可以通过以下方式在此隧道上创建一个压缩的SSH连接:

DNSCat2

从这里下载

通过 DNS 建立 C&C 通道。不需要 root 权限。

在 PowerShell 中

您可以使用 dnscat2-powershell 在 PowerShell 中运行 dnscat2 客户端:

使用dnscat进行端口转发

更改 proxychains DNS

Proxychains 拦截 gethostbyname libc 调用,并通过 socks 代理隧道传输 tcp DNS 请求。默认情况下,proxychains 使用的 DNS 服务器是 4.2.2.2(硬编码)。要更改它,请编辑文件:/usr/lib/proxychains3/proxyresolv 并更改 IP。如果您在 Windows 环境中,可以设置域控制器的 IP。

Go 中的隧道

https://github.com/hotnops/gtunnel

ICMP 隧道

Hans

https://github.com/friedrich/hans https://github.com/albertzak/hanstunnel

在两个系统中都需要 root 权限来创建 tun 适配器,并使用 ICMP 回显请求在它们之间传输数据。

ptunnel-ng

从这里下载

ngrok

ngrok是一个工具,可以通过一条命令将解决方案暴露到互联网上。 暴露的URI类似于: UID.ngrok.io

安装

  • 创建一个账户:https://ngrok.com/signup

  • 客户端下载:

基本用法

文档: https://ngrok.com/docs/getting-started/.

如果需要,还可以添加身份验证和TLS。

TCP隧道

通过HTTP公开文件

拦截HTTP调用

用于XSS、SSRF、SSTI ... 直接从stdout或在HTTP接口http://127.0.0.1:4040中。

隧道化内部HTTP服务

ngrok.yaml简单配置示例

它打开了3个隧道:

  • 2个TCP

  • 1个HTTP,从/tmp/httpbin/暴露静态文件

其他检查工具

尝试困难安全组


从零开始学习AWS黑客技术,成为专家 htARTE (HackTricks AWS Red Team Expert)!

最后更新于