天天看點

《樹莓派滲透測試實戰》——2.9 通過SSH做反向Shell

本節書摘來自異步社群《樹莓派滲透測試實戰》一書中的第2章,第2.9節,作者[美]joseph muniz(約瑟夫 穆尼斯),aamir lakhani(阿米爾 拉克哈尼),朱筱丹 譯,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

前面已經說過在遠端地點用樹莓派做滲透的優點。但将樹莓派放到目标網絡後,首要的問題是要怎樣控制這台樹莓派。最明顯和靈活的做法就是kali linux上的ssh。

因為kali linux是一套完整功能的linux作業系統,可以通過ssh控制整個系統;然而,從外面連入的ssh連接配接可能會被防火牆或其他的安全措施攔截。許多機構都會部署安全措施,以攔截接入的連接配接,避免自己的網絡被開後門。在白盒評估測試中,也許可以明确地要求在防火牆上開放端口設定,以通路到樹莓派的ssh服務,如圖2-19所示的那樣。但即使公司政策不反對這一做法,但實際操作中很難實作,因為使用場景涉及多個地點,它們由不同的管理團隊控制。此時反向ssh就是管理kali linux樹莓派的好辦法了。

《樹莓派滲透測試實戰》——2.9 通過SSH做反向Shell

在反向連接配接中,是由用戶端連向伺服器端,也是由它初始化到伺服器端的連接配接,而不是伺服器連到用戶端。當然在這兩種情況下,都是由伺服器端控制用戶端。這點與很多後門程式類似。為了使用友善,我們把這種技術用于系統管理。

使用ssh指令的r開關來建立連向監聽端的反向連接配接。監聽端的裝置處于監聽狀态,等待接受反向ssh連接配接。在設定的場景裡,c&c伺服器就是監聽端。遠端主機(樹莓派)上使用的指令文法是:ssh -r [綁定的位址:]遠端端口:本地主機:本地端口[6]。

r開關定義了遠端樹莓派要和哪個外網端口連接配接,以及如何發起連接配接。換而言之,還需要選擇一個外網端口,讓遠端的樹莓派可以連過來。大多數機構對往外連的請求過濾得并不嚴格,使得往外連的做法比标準的ssh接入更有效。一般防火牆都會開放包括22、80、443和53等tcp端口,也就是用戶端通常可以自由地連接配接外網這些端口。

本地端口是樹莓派上某個服務的監聽端口。在本場景中,運作的是ssh服務,是以本地端口預設是22。也可以把預設端口改得更隐秘些,或者使用加密通道,這部分内容會在本章後面介紹。總之這條指令會在c&c主要伺服器上打開一個用于管理遠端ssh的tcp端口,它在c&c伺服器端等着接收樹莓派的連入。而本地端口則是樹莓派上運作ssh服務的實際端口。

在樹莓派的例子裡,輸入以下指令:

上面這條指令是假設樹莓派可以連到外網的7000端口。如果這個端口号不能用,那就再換一個。如圖2-20所示,大多數機構都允許外連到443端口。

《樹莓派滲透測試實戰》——2.9 通過SSH做反向Shell

是以根據圖2-20的情況再換一個外連端口試試,在樹莓派上執行如下指令:

在c&c伺服器端,打開指令行終端,輸入以下指令:

根據提示要輸入樹莓派上kali linux的root使用者密碼。可以看到在執行上一條指令後,指令行提示符變了。我們實際上已經登入到遠端的樹莓派上,可以完全控制它了,關系如圖2-21所示。

《樹莓派滲透測試實戰》——2.9 通過SSH做反向Shell

這項技術叫反向shell tunneling(指令行通道)。可以選擇任意源端口,如53端口,這通常是dns服務的端口;或者80,這通常是http服務的端口。但請記住,修改端口号并不意味着底層對應的協定也跟着變了。

繼續閱讀