DNS tünelleme ile engellenen bu protokollerin DNS paketleri üzerinden taşınması sağlanır. DNS tünelleme, IP protokolünün DNS paketleri içerisinde kodlanmasıyla çalışır. DNS haricinde hiçbir protokole izin verilmeyen bir bilgisayardan bu tünelleme ile internette dolaşmaya başlayacağız.
Tünelleme öncesinde bilgisayarımızdan http(s) bağlantısı gerçekleştiremiyoruz.
SSH trafiğine de iznimiz yok ve bağlantıyı gerçekleştiremiyoruz. Ancak dns sorgusu gönderdiğimizde sorgumuza cevap geliyor.
ssh user@34.197.209.38
host -t A google.com
host -t A guvenleak.com
DNS tünelleme için iki şeye ihtiyaç vardır.
- Alan Adı (Domain name): Bu yazıda alan adı olarak guvenleak.com kullanılmıştır.
- Public IP’ye sahip bir sunucu: Bu yazıda kullanılan sunucunun IP adresi 34.197.209.38’tir.
DNS Kayıtlarının Eklenmesi
Alan adına ait aşağıdaki 2 adet DNS kayıtlarını ekliyoruz.
- A Kaydı: dns -> sunucu_ip_adresi
- NS Kaydı: tunnel -> dns.guvenleak.com
Not: Eklediğimiz bu iki kayıt sonucunda DNS sunucuna tunnel.guvenleak.com için bir A sorgusu geldiğinde, sorgu verdiğimiz sunucu IP adresine yönlendirilecektir.
İstemciye Iodine Aracının Yüklenmesi
İstemci olarak kullanacağım kendi bilgisayarımda Kali Linux yüklüdür. Kali üzerinde yüklü olduğu için tekrar kurulmamıştır.
apt-get install iodine
Sunucuya Iodine Aracının Yüklenmesi
Bu uygulamada kullanacağımız 34.197.209.38 IP adresine sahip sunucunun işletim sistemi Ubuntu’dur. Aşağıdaki komut ile sunucuya Iodine aracını yükleyelim. İstemci için kullandığımız aynı komutla Iodine aracını sunucuma da yüklüyorum.
sudo apt-get install iodine
Sunucuda Iodine Uygulamasının Çalıştırılması
Sunucuda çalıştıracağımız aşağıdaki gibi bir komutla bu sunucuya gelecek olan DNS sorgu paketlerini dinlemeye başlıyoruz.
sudo iodined -c -f 10.0.0.1 -P secretpassword tunnel.alanadiniz.com
Kullanılan değişkenler ve işlevleri aşağıdaki gibidir.
- 10.0.0.1: Sunucuda oluşturulacak olan dns0 interface’inin ip adresi
- secretpassword: paketleri kodlarken ve kodu çözerken kullanılacak olan parola
- tunnel.guvenleak.com: Beklenen DNS sorgusu
İstemci Bilgisayarımızda Iodine Uygulamasının Çalıştırılması
Bilgisayarımızda aşağıdaki gibi bir komut çalıştırıyoruz.
iodine -I 50 -f -P secretpassword tunnel.alanadiniz.com
Çalıştırdığımız bu komut ile tunnel.guvenleak.com için DNS sorgusu gönderiyoruz. Kurum içerisindeki Firewall DNS sorgusuna izin verdiği için paketimiz servis sağlayıcınız DNS sunucusuna gidiyor. Servis sağlayıcı da sorgunun guvenleak.com domain’ine ait DNS sunucusuna yönlendirilmesini sağlıyor. “DNS Kayıtlarının Eklenmesi” adımında yaptığımız ayarlar ile de DNS sunucusuna gelen bu sorguyu, iodined uygulamasını çalıştırdığımız 34.197.209.38 IP adresli sunucumuza yönlendiriyor.
ifconfig
Bağlantı kuruldu ve bilgisayarımızda dns0 interfece’i için 10.0.0.2 IP adresi verildi. Daha önce sunucuda çalıştırdığımız komut ile sunucunun IP adresini 10.0.0.1 olarak vermiştik.
Oluşturulan Tünel ile Sunucuya SSH Bağlantısının Yapılması
Yapılan tünel bağlantısı ile artık sunucuya SSH yapabiliriz.
ssh user@10.0.0.1
Görüldüğü üzere firewall üzerinde sadece DNS paketlerine izin verilirken, DNS tünelleme ile DNS paketleri üzerinden SSH paketlerini kaçırmış ve firewall’u atlatmış olduk.
DNS Tünel İçerisinden SSH Tünel Bağlantısının Kurulması
Aşağıdaki komutla kurulmuş olan DNS tünel üzerinden bir SSH tünel bağlantısı kurabiliriz.
ssh -D 5000 -N user@10.0.0.1
Kurduğumuz bu SSH tünel üzerinden internette dolaşabiliriz. Bunun için browser üzerinde Proxy ağ ayarlarını aşağıdaki gibi girmemiz yeterli olacaktır.
Proxy ayarlarını browser’a girdikten sonra internet sayfalarında gezinti yapabiliriz. Reel IP adresimiz ise DNS tünelleme ile bağlantı yaptığımız sunucunun IP adresi olarak gözükecektir.
Sonuç
Bu yazı ile protokol bazlı internet erişimi engellenen bilgisayarımızdan DNS tünelleme ile güvenlik duvarını atlatabileceğimizden bahsettik. Gerekli önlemler alınmadığı takdirde internet erişimi engellense dahi ağa bağlantıya izin veriliyorsa bu yöntem ile internet erişimi sağlanabilir.
Kurumların misafir ağlarında veya ücretli internet servisi verilen ortamlarda bu yazıda bahsettiğimiz gibi protokol bazlı internet erişimi engellenmesine rağmen, DNS iletişimi göz ardı edilerek DNS sorguları engellenmeyebilmektedir. Gerekli önlemlerin alınmadığı bu ortamlarda DNS tünelleme yöntemi ile internete erişim sağlanabilmektedir.
Bu işlemleri yaptığımda ssl proxy den dolayı hata alıyorum. Ayrıca wireshark ile dns0 ı dinlerken sadece tcp ve ssh verilerini görebiliyorum. Bu konuda yardımcı olur musunuz?
Merhaba
Standart DNS sorguları hedefe ulaşıyorsa, SSL tünelleme sırasında DNS firewall gibi bir ürün engelliyor olabilir.