0x00First
最近發現一些好用的端口轉發工具和技巧,計划認真梳理一下
SSH、NC、LCX、EW、FRP
0x01 SSH隧道端口轉發
目前利用SSH隧道(SSH tunneling)進行端口轉發,有三種類型:本地端口轉發、遠程端口轉發、動態端口轉發。
1、本地端口轉發
在ip1的客戶端執行如下命令:
SSH -CfN -L 0.0.0.0:port1:ip2:port2 user3@ip3
結果:訪問ip1:port1等同於訪問ip2:port2
條件:ip1可以ssh訪問ip3;
ip3可以訪問ip2的port2
1.5、本地轉發與遠程端口轉發的異同
同:都是通過訪問ip1:port1來最終訪問ip2:port2
ip3是中間必經點,ip2只能通過ip3來發起訪問
異:前者是ip1扮演SSH Client,后者是ip3扮演SSH Client
前者場景-公司里只有老板的ip3可以到看ip2上的片片,由於你加班表現優異,特獎勵你的ip1可以ssh他的ip3,這樣你在自己的工位上也能看ip2的片了。
后者場景-老板把公司內網的考勤系統ip2,通過可以上網的ip3主動映射到互聯網的服務器ip1上,便於出差在外/半夜在家的你加班。
2、遠程端口轉發
在ip3的客戶端執行如下命令:
SSH -CfN -R port1:ip2:port2 user1@ip1
結果:訪問ip1:port1等同於訪問ip2:port2
條件:ip3可以ssh訪問ip1;
ip3可以訪問ip2的port2
3、動態端口轉發
在ip1的客戶端執行如下命令:
SSH -CfN -D 8080 user3@ip3
在ip1上將socks5代理服務器地址設置為ip1:8080
結果:在ip1上可以訪問ip3所有能訪問的
條件:ip1可以ssh訪問ip3
0x02 NetCat NC端口轉發
目前windows版本的通用netcat沒有見到可有進行端口轉發的,Linux版的也只是能進行簡單的端口轉發。Linux端口轉發是需要同mkfifo結合起來用的:
在ip1上:
mkfifo /tmp/backpipe
cat /tmp/backpipe | nc ip2 8080 | nc -l 9090 > /tmp/backpipe
結果:訪問ip1的9090就是訪問ip2的8080了
條件:ip1可以訪問ip2的8080
0x03 LCX 端口轉發
應該說LCX是比較經典的端口轉發工具,先上一段官方說明:
Usage of Packet Transmit:
./lcx -<listen|tran|slave> <option> [<-log|-hex|-text> file]
./lcx -about
[options:]
-listen <local port1> <local port2>
-tran <local port> <remote host> <remote port>
-slave <remote host1> <remote port1> <remote host2> <remote port2>
-hex : hex mode data dump
-text : text mode data dump
-log : save transfer log
0x04 EarthWorm EW 端口轉發
EarthWorm EW是一款跨平台的端口轉發、Socks5代理工具,自帶LCX功能,跨平台。(Earthworm 工具網址:http://rootkiter.com/EarthWorm)
EW共有 6 種工作模式:ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran
1、正向SOCKS5 代理
在ip1上命令:ew -s ssocksd -l 8080
將ip2的socks5代理服務器設置為:ip1:8080
結果:ip1能訪問的端口,ip2都能訪問
條件:ip2能夠訪問ip1的8080
2、反彈SOCKS5 代理
在ip1上命令:ew -s rcsocks -l 8080 -e 9090
在ip2上命令:ew -s rssocks -d ip1 -e 9090
將ip3的socks5代理服務器設置為:ip1:8080
結果:ip2能訪問的端口,ip3都能訪問
條件:ip2能夠訪問ip1的9090
ip3能夠訪問ip1的8080
0x05 FRP 端口轉發
FRP 是一個可用於內網穿透的高性能的反向代理應用,支持 tcp, udp, http, https 協議。(官方文檔很詳細,我都不想說了)
0xRef
1、《SSH/OpenSSH/PortForwarding 》https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding
2、《實戰 SSH 端口轉發》https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/
3、《端口轉發》https://pan.baidu.com/s/1ystFF-a0nBSDvINpzf0OZw
4、《應用netcat實現端口轉發》https://blog.csdn.net/freestyle4568world/article/details/54693306
5、《netcat的端口轉發功能的實現》https://blog.csdn.net/whackw/article/details/46414069
6、《netcat的正確打開方式》 https://www.jianshu.com/p/827f5dc79bbe
7、《PuTTY/Putty建立隧道的方法》https://blog.csdn.net/lifan5/article/details/33709271
8、《三種不同類型的ssh隧道》http://hetaoo.iteye.com/blog/2299123
9、《SSH的端口轉發:本地轉發Local Forward和遠程轉發Remote Forward》https://blog.csdn.net/a351945755/article/details/21785647
10、《ssh端口映射總結》https://blog.csdn.net/boliang319/article/details/48656985
11、《端口轉發工具lcx使用兩類》https://www.cnblogs.com/lingerhk/p/4506308.html
12、《內網端口轉發及穿透》http://www.zerokeeper.com/experience/network-port-forwarding-and-penetration.html
13、《內網穿透大殺器--EarthWorm》https://blog.csdn.net/nzjdsds/article/details/82025651
14、《FRP 中文說明文檔》https://github.com/fatedier/frp/blob/master/README_zh.md
0xApp
1、SSH 命令詳解
https://www.cnblogs.com/f-ck-need-u/archive/2017/07/05/7120669.html
2、25個常用的ssh命令
https://blog.csdn.net/u010027484/article/details/51774083