Test penetracyjny – proces polegający na przeprowadzeniu kontrolowanego ataku na system teleinformatyczny, mający na celu praktyczną ocenę bieżącego stanu bezpieczeństwa tego systemu, w szczególności obecności znanych podatności i odporności na próby przełamania zabezpieczeń. Polega na analizie systemu pod kątem występowania potencjalnych błędów bezpieczeństwa spowodowanych niewłaściwą konfiguracją, lukami w oprogramowaniu lub sprzęcie, słabościami w technicznych lub proceduralnych środkach zabezpieczeń, a nawet niewystarczającą świadomością użytkowników. Analiza ta jest przeprowadzana z perspektywy potencjalnego włamywacza i może zawierać aktywne wykorzystywanie podatności (np. poprzez użycie exploitów). Podstawową cechą odróżniającą test penetracyjny od włamania jest zgoda atakowanej strony na tego rodzaju działania, ponadto osoba przeprowadzająca test (zwana pentesterem) jest zobowiązana do przedstawienia raportu dokumentującego znalezione problemy (często wraz ze sposobami ich usunięcia i rekomendacjami podnoszącymi bezpieczeństwo testowanego systemu). Test penetracyjny ma na celu zbadanie odporności systemu na włamanie oraz skuteczności zabezpieczeń w rzeczywistej konfiguracji lub w środowisku możliwie do niej zbliżonym.
Test penetracyjny jest pracochłonny i wymaga dużej wiedzy fachowej. Badane systemy mogą w jego trakcie zostać uszkodzone lub unieruchomione, a ryzyka tego nie da się całkowicie wyeliminować, choć doświadczeni testerzy mogą je ograniczyć. Z tego względu test powinien być poprzedzony starannym planowaniem.
W październiku 1972 roku James P. Anderson stwierdził w opracowanym dla Sił Powietrznych Stanów Zjednoczonych studium Computer Security Technology Planning Study, że ówczesne komercyjnie dostępne komputery i systemy operacyjne nie zapewniają odpowiedniego wsparcia dla bezpieczeństwa, a doświadczeni programiści bez większych trudności przełamywali ich zabezpieczenia i odczytywali potrzebne dane. Próby certyfikacji systemów oparte na testach penetracyjnych kończyły się zwykle odmową certyfikacji, ale nawet nieudana próba przełamania zabezpieczeń nie dawałaby podstaw do certyfikacji, ponieważ w dużym, istniejącym systemie zawsze może istnieć jeszcze nieodkryta droga dostępu.
W 1974 roku Siły Powietrzne Stanów Zjednoczonych opublikowały wyniki analizy podatności systemu Multics, uważanego wówczas za najbezpieczniejszy dostępny system operacyjny. Analizę przeprowadzono w latach 1972–1973 na potrzeby ośrodka obliczeniowego Sił Powietrznych, który miał świadczyć usługi użytkownikom w Pentagonie na wszystkich poziomach klauzuli tajności. Jej autorzy, Paul Karger i Roger Schell, nie tylko szukali podatności, ale także umieścili w systemie celowo nieszkodliwą tylną furtkę, aby sprawdzić, czy zostanie wykryta podczas kontroli jakości. W samym raporcie wspomniano o niej jedynie ogólnikowo. Producent systemu, firma Honeywell, przekazał ją następnie wraz z oprogramowaniem m.in. do ośrodka obliczeniowego Sił Powietrznych w Pentagonie, a wykryto ją dopiero około roku po publikacji raportu. Analizę prowadzono z zasadą niewyrządzania rzeczywistych szkód w atakowanych systemach, a publikację raportu wstrzymano do czasu usunięcia opisanych podatności.
Ataki najpierw sprawdzano na instalacji systemu w Rome Air Development Center, a następnie przeprowadzano na systemie w Massachusetts Institute of Technology, starając się, tak jak prawdziwy agent, uzyskać lub zmienić chronione dane bez wykrycia przez administratorów. Raport przypominał też, że zabezpieczenia innych ówczesnych systemów, m.in. GCOS i IBM OS/360/370, wielokrotnie przełamywano w ćwiczeniach penetracyjnych, i zwracał uwagę, że zespół ekspertów testujący zabezpieczenia (tzw. tiger team) może wykazać istnienie podatności, ale nie jest w stanie dowieść ich braku.
Opisany w raporcie pomysł furtki w kompilatorze, która odtwarza się przy kompilowaniu samego kompilatora, zainspirował Kena Thompsona. Zrealizował on taką furtkę we wczesnej wersji systemu Unix i opisał ją w artykule Reflections on Trusting Trust z 1984 roku, związanym z otrzymaniem Nagrody Turinga. W 2002 roku Karger i Schell powtórzyli, że test penetracyjny może wskazać część podatności do usunięcia, ale to, że zespół testujący ich nie znalazł, nie oznacza, że ich nie ma.
Wytyczne NIST SP 800-115 przedstawiają przykładowy podział testu penetracyjnego na cztery fazy, zastrzegając, że dopuszczalne są również inne sposoby grupowania wykonywanych czynności:
Przed rozpoczęciem testu należy udokumentować i uzgodnić warunki, w jakich będzie on prowadzony, oraz dopuszczalny stopień wykorzystania podatności, o ile w ogóle jest ono dozwolone. Takie zasady zaangażowania (ang. rules of engagement) upoważniają testera do badania środowiska i pozwalają organizacji zrozumieć, czego może się spodziewać po teście. Wytyczne PCI SSC podają przykłady kwestii, które można w nich rozstrzygnąć: w jakim oknie czasowym prowadzić test, jak testować starsze systemy sprawiające problemy przy automatycznym skanowaniu, w jaki sposób komunikować się w trakcie testu, czy zabezpieczenia mogące wykryć lub zablokować test wyłączyć albo tak skonfigurować, by mu nie przeszkadzały, czy tester ma ujawnić listę haseł i innych danych wrażliwych, do których uzyskał dostęp, jak zapewnić, by sprzęt testera przyłączany do sieci organizacji nie stanowił dla niej zagrożenia, czy tester ma podać adresy IP, z których będzie prowadzony test, oraz co zrobić w razie wykrycia wcześniejszego lub trwającego włamania, na przykład uruchomić procedury reagowania na incydenty i wstrzymać test do czasu wyjaśnienia sytuacji.
Jeżeli umowa o poziomie usług z podmiotem zewnętrznym, takim jak dostawca usług hostingowych lub chmurowych, wymaga jego zgody na przeprowadzenie testu, organizacja musi ją uzyskać przed rozpoczęciem testu. Zasady zaangażowania powinny też określać kryteria powodzenia testu, czyli moment, w którym test uznaje się za zakończony, co pozwala ograniczyć jego głębokość. Bez takiego ustalenia tester może przekroczyć granice i oczekiwania zamawiającego.
Według wytycznych PCI SSC raport z testu ma pomóc organizacji w poprawie stanu bezpieczeństwa przez wskazanie obszarów potencjalnego ryzyka, które mogą wymagać usunięcia. Samo przedstawienie listy podatności nie służy temu celowi i nie odpowiada założeniom testu penetracyjnego, a raport powinien jasno przedstawiać, co przetestowano, w jaki sposób i z jakim wynikiem. Wytyczne zastrzegają, że proponowany przez nie układ raportu ma charakter przykładowy i odzwierciedla dane zebrane od wielu firm prowadzących testy oraz oczekiwania klientów. Układ ten obejmuje krótkie streszczenie zakresu testu i najważniejszych ustaleń, szczegółowy opis zakresu, opis zastosowanej metodyki, ograniczenia nałożone na test, takie jak wyznaczone godziny testów, limity przepustowości czy szczególne wymagania dotyczące starszych systemów, opis przebiegu testu, podsumowanie testów segmentacji sieci, jeżeli segmentacja służy ograniczeniu zakresu objętego standardem PCI DSS, opis ustaleń, wykaz użytych narzędzi oraz wskazówki dotyczące czynności potrzebnych do przywrócenia środowiska po teście. Opis każdego ustalenia obejmuje to, czy i w jaki sposób daną podatność można wykorzystać do ataku na środowisko danych posiadaczy kart, ocenę ryzyka lub wagi podatności, systemy, których dotyczy, odwołania do baz takich jak CVE i CWE oraz opis ustalenia.
Organizacja powinna w rozsądnym czasie po teście usunąć każdą podatność możliwą do wykorzystania, a po wdrożeniu poprawek tester powinien przeprowadzić test ponowny, aby sprawdzić, czy nowe zabezpieczenia ograniczają pierwotne ryzyko. Tester powinien też udokumentować i przekazać organizacji wszystkie zmiany wprowadzone w środowisku podczas testu w granicach dopuszczonych zasadami zaangażowania, na przykład konta utworzone na potrzeby testu, które organizacja powinna następnie usunąć.
Testy penetracyjne prowadzi się w oparciu o metodyki, które nadają im powtarzalny, ustalony przebieg i pozwalają ograniczyć związane z nimi ryzyko. Poszczególne metodyki różnią się szczegółowością. PTES opisuje przebieg i organizację testu bez wytycznych technicznych, a jego autorzy określają go jako minimum wymagane od podstawowego testu penetracyjnego. Przewodnik OWASP zawiera natomiast opisy konkretnych testów. Do stosowanych metodyk należą m.in.:
Penetration Testing Execution Standard (PTES) opracowała grupa praktyków z instytucji finansowych, firm świadczących usługi bezpieczeństwa i producentów zabezpieczeń. Prace rozpoczęto na początku 2009 roku, po dyskusji o wartości testów penetracyjnych w branży, a celem było wypracowanie wspólnego języka i zakresu testów zarówno dla zamawiających je firm, jak i dla wykonawców.
Standard dzieli test na siedem części: ustalenia poprzedzające test, zbieranie informacji, modelowanie zagrożeń, analizę podatności, wykorzystanie podatności, etap post-exploitation oraz raportowanie. Celem etapu post-exploitation jest ocena wartości przejętego systemu, o której decyduje wrażliwość przechowywanych na nim danych oraz jego przydatność do przejmowania kolejnych systemów w sieci. Raport ma obejmować zarówno część przeznaczoną dla kierownictwa, jak i część techniczną. Sam standard nie zawiera wytycznych technicznych dotyczących przeprowadzenia testu, dlatego uzupełnia go osobny dokument techniczny.
Standard określa również zasady postępowania z przejętymi systemami. Tester prowadzi wykaz wykonanych na nich działań wraz z czasem ich wykonania, dołączany do raportu końcowego, a po zakończeniu testu usuwa pozostawione przez siebie pliki i narzędzia oraz utworzone konta i przywraca zmienione ustawienia. Dzienników zdarzeń nie wolno usuwać ani modyfikować bez wyraźnej zgody zamawiającego, a hasła i inne dane wrażliwe umieszczane w raporcie muszą być zamaskowane. Jeżeli w badanym środowisku zostaną znalezione ślady wcześniejszego włamania, zapis działań testera zostaje zabezpieczony i przekazany zamawiającemu, który decyduje o dalszym postępowaniu.
Przewodnikiem OWASP dotyczącym testowania aplikacji internetowych jest Web Security Testing Guide (WSTG), opisujący testowanie bezpieczeństwa aplikacji internetowych i usług sieciowych i tworzony wspólnie przez specjalistów i wolontariuszy. Według OWASP stanowi on zbiór dobrych praktyk stosowanych przez pentesterów i organizacje na całym świecie. Aktualną stabilną wersją jest 4.2, wydana w grudniu 2020 roku, a trwają prace nad wersją 5.0.
Test penetracyjny może być prowadzony przy różnym poziomie wiedzy zespołu testującego, z dwiema skrajnymi wartościami:
Test zewnętrzny prowadzi się z internetu, z perspektywy napastnika z zewnątrz. Test wewnętrzny prowadzi się z sieci lokalnej (LAN) organizacji, z pozycji zaufanego pracownika albo napastnika, który przełamał już zabezpieczenia brzegowe.
Test jawny prowadzi się za wiedzą i zgodą działu informatycznego organizacji, a niejawny bez jego wiedzy, lecz za zgodą najwyższego kierownictwa. Test niejawny pozwala sprawdzić także reakcję personelu na atak i ponieważ administratorzy nie są na niego przygotowani, lepiej oddaje codzienny stan bezpieczeństwa organizacji. Jest jednak bardziej czasochłonny i kosztowny, dlatego częściej stosuje się testy jawne.
Test penetracyjny często obejmuje również nietechniczne metody ataku. Tester może na przykład przełamać fizyczne zabezpieczenia i procedury, aby przyłączyć się do sieci, ukraść sprzęt, przechwycić informacje wrażliwe, choćby przez zainstalowanie urządzeń rejestrujących naciśnięcia klawiszy, albo zakłócić łączność. Testy zabezpieczeń fizycznych wymagają ostrożności, a pracownicy ochrony powinni wiedzieć, jak sprawdzić, czy działania testera są uprawnione, na przykład przez kontakt z wyznaczoną osobą lub dokumenty. Inną nietechniczną metodą jest socjotechnika, na przykład podawanie się za pracownika działu wsparcia technicznego i proszenie użytkownika o hasło albo dzwonienie do działu wsparcia w imieniu użytkownika z prośbą o zresetowanie hasła.
Socjotechnika polega na nakłonieniu kogoś podstępem do ujawnienia informacji, na przykład hasła, które można wykorzystać do ataku na systemy lub sieci. Testy socjotechniczne sprawdzają czynnik ludzki i świadomość bezpieczeństwa użytkowników i mogą ujawnić słabości w ich zachowaniu, takie jak nieprzestrzeganie standardowych procedur. Mogą być prowadzone w rozmowach osobistych lub telefonicznych albo drogą elektroniczną, na przykład przez pocztę elektroniczną lub komunikatory, czego przykładem jest phishing. Mogą być skierowane do szczególnie ważnych osób lub grup, takich jak kadra kierownicza, albo do szerokiego grona odbiorców. Atak skierowany do konkretnych osób może narazić je na zakłopotanie, jeśli testerom uda się uzyskać od nich informacje lub dostęp. Wyniki testów socjotechnicznych powinny służyć poprawie bezpieczeństwa organizacji, a nie wskazywaniu poszczególnych osób. Tester powinien przygotować szczegółowy raport końcowy, opisujący zarówno skuteczne, jak i nieskuteczne taktyki, co pozwala organizacji dopasować programy szkoleń z zakresu bezpieczeństwa.
W katalogu zabezpieczeń NIST SP 800-53 w wersji 5 testom penetracyjnym poświęcono zabezpieczenie CA-8 (Penetration Testing), które wymaga prowadzenia testów penetracyjnych z określoną przez organizację częstotliwością na wskazanych przez nią systemach lub ich komponentach. W omówieniu zabezpieczenia NIST określa test penetracyjny jako wyspecjalizowany rodzaj oceny, służący wykryciu podatności, które mogliby wykorzystać napastnicy. Test wykracza poza automatyczne skanowanie podatności i prowadzą go osoby lub zespoły o wykazanych umiejętnościach i doświadczeniu, obejmujących wiedzę techniczną z zakresu bezpieczeństwa sieci, systemów operacyjnych lub aplikacji. Pozwala potwierdzić istnienie podatności albo określić odporność systemów na napastników w przyjętych ograniczeniach czasu, zasobów i umiejętności, a naśladując działania napastników, zapewnia głębszą analizę słabości i braków w zakresie bezpieczeństwa i ochrony prywatności. Według NIST testy są szczególnie ważne przy przechodzeniu na nowsze technologie, na przykład z protokołu IPv4 na IPv6. Mogą być prowadzone wewnętrznie lub zewnętrznie, obejmować sprzęt, oprogramowanie i oprogramowanie układowe systemu oraz sprawdzać zabezpieczenia zarówno fizyczne, jak i techniczne. Standardowa metoda obejmuje analizę przed testem, opartą na pełnej wiedzy o systemie, wstępne wskazanie na jej podstawie potencjalnych podatności oraz testy sprawdzające, czy można je wykorzystać. Przed rozpoczęciem testu wszystkie strony uzgadniają zasady zaangażowania, dopasowane do narzędzi, technik i procedur, których można się spodziewać po napastnikach. Test może ujawnić testerom informacje chronione przepisami prawa, a zasady zaangażowania, umowy lub inne mechanizmy mogą służyć do określenia, jak należy je chronić. Decyzje o wymaganym stopniu niezależności testerów podejmuje się na podstawie oceny ryzyka.
Rozszerzenia zabezpieczenia CA-8 przewidują zlecanie testów niezależnym testerom lub zespołom, czyli takim, którzy prowadzą testy bezstronnie i nie mają rzeczywistych ani postrzeganych konfliktów interesów związanych z tworzeniem, eksploatacją lub zarządzaniem testowanymi systemami. Kolejne rozszerzenie dotyczy ćwiczeń typu red team, które poszerzają cele testu penetracyjnego o ocenę stanu bezpieczeństwa i ochrony prywatności całej organizacji oraz jej zdolności do skutecznej obrony. Ćwiczenia te symulują próby naruszenia przez napastników funkcji realizowanych przez organizację. Mogą obejmować ataki techniczne, dotyczące sprzętu, oprogramowania lub procesów organizacji, oraz ataki socjotechniczne, prowadzone przez pocztę elektroniczną, telefon, podglądanie (ang. shoulder surfing) lub rozmowy osobiste. Podczas gdy testy penetracyjne mogą być prowadzone głównie w warunkach laboratoryjnych, ćwiczenia red team pozwalają na pełniejszą ocenę, odzwierciedlającą warunki rzeczywiste. Osobne rozszerzenie dotyczy testów fizycznych, czyli zapowiedzianych lub niezapowiedzianych prób obejścia zabezpieczeń punktów fizycznego dostępu do obiektu, które mogą ujawnić krytyczne podatności w środowisku działania systemów organizacji.
Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2022/2554 w sprawie operacyjnej odporności cyfrowej sektora finansowego (DORA), stosowane od 17 stycznia 2025 roku, wymaga od podmiotów finansowych prowadzenia programu testowania, obejmującego m.in. testy penetracyjne. Podmioty wyznaczone przez właściwe organy nadzoru muszą ponadto przeprowadzać, co do zasady co trzy lata, zaawansowane testy w formie testów penetracyjnych ukierunkowanych przez analizę zagrożeń (ang. threat-led penetration testing, TLPT). Jeżeli podmiot korzysta przy tych testach z własnych testerów, co trzeci test musi zlecić testerom zewnętrznym.
Rozporządzenie definiuje TLPT jako ramy naśladujące taktykę, techniki i procedury rzeczywistych agresorów, w których przeprowadza się kontrolowane, dostosowane do podmiotu i oparte na analizie zebranych danych testy typu red team, obejmujące działające krytyczne systemy produkcyjne podmiotu finansowego. Każdy taki test obejmuje kilka lub wszystkie krytyczne lub istotne funkcje podmiotu. Europejskie urzędy nadzoru odróżniają go od klasycznego testu penetracyjnego, który szczegółowo ocenia podatności techniczne i konfiguracyjne, często pojedynczego systemu, ale nie odtwarza pełnego scenariusza ukierunkowanego ataku na całą organizację, obejmującego jej ludzi, procesy i technologie.
Test poprzedza analiza zagrożeń (ang. threat intelligence), na podstawie której przygotowuje się scenariusze ataku. Standardy techniczne opracowane przez europejskie urzędy nadzoru przewidują, że aktywna faza testu trwa co najmniej 12 tygodni, co ma pozwolić na naśladowanie trudnych do wykrycia napastników. Test jest niejawny, a pracownicy odpowiedzialni za obronę (blue team) dowiadują się o nim dopiero po zakończeniu fazy aktywnej. Wymogi dotyczące TLPT oparto na dobrowolnych ramach TIBER-EU, opracowanych przez Europejski Bank Centralny i banki centralne państw UE i opublikowanych w maju 2018 roku. Według EBC podstawowe wymagania obu ram są identyczne, dlatego test przeprowadzony zgodnie z TIBER-EU spełnia wymogi DORA, o ile podmiot dopełni formalności określonych przez organy nadzoru.
Audyt bezpieczeństwa teleinformatycznego nie jest tym samym co test penetracyjny. Audyt opiera się na formalnej specyfikacji stanu pożądanego (normie, akcie prawnym) i prowadzi do jednoznacznego określenia stopnia zgodności audytowanego obiektu ze specyfikacją. Test penetracyjny służy do określenia faktycznego stanu bezpieczeństwa danego obiektu i nie musi być oparty na jakiejś szczególnej specyfikacji.
Skanowanie podatności polega na wykryciu, uszeregowaniu i zgłoszeniu znanych podatności za pomocą narzędzi automatycznych. Test penetracyjny ma natomiast wykazać, jak podatności można wykorzystać do obejścia zabezpieczeń. Jest w zasadzie procesem ręcznym, w którym narzędzia automatyczne pełnią rolę pomocniczą, i może trwać dni lub tygodnie. Według wytycznych PCI DSS samo uruchomienie narzędzia automatycznego nie spełnia wymogu przeprowadzenia testu penetracyjnego, ponieważ narzędzie nie ocenia rzeczywistego ryzyka, a jego wyniki musi zinterpretować tester. Test pozwala też wykryć połączenia podatności, które razem dają napastnikowi większy dostęp niż każda z osobna, czego skaner oceniający podatności pojedynczo nie wychwytuje.
Według wytycznych PCI SSC certyfikaty mogą świadczyć o umiejętnościach i kompetencjach pentestera, choć nie są wymagane. Same certyfikaty nie potwierdzają jednak kwalifikacji, dlatego przy wyborze testera istotne jest również jego doświadczenie, m.in. liczba lat pracy przy testach penetracyjnych i wcześniejsze testy środowisk o podobnej skali. Jako przykłady certyfikatów wytyczne wymieniają m.in. OSCP oraz certyfikaty GIAC. Do certyfikatów z zakresu testów penetracyjnych należą m.in.: