Skanery bezpieczeństwa w praktyce

Ważną częścią procesów penetracyjnych jest skanowanie bezpieczeństwa urządzeń oraz systemów sieciowych obecnych w sieci. Umożliwia rozpoznanie infrastruktury, zbadanie dostępnych usług, detekcję systemów operacyjnych i aplikacji. Dodatkowo identyfikowane są podatności i luki w oprogramowaniu sieciowym. Każdy element procesu skanowania stanowi dużą dawkę niezbędnych informacji dla inżyniera przeprowadzającego testy penetracyjne.

Proces wykonywany przez skanery sieci składa się z kilku etapów. Silnik skanera przeważnie jest zbudowany z kilku modułów odpowiadających za realizację poszczególnych zadań. Pierwszym etapem jest sprawdzenie, czy dany host jest dostępny i uruchomiony. Jeżeli czas na odpowiedź zostaje przekroczony, dany host jest uznawany za niedostępny. Detekcja jest realizowana przez wysłanie pakietu zapytania ICMP Echo Request. W przypadku gdy komunikaty ICMP są filtrowane, stosowane są inne metody sprawdzenia dostępności. Przykładem może być testowanie dostępności niektórych dobrze znanych portów UDP lub TCP. Drugim etapem pracy skanera sieci jest sprawdzenie, czy badany host jest ukryty za zaporą sieciową. Ten test wymaga od skanera zebrania większej ilości informacji o infrastrukturze sieciowej i jest pomocny przy skanowaniu portów TCP oraz UDP. Trzeci etap to skanowanie portów TCP i UDP. W tym procesie wykrywane są wszystkie lub najczęściej stosowane otwarte porty TCP oraz UDP. Liczba skanowanych portów jest zawsze prekonfigurowana w określonych skanerach. Przeważnie wynosi kilka tysięcy dla portów TCP oraz kilkaset dla portów UDP. Użytkownik najczęściej może określić własne parametry skanowania portów TCP/UDP. Kolejny etap to identyfikacja systemu operacyjnego. Detekcja systemu operacyjnego jest szczególnie istotna, ponieważ z określonymi wersjami oprogramowania wiążą się specyficzne zagrożenia. W następnym etapie skaner na podstawie wcześniej uzyskanej liczby otwartych portów TCP/UDP podejmuje próbę identyfikacji usług uruchomionych na każdym z portów. Ostatnim etapem jest określenie zagrożeń na podstawie wykrytych typów usług. Gdy skaner przeprowadzi identyfikację usługi i oprogramowania pracującego na określonych portach TCP oraz UDP, przeprowadza proces wyszukiwania zagrożeń. Na początku tej drogi skaner próbuje określić parametry usługi oraz typ i wersję oprogramowania realizującego daną usługę. W ten sposób można zidentyfikować zagrożenia wynikające z wykorzystania określonej wersji oprogramowania. Efektem prac skanera bezpieczeństwa jest raport zawierający dostępność danego hosta, dostępne usługi i porty, a także wykryte zagrożenia. Bardzo często prezentowana jest informacja o metodach zabezpieczenia wykrytych luk bezpieczeństwa.

JAK PRZEPROWADZANE JEST SKANOWANIE PORTÓW?

Dla skanera sieci ważnym procesem jest etap wykrywania otwartych portów TCP i UDP na badanym zdalnym hoście. Najpopularniejszą techniką skanowania portów TCP jest metoda TCP SYN scan – szybka, działająca z każdą implementacją stosu TCP, a dodatkowo nigdy nie ustanawia kompletnego połączenia TCP, co zapewnia częściową dyskrecję skanowania. Zasada działania metody nie jest skomplikowana – skaner portów wysyła pakiet SYN podobnie jak w przypadku nawiązywania rzeczywistego połączenia, a następnie oczekuje na odpowiedź. Odpowiedź w postaci pakietu SYN/ACK wskazuje otwarty port, natomiast odpowiedź w postaci pakietu RST oznacza brak nasłuchiwania na określonym porcie. Jeżeli nie pojawia się odpowiedź po kilku próbach retransmisji, port jest określany jako filtrowany. Inne popularne metody skanowania portów TCP to: TCP connect scan, SCTP INIT scan, TCP ACK scan.

