NTP Servisi Kullanarak Gerçekleştirilen Amplification DDoS Saldırıları

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 ( http://nmap.org ) 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.