DDoS saldırıları her geçen gün önemi artırıyor ve yeni yeni yöntemler, teknikler keşfediliyor. Son zamanlarda kullanılan yöntemler standart araç tabanlı yöntemlerden oldukça farklı, arka planı düşünülmüş, tasarlanmış ve yüksek boyutta olmaktadır. Yeni olarak nitelendirilse de teknik olarak daha önceden bilinen, teorik olarak dökümante edilmiş fakat pratiğini görmediğimiz tipte saldırılar bunlar.
2014 yılında NTP servisindeki monlist özelliğini istismar eden Amplification DDoS saldırısı 400 Gbps(2013 yılı Türkiye internet çıkışına yakın) civarında idi ve bu rakam dünyadaki en ciddi ddos saldırısı olarak tarihe geçmiştir.
Amplification DDoS Saldırıları
Standart DDoS saldırılarında amaç olabildiğince çok fazla sayıda sistem üzerinden hedef sistemlere belirli sayıda paket gönderimi yaparak devre dışı kalmasını sağlamaktır. Amplification tipi saldırılarında ise trafik kapasitesi yüksek aracı sistemler kullanarak saldırgan sahip olduğu bandwidth miktarından çok daha fazlasını hedef sisteme yönlendirir.
İlk olarak Smurf olarak adlandırılan bir ddos saldırısında kullanılan bu yöntem hızlı bir şekilde alınan önlemlerle internet dünyasının gündemini uzunca bir süre meşgul etmemişti. Tekrar 2009 yılında DNS kullanılarak karşımıza çıktı, 2013 yılında ise DNS kullanılarak o zamana kadar ki en büyük DDoS saldırısı (Yaklaşık 300 Gbps) gerçekleştrildi. 2014 yılında NTP ile birlikte 400 Gbps’e ulaşmış oldu. Bu rakkamlar ciddi koruması ve dağıtık altyapısı olmayan erişim sağlayıcılar için oldukca tehlikeli ve önlemesi bir o kadar da zordur.
Smurf saldırısı broadcast’e gönderilen bir adet ICMP paketine karşılık ilgili ağda açık olan tüm sistemlerin cevap vermesi mantığıyla çalışır. Böylece hedef broadcast adresinde 100 tane sistem açıkca bir paket ile 100 paketlik cevap alınabilir. Gönderilen paketlerin kaynak ip adresi ddos yapılmak istenen hedef olarak verilirse saldırgan 10 Mbps trafikle hedefe 1 Gpbs saldırı trafiği ürtebilir. Burada saldırıya yapan kaynak adresleri ilgili ağda bulunan ve broadcast ICMP paketlerine cevap dönen sıradan sistemler olacaktır.
Broadcast’e gelen ICMP isteklerine cevap vermeyecek şekilde yapılındırılmasıyla bu zafiyet hızlıca kapatılmıştır.
Linux sistemlerin icmp paketlerine (broadcast) cevap verip vermediği aşağıdaki komutla öğrenilebilir.
sysctl net.ipv4.icmp_echo_ignore_broadcasts
|
komutun çıktısının aşağıdaki gibi olması gerekir.
net.ipv4.icmp_echo_ignore_broadcasts = 1
Smurf ICMP kullandığı için ve icmp genellikle yardımcı protokol görevine sahip olduğu için ICMP’nin kapatılması ile Smurf ve benzeri bir çok atak engellenmiş oldu. Amplification saldırıları ICMP’nin yanında NTP, SNMP ve DNS protokolleri üzerinden de gerçekleştirilebilir. Son zamanlarda daha çok DNS ve NTP kullanılarak gerçekleştirildiğini görüyoruz.
NTP üzerinden gerçekleştirilen amplification ddos saldırıları
NTP, zaman senkronize protokolüdür. Bilişim sistemlerinin merkezi olarak zaman bilgilerini alıp güncelleyeceği bir servistir. UDP/123 portundan çalışır ve herhangi bir kimlik doğrulama aşaması bulunmamaktadır.
Öncelikle belirtmek gerekir ki bir protokol UDP tabanlı ise onun guvenliğini sağlamak icin protokolden iki kat daha fazla uygulama uygulama geliştiricisine iş düşer.
Bir NTP sunucusunun durumunu öğrenmek için aşağıdaki komut yeterli olacaktır.
[root@s-guard19 ~]# ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
-208.53.158.34 164.244.221.197 2 u 266 512 377 20.715 8.447 0.091
+50.116.55.65 200.98.196.212 2 u 247 512 377 7.651 -1.170 0.225
+129.250.35.250 209.51.161.238 2 u 269 512 377 1.025 -0.229 0.096
*10.0.77.54 172.18.1.12 3 u 437 1024 377 0.135 0.568 0.522
|
NTP Monlist özelliği ve istismarı
ntp sunucular, kendine daha önce sorgu yapan ip adreslerini bellekte tutar ve bunu bir sorgu ile öğrenmemize fırsat tanır. Aşağıdaki komut ile o NTP sunucuyu kullanan son 600 ip adresi alınabilir.
[root@s-guard19 ~]# ntpdc -n -c monlist 50.22.202.163|more
remote address port local address count m ver code avgint lstint
===============================================================================
50.22.202.163 58609 50.22.202.163 2 7 2 0 32 0
184.45.66.119 80 50.22.202.163 69 7 2 0 7 0
83.250.130.244 80 50.22.202.163 1 7 2 0 0 0
199.255.209.211 6005 50.22.202.163 4914 7 2 0 4 0
89.108.86.169 21 50.22.202.163 736 7 2 0 4 0
83.108.22.62 80 50.22.202.163 76 7 2 0 4 1
141.0.23.147 80 50.22.202.163 140 7 2 0 4 2
83.98.143.20 80 50.22.202.163 142 7 2 0 4 2
76.76.4.146 80 50.22.202.163 2577 7 2 0 4 2
85.153.46.92 80 50.22.202.163 1383 7 2 0 3 2
5.39.114.89 53 50.22.202.163 4876 7 2 0 2 3
139.216.201.12 80 50.22.202.163 22 7 2 0 269 3
207.244.74.132 6005 50.22.202.163 97 7 2 0 4 3
178.235.0.18 80 50.22.202.163 38 7 2 0 7 4
184.173.86.203 80 50.22.202.163 105 7 2 0 80 8
31.169.77.59 35157 50.22.202.163 9 7 2 0 154 22
…
|
Burada gönderilen isteğin (NTP isteği) boyutu incelenirse yaklaşık olarak 250 Byte civarında olduğu gözükecektir. Bu pakete dönen cevapların toplamı (bir adet isteğe karşı toplamda 10-15 cevap dönmektedir) 7500 Byte’a yakındır. Buradan bir istekle hedef sistem üzerinden 30 kat daha fazla trafik üretebileceğimizi görebiliriz.
NTP, UDP tabanlı olduğu için gönderilecek isteklerde kaynak ip adresi olarak ddos saldırısı gerçekleştirilmek istenen hedef verilirse saldırgan 10 Mbps ile 300 Mbps trafik üretebilir. Bunun gibi 100lerce açık NTP sunucusu bularak
Monlist özelliği aktif sistemlerin tespiti
Nmap’in “ntp monlist” scripti kullanarak bir ağdaki monlist özelliği aktif olan NTP sunucuları tespit edilebilir.
nmap -sU -pU:123 -Pn -n –script=ntp-monlist 192.168.0.0/24
|
Örnek bir çıktı aşağıdaki gibi olacaktır.
[root@s-guard19 /usr/local/share/nmap/scripts]# nmap -sU -pU:123 -Pn -n –script=ntp-monlist localhost
Starting Nmap 5.35DC1 ( ) at 2014-03-09 10:10 CDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
PORT STATE SERVICE
123/udp open ntp
| ntp-monlist:
| Target is synchronised with 129.250.35.251
| Alternative Target Interfaces:
| 10.32.83.4 50.22.202.133 50.22.202.163
| Private Servers (1)
| 10.0.77.54
| Public Servers (3)
| 38.229.71.1 50.116.38.157 129.250.35.251
| Other Associations (14)
| 127.0.0.1 (You?) seen 3 times. last tx was unicast v2 mode 7
| 84.24.85.156 seen 11 times. last tx was unicast v2 mode 7
| 94.242.255.62 seen 10 times. last tx was unicast v2 mode 7
| 199.255.209.211 seen 11 times. last tx was unicast v2 mode 7
| 141.0.23.147 seen 11 times. last tx was unicast v2 mode 7
| 130.193.170.56 seen 10 times. last tx was unicast v2 mode 7
| 178.235.0.18 seen 10 times. last tx was unicast v2 mode 7
| 84.248.95.88 seen 21 times. last tx was unicast v2 mode 7
| 86.141.107.15 seen 11 times. last tx was unicast v2 mode 7
| 76.76.4.146 seen 10 times. last tx was unicast v2 mode 7
| 31.220.4.151 seen 10 times. last tx was unicast v2 mode 7
| 106.219.29.214 seen 10 times. last tx was unicast v2 mode 7
| 83.98.143.20 seen 9 times. last tx was unicast v2 mode 7
|_ 50.90.225.202 seen 4 times. last tx was unicast v2 mode 7
Nmap done: 1 IP address (1 host up) scanned in 1.17 seconds
|
Korunma Yöntemleri
En temel ve önemli korunma yöntemi NTP sunucusu açık olması gerekmiyorsa servisin kapatılması veya güvenlik duvarı arkasında ise portun Firewalldan kapatılmasıdır.
NTP sunucu olarak hizmet verilmesi gerekiyorsa ilk adımdaki öneriler işe yaramayacaktır. Bunun icin NTP yapılandırma dosyasına gidip “disable monitor” satırının eklenmesi ve ntp servisinin yeniden başlatılması yeterli olacaktır.
[root@s-guard19 ~]# /etc/rc.d/ntpd restart
Stopping ntpd.
Starting ntpd.
[root@s-guard19 ~]# ntpdc -n -c monlist 50.22.202.163
***Server reports data not found
İnceleme amaçlı örnek bir monlist paket dosyasına www.bga.com.tr/ntp.pcap adresinden erişim sağlanabilir.