DNS Tünelleme Nedir?
DNS, internet adreslerinin IP adresi karşılığını kayıt tutan bir hizmettir. Kısaca IP adreslerini kullanıcılar için (ör. xxxxxx.com) gibi kolay hatırlanır adreslere çevirir. Bu sebeple DNS’in yaygın olarak kullanımı saldırganlar için bir DNS saldırı tekniği ortaya çıkarmıştır.
Bir protokolden, bir diğer protokole veri aktarımı yapmak bir tünelleme işlemidir. DNS tünel kullanarak, bir başka protokole tünel açabiliriz. Örnek olarak DNS paketlerinin içerisindeki tcp/udp paketlerinin http, ssh, https, smtp gibi diğer protokollere dns tünelleme yapılarak taşınabilir. Bir IP trafiğindeki veri sızıntısı içinde aynı şekilde DNS tünelleme kullanılmaktadır.
DNS Tüneli Nasıl Çalışır?
DNS tünel, saldırganlar tarafından client-server ilişkisi içerisindedir ve veri tünelleme yapmak için DNS protokolünü kullanmaktadır. DNS tünelinin çalışma prensibi şu şekildedir;
- İlk olarak saldırgan, testsite.com adlı bir alan adı oluşturur. Bu alan adı sunucusu, bir tünel açarak siteyi kötü amaçlı yazılımın bulunduğu saldırganın sunucusuna yönlendirir.
- DNS isteklerinin güvenlik duvarından girip çıkmasına her zaman izin verilmektedir. Bu sebepten dolayı saldırgan, kötü amaçlı yazılımı güvenlik duvarın’dan geçirerek kurban bilgisayara bulaşmasını sağlar. Aynı zamanda DNS çözümleyicisine sorgular gönderir.
- DNS çözümleyici, sorguları saldırganın tünel açmak için kullandığı sunucuya yönlendirir. Böylece DNS çözümleyici sayesinde saldırgan ile kurban bilgisayar arasında bir bağlantı oluşturulur. Saldırgan bu bağlantıyı kullanarak veri sızdırma, veri çalma gibi kötü amaçlı işlemler gerçekleştirebilir. Fakat saldırgan ile kurban bilgisayar arasında doğrudan gerçekleşen bir bağlantı olmadığı için saldırganın kimliğini tespit etmek oldukça zordur.
DNS Tünel Saldırılarını Tespit Etme
- DNS tüneli, saldırganların alan adlarını kullanarak bilgi hırsızlığı gibi kötü amaçlar için kullanılmaktadır. Kurumların DNS tüneli durumlarına karşı DNS isteklerinin incelenmesi, ağ trafiğindeki anormallikleri görebilmek için bir çözüm sunmaktadır.
- DNS tünelleme, sadece saldırganın hedef sistemin etki alanına ulaşmasıyla başarılı olur. Kurum, sistemlerinde DNS etki alanına yönelik olağandışı isteklerle karşılaştığında DNS tünelleme olabileceği için önlemler almalıdır.
- DNS tünelleme sırasında saldırganın veri çalma gibi kötü amaçlı yazılımları gerçekleştirmek için çok fazla DNS isteğine ihtiyaç duyulmaktadır. Ağ da görünen DNS trafiğindeki artışlar DNS tünellemenin yapıldığını gösterir.
DNS tünel durumlarında algılanan bu anormallikler tek başlarına zararsız olabilir. Fakat birden fazla anormallik DNS tünelin gerçekleştiğini gösterir.
DNS Tünel Saldırılarını Önleme
DNS tüneli, saldırganların DNS sorgular aracılığıyla kötü amaçlı yazılımlarını etkili bir şekilde kullanmasıdır. Bu sebeple, saldırganların kötü amaçlı sorgularını izleyerek tespit edebilir ve engelleyebiliriz.
DNS sorgunun yapıldığı, saldırganın DNS tünelleme yapmaya hazırlandığı zamanlarda, DNS sorgularını kontrol etmek için snort, sigma gibi özel imzalar geliştirilerek kullanılmaktadır.
DNS tünellemeyi engelleyerek veri hırsızlığı, kötü amaçlı yazılımların kötü amaçla kullanılmasını önleyebilmek için gelişmiş tehdit önleme sistemleri gerekmektedir. MDR, SIEM gibi çözümler ile saldırganın oluşturduğu kötü niyetli yazılımlarını aynı zamanda ağ trafiğini inceleyerek, DNS trafiğindeki anormallikleri tespit edebilir ve bu da tehdit istihbarat ile mümkündür.
Etkili bir DNS önlemede dikkat edilecekler;
-DNS tünellemenin gerçekleşmesi durumunda oluşabilecek veri hırsızlığı saldırılarının belirlenip, senaryolaşması.
-Saldırganlar tarafından etki alanları oluşturmanın yapıldığı Etki alanı oluşturma (DGA) tespitinin yapılması.
-Daha önce oluşturulmuş veri hırsızlığında kullanılan alan adlarının tanımlanması
-Şüpheli durumlarda DNS isteklerinin, önceki kötü amaçlı durumlarla karşılaştırarak tespit etme.
DNS Tünel Açmaya Yarayan Programlar
- iodine: Iodine, IPv4 verilerini bir DNS sunucu kullanarak DNS tünelleme yapmanızı sağlar.Linux, windows,Mac OS freeBSD gibi sistemler üzerinde çalışır.
- DeNiSe: Python dili kullanılarak DNS üzerinden TCP tünellemeyi gerçekleştirir.
- Dns2tcp: C diliyle yazılmıştır. İstemci Windows ve Linux üzerinde çalışır. Key ve TXT isteklerini desteklemektedir.
- DNScapy: Bu araç, kısaca DNS üzerinden SSH tünellemeyi gerçekleştirmektedir.
- DNScat: DNScat2 aracı DNS prokolü üzerinden şifrelenmiş bir C2 sunucusu oluşturmak için tasarlanmıştır.
- tcp-over-dns: Java tabanlı bir sunucudur. Windows, Linux ve Solaris gibi işletim sistemleri üzerinde çalışır. TCP ve UDP trafiğini tünelleme işlemi ve LZMA sıkıştırmasın destekler.
IODINE ile DNS Tünelleme Uygulaması
Bu kısımdaki gösterilen uygulamada sanal makinede kurulu olan ubuntuyu istemci olarak, kali linux makinemizi de sunucu olarak ele almaktayız.
İlk olarak her iki ortama da iodine kurulmuştur.
- apt-get install iodine
Sunucuda Iodine Aracını Çalıştırma;
Aşağıdaki komut çalıştırıldığında server’a gelen DNS sorgu paketleri dinlenebilecektir.
- iodined -fP password 10.0.0.1 tunnel.(belirlediğiniz alan adı).com
Burada -P parametresi ile paketler için bir parola belirliyoruz. Komut içerisindeki 10.0.0.1 IP si sunucuya verilecek dns0 interface ip adresidir.
İstemcide Iodine Aracını Çalıştırma;
- iodine -fP password Sunucu_IP tunnel.testsite.com
Bu yazdığımız komutla istemcimizin dns0 interface ip adresi 10.0.0.2 şeklinde atanmıştır.
İstemci ve sunucu arasında başarılı bir iletişim sağlanıp sağlanmadığına bakmak için ping atma işlemi gerçekleştirildi.
İstemci ortamından sunucu ortamına başarılı şekilde ping atıldı.
Burada da görüldüğü gibi Sunucu tarafından istemciye başarılı şekilde ping atılarak bağlantının kurulduğu görüldü.
DNS Tünelleme ile Sunucudan istemciye SSH bağlantısı kurulabilmekte olduğunu görmekteyiz.