7 kwietnia

Ataki DOS

Istnieje wiele możliwych ryzyk wynikających z ekspozycji systemów informatycznych  w sieci Internet. Do najlepiej znanych zaliczy można  kradzież bądź manipulację przechowywanymi w nich danymi przeprowadzoną w wyniku ataku w warstw aplikacyjnej. Jednakże również groźna a często nawet generująca większe straty niedostępność systemów będąca konsekwencją udanego ataku typu DOS.  

Czym jest atak DOS? 

Z definicji ataki typu DOS czyli Denial of Service (Odmowa usługi) to ataki polegające na wygenerowaniu przez atakującego tak dużego wolumenu zapytań w stronę atakowanego systemu, że w konsekwencji doprowadza on do jego przeciążenia lub zapchania wykorzystywanego przez niego łącza internetowego i tym samym niedostępności serwowanej usługi. 

Ze względu na stosunkowo znaczący przyrost mocy obecnie wykorzystywanych serwerów w wielu przypadkach pojedynczy atakujący nie jest w stanie wygenerować tak dużego wolumenu zapytań aby doprowadzić do przeciążenia jednakże ataki DOS są obecnie rzadko spotykane. Często mamy natomiast do czynienia z  ich pochodną tzw. atakami DDOS czyli Distributed Denial of Serivice. 

Klasyczna różnica polega na multiplikacji atakujących. Podczas gdy w przypadku DOS mamy do czynienia z pojedynczym atakującym generującym w zależności od wybranej formy ataku znaczną liczbę zapytań o tyle w przypadku DDOS ta sam liczba zapytań jest zwielokrotniania przez ogromną liczbę atakujących. 

Początkowo ataki DDOS przeprowadzane były przez zorganizowane grupy hakerskie starające się pokazać swoją dominację lub też zaprotestować przeciwko konkretnym działaniami atakowanej organizacji. Obecnie jednak atakujący stali się dużo bardziej wirtualnii. W znakomitej większości przypadków hakerzy przed przeprowadzeniem ataku doprowadzają do zainfekowania tysięcy lub nawet milionów nieświadomych niczego użytkowników Internetu (np. wykorzystując do tego specjalnie przygotowanego wirusa). Tak spreparowane komputery staja się atakującymi i w zadanym czasie rozpoczynają bombardowanie celu ogromną liczbą spreparowanych zapytań. 

O ważności problematyki ataków DOS we współczesnym świecie znakomicie świadczą wydarzenia z początku roku 2012 kiedy to kluczowe serwisy internetowe instytucji polskiej administracji publicznej na kilka tygodniu stały się celem takich ataków. Przez ten okres mogliśmy obserwować powtarzające się okresy dostępności i niedostępności takich stron jak sejm.gov.pl, premier.gov.pl, prezydent.gov.pl i wielu innych. Ze względu na masowy charakter ww. wydarzeń wydaje się właściwym ich dokładniejsze omówienie aby lepiej przybliżyć problematykę tego typu zagrożeń. 
 
Zespół CERT.GOV.PL zajmujący się badaniami nad bezpieczeństwem informatycznych systemów rządowych w niedługim okresie po ustaniu ww. ataków wydał krótki kilkustronicowy raport mający z grubsza scharakteryzować wykryte problemy. Niestety raport koncentruje się głównie na analizie podstawowych mechanizmów ataku wykorzystanych przez hakerów a mianowicie zapytań w warstwie aplikacyjnej (o metodach ataków DOS w dalszej części art. ). 
 
Z analizy raportu wynika, że generowany (na przykładzie badanej instytucji) ruch nie przekraczał w większości kilkuset pakietów na sekundę co nie stanowi tak dużego wolumenu aby doprowadzi do niedostępności współczesnych serwerów. W konsekwencji jak słusznie zauważają redaktorzy w serwisie niebezpiecznik.pl albo mieliśmy do czynienia z bardzo słabymi starymi serwerami albo co dużo bardziej prawdopodobne raport nie opisuje innych form ataków DOS wykorzystywanych symultanicznie do ataków za pomocą zapytań HTTP. 

