Przez ostatnich kilka lat można zaobserwować wzrost w atakach DRDoS na specyficzne usługi, a nie bezpośrednio podatności wysysające łącze chociaż cel ostateczny jest ten sam. Ataki DRDoS odbywają się z reguły na systemy, które zezwalają swoim klientom na niezautentykowane otrzymywanie większych odpowiedzi od zapytania wpływając tym samym negatywnie na ruch sieciowy. Najszczęstrzym przykładem jest oczywiście DNS i otwarte resolwery oraz SNMP. Jednak do tego grona od 10.01.2014r można zaliczyć także protokół czasu NTP.
W tytułowym ataku – atakujący podszywa adres źródłowy zainfekowanego ruchu podmieniając adres źródłowy z docelowym. Konkretne odpowiedzi NTP mogą w ten sposób wygenerować wysoki wskaźnik BAF (Bandwidth Amplification Factor). Protokół NTP służy do synchronizacji czasu urządzeń i operuje na bezpołączeniowym protokole UDP by wysyłać i otrzymywać wiadomości bez walidacji adresu IP źródła wysyłającego zapytania. Wobec czego atak jest bardzo podobny do atakowania DNS. Zagłębiając się w strukturę pakietu – atakujący podnosi wartość requestu REQ_MON_GETLIST na 3360 oraz REQ_MON_GETLIST_1 na 5500 co znacznie podnosi BAF.
Czy jestem podatny?
1. W pierwszej kolejności sprawdź wersję ntpd (jeżeli jest to 4.2.6.x – jesteś podatny)
2. Sprawdź czy wiadomości BAF REQ_MON_GETLIST(*) są wyłączone:
#ntpq -c rv
#ntpdc -c sysinfo
#ntpdc -n -c monlist
3. Sprawdź podatność skryptem do nMapa:
#nmap -sU -pU:123 -Pn -n –script=ntp-monlist [SERVER_NTP]
Obrona
Wystarczy wpis w /etc/ntp.conf dla ipv4 oraz ipv6:
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
Opcjonalnie można chronić sieć segmentowo:
restrict default noquery
restrict localhost
restrict 192.168.0.0 netmask 255.255.255.0 #sieć
restrict 192.168.5.100 #host
Źródełko: http://www.publicsafety.gc.ca/cnt/rsrcs/cybr-ctr/2014/av14-001-eng.aspx
REQ_MON_GETLIST