4. TECHNIKI PRZEPROWADZANIA ATAKÓW NA SIECI KOMPUTEROWE Przypomnienie pojęcia stosu protokołów komunikacyjnych Oprogramowanie sieci komputerowych (podobnie, jak każde inne złożone oprogramowanie) ma strukturę warstwową. Każda warstwa jest związana z pewnym protokołem komunikacyjnym. Komplet protokołów komunikacyjnych obejmujący wszystkie warstwy (w danym modelu), od warstwy bezpośrednio kontaktującej się ze sprzętem sieciowym do warstwy bezpośrednio kontaktującej się z użytkownikiem, nazywamy stosem protokołów (protocol stack). Poza wzorcowym (teoretycznym – nigdzie nie zaimplementowanym w całości) stosem protokołów ISO / OSI, w praktyce można napotkać wiele różnych realizacji takich stosów – najbardziej rozpowszechniony jest stos określany jako TCP / IP (nie jest to ścisłe określenie, gdyż nie determinuje, na jakich protokołach warstwy fizycznej i łącza danych powinien się opierać).
Porównanie istniejącego stosu protokołów TCP/IP z wzorcowym stosem ISO-OSI: warstwa ISO-OSI TCP/IP warstwa aplikacji prezentacji aplikacji sesji transportowa transportowa sieciowa międzysieciowa łącza danych dostępu do sieci fizyczna
(i ewentualnie stopek). Każdy protokół wchodzący w skład pewnego stosu operuje na właściwych dla niego jednostkach informacji, co jest związane z dodawaniem do przesyłanych informacji odpowiednich nagłówków (i ewentualnie stopek). Przykład Porcja informacji przesyłana przez protokół HTTP w oparciu o stos TCP / IP przez sieć Fast Ethernet: preambuła pole nagłówek nagłówek IP nagłówek TCP informacja HTTP pole CRC startu Ethernet warstwa fizyczna warstwa łącza warstwa sieciowa warstwa transportowa warstwa aplikacji
Wiele spośród ataków na sieci komputerowe można postrzegać jako ataki na poszczególne rodzaje nagłówków (dokładniej: na funkcje obsługujące pola w nagłówkach) używanych przez protokoły. Źródłem problemów jest to, że projektanci protokołów często brali pod uwagę jedynie prawidłowe sytuacje występujące w trakcie wymiany pakietów z informacją, a nie brali pod uwagę sytuacji nieprawidłowych (takich, które mogą być wynikiem fałszowania pakietów). Według [K. Krysiak] zagrożenia bezpieczeństwa sieci komputerowych można poklasyfikować następująco według poziomu, na którym występują: Poziom Przykłady Sprzęt Pożar, zalanie, awaria zasilania, uszkodzenia mechaniczne Warstwa dostępu do sieci Podsłuch ramek, fałszowanie adresów fizycznych (MAC) Warstwa międzysieciowa Fałszowanie adresów IP, zalewanie pakietami PING Warstwa transportowa Skanowanie portów, zalewanie segmentami SYN Warstwa aplikacji Przepełnianie bufora, wirusy, zalewanie e-mail (spam) Użytkownik Nieuprawnione przejęcie hasła, nielegalne kopiowanie
Szczegółowe omówienie zagrożeń i sposobów zapobiegania 1) Sprzęt a) Pożar – instalacja czujników dymu, wyposażenie pomieszczeń wykonane w jak największej części z materiałów niepalnych. b) Zalanie – nie należy umieszczać serwerowni w piwnicy, należy unikać stawiania sprzętu bezpośrednio na podłodze, kopie zapasowe przechowywać w oddzielnej (bezpiecznej) lokalizacji. c) Awaria zasilania – UPS powinien być w stanie podtrzymywać napięcie wystarczająco długo, żeby wyłączenie systemów komputerowych nie spowodowało utraty danych. d) Uszkodzenie mechaniczne – kable należy prowadzić w korytkach kablowych takimi trasami, żeby zminimalizować prawdopodobieństwo przypadkowego uszkodzenia. e) Przegrzanie – klimatyzacja w serwerowni (szczególnie w przypadku niedużych rozmiarów). f) Kradzież – instalacja systemu alarmowego, kamery. g) Nieuprawniony dostęp do sprzętu sprzątanie (w szczególności w serwerowni) tylko w obecności osób uprawnionych.
2) Warstwa dostępu do sieci Zagrożenia w tej warstwie mogą być spowodowane wyłącznie przez użytkowników sieci lokalnej lub wskutek włamania (lub zalogowania) się z zewnątrz i uruchomienia procesu na którymś z komputerów w sieci lokalnej. a) Podsłuch ramek (sniffing) – polega na (programowym) przestawieniu swojej karty sieciowej w tryb rozrzutny (promiscuous mode) i przyjmowaniu do bufora wszystkich ramek (z dowolnymi adresami MAC), a nie tylko kierowanych pod dany adres. Jest skuteczny w sieciach opartych na medium rozgłoszeniowym (klasyczny Ethernet 10 MB, sieci bezprzewodowe), a dużo mniej w sieciach opartych na przełącznikach (switch). Zapobieganie – szyfrowanie transmisji. b) Podszywanie się pod cudzy adres fizyczny (MAC spoofing) – polega na podsłuchaniu (lub dowiedzeniu się w inny sposób) adresu MAC innej maszyny w tej samej sieci i wysyłaniu ramek z wpisanym tym adresem jako adresem nadawcy. Ponieważ przełączniki (w sieciach kablowych) zapamiętują, skąd przybyła ramka z danym adresem nadawcy, stwarza to szansę otrzymywania ramek przeznaczonych dla tej maszyny. Z kolei w słabo zabezpieczonych sieciach bezprzewodowych adresy MAC mogą służyć do uwierzytelniania użytkowników uprawnionych do korzystania z sieci. Zapobieganie – wykorzystywanie lepszych metod identyfikacji użytkowników, niż tylko przy użyciu adresów fizycznych.
c) Zalewanie przełącznika dużą liczbą ramek z rozmaitymi adresami MAC nie istniejącymi w danej sieci (MAC flooding) może spowodować wypełnienie pamięci przełącznika przeznaczonej na pamiętanie adresów fizycznych, a w konsekwencji zakłócenie jego działania. Zapobieganie – konfiguracja oprogramowania przełącznika w taki sposób, aby pamiętał stałe adresy MAC skojarzone z poszczególnymi portami, lub zapamiętywał co najwyżej ograniczoną ich liczbę. d) Zalewanie przełącznika dużą liczbą ramek z adresami rozgłoszeniowymi lub grupowymi tak, aby ich retransmisja przez wiele innych portów pochłaniała cała moc obliczeniową procesora przełącznika, a tym samym utrudniała spełnianie innych funkcji. Zapobieganie - odpowiednia konfiguracja oprogramowania przełącznika (tak, aby uniemożliwić nadużycia). e) Zakłócanie działania protokołu STP (Spanning Tree Protokol) przez wysyłanie fałszywych ramek BPDU w sieciach zawierających wiele przełączników. Zapobieganie – jak wyżej (BPDU Guard). f) W sieciach podzielonych na wirtualne sieci lokalne (VLAN) preparowanie specjalnych ramek umożliwiających przekraczanie granic pomiędzy VLAN-ami. Zapobieganie – jak wyżej. W sieciach bezprzewodowych występuje więcej zagrożeń, niż w sieciach kablowych. Należy zwracać uwagę na ograniczanie zasięgu stacji bazowych (na przykład tylko do pomieszczeń w budynku).
3) Warstwa międzysieciowa Ataki w tej warstwie mogą być przeprowadzone zarówno z sieci lokalnej, jak i z dowolnej innej sieci, z którą sieć lokalna może kontaktować się. Większość ataków tego rodzaju wykorzystuje słabości w starszych wersjach oprogramowania obsługującego nagłówki pakietów IP. Struktura nagłówka pakietu IPv.4: 1 bajt 2 bajt 3 bajt 4 bajt nr wersji długość typ obsługi długość całkowita pakietu protokołu nagłówka identyfikator flagi przesunięcie (3 bity) (13 bitów) czas życia protokół suma kontrolna nagłówka nadrzędny adres źródłowy IP adres docelowy IP O P C J E (0 – 10 słów czterobajtowych)
a) Zalewanie komputera (zazwyczaj serwera usług sieciowych) pakietami ICMP (ICMP flooding). Zazwyczaj jest przeprowadzane przy użyciu większej liczby komputerów, aby zwiększyć skuteczność. Jednym ze sposobów jest wysłanie pakietu ping ze sfałszowanym adresem nadawcy (ustawionym na adres celu ataku) na adres rozgłoszeniowy w sieci atakowanego (Smurf attack) – skutkiem może być wysłanie wielu odpowiedzi ping jednocześnie na adres atakowanego komputera. O ile trudno jest przeciwdziałać takiemu atakowi jako atakowi wewnętrznemu, o tyle w przypadku ataku z zewnątrz przeciwdziałanie polega na zatrzymywaniu przez zaporę sieciową (firewall) wszelkich pakietów przychodzących z sieci zewnętrznej, które mają ustawiony adres nadawcy z puli adresów prywatnych i/lub rozgłoszeniowy adres odbiorcy. b) Fałszowanie danych usługi ARP (ARP spoofing) – polega na wysyłaniu (w obrębie sieci lokalnej) ramek odpowiedzi protokołu ARP zawierających fałszywe adresy IP, w celu skojarzenia przez komputery w danej sieci z adresem MAC atakującego innego adresu IP, niż został mu faktycznie przypisany. Skutkiem może być na przykład przesyłanie na adres MAC atakującego pakietów IP przeznaczonych dla lokalnego serwera, które będą w ten sposób podsłuchiwane. Przeciwdziałanie – odpowiednia konfiguracja usługi ARP.
c) Wykorzystywanie błędów procesu fragmentacji i scalania pakietów (teardrop) polega na wysyłaniu pakietów IP stanowiących rzekome fragmenty podzielonego datagramu IP z wypełnionymi polami „długość całkowita” oraz „przesunięcie” w taki sposób, aby w buforze odbiorcy fragmenty częściowo nakładały się na siebie (w prawidłowej sytuacji powinny pasować do siebie „na styk”). W przypadku starszych wersji oprogramowania protokołu IP często powoduje to zawieszenie lub restart całego systemu operacyjnego. Zapobieganie polega głównie na regularnej aktualizacji posiadanego oprogramowania (nakładaniu łat). Zadanie skompletowania całego datagramu (a następnie ponownego podzielenia go na fragmenty w celu przesłania przez sieć lokalną) może być przerzucone na firewall, ale w istotnym stopniu spowalnia to jego działanie. d) Podobny charakter ma atak polegający na wysłaniu fragmentów jednego datagramu IP, których łączna długość przekracza wartość maksymalną (64 KB). Tego rodzaju atak często jest nazywany „ping of death”, ponieważ wysyłane fragmenty są oznaczane jako fragmenty ICMP echo request. Zapobieganie – jak w poprzednim przypadku. e) Fałszywe pakiety ICMP redirect mogą być wykorzystywane do nakłaniania nadawcy do wysyłania kolejnych pakietów inną trasą, niż dotychczas, przy użyciu trasowania źródłowego. Tego rodzaju atak ma nieduże szanse powodzenia, gdyż rzadkością obecnie jest zezwalanie ruterom na stosowanie się do trasowania źródłowego.
4) Warstwa transportowa Ataki w tej warstwie mają podobny charakter, jak w warstwie międzysieciowej i również mogą być przeprowadzane zarówno jako wewnętrzne (z sieci lokalnej), jak i zewnętrzne (spoza niej). Dwa podstawowe protokoły warstwy transportowej to UDP (bezpołączeniowy, zawodny) oraz TCP (połączeniowy, niezawodny). Oba protokoły dysponują zakresami numerów portów od 0 do 64 K–1. Struktura nagłówka datagramu UDP: 1 bajt 2 bajt 3 bajt 4 bajt port źródłowy port docelowy długość datagramu suma kontrolna Ze względu na bezpołączeniowość, adres źródłowy IP oraz numer portu źródłowego nie są sprawdzane przez oprogramowanie protokołu (nadawca może wstawić dowolne wartości).
Ponieważ funkcje protokołu TCP są dużo bardziej skomplikowane, niż funkcje protokołu UDP, struktura nagłówka segmentu TCP również jest bardziej złożona, niż nagłówka datagramu UDP: 1 bajt 2 bajt 3 bajt 4 bajt port źródłowy port docelowy numer sekwencji numer potwierdzenia U A P R S F długość niewyko- R C S S Y I rozmiar okna nagłówka rzystane G K H T N N suma kontrolna początek danych pilnych O P C J E
a) Przeglądanie portów (skanowanie) – nie jest właściwym atakiem, ale raczej przygotowaniem do niego. Polega na seryjnym wysyłaniu zapytań do kolejnych portów TCP i/lub portów UDP (w pełnych lub częściowych zakresach numerów portów) w celu stwierdzenia, które z nich reagują na to (pozwalają na nawiązanie połączenia TCP lub odsyłają datagram UDP). Daje to informację atakującemu: 1) które porty mogą być podatne na ataki typu SYN, Land lub UDP flooding; 2) które porty mogą udostępniać usługi standardowe (o stałych numerach portów zarejestrowanych w odpowiednich spisach), które można próbować atakować na poziomie warstwy zastosowań. b) Zalewanie datagramami UDP (UDP flooding) ma podobny charakter, jak zalewanie jednostkami na niższych poziomach (ramkami, pakietami), ale może odnosić się do wybranego portu UDP (udostępniającego pewną usługę) w celu czasowego zablokowania tej właśnie usługi. Zwykle atak jest przeprowadzany datagramami ze sfałszowanym adresem nadawcy i bez podanego numeru portu (pole wyzerowane). W celu spotęgowania efektu może być przeprowadzony z wielu (zdobytych wcześniej) maszyn w sieci (atak typu DDoS – Distributed Denial of Service). Przeciwdziałanie polega głównie na właściwym doborze ustawień firewalla.
c) Atak typu SYN polega na wysłaniu wielu segmentów z ustawionym bitem SYN w nagłówku TCP (są to segmenty organizacyjne inicjujące nawiązanie połączenia przez TCP) do wybranego (otwartego) portu TCP pod wybranym adresem, a następnie nie reagowaniu na odsyłanie przez atakowanego zwrotnych pakietów SYN + ACK. Ponieważ po każdej niedokończonej próbie nawiązania połączenia przez klienta serwer oczekuje przez pewien czas, utrzymując jednocześnie zgłoszone żądanie w kolejce (i blokując przydzielone mu gniazdo TCP), dość łatwo jest w ten sposób doprowadzić do czasowego wyczerpania zasobów i blokady usług danego serwera. Przeciwdziałaniem może być zmniejszenie liczby wysłanych zwrotnych pakietów SYN + ACK i skrócenie czasu potrzebnego na rezygnację z połączenia. W przypadku ataku zewnętrznego wyżej opisaną techniką zalecane jest skontaktowanie się ze swoim dostawcą usług internetowych i zgłoszenie mu problemu w celu wyśledzenia źródła atakujących segmentów SYN (prawdopodobnie zaopatrzonych w fałszywe adresy IP). d) Atak typu Land polega na wysyłaniu pakietów SYN z adresem IP atakowanego wpisanym jako adres nadawcy. Jest w stanie zaszkodzić w przypadku starszych wersji oprogramowania TCP/IP. Przeciwdziałanie sprowadza się do aktualizacji oprogramowania oraz ustawienia firewalla tak, aby nie wpuszczał z sieci zewnętrznej pakietów z wpisanymi adresami wewnętrznymi jako adresami nadawców.
e) Przejęcie połączenia TCP jest w praktyce możliwe tylko wtedy, kiedy atakujący ma możliwość podsłuchu pakietów zarówno przesyłanych od klienta do serwera, jak i w drugą stronę (zwykle umożliwia to przeprowadzony wcześniej atak i zdobycie jednego z urządzeń retransmisyjnych w sieci klienta lub w sieci serwera). Polega na wyłączeniu jednej ze stron nawiązanego połączenia (na przykład przez wysłanie fałszywego segmentu TCP z ustawionym bitem RST lub przez atak typu DoS), a następnie natychmiastowym przejęciu jej roli (przez wysyłanie sfałszowanych segmentów TCP z właściwie ustawionymi adresami, numerami portów, numerem sekwencji i numerem potwierdzenia). Przeciwdziałaniem jest szyfrowanie transmisji w przypadku korzystania z pośrednictwa niezbyt dobrze zabezpieczonych sieci (w takim przypadku jedyną stratą będzie utrata połączenia TCP, a nie nastąpi utrata danych). f) Możliwe są rozmaite inne ataki wykorzystujące słabości (głównie starszych wersji) protokołu TCP, polegające na ustawieniu kombinacji flag URG, ACK, PSH, RST, SYN i FIN nie przewidzianych przez projektantów oprogramowania. Stosowane są, przykładowo, wszystkie flagi wyzerowane, wszystkie flagi wyjedynkowane lub flaga FIN ustawiona jako jedyna z wszystkich. Podstawowym sposobem przeciwdziałania jest systematyczna aktualizacja oprogramowania TCP.
5) Warstwa aplikacji Ataki w warstwie aplikacji mają bardzo zróżnicowany charakter ze względu na różnorodność usług w tej warstwie. Mogą być zarówno atakami bezpośrednimi, jak i pośrednimi (na przykład przy użyciu zdobytego wcześniej serwera usługi DNS). a) Blokowanie usługi DNS polega na zalaniu serwera DNS dużą liczbą datagramów UDP zawierających zapytania do niego. Może mieć charakter ataku rozproszonego (DDoS) przy użyciu większej liczby zdobytych wcześniej komputerów. Przeciwdziałanie takim atakom jest trudne, gdyż często trudno jest odróżnić rozmyślne ataki od rzeczywistych spiętrzeń zapytań. Zwykle jedyne możliwe przeciwdziałanie sprowadza się do konfiguracji serwera DNS tak, aby wykazywał pewną „podejrzliwość” i odsyłał (krótki) datagram odmowny zamiast (długiego) datagramu zawierającego odpowiedź w sytuacjach nastręczających wątpliwości. b) Zdobycie serwera DNS przez atakującego umożliwia zmianę zawartości jego bazy danych, a tym samym udzielanie fałszywych odpowiedzi klientom DNS (na przykład w celu przekierowania przeglądarek klientów do strony domowej atakującego). W przypadku nabrania przez klientów wątpliwości co do prawdziwości odpowiedzi serwera, wskazana jest próba skorzystania z alternatywnego serwera DNS (powinien być dostępny), a w przypadku stwierdzenia różnicy w odpowiedziach – powiadomienie właściciela danej domeny.
c) Jeśli atakowany komputer (oraz dowolny inny – być może przypadkowy) udostępnia usługę echo (w odpowiedzi na datagram zawierający dowolny tekst wysyła datagram zawierający taki sam tekst), atakujący może zaaranżować niekończącą się wymianę datagramów pomiędzy tymi komputerami, wysyłając do jednego z nich fałszywy datagram z podanym adresem IP drugiego z nich jako adresem nadawcy oraz z numerem portu usługi echo jako numerem portu źródłowego. Przeciwdziałanie polega na wyłączaniu wszelkich usług sieciowych, które nie są niezbędne. d) Atakowanie serwera poczty elektronicznej może przybierać różne formy. Zalewanie e-mailami może dotyczyć zarówno całego serwera, jak i kont poszczególnych użytkowników. Treść może być dowolna (atak typu DoS, mający na celu przepełnienie), jak i ukierunkowana na przekazanie niepożądanej informacji (spam). Jednym ze sposobów spowodowania lawiny e-maili (bomba pocztowa) jest wpisanie adresów pocztowych atakowanych na bardzo dużo różnych list dystrybucyjnych (nie wymagających potwierdzenia ze strony użytkowników). Przeciwdziałanie powinno być wielokierunkowe – filtrowanie poczty (reguły mogą być skomplikowane i będą omówione w innym miejscu), interwencje u administratorów sieci, z których następują ataki, porównywanie adresów IP pakietów z zawartymi w pakietach adresami e-mailowymi nadawców i wiele innych.
e) Wykorzystywanie luk w bezpieczeństwie programów wykonywanych w związku z tworzeniem i przekazywaniem dynamicznych stron domowych przy użyciu protokołu HTTP dotyczy zarówno programów wykonywanych po stronie serwera (server-side), jak i po stronie klienta (client-side). Większość luk związanych jest z brakiem właściwego zabezpieczenia funkcji wprowadzania danych do programu – użytkownik może przepełnić bufor przeznaczony na przyjmowanie danych i nadpisać następujący po nim fragment pamięci komputera. W skrajnym przypadku może nastąpić nadpisanie fragmentu kodu wykonywalnego programu kodem dostarczonym przez atakującego (charakterystyczny objaw w przypadku procesorów Intel i podobnych – długi ciąg znaków „&”, po którym następuje program atakującego). Przeciwdziałanie po stronie serwera polega głównie na używaniu sprawdzonych, dobrze zabezpieczonych programów oraz takim doborze ustawień firewalla, który utrudni ataki typu DoS, jednocześnie nie obniżając zbytnio dostępności serwera. Po stronie klienta wskazane jest wyłączenie w przeglądarkach wszelkich funkcji, które nie są niezbędne, wykonywanie (w razie konieczności) otrzymanych programów jedynie w środowisku izolowanym (sandbox), a przede wszystkim unikanie odwiedzania stron domowych dostarczanych przez niezbyt godne zaufania serwery (w szczególności serwery umieszczane na „czarnych listach” przez społeczność administratorów).
f) Złośliwe oprogramowanie (wirusy, robaki, konie trojańskie itp f) Złośliwe oprogramowanie (wirusy, robaki, konie trojańskie itp.) może rozpowszechniać się jako dodatki do informacji przekazywanych przy użyciu różnych protokołów komunikacyjnych (HTTP, FTP, protokoły poczty elektronicznej i inne) oraz przez nośniki wymienne (płytki, dyskietki, pendrive). Możliwość jego rozprzestrzeniania się jest związana głównie ze słabością zabezpieczeń systemów operacyjnych komputerów (w największym stopniu dotyczy to systemów Windows przeznaczonych dla użytkowników indywidualnych). Wirusy są fragmentami „obcego” oprogramowania doczepionymi do programów użytkowych („nosicieli”). W słabo zabezpieczonych systemach mogą doczepiać swoje kopie do innych programów. Mogą też być przenoszone przez sieć lub nośniki wymienne wraz z zarażonymi programami. Mogą mieć charakter złośliwy (na przykład w wybranym momencie uruchomić bombę logiczną) lub bardziej pasywny (jedynie zużywać zasoby komputerów). Robaki są programami samorzutnie przenoszącymi się przez sieci komputerowe do innych komputerów przy wykorzystaniu luk w zabezpieczeniu protokołów komunikacyjnych i systemów operacyjnych. Ich negatywna rola zwykle polega głównie na zapychaniu zasobów komputerów (które mogą być wielokrotnie zarażane).
Konie trojańskie są oddzielnymi programami sprawiającymi wrażenie zwykłych programów użytkowych. Są powielane przez zwykłe kopiowanie lub pobieranie przez sieć przez użytkowników. Użytkownicy nie są świadomi, że programy te zawierają w sobie złośliwe fragmenty, które mogą wyrządzać rozmaite szkody (na przykład podglądać dane innych programów i wysyłać przez sieć do swojego twórcy). Przeciwdziałanie wyżej wymienionym zjawiskom sprowadza się głównie do systematycznej aktualizacji oprogramowania sieciowego i systemowego (nakładania łat), prenumeraty bieżących wersji programów antywirusowych i antyszpiegowskich oraz wykorzystywania programów użytkowych pochodzących jedynie z godnych zaufania źródeł. 6) Użytkownik Ataki na tym poziomie (i sposoby zapobiegania im) zostały omówione w ramach wykładu „Socjologiczne aspekty bezpieczeństwa systemów i sieci komputerowych”.