Jednakże pomimo takiej skromnej liczby informacji dane tego typu wskazują na znacznie zagrożenie wynikające z ataków DOS i powinny skutecznie przekonywać do skrupulatnego się przed nimi zabezpieczania. 

Rodzaje ataków DOS

Możliwe do zrealizowania ataki DOS można generalnie podzielić na dwie kategorie tj. ataki w warstwie sieciowej oraz ataki w warstwie aplikacyjnej.  W ramach każdej kategorii istnieje wiele dostępnych form przeprowadzenia samego ataku. Formy bazują na różnych protokołach i ich szczególnych właściwościach. Jednakże każda z nich ma celu albo doprowadzanie do przeciążenia atakowanego urządzenia albo do wyczerpania dostępnego dla niego łącza internetowego. Drugi cel jest niezwykle groźny ze względu na fakt że wyczerpanie dostępnej przepustowości łącza afektuje wszystkie posiadane przez ofiarę system. 

Poniżej postaram się w skrócie omówić najczęściej spotykane formy ataków w każdym z dostępnych rodzajów. 

Ataki w warstwie sieciowej 

  • TCP SynFlood 

Bazujący na strukturze protokołu TCP i wykorzystywanej przez niego formule trój-etapowego nawiązywania połączenia Syn Flood jest jednym z najczęściej spotykanych rodzajów ataków. 

Przebiega on w następujący sposób. W pierwszej kolejności atakujący rozpoczyna rozsyłanie w stronę ofiary znaczącej ilości pakietów TCP z ustawioną flagą SYN. Ofiara rozpoznaje ww. pakiety jako próbę chęć nawiązania połączenia w związku z tym zapisuje je do bufora (zwanego backlog i posiadającego ograniczoną pojemność) oznaczając jako SYN-Received i odsyła pakiet z ustawioną flagą SYN-ACK oczekując tym samy na odpowiedź z flagą ACK. Niestety odpowiedź nie jest nigdy odsyłana a każdy nowy pakiet z flaga SYN coraz bardziej zapełnia wspomniany wcześniej backlog. 

W momencie gdy brakuje już miejsca na zapis nowych sesji TCP są one odrzucane a dostęp do atakowanego systemu staje się mocno ograniczony. 

Ataki typu SynFlood mogą być realizowane na klika sposobów. Przede wszystkim atakujący może rozsyłać pakiety ze swoim prawdziwym źródłowym adresem IP lub też może posługiwać się spoofingiem wstawiając jako źródło wiele różnych nieprawdziwych adresów. 

Dodatkowo oba z wymienionych sposobów realizacji SynFlood mogą być wykorzystywane zarówno przez pojedynczego atakującego jako i w strukturze rozproszonej w postaci ataku DDOS. 

W sytuacji wykrycia ewentualnego ataku  fakt czy adresy źródłowe są fałszywe czy prawdziwe ma kluczowe znaczenie. W przypadku prawdziwych adresów (zwłaszcza w sytuacji gdy mamy do czynienia z pojedynczym lub kilkoma atakującymi ) możemy łatwo zablokować cały ruch z nich przychodzący i tym samym ostatecznie zablokować dany atak. 

Niestety w większości przypadków spotykamy się z bardzo dużą liczbą atakujących posługujących się fałszywymi adresami. W związku z tym aby obronić się przed atakami SynFlood należy podjąć kilka działań zapobiegawczych. 

Możliwe jest przeciwdziałania w oparciu o kilka metod. Przede wszystkim można próbować zwiększać pojemność backloga oraz zmniejszać czasy wygasania sesji Syn-Received. Jednakże praktyka pokazuje, że takie działania są nieefektywne a w wielu przypadkach mogą prowadzić do nieprzewidzianych problem. 

Najskuteczniejszą metodą obrony jest zastosowanie wyspecjalizowanych mechanizmów dostępnych we współczesnych routerach i zaporach sieciowych.  Urządzenia tego typu wykorzystują funkcjonalność TCP proxy i są wstanie aktywnie i niezwykle skutecznie przeciwdziałać SynFlood. Mechanizm TCP proxy może działać w dwóch trybach. 

