内网代理隧道转发的几种应用场景

  • A+
所属分类:安全文章

一、前言

熟练的代理转发,既可助你穿梭内网,亦可在工作生活中提供便利。理论上,任何接入互联网的计算机都是可访问的,但是如果目标主机处于内网,而我们又想和该目标主机进行通信的话,就需要借助一些端口转发工具来达到我们的目的。

二、端口转发

把端口接收到的流量转发到另外一个端口,可以是本机的端口,也可以是其它网络的端口。
实现原理:基于传输层协议,把 socket 字节流原封不动进行转发。
弊端:如果上层协议有校验,会出错。比如 HTTP协议中部分 WEB 服务会校验 host 头,导致 HTTP 连接中断。

2.1 简单端口转发

域 C 可访问域 B,不可访问域 A。172.16.1.1 把 172.16.2.1 的 SSH 服务 22 端口转发到自己的 8022 端口,192.168.1.2 可通过访问 172.16.1.1:8022 端口连接 172.16.2.1 的 SSH 服务。

内网代理隧道转发的几种应用场景

实现方法:

  • Windows:netsh int portproxy,如:netsh interface portproxy add v4tov4 listenport=8022 connectport=22 connectaddress=172.16.2.1

  • Linux:socat、iptables DNAT+SNAT,如:socat tcp-l:8022,reuseaddr,fork tcp:172.16.2.1:22,reuseaddr

  • lcx

  • ew

  • 其它

2.2 反弹端口转发

局域网 B 内 PC1 无法直接访问局域网 A 内机器,把局域网 A 服务器 172.16.2.1:22 端口转发到公网服务器 1.1.1.1:8022 端口,这样可以让 PC1 通过公网访问该机器。

内网代理隧道转发的几种应用场景

实现方法:

  • SSH 远程转发

  • ngrok

  • nps

  • shootback

三、socks 转发

socks 转发与端口转发类似,但是效果不同,端口转发效果只能访问单个端口的服务,socks 转发可以访问整个目标网络。与 VP*N 效果类似,但是不能转发传输层以下的包。

3.1 简单 socks 转发

内网代理隧道转发的几种应用场景

实现方法:

  • 小飞机

  • ew

  • nps

  • reGeorg(webshell)

  • 冰歇 (webshell)

    3.2 反弹 socks 转发

    socks 服务器位于内网,外部机器通过公网访问反弹的 socks 端口来访问内网。

内网代理隧道转发的几种应用场景

  • 实现方法:

  • 小飞机 + 反弹端口

  • ew

  • nps

  • 其它 socks 服务 + 反弹端口

四、SSH 代理隧道

4.1 使用 SSH 动态端口转发

需求

使用工作 PC 访问公司内网服务器,登陆内网网站、登陆内网服务器。

网络拓扑

工作 PC 可使用 SSH 连接 123.123.123.123:2222 登陆到内网服务器 A,其它内网端口未做映射

内网代理隧道转发的几种应用场景

操作步骤

工作机使用 Xshell 新建连接,并填好连接信息,然后打开隧道选项

内网代理隧道转发的几种应用场景

添加动态转发隧

内网代理隧道转发的几种应用场景

这时候工作机使用浏览器设置 127.0.0.1:9999 为 socks5 代理,即可访问 172.16.1.101:80

内网代理隧道转发的几种应用场景

如果要连接服务器 B 的 3389 端口,则需要借助 sockscap64 之类的工具打开,因为 Windows 远程连接客户端原生不支持代理,需要借助工具强制让它使用代理,这里不多赘述,可参考我的另一篇文章让 BurpSuite 使用 MSF 的 socks4a 代理解决方法 -> 步骤 ->1 中的 sockscap64 使用示例

原理解释

使用 SSH 动态端口转发,相当在远程 SSH 服务器启动了 socks5 代理服务,本地监听的 9999 端口流量将通过 SSH 隧道转发到 SSH 服务器,SSH 服务器再对外发起网络请求。以上转发亦可使用 ssh 命令或者其它 SSH 客户端实现,具体方法可自行实验。

出口数据流向

内网代理隧道转发的几种应用场景

4.2 使用 SSH 隧道本地转发

需求

工作 PC 连接 Windows 服务器 B 的远程桌面。

网络拓扑

工作 PC 可使用 SSH 连接 123.123.123.123:2222 登陆到内网服务器 A,其它内网端口未做映射

内网代理隧道转发的几种应用场景

操作步骤

工作机 xshell 创建连接后,在属性 -> 连接 -> 隧道中添加 Local 类型转发

内网代理隧道转发的几种应用场景

这时工作机打开远程桌面客户端,通过连接 127.0.0.1:9999 端口,可连接到内网服务器 B 的 3389 端口

内网代理隧道转发的几种应用场景

原理解释

SSH 隧道的本地转发,相当于把本地监听的 9999 端口接收到的 TCP 流量,通过 SSH 隧道转发到远程的 SSH 服务器 A,服务器 A 再发起 TCP 连接到服务器 B 的 3389 端口。可以看到,本地转发跟动态转发有点相似,不同的是本地转发是转发了一个远程端口到本地,而动态转发可通过配置代理访问整个远程网络
注意:这种方法转发 HTTP 端口一般无法成功,因为 HTTP 协议带有 Host 头,服务器端校验 Host 头后可能会重置该 HTTP 请求导致无法连接,如果想了解这一细节,不妨抓个包看看。

出口数据流向

内网代理隧道转发的几种应用场景

4.3 使用 SSH 隧道远程转发

需求

工作 PC-B 访问工作 PC-A 上面的 MySQL 数据库(3306 端口)。

网络拓扑

内网代理隧道转发的几种应用场景

操作步骤


内网代理隧道转发的几种应用场景

原理说明

远程转发的功能刚好与本地转发相反,可以把本地监听的端口转发到远程服务器上,可用于办公区的机器需要访问工作机的本地端口时候使用,比如工作机上面配置了数据库服务,监听本地 3306 端口,通过转发本地 3306 端口到远程服务器 A 的 9999 端口上,服务器 B 可访问工作机的数据库应用。

注意:远程转发默认只能转发到 SSH 服务器的环回网卡(127.0.0.1),外部网络访问(如本例)需要启动 GatewayPorts 配置:

# 编辑sshd 的配置文件/etc/ssh/sshd_config,将GatewayPorts 开关打开:
GatewayPorts yes


出口数据流向

内网代理隧道转发的几种应用场景

五、代理链工具

强制程序使用代理,让一些不支持代理的工具也能使用 socks 代理

  • proxychains

  • sockscap64


本文作者:r0yanx

走过路过的大佬们留个关注再走呗内网代理隧道转发的几种应用场景

最后

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。


无害实验室拥有对此文章的修改和解释权如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的


本文始发于微信公众号(无害实验室sec):内网代理隧道转发的几种应用场景

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: