Geçtiğimiz hafta haber sitelerine oldukca dikkat çekici bir haber düştü. Haberin başlığı “Internet tarihinin en büyük DDoS Saldırısı…” şeklindeydi. Haberlerde okuduğumuz 15 Mart 2013 tarihinde SpamHaus’a yönelik gerçekleştirilen DDoS saldırısının boyutunun 300 Gbps’e ulaştığı ve belirli bölgelerde internet kullanıcılarının yavaşlık sorunu yaşadığı yönündeydi.
Saldırı ile ilgili internet kaynaklarının tamamına yakını olayın magazin yönüyle ilgilendiği için teknik detayını merak eden arkadaşlara yönelik BGA olarak hızlıca saldırının teknik detaylarını içeren bir blog girdisi hazırladık.
Yazıda anlatılan yöntem ve DNS, DNS’e yönelik DDOS saldırıları, DNS’in kullanıldığı DDoS saldırıları hakkında detay bilgi almak isteyenler BGA tarafından geçtiğimiz yıl yayınlanan DNS Servisine Yönelik DDoS Saldırıları konulu belgeyi okuyabilir.
Saldırının detayları aşağıdaki linklerden okunabilir.
- https://blog.cloudflare.com/the-ddos-that-almost-broke-the-internet/ adresinden okunabilir.
- http://www.turk.internet.com/portal/yazigoster.php?yaziid=41654
DNS’in Önemi ve IP Spoofing
Internet
dünyasının çalışmasını sağlayan ana protokoller incelediğinde güvenlik
açısından en önemli protokollerden birinin DNS olduğu ortaya
çıkmaktadır. Basitçe DNS, günümüz e-posta iletişiminin ve internet
altyapısının sağlıklı çalışmasında kritik rol oynamaktadır.
DNS’in
UDP üzerine kurulmuş olması ve UDP üzerinden gerçekleştirilen
iletişimde kaynak IP adresinin gerçek olup olmadığını anlamanın kesin
bir yolunun olmaması saldırganın kendini gizleyerek saldırı
gerçekleştirmesini kolaylaştırmakta ve engellemeyi zorlaştırmaktadır.
DNS Protokolünde IP Sahteciliği ( IP Spoofing)
DNS,
UDP tabanlı bir protokol olduğu için hem DNS istekleri hem de DNS
cevaplarında kullanılan ip adresleri istenildiği gibi belirlenebilir. IP
spoofing yapılabiliyor olması demek hem DNS isteklerinin hem de
cevaplarının sahte olabileceği anlamına gelmektedir.
Sahte DNS isteği
üretmeyi engelleyecek herhangi bir yöntem bulunmamaktadır (URPF [2]
hariç) UDP
katmanında IP spoofing için bir önlem olmaması nedeniyle DNS ip
sahteciliğini önlemek için uygulama seviyesinde iki temel önlem
almıştır.
Bu önlemlerden ilki DNS TXID başlık bilgisinin random olması
diğeri de kaynak port numarasının random olarak belirlenmesidir.
Amplified DNS DoS Saldırıları
Bu
saldırı tipinde gönderilen DNS isteğine dönecek cevabın kat kat fazla
olması özelliğini kullanır. Sisteme gönderilecek 50 byte’lık bir DNS
isteğine 500 Byte~cevap döndüğü düşünülürse saldırgan elindeki bant
genişliğinin 10 katı(Bazı durumlarda 50-100 kat) kadar saldırı trafiği oluşturabilir.
göre DNS(UDP) paketleri 512 bytedan büyük olamaz. 512 bytedan büyük DNS
paketlerinde UDP’den TCP’e geçiş yapılır ya da sistem destekliyorsa
EDNS0(RFC 2671) özelliği kullanılır.
çok az sayıda da olsa bazı ağ/güvenlik cihazları 512 bytedan büyük
DNS(UDP) paketlerini engellemektedir.(Cisco PIX cihazlarda 512 bytedan
büyük udp paketlerinin engellenmesi öntanımlı olarak gelir),
Adım Adım DNS Amplification DoS Saldırısı
Saldırgan rekursif sorguya açık DNS sunucu bulur ve daha önce
hazırladığı özel alan adını sorgulatır (Spamhaus/Cloudflare saldırısında rip.net ANY dns sorgusu kullanılmıştır). Bu isteğin boyutu ortalama 50 Byte tutmaktadır.
2.Adım: Ara DNS sunucu kendi ön belleğinde olmayan bu isteği gidip ana DNS sunucuya sorar (50 Byte)
3.Adım: Ana DNS sunucu test.bga.com.tr için gerekli cevabı döner (Saldırıda 2.500 Byte )
4.
Adım: Ara DNS sunucu cevabı ön belleğine alarak bir kopyasını
Saldırgana döner. Burada amaç ARA DNS sunucunun dönen 2.500 Byte’lık
cevabı ön belleğe almasını sağlamaktır.
5.Adım:
Test kullanıcısı (saldırganın kontrolünde) test.bga.com.tr alan adını
sorgular ve cevabın cachede olup olmadığını anlamaya çalışır.
6.Adım: Ara DNS sunucu ön belleğinden 2.500 Byte cevap döner
7.Adım: Saldırgan
Kurban’ın IP adresinden geliyormuş gibi sahte DNS paketleri gönderir.
DNS paketleri test.bga.com.tr’i sorgulamaktadır (ortalama 100.000 dns
q/s). Bu üretilen paketlerin Saldırgana maliyeti 100.000 X50 Byte olmaktadır.
8.Adım:
Ara DNS sunucu gelen her paket için 2.500 Byte’lık cevabı Kurban
sistemlere dönmeye çalışacaktır. Böylece Ara DNS sunucu 100.000X2.500 Byte
trafik üreterek saldırganın kendi trafiğinin 50 katı kadar çoğaltarak
Kurban’a saldırıyor gözükecektir.
(Dolayısıyla onu koruyan Cloudflare firmasına) gerçekleştirilen
saldırıda ripe.net ANY dns isteğinin kullanıldığı belirtiliyor.
Genele açık DNS sunucular ripe.net için gönderilecek ANY tipinde 50 Byte’lık bir DNS isteğine karşılık 2500 Byte’lık bir cevap dönmektedir.
pratik olarak 50 kat daha fazla trafik üretebilmektedir. Kabaca elinde
10 Gbps’lik Botnet ağı olan bir saldırgan bu yöntemi kullanarak 500
Gbps DDoS (DNS) trafiği oluşturabilir.
7Hc2LlKgg2WngpdKn39ieuykY7yQF+M/CCxarYp6iZSKBAUjoNF8XQf2
KNNSXfgpeGZELFk3VO5w+Og32QHDJFAQxzjs/HqRJ5cUIhqGOLEmm2MD
kIr1gWja/8t12Zzk9aOODHYZHa+KypnBjtOwubYrtdywWa62zISkj2YJ 6E/ItQ==
;; MSG SIZE rcvd: 2509
Basitce aşağıdaki scapy satırı tek bir ip adresinden yapılacak DNS amplification denemesini gösterecektir.
>>> sr1(IP(src=”KURBAN_IP_ADRESİ”,dst=”8.8.8.8″)/UDP(sport=RandShort())/DNS(rd=1,qd=DNSQR(qname=”ripe.net”,qtype=”ANY”)))
açık DNS sunucular(public dns) kendisine gelen tüm istekleri
cevaplamaya çalışan türde bir dns sunucu tipidir. Bu tip dns sunucular
eğer gerçekten amacı genele hizmet vermek değilse genellikle
eksik/yanlış yapılandırmanın sonucu ortaya çıkar.
sunucunun genele açık hizmet(recursive DNS çözücü) verip vermediğini
anlamanın en kolay yolu o DNS sunucusu üzerinden google.com, yahoo.com
gibi o DNS sunucuda tutulmayan alan adlarını sorgulamaktır.
Public DNS sunucular neden güvenlik açısından risklidir?
Public
dns sunucuların özellikle DNS flood saldırılarına karşı
sıkıntılıdırlar. Saldırgan public dns sunucuları kullanarak
amplification dns flood saldırılarında size ait dns sunuculardan ciddi
oranlarda trafik oluşturarak istediği bir sistemi zor durumda
bırakabilir.
DNS sunucu olarak ISC BIND kullanıyorsanız aşağıdaki tanımla recursive dns sorgularına yanıt vermeyi engelleyebilirsiniz.
options { allow-recursion { 127.0.0.1; };
1 Yorum
Kaliteli bir makale olmuş, teşekkürler.