Testy penetracyjne to nieodłączny element skutecznej, pragmatycznej, a jednocześnie dojrzałej strategii bezpieczeństwa. Niezależnie czy mowa tutaj o organizacji, infrastrukturze teleinformatycznej czy wybranym środowisku, systemie czy aplikacji. Odpowiednio przeprowadzone testy penetracyjne potrafią skutecznie zweryfikować ich stan bezpieczeństwa. W dzisiejszym artykule rzucimy trochę światła na metodologie przeprowadzania pentestów oraz związane z nimi zagadnienia.
Jak przeprowadzać testy penetracyjne?
W przypadku przeprowadzania tzw. “pentestów” istnieją różne standardy i metodologie, które można zastosować w trakcie ich realizacji. Zależą one jednak od kilku zmiennych i determinantów, które definiują, która z nich będzie miała najlepsze zastosowania, aby jakość pracy szła w parze z utrzymaniem określonej estymacji czasu ich wykonania, a także spełnieniu założonych oczekiwań.
Dlatego pierwszym etapem przeprowadzania testów penetracyjnych jest określenie czasochłonności, a także celów, jakie należy spełnić, realizując testy. Powodów może być kilka, począwszy od wymagań sektorowych lub prawnych przez oczekiwania klientów, standard branżowy, a na podnoszeniu bezpieczeństwa w organizacji kończąc. Niezależnie czy będzie to pojedynczy system, środowisko, aplikacja czy cała infrastruktura - zamawiający musi przeanalizować zarówno wymagania jak i dalsze kroki w zależności od wyników raportu. Każdy raport z testów penetracyjnych wykazuje zidentyfikowane podatności, anomalie lub braki bezpieczeństwa, które wymagają reakcji po stronie zamawiającego. Mogą to być nieskomplikowane we wdrożeniu poprawki, ale także wymagające bardziej rozbudowanych i rozciągniętych w czasie zadań, które mogą angażować nawet kilka zespołów. Czasami zachodzi sytuacja, w której podmiot trzeci lub klient będzie oczekiwał nie tylko potwierdzenia zrealizowania testów penetracyjnych, ale także dowodów na załatanie wskazanych w raporcie podatności.
Testy penetracyjne powinny być realizowane w odizolowanym środowisku, które będzie wolne od czynników mogących destruktywnie wpłynąć na jego działanie, ale także produkcyjnego użytku. W skrócie polega to na zapewnieniu warunków do pracy zespołowi pentesterów, który będzie mógł w określonym okresie czasu realizować zaplanowane testy. Ich przebieg w zależności od specyfiki testowanego celu oraz założeń, może wpływać na niestabilność jego działania. Dlatego właśnie nie jest rekomendowane przeprowadzanie równocześnie testów penetracyjnych i funkcjonalnych na tym samym środowisku, jak również aktualizacja wersji oprogramowania w trakcie trwania testów. Bardzo istotne jest, aby wersja testowanej aplikacji lub systemu była możliwie taka sama jak działająca już w środowisku produkcyjnym (lub wyższa, jeśli testy są przeprowadzane przed wydaniem nowej wersji).
Metodologie testów penetracyjnych
Powszechnie przyjęły się trzy bazowe metody testowania:
Pierwsza z nich zakłada realizowanie testów ze znikomą lub bardzo ograniczoną wiedzą o celu. Przykładowo pentester ma informację tylko o domenie lub IP, pod jaką znajduje się aplikacja webowa. Druga i trzecia metoda opierają się na realizacji testów z częściową lub pełną możliwą wiedzą o testowanym obiekcie. Zespół pentesterów posiada już wtedy dostęp do aplikacji w tym z podziałem na różne dostępy, wiedzę o jej biznesowych funkcjonalnościach, a także dostęp do dokumentacji lub kodu źródłowego (to już tylko przy testach “White box”).
Już na wstępie pozwala to na określenie scenariuszy przez zamawiającego wraz z zespołem wykonującym testy penetracyjne, a także doprecyzowanie formy ich realizowania. Czy mają być one przeprowadzane w pełni automatycznie z użyciem wybranego skanera podatności, manualnie w oparciu o najlepszą wiedzę i doświadczenie pentesterów czy jednak hybrydowo - to już zależy od zamawiającego.
Metodologie to poniekąd także standardy, które określają i wspierają przeprowadzanie testów penetracyjnych. Różnią się one nie tylko przeznaczeniem, ale także rodzajem przeznaczenia. Przykładowo metodologia OWASP Testing Guide jest przeznaczona dla testowania aplikacji webowych, a z kolei PTES (Penetration Testing Execution Standard) oraz OSSTMM (Open Source Security Testing Methodology Manual) mają charakter uniwersalny. Klienci korporacyjni lub podmioty rządowe mogą natomiast oczekiwać realizowania testów penetracyjnych w oparciu o standard NIST SP 800-115, który również ma charakter uniwersalny, ale jest bardziej szczegółowy i obejmuje szerszy zakres technik testowania.
W przypadku aplikacji webowych oraz mobilnych przyjmuje się, że niezbędnym minimum jest realizacja testów penetracyjnych w zgodności oraz na podstawie wytycznych organizacji OWASP. Poza wspomnianym Testing Guide, organizacja OWASP udostępnia także autorski Application Security Verification Standard (ASVS) dla aplikacji webowych oraz mobilnych. Jest to zestaw bazowych wymagań oraz rekomendacji z punktu widzenia bezpieczeństwa, jakie powinny być zaimplementowane w aplikacjach. Są one świetnym punktem do audytu i weryfikacji bezpieczeństwa w oparciu o trzy kategorie typowania aplikacji. Określane są na podstawie przeznaczenia i stosowania aplikacji w danym sektorze (np. medycznym, finansowym, rządowym itd.) oraz rodzaju i wrażliwości przetwarzanych w niej danych (np. dane osobowe, finansowe itp.).
Organizacja OWASP cyklicznie udostępnia także zestaw top 10 podatności, który ma na celu uświadamianie i podkreślanie znaczenia najbardziej krytycznych podatności, jakimi należy kierować się przy budowie i rozwijaniu aplikacji webowych.
W przypadku testowania środowisk opartych na systemach i sieciach, a niekoniecznie aplikacjach webowych czy mobilnych - zastosowania znajdą przede wszystkim standardy NIST SP 800-115, PTES oraz OSSTMM. Dla większych organizacji lepsze zastosowanie znajdzie NIST oraz niewspomniany jeszcze standard ISSAF (Information Systems Security Assessment Framework), które koncentrują się na szczegółowym i kompleksowym podejściu do testowania. Z kolei PTES oraz OSSTMM mają charakter uniwersalny i bardziej pragmatyczny względem testowanych środowisk.
Klasyfikowanie zidentyfikowanych podatności
Wzorowo przeprowadzone testy penetracyjne to nie tylko dobrane cele, oczekiwania, metodologie i standardy. To także odpowiednia klasyfikowania zidentyfikowanych podatności, które możliwie najlepiej precyzuje, jak dane zagrożenie może wpłynąć na aplikację, system, biznes zamawiającego oraz z jakim prawdopodobieństwem może wystąpić. Umiejętna klasyfikacja podatności pozwoli firmie sprawnie priorytetyzować je w kierunku mitygowania zagrożenia, załatania podatności zachowując jednocześnie dotychczas przyjęty cykl rozwoju oprogramowania wraz z zarządzaniem zmiana w produkcie lub infrastrukturze.
Podatności, które zostaną sklasyfikowane nieumiejętnie poprzez niedoszacowanie lub przeszacowanie jej ryzyka wystąpienia, a także zagrożenia, jakie niesie - może wprowadzić niepotrzebne zamieszanie, a także przynieść potencjalne straty finansowe z uwagi na konieczność przesunięcia planowanych zadań i projektów.
W przypadku testów penetracyjnych jako standard stosuje się klasyfikację CVSS (Common Vulnerability Scoring System), która jest niczym innym jak systemem punktacji konkretnych czynników wpływających na bezpieczeństwo. Określa on wpływ podatności na poufność, dostępność i integralność w testowanej aplikacji lub systemie, a także złożoność przeprowadzenia ataku. CVSS charakteryzuje się przede wszystkim uniwersalnym wykorzystaniem, ale także uznaniem w powszechnym klasyfikowaniu zagrożeń w aplikacjach i systemach. Inną często stosowaną klasyfikacją jest OWASP Risk Rating Methodology, która jednak z uwagi na wymiar stosowania w aplikacjach webowych - jest ograniczona w zastosowaniu do innych testowanych obszarów (np. systemów).
Testy penetracyjne to wymagający i ciągły proces
Określenie wymagań oraz potrzeb organizacji, która zamawia testy, jest bardzo kluczowe, aby odpowiednio dobrać zarówno metodologię testów penetracyjnych, ale także określić standard, jakiemu mają być one najbliżej w realizacji. Cykliczne przeprowadzanie testów penetracyjnych to proces ciągły, który po stronie Zamawiającego wymaga stałego nadzoru rozwoju aplikacji lub systemów co przekłada się na umiejętne określanie celów i oczekiwań.
Świadomość na temat doboru metodologii i standardu przeprowadzania testów penetracyjnych wraz z klasyfikacją zidentyfikowanych podatności jest natomiast niezbędna do spełnienia celów, przed jakimi stoi zamawiający testy, aby dojrzale rozwijać strategię bezpieczeństwa swojego biznesu.