Początki testów penetracyjnych
W roku 1967, grupa specjalistów od bezpieczeństwa komputerowego z Rand Corporation, w składzie Willis Ware, Rein Turn, Harold Petersen i Benard Peters, opracowywała raport po konferencji dotyczącej systemów komputerowych. Wnioski z ich pracy wskazywały na podatność mediów komunikacyjnych między komputerami na nieautoryzowany dostęp.
Wtedy to, po raz pierwszy w historii, sformułowano metodę symulacji ataku, mającą na celu przełamanie zabezpieczeń komputerowych. James P. Anderson rozwinął tę koncepcję, opracowując szczegółową procedurę krok po kroku, która stała się podstawą współczesnych testów penetracyjnych.
Proces ten był skonstruowany w prosty sposób: zespoły ds. bezpieczeństwa miały przechodzić przez kolejne fazy, od identyfikacji potencjalnej luki, aż po opracowanie skutecznych metod jej zneutralizowania. Szczegółowy opis historii testów penetracyjnych można znaleźć w artykule powiązanym linkiem.
Zapewnienie bezpieczeństwa firmy to zadanie wymagające specjalistycznej wiedzy i czasu. Jednak w dobie zaawansowanej technologii, osoby o złych intencjach łatwo mogą znaleźć słabe punkty w zabezpieczeniach organizacji. Testy penetracyjne skupiają się na zasobach firmy dostępnych w Internecie, takich jak aplikacje internetowe, strony www, serwery DNS czy poczta elektroniczna. Ich celem jest symulacja ataku, pozwalająca na dostęp i kradzież cennych danych.
Dzięki testom penetracyjnym, przedsiębiorstwo ma szansę zlokalizować i wzmocnić potencjalne obszary narażone na ataki, zanim zostaną one wykorzystane. Badania pokazują, że aż 73% udanych ataków wykorzystało luki w zabezpieczeniach aplikacji internetowych.
Obecnie, bardziej niż kiedykolwiek wcześniej, organizacje muszą monitorować bezpieczeństwo swoich aplikacji, systemów i sieci. Przeprowadzanie symulowanych testów jest skuteczną metodą weryfikacji skuteczności zabezpieczeń i kontroli systemów. Jest to proces, który powinien być regularnie powtarzany, a jego częstotliwość zależy od struktury organizacyjnej firmy oraz ryzyka zidentyfikowanego w ocenach.
Na szczęście, testy penetracyjne nie są skomplikowane. Wyposażając zespoły IT w odpowiednie umiejętności, każda organizacja może konsekwentnie wdrażać zabezpieczenia, zwłaszcza przy okazji aktualizacji infrastruktury lub wdrażania nowych usług i zasobów cyfrowych.
Kluczem do wszystkiego jest zrozumienie na czym polega cały proces.
Czym są testy penetracyjne?
Zanim przejdziemy do szczegółów „jak”, warto wyjaśnić „co” i „dlaczego”. Testy penetracyjne, często określane jako „pentesty”, są oficjalnie aprobowanym symulowanym cyberatakiem na infrastrukturę firmy, przeprowadzonym w bezpiecznym i kontrolowanym środowisku.
W połączeniu z audytami bezpieczeństwa, pentesty służą do identyfikacji słabych punktów w zabezpieczeniach w określonym obszarze działalności organizacji. Pod względem taktyki, testy te naśladują działania hakerów. Oto główne powody, dla których warto wdrożyć testy penetracyjne:
- Identyfikacja ukrytych luk w zabezpieczeniach, zanim zostaną one wykryte przez cyberprzestępców.
- Wzmocnienie procedur i strategii bezpieczeństwa.
- Obniżenie kosztów naprawy i czasu potrzebnego na powrót do normalnej pracy po ataku.
- Zapewnienie zgodności z przepisami dotyczącymi bezpieczeństwa i ochrony danych osobowych.
- Ochrona reputacji marki i utrzymanie zaufania klientów.
Testy penetracyjne sprawdzają odporność przedsiębiorstwa na ataki i ujawniają, jak łatwo hakerzy mogą uzyskać dostęp do systemów. Ponadto, uzyskane informacje mogą pomóc w ustaleniu priorytetów inwestycji w cyberbezpieczeństwo, przestrzeganiu standardów branżowych i udoskonalaniu strategii obronnych w celu ochrony firmy przed potencjalnymi zagrożeniami. Wszystko to jest możliwe dzięki automatycznym narzędziom do testowania, nazywanym narzędziami penetracyjnymi.
Czym są narzędzia do testowania penetracyjnego?
Etyczni hakerzy korzystają z narzędzi do testów penetracyjnych, aby ocenić odporność infrastruktury informatycznej poprzez symulację ataków z różnych źródeł. Dzięki tym narzędziom zespoły ds. bezpieczeństwa mogą wyeliminować powtarzalne zadania testowe, szybciej generować raporty z testów i zmniejszyć koszty związane z wykorzystaniem wielu skanerów.
Narzędzia te występują w różnych odmianach: open source, aplikacje internetowe, sieciowe, mobilne, chmurowe, manualne, automatyczne i testy penetracyjne jako usługa. Wybierając odpowiednie narzędzia, warto zwrócić uwagę na kluczowe funkcje, takie jak raporty z możliwością generowania rekomendacji, integracja CI/CD, wsparcie w rozwiązywaniu problemów oraz certyfikaty testów penetracyjnych (niewielu dostawców udostępnia publicznie dostępne certyfikaty).
Mając to na uwadze, przyjrzyjmy się bliżej procesowi testowania penetracyjnego.
Etapy testów penetracyjnych
Typowy test penetracyjny składa się z kilku etapów. Różne źródła mogą przedstawiać proces w różny sposób, ale ogólna struktura pozostaje niezmienna. W procesie tym wyróżnia się fazy takie jak: zbieranie informacji, skanowanie, ocenę luk, wykorzystanie luki i raportowanie.
Najlepsi testerzy korzystają z różnych narzędzi, aby w każdej fazie testowania wykorzystać odpowiednie rozwiązanie. Poszczególne etapy procesu można opisać w następujący sposób.
Zbieranie informacji
Ta faza, często pomijana, pomaga organizacji wypracować wspólne podejście z testerem penetracyjnym. Na tym etapie określa się zakres prac, zasady współpracy, ramy czasowe i szczegółową logistykę, mając na uwadze jasne cele i zadania.
Aby test penetracyjny był kompletny i wartościowy, na tym etapie należy ustalić obszary wymagające testowania oraz najlepsze metody. Początkujący powinni unikać pomijania tego kroku.
Przed rozpoczęciem testów systemu, organizacja musi wyrazić zgodę testerowi. W przeciwnym razie jego działania mogą być uznane za nielegalne. Organizacje ustalają jasne zasady (w umowie), aby zapewnić płynny przebieg pracy podczas współpracy z testerami. Umowa powinna również precyzować najważniejsze zasoby, cele testów oraz środki ostrożności. Dodatkowo, ten krok ma wpływ na wszystkie kolejne działania. W efekcie, wszystkie plany są dostosowane do oczekiwanych wyników testów.
Spotkanie rozpoznawcze/OSINT
W tej fazie testerzy zbierają wszelkie dostępne informacje o systemie. Zebrane dane są wykorzystywane w kolejnych testach i bazują na wynikach pierwszego etapu. W ten sposób testerzy precyzyjnie określają, jakie dane należy zebrać i jakie strategie wdrożyć. Jeśli wybierzesz aktywny rekonesans, tester bezpośrednio atakuje systemy. Jeśli wybierzesz podejście pasywne, korzystasz z ogólnie dostępnych informacji. W celu uzyskania jak najszerszego obrazu, warto zastosować obie techniki.
Aktywne pozyskiwanie danych obejmuje analizę sieci, systemów operacyjnych, kont użytkowników, nazw domen, serwerów pocztowych i aplikacji. Pasywne gromadzenie danych opiera się na wywiadzie typu open source; można korzystać z mediów społecznościowych, informacji podatkowych, stron internetowych i innych publicznych danych.
Oto kilka narzędzi wywiadu typu open source (OSINT), które moi współpracownicy i ja uważamy za przydatne i łatwe w użyciu do gromadzenia i łączenia informacji z Internetu. Wykorzystując środowisko OSINT, można stworzyć obszerną listę potencjalnych punktów wejścia i luk w zabezpieczeniach. Chociaż ten krok jest istotny przy testach penetracyjnych wewnętrznych i zewnętrznych, nie jest wykorzystywany w przypadku testów aplikacji internetowych, mobilnych ani interfejsów API.
Skanowanie
Następnym krokiem jest szczegółowa techniczna analiza systemu. Używając narzędzi skanujących, takich jak automatyczne skanery podatności i narzędzia do mapowania sieci, można zrozumieć, jak system docelowy reaguje na różne próby włamań, otwarte porty, ruch sieciowy itp.
Głównymi elementami tego etapu jest skanowanie i analiza zasobów. Można użyć narzędzi takich jak Nmap, aby odkryć usługi komputerowe i hosty, wysyłać pakiety i analizować odpowiedzi. Na koniec tego etapu, zyskujemy informacje o aktywach, takie jak systemy operacyjne, uruchomione usługi i otwarte porty.
Analizując wyniki, możemy zaplanować sposób wykorzystania luk w zabezpieczeniach. Możemy też naszkicować cyfrowy krajobraz systemu i zlokalizować potencjalne punkty ataku. Można przeprowadzić analizę statyczną i dynamiczną, aby uzyskać jasne zrozumienie reakcji systemu na różne warunki.
Analiza statyczna bada kod aplikacji, zanim zostanie on uruchomiony. Można wykorzystać narzędzia do skanowania baz kodu. Analiza dynamiczna, bada kod podczas działania aplikacji. Należy pamiętać, że informacje zebrane na tym etapie muszą być precyzyjne i prawidłowo uzyskane, ponieważ od tego zależy powodzenie kolejnych kroków.
Ocena/Zysk dostępu
Na tym etapie, wszystkie dane zebrane w poprzednich krokach, służą do identyfikacji luk w zabezpieczeniach i określenia, czy można je wykorzystać. Mimo, że etap ten jest pomocny sam w sobie, jego skuteczność wzrasta w połączeniu z innymi procesami testowania penetracyjnego.
Aby ocenić ryzyko związane z wykrytymi lukami, testerzy korzystają z różnych źródeł. Jednym z nich jest Krajowa Baza Danych o Lukach w Zabezpieczeniach (NVD), która analizuje słabe punkty oprogramowania publikowane w czasopiśmie Common Vulnerabilities and Exposures (CVE).
Następnie, identyfikuje się cele i mapuje wektory ataku. Obszary docelowe obejmują wartościowe aktywa, takie jak dane pracowników, informacje o klientach, partnerzy/łańcuchy dostaw, dostawcy, porty, aplikacje i protokoły. Rozpoczyna się symulację ataków na aplikacje internetowe.
Najpopularniejsze metody ataków to iniekcja SQL, skrypty między witrynami i backdoory. System jest wykorzystywany do podnoszenia uprawnień, przechwytywania ruchu i kradzieży danych, aby ujawnić potencjalne szkody. Kierując się zakresem ustalonym na etapach gromadzenia informacji, tester ma działać w ramach określonych ograniczeń.
Eksploatacja
Tester, zwany także osobą odpowiedzialną za utrzymanie dostępu, sprawdza, czy zidentyfikowane luki można wykorzystać. Ta faza obejmuje faktyczne próby naruszenia i uzyskania dostępu do systemu. Korzystając z narzędzi takich jak Metasploit, tester symuluje rzeczywisty atak.
W miarę postępów tego etapu, tester bierze na siebie odpowiedzialność za zasoby organizacji – zapewniając, że systemy nie zostaną narażone na uszkodzenie po zakończeniu symulacji.
Metasploit jest preferowanym narzędziem ze względu na płynne działanie w zakresie wykorzystywania luk w zabezpieczeniach. Na tym etapie, oceniane są skutki naruszenia. Tester może spróbować zaszyfrować lub wyeksfiltrować dane, oraz zasymulować ataki typu ransomware i zero-day. Kluczem do udanego testu penetracyjnego jest znalezienie równowagi między przekraczaniem granic a zachowaniem integralności systemu.
Najlepiej współpracować z ekspertami, którzy potrafią wykryć luki w zabezpieczeniach, które są pomijane przez automatyczne skanery. Na koniec tej fazy, tester powinien uzyskać uprawnienia wysokiego poziomu w systemie, dostęp do informacji o sieci i zidentyfikować dostępne dane. Etyczny haker powinien też wyjaśnić potencjalne konsekwencje exploitów dla wartościowych zasobów.
Analiza ryzyka i rekomendacje, przegląd, raportowanie
Po zakończeniu fazy eksploatacji, tester tworzy raport dokumentujący wyniki testów. Raport ten powinien być wykorzystany do naprawienia wykrytych luk w zabezpieczeniach.
Dobry raport z testu penetracyjnego jest zbiorem dobrze udokumentowanych luk w zabezpieczeniach, przedstawionych w sposób pomagający organizacji zrozumieć i zaradzić zagrożeniom bezpieczeństwa. Taki raport powinien zawierać szczegółowe informacje o wszystkich wykrytych lukach, ich wynikach CVVS, podsumowanie zagrożeń technicznych, możliwy wpływ na działalność biznesową, szczegółowe omówienie trudności związanych z wykorzystaniem luki oraz rekomendacje.
Ponadto, raporty powinny dokumentować wszystkie fazy, modele testów, zastosowane techniki i zasoby docelowe. Jeśli to możliwe, tester powinien również określić, czy test spełnia obowiązujące wymagania. Podsumowując, najlepiej przedstawić raport wraz z ogólnym podsumowaniem i technicznym przewodnikiem.
Po sporządzeniu raportu, kluczowe jest oczyszczenie systemu. Chodzi o przywrócenie systemu do stanu sprzed testu, cofając wszystkie wprowadzone zmiany do ustawień domyślnych. Działania te obejmują usunięcie wszystkich plików wykonywalnych, tymczasowych i skryptów z zaatakowanych systemów, likwidację kont użytkowników utworzonych na potrzeby testu oraz usunięcie rootkitów ze środowiska.
Ostatnim etapem procesu jest remediacja, która spoczywa na barkach organizacji. Bazując na raportach i ustaleniach z testów penetracyjnych, organizacja identyfikuje słabe punkty, analizuje potencjalne konsekwencje, podejmuje decyzje o dalszych działaniach i opracowuje strategie naprawcze.
Ponieważ etap ten ma na celu usunięcie przeszłych błędów, wszystkie możliwe do wykorzystania luki w zabezpieczeniach, powinny zostać naprawione w rozsądnym czasie. Czasami, ten etap może ulec wydłużeniu, na potrzeby ponownych testów aktualizacji lub przeprowadzenia dodatkowych testów.
Praktyczne zastosowanie testów penetracyjnych: przewodnik krok po kroku
W tym przykładzie, wybraliśmy platformę Metasploit. Możesz stworzyć własny przepływ pracy, ale oto typowy sposób na rozpoczęcie testów. Na początku należy zainstalować framework.
Jeśli używasz systemu Linux/macOS, użyj polecenia:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \ chmod 755 msfinstall && \ ./msfinstall
Jeśli używasz systemu Windows, pobierz najnowszy instalator systemu Windows. Alternatywnie użyj polecenia Shell:
[CmdletBinding()] Param( $DownloadURL = "https://windows.metasploit.com/metasploitframework-latest.msi", $DownloadLocation = "$env:APPDATA/Metasploit", $InstallLocation = "C:\Tools", $LogLocation = "$DownloadLocation/install.log" ) If(! (Test-Path $DownloadLocation) ){ New-Item -Path $DownloadLocation -ItemType Directory } If(! (Test-Path $InstallLocation) ){ New-Item -Path $InstallLocation -ItemType Directory } $Installer = "$DownloadLocation/metasploit.msi" Invoke-WebRequest -UseBasicParsing -Uri $DownloadURL -OutFile $Installer & $Installer /q /log $LogLocation INSTALLLOCATION="$InstallLocation"
Następnie…
Rozpocznij projekt – będzie to twój magazyn danych i przestrzeń robocza. Ponieważ w organizacji możesz mieć różne wymagania dla różnych podsieci, zorganizowanie pracy zwiększy twoją efektywność. Na przykład, jeśli masz test dla zespołów IT i HR, powinieneś wygenerować osobne wyniki.
Źródło obrazu – MetaSploit
Uzyskaj dane docelowe – dodaj dane do swojego projektu poprzez skanowanie wykrywające lub importuj istniejące dane. Skanuj cele, aby ustalić otwarte porty i wyświetlić usługi sieciowe. Użyj opcji skanowania. Następnie wprowadź adresy IP, z którymi chcesz pracować, każdy w jednej linii. Możesz też importować dane z pliku lokalnego.
Źródło obrazu – MetaSploit
Przeglądaj/zarządzaj danymi hosta – przeglądaj dane z poziomu hosta lub projektu. Możesz przełączać się pomiędzy każdym adresem IP, aby uzyskać podgląd każdego hosta.
Źródło obrazu – MetaSploit
Skanuj w poszukiwaniu luk – uruchom skanowanie podatności za pomocą opcji Nexpose. Ten krok wykorzystuje bazy danych o lukach w zabezpieczeniach do ich identyfikacji.
Wykorzystuj luki w zabezpieczeniach – możesz bezproblemowo wykorzystywać luki za pomocą kreatora walidacji. Alternatywnie, możesz nadal korzystać z Nexpose.
Aktywność po exploicie – Zbierz dane po exploicie, poprzez zakładkę sesji; kliknij „odbierz”.
Źródło obrazu – MetaSploit
Oczyszczanie – po zakończeniu zbierania danych, użyj opcji „czyszczenia”, aby zakończyć sesję i wyczyścić system.
Generuj raporty – na koniec testu, Metasploit udostępnia szereg raportów, które stanowią punkt wyjścia do konsolidacji danych i kompilacji wyników.
Szczegółowy przewodnik szybkiego startu dotyczący testów penetracyjnych można znaleźć na stronie Szybki przewodnik po Metasploit.
Typowe narzędzia do testowania penetracyjnego
Niektóre popularne narzędzia to Sn1per, Metasploit i Commix.
#1. Sn1per
Sn1per to narzędzie do badania podatności, które sprawdza wpływ ataków po stronie klienta w przypadku włamań. Można go używać do symulowania ataków zdalnych i ataków na użytkownika w kontrolowanym środowisku. Sn1per ma 6 tys. gwiazdek na GitHubie. Pełni też funkcję zintegrowanego narzędzia multimedialnego. Dzięki Sn1per można zaoszczędzić czas, automatyzując narzędzia open source i komercyjne do wykrywania luk w zabezpieczeniach.
#2. Metasploit
Metasploit to rozbudowana platforma do testów penetracyjnych, rozwijana dzięki wsparciu społeczności open source. Ma 31,2 tys. gwiazdek na GitHubie, co świadczy o dużym zainteresowaniu w świecie oprogramowania. Metasploit jest rozwijany dzięki współpracy pasjonatów bezpieczeństwa, którzy starają się eliminować luki w zabezpieczeniach i podnosić świadomość w zakresie bezpieczeństwa.
#3. Commix
Commix to doskonałe narzędzie do wykorzystywania luk związanych z wstrzykiwaniem poleceń systemu operacyjnego. Commix specjalizuje się w lukach związanych z iniekcją poleceń, jest łatwy w użyciu, bezpłatny i ma otwarte źródła, jest kompatybilny z wieloma platformami, przenośny i modułowy. Ma 4 tys. gwiazdek na GitHubie. Jest darmowy i open source.
Podsumowanie
Podział procesu testowania penetracyjnego na etapy jest niezbędny dla przedsiębiorstw, chcących wzmocnić ochronę swoich produktów cyfrowych przed coraz częstszymi cyberatakami. W obliczu coraz bardziej zaawansowanych cyberprzestępców, symulowanie rzeczywistych ataków za pomocą testów penetracyjnych jest skutecznym sposobem na poruszanie się w stale zmieniającym się krajobrazie cyberzagrożeń.
Dostosowując test penetracyjny do konkretnych potrzeb organizacji, można zapewnić skuteczność polityki bezpieczeństwa. Przejście przez wszystkie etapy testu penetracyjnego gwarantuje najlepszy zwrot z inwestycji w cyberbezpieczeństwo.
Aby pomyślnie przeprowadzić test penetracyjny, należy podejść do tego w przemyślany sposób. Na początku, zbierz wszystkie potrzebne informacje na temat systemu. Wykorzystaj zebrane dane, aby zaplanować dalsze etapy. Określ cele i zakres testów, które mają być skierowane na wybrany system.
Następnie, przeskanuj system, aby zdobyć dogłębną wiedzę i zidentyfikować luki w zabezpieczeniach. Przejdź do symulacji ataku, starając się nie uszkodzić systemu. Następnie, wygeneruj raporty, które pomogą w podjęciu odpowiednich działań naprawczych. Nie zapomnij o oczyszczeniu i przywróceniu systemu do pierwotnego stanu.
Prawidłowo stosowane testy penetracyjne wzmacniają bezpieczeństwo organizacji, identyfikując i naprawiając potencjalne luki. Wraz z migracją wielu firm do chmury i wdrażaniem nowych technologii, testy penetracyjne stają się coraz ważniejsze w dziedzinie bezpieczeństwa informacji. W rzeczywistości, 75% przedsiębiorstw korzysta z testów penetracyjnych w celu zweryfikowania poziomu bezpieczeństwa. Lub w celu spełnienia wymogów zgodności. Poświęcając odpowiednio dużo uwagi i traktując każdy etap testu z należytą powagą, zawsze można znaleźć wartość w przeprowadzaniu testów penetracyjnych.
Następnie, wypróbuj bezpłatne narzędzia do testów penetracyjnych online (Pentest), aby przetestować bezpieczeństwo aplikacji.