Dns Tünelleme Tespiti ve Engellenmesi

Huseyin Rencber
4 min readJan 6, 2020

--

Dns ile ilgili konulara hakim olmak adına RFC 1034 ve 1035 i okumanızı tavsiye ederim, ayrıca aşağıdaki bağlantıdan da ilgili rfc dokümanlarına da erişebilirsiniz.

LinkedIn ve Twitter üzerinden bana ulaşabilirsiniz.

https://powerdns.org/dns-camel/

https://tools.ietf.org/html/rfc1034

DNS tüneli ile ilgili bilinen ilk tartışma Nisan 1998'de Bugtraq posta listesindeki Oskar Pearson’dan yapıldı (Pearson, 1998).

http://www.gray-world.net/papers/dnstunnel.txt

DNS tünellemesi için hem Morto hem de Feederbot kötü amaçlı yazılımları kullanılmıştır. Son tünel saldırıları, 2018'de Orta Doğu’daki hükümet kurumlarını hedefleyen tehdit grubu DarkHydrus ve 2016'dan beri faaliyette olan ve hala aktif olan OilRig’i ( ki bizi en çok da bu amcalar ilgilendiriyor ) içeriyor.

Nedenler niçinler ;

Klasik bir firewall bypass yapalım derseniz kullanırsınız, malware ve C2 lar için kullanılır, captive portal vb durumlardan kaçınmak için kullanılabilir vs. Pentestlerde bulgu olarak hemen yazılan bu durumun engellenmesinden ziyade neden ağınızda kullanıldığını tespit etmek daha önemlidir. Bu kısma engelleme bölümünde değinelim.

Encoding

Az yukarıda Oilrig tarafından da kullanılıyor demiştik, amcalar hakkında kısa bilgi;

Takdir edersiniz ki dns tünel için istemci ve sunucu levazım, burada encoding mevzusu da önemlidir. Oilrig de bondupdater ( base16) quadagent ( base64) tollarda çeşitli encodingleri kullanmıştır. Oil Rig — BONDUPDATER Orta Doğu hükümetine karşı Truva atı, C2 iletişimleri için DNS tünel protokolünde A kayıtlarını ve TXT kayıtlarını kullanabilir

encoding

Bazı toollar

Bazı toollar iodine gibi encodingi en iyi olacak şekilde otomatik olarak ayarlar.

OzymanDNS Perl’de 2004 yılında Dan Kaminsky tarafından yazılmıştır. DNS üzerinden veya dosya aktarımı için bir SSH tüneli kurmak için kullanılır. İstekler base32 kodludur ve yanıtlar base64 kodlu TXT kayıtlarıdır.

Heyoka DNS tünelleme yardımcı programları, 512 bayttan daha büyük yükleri kullanmalarını ve böylece performansı iyileştirmelerini sağlayan EDNS’den yararlanabilir. Bir DNS tünel oluşturma yardımcı programı olan Heyoka, istemcinin görünürlüğünü azaltmak için sunucuya yapılan talepler (yukarı akış verileri) için kaynak IP adreslerini taklit eder.

EDNS

DNS, standart olarak 512 Byte büyüklüğündeki UDP paketleri kabul etmektedir. Boyutu daha büyük paketler için UDP yerine TCP protokolü kullanılmaktadır. EDNS sayesinde artık 512 Byte’dan büyük olan sorgu cevapları için protokol değişikliğine gerek kalmadan 4096 Byte’ a kadar UDP üzerinden cevap verilmesini sağlamaktadır. Belirtilen boyut 512 Byte ile 4096 Byte arasında herhangi bir değer olabilir

Bu kısa bilgilerden sonra detection aşamasına geçelim.

