場景說明:
A主機和B主機在同一個園區網,A主機可以出公網,B主機不可以出公網。滲透工程師已經拿下A主機控制權。
一、如何在外網訪問到B主機
方案:ssh本地端口映射
背景:當我們拿下A主機之后想和B主機通信,可以選擇直接在A主機上進行操作,但這樣會留下相關日志,增加了被發現的風險。此時可以通過ssh隧道直接在本機與B主機進行通信,既方便又不會留下痕跡。
工作原理:與A主機建立SSH隧道,並在本地偵聽一個空閑端口,並將之映射至B主機指定端口即可。此時訪問本地偵聽的端口,流量實質將導入B主機指定端口,從而實現安全的訪問B主機。

隧道建立命令: ssh -fNg -L 7001:172.20.163.135:22 root@172.20.163.136 -p 22
-L: 本地端口轉發
-f: 后台運行進程
-N: 不執行登錄shell
-g: 復用訪問時作為網管,支持多主機訪問本地偵聽端口(即:如果不加此選項則7001端口只在127.0.0.1接口上偵聽,加上此選項則7001端口在0.0.0.0接口上偵聽)
7001: 在本地開啟偵聽的端口
172.20.163.135:22 : B主機及要連的端口
172.20.163.136: A主機
結果驗證:ssh root@127.0.0.1 -p 7001 ====>此時將直接連到B主機的22端口
二、拿下B主機后如何讓B主機出公網
背景:拿下B主機后想讓B和公網主機C通信,怎么辦?
方案: ssh遠程端口映射
工作原理:與A主機建立SSH隧道,並在A主機偵聽一個空閑端口,將此端口映射至C主機指定端口即可。此時B主機訪問A主機偵聽的端口,流量實質將導入C主機指定端口,從而實現B主機連接公網上任何一台主機。

隧道建立命令: ssh -fNg -R 7001:202.2.20.2:80 root@172.20.163.136 -p 22
-R: 遠程端口轉發
-f: 后台運行進程
-N: 不執行登錄shell
-g: 復用訪問時作為網管,支持多主機訪問本地偵聽端口(即:如果不加此選項則7001端口只在127.0.0.1接口上偵聽,加上此選項則7001端口在0.0.0.0接口上偵聽)(注意:不知道為什么遠程端口轉發時加參數g和沒加一個樣)
7001: 在A主機開啟偵聽的端口
172.20.163.135:22 : C主機及要連的端口
172.20.163.136: A主機
結果驗證:ssh root@127.0.0.1 -p 7001 ====>此時將直接連到C主機的22端口
三、以上隧道只能建立點到點的隧道,如何建立點到多的隧道 =====> 亦是最簡單的fanqiang方法(國外網絡看成是遠程內網)
背景:想建立一條隧道就可以訪問遠程內網里一片設備
方案:ssh動態端口映射
工作原理:與A主機建立SSH隧道,並在本地偵聽一個空閑端口。此時公網主機設置socks代理為滲透者IP及其偵聽的端口,流量實質將通過此端口流向遠程內網任意地址。A主機將自動判斷過來的流量該去哪。

隧道建立命令: ssh -fNg -D 7001 root@172.20.163.136 -p 22
-D: 動態端口轉發
7001: 本地啟動的socks代理端口
結果驗證: 設置代理后瀏覽器訪問'http://內網主機',即可訪問其內部系統