Najskuteczniejszą metodą obrony jest zastosowanie wyspecjalizowanych mechanizmów dostępnych we współczesnych routerach i zaporach sieciowych. Urządzenia tego typu wykorzystują funkcjonalność TCP proxy i są wstanie aktywnie i niezwykle skutecznie przeciwdziałać SynFlood. Mechanizm TCP proxy może działać w dwóch trybach. 

W pierwszym każda sesja TCP kierowana w stronę chronionego serwera jest przechwytywana przez firewall który w imieniu serwera wysyła pakiet z flagą SYN-ACK. Jeżeli firewall otrzyma pakiet odpowiedzi z flagą ACK przesyła on w imieniu inicjującego połączenie pakiet SYN do chronionego serwera po czym odpowiada pakietem ACK. 

W ten sposób nawiązana zostaje sesje TCP pomiędzy inicjatorem a chronionym serwerem która od tego momentu traktowana jest przez firewall jako bezpieczna. 
Jeżeli natomiast inicjator nie odpowie na odesłany przez firewall pakiet z flagą SYN-ACK po upływie określonego okresu połowicznie nawiązana sesja zostanie usunięta. 

W drugim trybie firewall działa jako aktywny monitor nawiązywanych sesji TCP. Każdy nowy pakiet TCP SYN jest przesyłany do chronionego serwera a sesja jest monitorowana pod kątem otrzymania odpowiedzi inicjatora na pakiet SYN-ACK odesłany przez serwer. 
Jeżeli firewall wykryje pakiet ACK sesja uznawana jest za bezpieczną jeżeli natomiast po upływie określonego okresu odpowiedź nie nadejdzie firewall w imieniu inicjatora wyśle do chronionego serwera pakiet TCP RST aby zamknąć półotwarta sesję. 

  • UDP/ICMP Flood 

Innymi często stosowanymi i ciekawymi przykładami ataków DOS w warstwie sieciowej są ataki wykorzystujące protokół UDP oraz protokół ICMP. Oba typy ataków najczęściej wykorzystywane są jako ataki DDOS ze względu na fakt, że ich skuteczność warunkowane jest sytuacją w której suma przepustowości łącza atakującego/-ych jest wyższa niż wartość przepustowości łącza ofiary. Oczywiście ataki zmierzają do zapełnienia łączą wykosztowanego przez atakowany system. 

Mechanizm działania ICMP Flood jest niezwykle prosty lecz  w wielu przypadkach bardzo skuteczny.
W jednym czasie grupa atakujących komputerów zaczyna wysyłać w stronę ofiary ogromną liczną zapytań typu ICMP Echo-Request (popularny ping). Odpowiedzi generowane przez ofiarę zajmują jej zasoby lecz w szczególności ze względu na swój duży wolumen angażują przepustowość łącza. 

Ataki wykorzystujące protokół UDP mają podobna strukturę. Atakujący generują w kierunku ofiary dużą liczbę pakietów UDP skierowanych na losowo wybrane numery portów. Ofiara sprawdza czy na zadanych portach są dostępne usługi i jeżeli nie odsyła komunikat ICMP z informacja Service unavaiable.
Ponownie znaczny wolumen zapytań doprowadza do przeciążenia ofiary i zajęcia wykorzystywanego przez nią łącza internetowego. 

Obrona przed ww. typami ataków jest zasadniczo niezwykle prosta. Wystarczy na wykorzystywanych firewall (o ile na to pozwalają) limitować liczbę pakietów ICMP/UDP przesyłanych w kierunku chronionego serwera w zadanym interwale czasowym. Limit powinien być ustawiony na podstawie diagnozy jaka wartość jest akceptowalna dla wykorzystywanego przez nas środowiska.
Dodatkowo najprostszym z dostępnych rozwiązań jest całkowite ograniczenie ruchu ICMP oraz UDP (na wybranych portach) pochodzącego z Internetu. 

Ataki DOS w warstwie aplikacyjnej 

Znacznie groźniejszymi i trudniejszymi w przeciwdziałaniu są ataki DOS wykorzystujące protokoły warstwy aplikacyjnej tj. np. HTTP, FTP etc. 