Detection

  • Sorgu ve cevabın boyutu, uzun sorgular ve paket boyutu yüksek cevaplar şüpheli olarak değerlendirilmeli siemde veya wireshark vb paket analiz cihazlarında kontrol edilmelidir.
  • Entropi, bir dizgenin rasgeleliğini tanımlar. DNS adları durumunda, Domain Oluşturma Algoritmaları (DGA’lar) gibi rastgele ana bilgisayar adları oluşturur asdlfkjasdflwerjka.t1.security.local. Dize ne kadar fazla rastgele olursa, o kadar yüksek entropi değerine sahip olur . www[.]medium.com gibi daha az rastgelelik, entropi skorunu düşürür. Burada bir değere göre sıralamada yapılabilir 3 den büyükler için gibi. Splunkbase de olan url toolbox ile entropi kullanılarak dns tünelleme yakalanabilir.
splunk entropy
  • Belirli zaman içerisinde yapılan çoklu istek. Örnek olarak bir dakika içerisinde aynı source ip ve domainden fakat farkı subdomainlere 1 dakika içerisinde en az 5 istek olursa. Ayrıca ibm de dns analyser uygulaması ile de tespit edilebilir.

https://exchange.xforce.ibmcloud.com/hub/extension/6c52b4571878b24511052868dbb4f6c9

qradar örnek kural tipi
  • Çok yaygın olmayan sorgu tipleri görüyorsak clientlardan txt vs gibi, veya ağınızdaki cache dnslerinin haricinde bir dış dns e istek yapıyorsa birden fazla kez. Dns cache gibi mekanizma varken sürekli sorgu atmaya çalışıyorsa vs bunlar genel olarak şüphe uyandırıcı mevzular
  • IDS de snort imzalarıyla tespit edilebilir. Örnek iodine ve ozyman

alert udp $EXTERNAL_NET 53 -> $HOME_NET any (msg:”APP-DETECT iodine dns tunneling handshake server ACK”; flow:to_client; byte_test:1,&,0x80,2; content:”|00 01 00 01 00|”; depth:5; offset:4; content:”v”; within:1; distance:4; content:”VACK”; within:200; fast_pattern:; metadata:policy max-detect-ips drop, service dns; reference:url,code.kryo.se/iodine/README.html; classtype:policy-violation; sid:123456; rev:4; gid:1; )

alert udp $HOME_NET any -> any 53 (msg:”APP-DETECT OzymanDNS dns tunneling up attempt”; flow:to_server,no_stream; content:”|01 00 00 01 00 00 00 00 00 00|”; depth:10; offset:2; content:”-0"; distance:6; content:”id-”; within:3; distance:1; fast_pattern:; content:”up”; within:8; detection_filter:track by_src, count 18, seconds 1; metadata:impact_flag red, policy max-detect-ips drop, service dns; reference:url,dankaminsky.com/2004/07/29/51/; classtype:policy-violation; sid:123456; rev:5; gid:1; )

  • NGFW de uygulama tanıma özelliği ile tespit edilebilir
tcp over dns

Tespit ettik iyi hoş da engellense daha iyi değil mi?

Fw ler deki url filtering veya proxy ler vs hikaye çözüm sağlamaz bu konuya, dns e özel uygulama tanıyabilen teknolojiler daha doğru olacaktır. ( yukarıdaki örnek ekran görüntüsünde olduğu gibi ) Tcp traffic over dns gibi veya deep packet inspection ya da infoblox roksit gibi dns özelinde trafiği denetleyen cihazlar yardımcı olacaktır. Tüm clientlar kendi ağınızdaki dns lere sorgu atmalı dış ağa direk erişmemeli.

Bunlar da threshold bağımlı yazılan kurallar f/p teşkil edebilir veya hiç yakalamayabilir.

Ziyaret edilen istifade edilen sevilesi kaynaklar

hxxps://www.sans.org/reading-room/whitepapers/dns/paper/34152

hxxps://unit42.paloaltonetworks.com/dns-tunneling-in-the-wild-overview-of-oilrigs-dns-tunneling/

--

--

Huseyin Rencber
Huseyin Rencber

Written by Huseyin Rencber

Cyber Security, Theat Hunting, Incident Response

No responses yet