Połączenia TCP są zorientowane na połączenie i zestawianie połączenia do zdalnego hosta za pomocą trójstronnego procesu. UDP jest protokołem niezestawiającym połączenia. Połączenie UDP polega na wysłaniu pakietu do usługi UDP bez konieczności wcześniejszego zestawienia połączenia. Z tego powodu badanie otwartych portów UDP jest zdecydowanie trudniejsze niż TCP. W momencie wysyłania pakietu na określony port zdalnego hosta możemy spodziewać się kilku sytuacji zwrotnych. Jeżeli port UDP jest otwarty, pakiet zostanie akceptowany przez docelowy host, a skaner nie otrzymuje odpowiedzi. Jeżeli port jest zamknięty, docelowy host wysyła w odpowiedzi pakiet ICMP z odpowiednim kodem błędu, przykładowo: ICMP Destination Unreachable. Skanowanie ICMP nie polega na odbieraniu potwierdzeń ze zdalnego hosta, jak to jest w TCP, ale kolekcjonowaniu błędów, które wysyła badany host do każdego zamkniętego portu. Zamknięte porty UDP są wykrywane poprzez obecność pakietów odpowiedzi ICMP, otwarte porty są wykrywane przez brak odpowiedzi na wysłany pakiet. Skanowanie UDP ma kilka ograniczeń. Wiele systemów operacyjnych wykorzystuje w implementacji stosu bufory, umożliwiające kolejkowanie przychodzących pakietów. Bufor dla pakietów UDP jest bardzo ograniczony, co powoduje, że pakiety UDP wysyłane zbyt szybko nie są przetwarzane przez badany host. Z tego powodu skanowanie portów UDP jest znacznie wolniejsze niż skanowanie portów TCP i domyślnie obejmuje niewielki zakres portów. Problemem są także zapory sieciowe, które mogą zmieniać wyniki odpowiedzi. Pakiety ICMP są często filtrowane w zaporze sieciowej, co powoduje brak odpowiedzi ICMP na zapytanie wysyłanie przez skaner, w celu testowania portu UDP, który nie jest otwarty. Detekcja usług i otwartych portów UDP jest realizowana poprzez wysłanie pakietu odpowiadającego usłudze normalnie uruchomionej na porcie UDP. Przykładowo zapytanie na port 53 i brak odpowiedzi oznacza otwarty port dla usługi DNS.

DETEKCJA SYSTEMU OPERACYJNEGO

Wiele zagrożeń bezpieczeństwa wynika z dziur w systemach operacyjnych. Z tego powodu niezwykle ważne z punktu widzenia skanera bezpieczeństwa jest zidentyfikowanie systemu operacyjnego, kontrolującego badany host. Istnieją istotne różnice w implementacji stosu TCP/IP w różnych systemach operacyjnych. Wskazane odmienności pomagają w skutecznej identyfikacji systemu operacyjnego na maszynie, którą zamierzamy przetestować pod kątem bezpieczeństwa. Różnice są wykorzystywane do pasywnej identyfikacji zdalnego systemu operacyjnego. Skaner zwraca uwagę na parametry, takie jak: maksymalny czas życia pakietu (TTL - Time To Live), rozmiar okna, bit fragmentacji oraz typ usługi, i na tej podstawie przybliża informacje o systemie operacyjnym.

Przykładowo, wartości początkowe TTL dla różnych systemów mogą się różnić. Jeżeli znamy konkretne wartości TTL dla danych systemów operacyjnych, ustalenie wersji OS nie stanowi problemu. Administrator może jednak zmienić domyślną wartość TTL. Rozwiązaniem tego problemu może być wykrywanie systemu operacyjnego z wykorzystaniem pakietów TCP FIN. Na przykład poprawna implementacja RFC 793 powoduje, że docelowy host nie przesyła odpowiedzi na wysłany pakiet TCP FIN do otwartego portu TCP. Istnieje jednak kilka systemów operacyjnych, które w odpowiedzi na pakiet TCP FIN wysyłają komunikat RESET.

Skanery bezpieczeństwa w praktyce

Inna opcja – zapytanie wysłane do docelowego systemu powoduje wygenerowanie początkowego numeru sekwencji, który także może przekazać znaczącą liczbę informacji o systemie operacyjnym. Na podstawie różnych implementacji stosu TCP/IP w poszczególnych systemach operacyjnych skanery bezpieczeństwa potrafią określić typ OS-a na konkretnym zdalnym hoście. Metod jest wiele, a poszczególne skanery bezpieczeństwa korzystają z różnych kombinacji przedstawionych technik.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200