Najprostszym i najczęściej spotykanym atakiem (ten typ ataku wykorzystywany był w opisywanych wcześniej atakach na strony polskiej administracji) jest DDOS polegający na próbie nawiązania bardzo dużej liczny sesji HTTP z atakowanym serwerem WWW np. poprzez wielokrotne pobieranie jednej z serwowanych przez niego stron (np. index.php choć lepiej jeżeli jest to strona i większej wadze (w KB)). 

W sytuacji zmasowanego ataku wykorzystującego ogromna liczbę przykładowo zawirusowanych wcześniej komputerów ofiara będzie odpowiadać do momentu osiągnięcia liczby możliwych obsługiwanych sesji lub też do czasu całkowitej utylizacji wykorzystywanego przez nią łącza. 

Podczas wspominanych ataków hakerzy umieścili na kilku serwerach (botach) wcześniej spreparowany skrypt (plik index.php), który wywołany (najprawdopodobniej przez zawirusowane komputery lecz również przez fizycznych atakujących) rozpoczynał w pętli znaczną ilość pobrań strony tytułowej atakowanego serwisu w wielu przypadkach skutecznie doprowadzając do jego niedostępności. 

Problem z ochroną przez atakami w warstwie aplikacji wynika z dużej trudności odróżnienia czy generowane zapytania pochodzą od normalnych użytkowników serwisu  czy też od atakujących. W bardzo wielu przypadkach zapytania pochodzą z klas adresowych ISP w ramach których znajdują się zarówno właściwi użytkownicy jak i hakerzy. 

  • ​Obrona za pomocą urządzenia typu firewall

Najprostszym mechanizmem obrony jest limitowanie na firewallu liczby możliwych sesji TCP/http etc. skierowanych w stronę chronionego serwera lub też pochodzących z jednego adresu IP.  Tego typu działania może jednak w przypadku znacznie obciążonych serwisów generować wiele zdarzeń o charakterze fałszywie-pozytywnym, zwłaszcza przy limitowaniu adresów źródłowych (zapytania pochodzące z sieci z NAT). 

  • ​Multiplikacja serwerów

Innymi w miarę skutecznym mechanizmem jest multiplikacja chronionych serwerów i wykorzystywanie sprzętowych urządzeń rozkładających ruch pomiędzy tak stworzoną farmę. W takiej architekturze należy jednak zapewnić również właściwą przepustowość wykorzystywanego łącza internetowego (np. poprzez zastosowanie dojścia ze strony kliku ISP co jednak jest kosztowne wymaga bowiem użycia BGP). 

  • ​urządzenia dedykowane do ochrony przed atakiem DOS

Najbardziej wysublimowanymi mechanizmami ochrony są wprowadzane od niedawne wyspecjalizowane urządzenia przeznaczone tylko i wyłącznie do ochrony przez atakami DOS. Urządzenia tego typu wykorzystują szereg mechanizmów począwszy od cache-ownia i optymalizacji ruchu przez load-balancing i blokowanie ruchu w oparciu o listy reputacyjne i geolokalizacje aż do wykorzystania specjalnych algorytmów heurystycznych analizujących sesje pod katem wykrycia czy zastały rozpoczęte przez człowieka czy też przez skrytp hakerski. 

Takie sprzętowe podejście jest dość skuteczne lecz jednocześnie niezwykle drogie w związku z czym mogą sobie pozwolić na nie jedynie największe organizacje. 

Czy można się obronić? 

Kompleksowa analiza posiadanej infrastruktury wraz z implementacją rekomendowanych rozwiązań i świadomym monitoringiem może pozwolić na znacznie zniwelowanie ryzyka skutecznego ataku DOS. Jednakże, ze względu na mnogość możliwości oraz charakter ataków (zwłaszcza w warstwie aplikacyjnej) nigdy nie będziemy w stanie całkowicie wyeliminować ryzyka, a każdy dostatecznie szeroko zakrojony i rozbudowany atak odniesie skutek.  

Zobacz także:

Masz pytania? Napisz do nas!

>