2022/10/24

dns2tcp

dns2tcp 可透過 DNS 查詢建立資料傳輸的 tunnel。

例如在提供免費 WiFi 的場所,通常在連上 WiFi AP 後,會把打開一個網址,該網頁要求填寫帳號與密碼,然後才能透過 WiFi 上網,如果沒有帳號,再打開網址的過程中會發現,DNS 封包是被允許的,可查詢某個網域的 IP,這時候,就可利用 dns2tcp 實現上網的功能。

安裝

wget https://github.com/alex-sector/dns2tcp/archive/refs/tags/v0.5.2.tar.gz -O dns2tcp.tgz
tar zxvf dns2tcp.tgz
cd dns2tcp-0.5.2

./configure
make
make install

DNS

修改自己的 domain name server 設定,增加兩個 record

tcp    IN    NS    ns.kokome.com.tw
ns    IN    A    211.72.214.206

kokome.com.tw 的 DNS server 會產生一個新的 ns.kokome.com.tw 這個 name server 的 A record,將 ns.kokome.com.tw 轉址到 211.72.214.206。然後當有 tcp.kokome.com.tw 的 domain name 查詢時,會因為 NS 設定,把 dns 查詢轉問 ns.kokome.com.tw。

把 dns2tcp 的 server 服務安裝在 ns.kokome.com.tw

實測時發現不需要設定這個 DNS NS forward也沒關係,因為在使用 dns2tcpc 時,可直接指定 DNS server 的 IP。

設定

產生設定檔 /etc/dns2tcpd.conf,內容為

listen = 0.0.0.0
port = 53  
user = nobody  
chroot = /tmp  
domain = tcp.kokome.com.tw  
resources = ssh:127.0.0.1:22,socks:127.0.0.1:1080,http:127.0.0.1:80 

以上面的設定來說,ssh 會轉換成連到本機的 sshd TCP Port 22,http 轉換連到本機的 TCP Port 80,socks server 轉至 TCP 1080。

當然本機需要另外安裝 httpd 與 socks server,才有辦法使用。

使用

在 tcp.kokome.com.tw 機器,用以下指令啟動 dns2tcpd,server 的部分,提供 DNS service,並將資料轉換成某個 TCP traffic

dns2tcpd -f /etc/dns2tcpd.conf -F -d 2

ssh

在另一台內網的機器,啟動 dns2tcp client,這個指令會在機器上開啟 TCP Port 8888,提供 ssh service,最後面的 server IP,就是遠端提供 tcp.kokome.com.tw DNS query 的機器的 IP

dns2tcpc -l 8888 -d 2 -r ssh -z tcp.kokome.com.tw 211.72.214.206

然後就能用 TCP 8888 連接到遠端 tcp.kokome.com.tw 的 sshd service

ssh root@127.0.0.1 -p 8888

http

在另一台內網的機器,啟動 dns2tcp client,這個指令會在機器上開啟 TCP Port 8888,提供 http service,最後面的 server IP,就是遠端提供 tcp.kokome.com.tw DNS query 的機器的 IP

dns2tcpc -c -d 1 -l 2222 -r http -z tcp.kokome.com.tw 211.72.214.206

然後就能用 browser,瀏覽網址 http://127.0.0.1:2222

References

DNS隧道之DNS2TCP實現-趣讀

dns隧道 dns2tcpd - 碼上快樂

DNS tunnel(DNS隧道)技術-DNS2tcp的使用方法及原理 | 程式前沿

打造 Kali Linux 2021 中文桌面環境(字型、中文輸入法) - Hack543

沒有留言:

張貼留言