complete penetration testing guide with sample test cases
Jest to proces identyfikacji luk w zabezpieczeniach aplikacji poprzez ocenę systemu lub sieci przy użyciu różnych złośliwych technik. Słabe punkty systemu są wykorzystywane w tym procesie poprzez autoryzowany symulowany atak.
Celem tego testu jest zabezpieczenie ważnych danych przed osobami z zewnątrz, takimi jak hakerzy, którzy mogą mieć nieautoryzowany dostęp do systemu. Po zidentyfikowaniu luki jest ona wykorzystywana do wykorzystania systemu w celu uzyskania dostępu do poufnych informacji.
Test penetracyjny jest również nazywany testem penetracyjnym, a tester penetracji jest również określany jako etyczny haker.
Czego się nauczysz:
- Co to jest test penetracyjny?
- Przyczyny luk w zabezpieczeniach
- Narzędzia i firmy do testowania penetracji
- Zalecane narzędzia do testów penetracyjnych
- Zalecana firma przeprowadzająca testy penetracyjne
- Dlaczego testy penetracyjne?
- Co należy przetestować?
- Typy testów penetracyjnych
- Techniki testowania pióra
- Testy penetracyjne Przykładowe przypadki testowe (scenariusze testowe)
- Wniosek
Co to jest test penetracyjny?
Luki w zabezpieczeniach systemu komputerowego, aplikacji internetowej lub sieci możemy wykryć za pomocą testów penetracyjnych.
Test penetracyjny mówi, czy istniejące środki obronne zastosowane w systemie są wystarczająco silne, aby zapobiec jakimkolwiek naruszeniom bezpieczeństwa. Raporty z testów penetracyjnych sugerują również środki zaradcze, które można podjąć w celu zmniejszenia ryzyka włamania do systemu.
Przyczyny luk w zabezpieczeniach
- Błędy projektowe i rozwojowe : Mogą występować błędy w projektowaniu sprzętu i oprogramowania. Te błędy mogą narazić na ujawnienie krytycznych danych biznesowych.
- Słaba konfiguracja systemu : To kolejna przyczyna luki. Jeśli system jest źle skonfigurowany, może wprowadzić luki, przez które atakujący mogą dostać się do systemu i wykraść informacje.
- Błędy ludzkie : Czynniki ludzkie, takie jak niewłaściwa utylizacja dokumentów, pozostawienie dokumentów bez nadzoru, błędy w kodowaniu, zagrożenia wewnętrzne, udostępnianie haseł w witrynach phishingowych itp. Mogą prowadzić do naruszeń bezpieczeństwa.
- Łączność : Jeśli system jest podłączony do niezabezpieczonej sieci (otwarte połączenia), jest w zasięgu hakerów.
- Złożoność : Luka w zabezpieczeniach rośnie proporcjonalnie do złożoności systemu. Im więcej funkcji ma system, tym większe jest prawdopodobieństwo zaatakowania systemu.
- Hasła : Hasła służą do zapobiegania nieautoryzowanemu dostępowi. Powinny być na tyle silne, aby nikt nie mógł odgadnąć Twojego hasła. Hasła nie powinny być nikomu udostępniane za wszelką cenę, a hasła należy okresowo zmieniać. Pomimo tych instrukcji, czasami ludzie ujawniają swoje hasła innym, zapisują je gdzieś i przechowują łatwe do odgadnięcia hasła.
- Wejście użytkownika : Na pewno słyszałeś o iniekcji SQL, przepełnieniu bufora itp. Dane otrzymane elektronicznie za pomocą tych metod mogą zostać użyte do ataku na system odbierający.
- Zarządzanie : Bezpieczeństwo jest trudne i drogie w zarządzaniu. Czasami organizacjom brakuje odpowiedniego zarządzania ryzykiem, przez co system jest podatny na zagrożenia.
- Brak przeszkolenia personelu : Prowadzi to do błędów ludzkich i innych luk w zabezpieczeniach.
- Komunikacja : Kanały takie jak sieci komórkowe, internet, telefon otwierają zakres kradzieży bezpieczeństwa.
Narzędzia i firmy do testowania penetracji
Zautomatyzowane narzędzia mogą służyć do identyfikacji niektórych standardowych luk w zabezpieczeniach aplikacji. Narzędzia Pentest skanują kod, aby sprawdzić, czy nie ma w nim złośliwego kodu, który może prowadzić do potencjalnego naruszenia bezpieczeństwa. Narzędzia Pentest mogą weryfikować luki w zabezpieczeniach obecne w systemie, badając techniki szyfrowania danych i ustalając zakodowane wartości, takie jak nazwa użytkownika i hasło.
Kryteria wyboru najlepszego narzędzia do penetracji:
- Powinien być łatwy do wdrożenia, konfiguracji i użytkowania.
- Powinien łatwo przeskanować system.
- Powinien kategoryzować luki w oparciu o wagę, która wymaga natychmiastowej naprawy.
- Powinien być w stanie zautomatyzować weryfikację luk w zabezpieczeniach.
- Powinien ponownie zweryfikować znalezione wcześniej exploity.
- Powinien generować szczegółowe raporty i dzienniki podatności.
Gdy już wiesz, jakie testy musisz wykonać, możesz przeszkolić swoje wewnętrzne zasoby testowe lub zatrudnić konsultantów ekspertów, którzy wykonają zadanie penetracyjne za Ciebie.
Zalecane narzędzia do testów penetracyjnych
# 1) Acunetix
Acunetix WVS oferuje zarówno specjalistom ds. Bezpieczeństwa, jak i inżynierom oprogramowania szereg oszałamiających funkcji w łatwym, prostym i bardzo solidnym pakiecie.
=> Wypróbuj najlepsze narzędzie do testu pióra tutaj
# 2) Intruz
Intruz to potężny skaner luk w zabezpieczeniach, który znajduje słabości cyberbezpieczeństwa w Twoim cyfrowym majątku, wyjaśnia zagrożenia i pomaga w ich naprawie, zanim dojdzie do naruszenia. Jest to doskonałe narzędzie, które pomaga zautomatyzować działania związane z testami penetracyjnymi.
Kluczowe cechy :
- Ponad 9 000 automatycznych kontroli w całej infrastrukturze IT.
- Kontrole infrastruktury i warstwy internetowej, takie jak wstrzykiwanie SQL i skrypty między lokacjami.
- Automatycznie skanuje systemy po wykryciu nowych zagrożeń.
- Wiele integracji: AWS, Azure, Google Cloud, API, Jira, Teams i nie tylko.
- Intruder oferuje 30-dniową bezpłatną wersję próbną swojego planu Pro.
Zalecana firma przeprowadzająca testy penetracyjne
# 1) ImmuniWeb®
ImmuniWeb® to firma zajmująca się testami penetracji z siedzibą w Genewie w Szwajcarii. Platforma do testowania penetracji aplikacji z obsługą DevSecOps łączy ludzi ze sztuczną inteligencją i zapewnia zero fałszywie pozytywnych umów SLA, najwyższą wykrywalność luk w zabezpieczeniach i raportowanie z możliwością podejmowania działań.
ImmuniWeb oferuje kompleksowe testy penetracyjne aplikacji wewnętrznych i zewnętrznych aplikacji internetowych i mobilnych, interfejsów API i usług internetowych, serwerów pocztowych, urządzeń IoT i nie tylko.
Kluczowe cechy:
- Ciągłe wykrywanie nowego kodu.
- Szybkie i ekonomiczne testowanie ręczne.
- Możliwości wirtualnego łatania jednym kliknięciem.
- Dostęp 24/7 do analityków bezpieczeństwa.
- Integracja z DevSecOps i CI / CD.
- Natychmiastowe zamówienie i szybka dostawa.
- Pulpit nawigacyjny wielozadaniowy.
Inne bezpłatne narzędzia:
Usługi komercyjne:
Możesz również zapoznać się z poniższą listą dostępną w STH, która mówi o 37 potężnych narzędziach do testów penetracyjnych => Potężne narzędzia do testowania penetracji dla każdego testera penetracji
konwerter youtube na mp4 wysokiej jakości
Dlaczego testy penetracyjne?
Na pewno słyszeliście o ataku ransomware WannaCry, który rozpoczął się w maju 2017 roku. Został on zablokowany na ponad 2 lakh komputerach na całym świecie i zażądał zapłaty okupu w kryptowalucie Bitcoin. Atak ten dotknął wiele dużych organizacji na całym świecie.
Przy tak masowych i niebezpiecznych cyberatakach, które mają miejsce w dzisiejszych czasach, nieuniknione stało się przeprowadzanie testów penetracyjnych w regularnych odstępach czasu w celu ochrony systemów informatycznych przed naruszeniami bezpieczeństwa.
Tak więc testy penetracyjne są wymagane głównie w przypadku:
- Dane finansowe lub krytyczne muszą być zabezpieczone podczas przesyłania ich między różnymi systemami lub przez sieć.
- Wielu klientów prosi o testowanie za pomocą pióra w ramach cyklu wydawania oprogramowania.
- Aby zabezpieczyć dane użytkownika.
- Aby znaleźć luki w zabezpieczeniach aplikacji.
- Aby odkryć luki w systemie.
- Ocena wpływu udanych ataków na biznes.
- Spełnienie wymogów bezpieczeństwa informacji w organizacji.
- Wdrażanie skutecznej strategii bezpieczeństwa w organizacji.
Każda organizacja musi zidentyfikować problemy dotyczące bezpieczeństwa występujące w sieci wewnętrznej i komputerach. Korzystając z tych informacji, organizacja może zaplanować obronę przed każdą próbą włamania. Prywatność użytkowników i bezpieczeństwo danych to obecnie największe obawy.
Wyobraź sobie, że jakiemukolwiek hakerowi udaje się uzyskać dane użytkownika serwisu społecznościowego, takiego jak Facebook. Organizacja może napotkać problemy prawne z powodu małej luki pozostawionej w systemie oprogramowania. W związku z tym duże organizacje szukają certyfikatów zgodności ze standardami PCI (Payment Card Industry) przed rozpoczęciem jakiejkolwiek działalności z klientami zewnętrznymi.
Co należy przetestować?
- Oprogramowanie (system operacyjny, usługi, aplikacja)
- Sprzęt komputerowy
- Sieć
- Procesy
- Zachowanie użytkownika końcowego
Typy testów penetracyjnych
# 1) Test inżynierii społecznej: W tym teście próbuje się zmusić osobę do ujawnienia poufnych informacji, takich jak hasło, krytyczne dane biznesowe, itp. Testy te są najczęściej przeprowadzane przez telefon lub Internet i są skierowane do określonych punktów pomocy, pracowników i procesów.
Błędy ludzkie są głównymi przyczynami luk w zabezpieczeniach. Wszyscy pracownicy powinni przestrzegać standardów i zasad bezpieczeństwa, aby uniknąć prób penetracji inżynierii społecznej. Przykładem tych standardów jest nie wspominanie o żadnych poufnych informacjach w komunikacji e-mailowej lub telefonicznej. Audyty bezpieczeństwa mogą być przeprowadzane w celu zidentyfikowania i skorygowania wad procesu.
# 2) Test aplikacji internetowej: Za pomocą metod programowych można sprawdzić, czy aplikacja jest narażona na luki w zabezpieczeniach. Sprawdza podatność aplikacji internetowych i programów umieszczonych w środowisku docelowym.
# 3) Test penetracji fizycznej: W celu ochrony wrażliwych danych stosowane są silne fizyczne metody zabezpieczeń. Jest to powszechnie stosowane w obiektach wojskowych i rządowych. Wszystkie fizyczne urządzenia sieciowe i punkty dostępowe są testowane pod kątem możliwości naruszenia bezpieczeństwa. Ten test nie jest zbyt istotny w zakresie testowania oprogramowania.
# 4) Test usług sieciowych : Jest to jeden z najczęściej wykonywanych testów penetracyjnych, podczas którego identyfikuje się otwory w sieci, na podstawie których dokonywany jest wpis w systemach w sieci, aby sprawdzić, jakie są tam luki. Można to zrobić lokalnie lub zdalnie.
# 5) Test po stronie klienta : Ma na celu wyszukiwanie i wykorzystywanie luk w oprogramowaniu po stronie klienta.
# 6) Zdalne dial-up war dial : Wyszukuje modemy w środowisku i próbuje zalogować się do systemów podłączonych przez te modemy przez zgadywanie hasła lub wymuszenie brutalne.
# 7) Test bezpieczeństwa sieci bezprzewodowej : Wykrywa otwarte, nieautoryzowane i mniej zabezpieczone hotspoty lub sieci Wi-Fi i łączy się przez nie.
Powyższe 7 kategorii, które widzieliśmy, jest jednym ze sposobów kategoryzowania typów testów piórkowych. Możemy również podzielić rodzaje testów penetracyjnych na trzy części, jak pokazano poniżej:
Omówmy po kolei te podejścia do testowania:
- Testy penetracyjne w czarnej skrzynce : W tym podejściu tester ocenia docelowy system, sieć lub proces bez znajomości jego szczegółów. Mają po prostu bardzo wysoki poziom danych wejściowych, takich jak adres URL lub nazwa firmy, za pomocą których przenikają do środowiska docelowego. Żaden kod nie jest badany w tej metodzie.
- Testy penetracyjne metodą White Box : W tym podejściu tester jest wyposażony w pełne szczegóły dotyczące środowiska docelowego - systemy, sieć, system operacyjny, adres IP, kod źródłowy, schemat itp. Sprawdza kod i wyszukuje błędy projektowe i rozwojowe. To symulacja wewnętrznego ataku bezpieczeństwa.
- Testy penetracyjne Gray Box : W tym podejściu tester ma ograniczone szczegóły dotyczące środowiska docelowego. Jest to symulacja zewnętrznych ataków bezpieczeństwa.
Techniki testowania pióra
- Ręczny test penetracji
- Korzystanie z narzędzi do automatycznych testów penetracyjnych
- Połączenie procesu ręcznego i automatycznego
Trzeci proces jest bardziej powszechny w celu zidentyfikowania wszelkiego rodzaju luk w zabezpieczeniach.
Ręczny test penetracji
Trudno jest znaleźć wszystkie luki w zabezpieczeniach za pomocą zautomatyzowanych narzędzi. Istnieją pewne luki, które można zidentyfikować tylko poprzez skanowanie ręczne. Testerzy penetracji mogą wykonywać lepsze ataki na aplikacje w oparciu o ich umiejętności i wiedzę o penetrowanym systemie.
Metody takie jak inżynieria społeczna mogą być wykonywane tylko przez ludzi. Ręczne sprawdzanie obejmuje projekt, logikę biznesową oraz weryfikację kodu.
Proces testu penetracyjnego:
Omówmy rzeczywisty proces stosowany przez agencje testowe lub testerów penetracji. Identyfikacja luk w systemie jest pierwszym ważnym krokiem w tym procesie. Podejmowane są działania naprawcze w odniesieniu do tej luki i te same testy penetracyjne są powtarzane, dopóki system nie uzyska negatywnego wyniku dla wszystkich tych testów.
Możemy podzielić ten proces na następujące metody:
# 1) Gromadzenie danych: Aby uzyskać dane systemu docelowego, stosuje się różne metody, w tym wyszukiwarkę Google. Można również skorzystać z techniki analizy kodu źródłowego strony internetowej, aby uzyskać więcej informacji o wersji systemu, oprogramowania i wtyczek.
Na rynku dostępnych jest wiele bezpłatnych narzędzi i usług, które mogą dostarczyć informacji, takich jak nazwy baz danych lub tabel, wersje bazy danych, wersje oprogramowania, używany sprzęt i różne wtyczki innych firm używane w systemie docelowym.
# 2) Ocena podatności: Na podstawie danych zebranych w pierwszym kroku można znaleźć słabość bezpieczeństwa w docelowym systemie. Pomaga to testerom penetracji w przeprowadzaniu ataków przy użyciu zidentyfikowanych punktów wejścia w systemie.
# 3) Rzeczywisty exploit: To kluczowy krok. Atak na docelowy system wymaga specjalnych umiejętności i technik. Doświadczeni testerzy penetracji mogą wykorzystać swoje umiejętności do przeprowadzenia ataku na system.
# 4) Wynik analizy i przygotowania raportu: Po zakończeniu testów penetracyjnych przygotowywane są szczegółowe raporty do podjęcia działań naprawczych. Wszystkie zidentyfikowane luki i zalecane metody naprawcze są wymienione w tych raportach. Możesz dostosować format raportu luk w zabezpieczeniach (HTML, XML, MS Word lub PDF) zgodnie z potrzebami organizacji.
Testy penetracyjne Przykładowe przypadki testowe (scenariusze testowe)
Pamiętaj, że to nie są testy funkcjonalne. Twoim celem w Pentest jest znalezienie luk w zabezpieczeniach systemu. Poniżej znajduje się kilka ogólnych przypadków testowych, które niekoniecznie mają zastosowanie do wszystkich aplikacji.
- Sprawdź, czy aplikacja internetowa jest w stanie zidentyfikować ataki spamowe na formularze kontaktowe używane w serwisie.
- Serwer proxy - sprawdź, czy ruch sieciowy jest monitorowany przez urządzenia proxy. Serwer proxy utrudnia hakerom uzyskanie wewnętrznych szczegółów sieci, chroniąc w ten sposób system przed atakami z zewnątrz.
- Filtry spamu - sprawdź, czy przychodzący i wychodzący ruch e-mail jest filtrowany, a niechciane wiadomości e-mail są blokowane.
- Wiele klientów poczty e-mail ma wbudowane filtry spamu, które należy skonfigurować zgodnie z własnymi potrzebami. Te reguły konfiguracji można zastosować do nagłówków, tematu lub treści wiadomości e-mail.
- Zapora - upewnij się, że cała sieć lub komputery są chronione zaporami. Firewall może być oprogramowaniem lub sprzętem blokującym nieautoryzowany dostęp do systemu. Zapora może zapobiec wysyłaniu danych poza sieć bez Twojej zgody.
- Spróbuj wykorzystać wszystkie serwery, komputery stacjonarne, drukarki i urządzenia sieciowe.
- Sprawdź, czy wszystkie nazwy użytkowników i hasła są szyfrowane i przesyłane przez bezpieczne połączenia, takie jak https.
- Sprawdź informacje przechowywane w pliki cookie witryny . Nie powinien mieć czytelnego formatu.
- Sprawdź wcześniej znalezione luki, aby sprawdzić, czy poprawka działa.
- Sprawdź, czy w sieci nie ma otwartego portu.
- Sprawdź wszystkie urządzenia telefoniczne.
- Sprawdź bezpieczeństwo sieci WIFI.
- Sprawdź wszystkie metody HTTP. Metody PUT i Delete nie powinny być włączane na serwerze internetowym.
- Sprawdź, czy hasło spełnia wymagane standardy. Hasło powinno mieć co najmniej 8 znaków i zawierać co najmniej jedną cyfrę i jeden znak specjalny.
- Nazwa użytkownika nie powinna przypominać „admin” ani „administrator”.
- Strona logowania do aplikacji powinna zostać zablokowana po kilku nieudanych próbach logowania.
- Komunikaty o błędach powinny być ogólne i nie powinny zawierać szczegółowych informacji o błędach, takich jak „Nieprawidłowa nazwa użytkownika” lub „Nieprawidłowe hasło”.
- Sprawdź, czy znaki specjalne, znaczniki HTML i skrypty są prawidłowo obsługiwane jako wartość wejściowa.
- Wewnętrzne szczegóły systemu nie powinny być ujawniane w żadnym z komunikatów o błędach ani alertach.
- Niestandardowe komunikaty o błędach powinny być wyświetlane użytkownikom końcowym w przypadku awarii strony internetowej.
- Sprawdź użycie wpisów rejestru. Informacje wrażliwe nie powinny być przechowywane w rejestrze.
- Wszystkie pliki należy przeskanować przed przesłaniem ich na serwer.
- Wrażliwych danych nie należy przekazywać w adresach URL podczas komunikacji z różnymi wewnętrznymi modułami aplikacji internetowej.
- W systemie nie powinno być zakodowanej na stałe nazwy użytkownika ani hasła.
- Sprawdź wszystkie pola wejściowe z długim ciągiem wejściowym ze spacjami i bez.
- Sprawdź, czy funkcja resetowania hasła jest bezpieczna.
- Zweryfikuj aplikację dla Wstrzyknięcie SQL .
- Zweryfikuj aplikację dla Skrypty między witrynami .
- Ważne walidacje danych wejściowych należy przeprowadzać po stronie serwera zamiast sprawdzania JavaScript po stronie klienta.
- Krytyczne zasoby w systemie powinny być dostępne tylko dla upoważnionych osób i służb.
- Wszystkie dzienniki dostępu powinny być utrzymywane z odpowiednimi uprawnieniami dostępu.
- Sprawdź, czy sesja użytkownika kończy się po wylogowaniu.
- Sprawdź, czy przeglądanie katalogów jest wyłączone na serwerze.
- Sprawdź, czy wszystkie aplikacje i wersje baz danych są aktualne.
- Zweryfikuj manipulację adresem URL, aby sprawdzić, czy aplikacja internetowa nie wyświetla żadnych niepożądanych informacji.
- Sprawdź wyciek pamięci i przepełnienie buforu.
- Sprawdź, czy przychodzący ruch sieciowy jest skanowany w celu wykrycia ataków trojanów.
- Sprawdź, czy system jest bezpieczny przed atakami siłowymi - metodą prób i błędów w celu znalezienia poufnych informacji, takich jak hasła.
- Sprawdź, czy system lub sieć są zabezpieczone przed atakami DoS (denial-of-service). Haker może atakować sieć lub pojedynczy komputer za pomocą ciągłych żądań, przez co zasoby w systemie docelowym zostają przeciążone, co powoduje odmowę usługi dla uzasadnionych żądań.
- Sprawdź aplikację pod kątem ataków polegających na wstrzykiwaniu skryptów HTML.
- Weryfikuj pod kątem ataków COM i ActiveX.
- Weryfikuj pod kątem fałszywych ataków. Podszywanie się może mieć wiele typów - podszywanie się pod adres IP, fałszowanie adresu e-mail,
- Spoofing ARP, spoofing referrer, spoofing ID dzwoniącego, zatruwanie sieci wymiany plików, spoofing GPS.
- Sprawdź, czy nie występuje niekontrolowany atak na łańcuch formatu - atak bezpieczeństwa, który może spowodować awarię aplikacji lub wykonanie na niej szkodliwego skryptu.
- Atak typu Verify XML injection - służy do zmiany zamierzonej logiki aplikacji.
- Weryfikuj przed atakami na kanonizację.
- Sprawdź, czy strony błędów wyświetlają jakiekolwiek informacje, które mogą być pomocne dla hakera przed wejściem do systemu.
- Sprawdź, czy jakiekolwiek krytyczne dane, takie jak hasło, są przechowywane w tajnych plikach w systemie.
- Sprawdź, czy aplikacja zwraca więcej danych, niż jest to wymagane.
To tylko podstawowe scenariusze testów, aby rozpocząć pracę z Pentestem. Istnieją setki zaawansowanych metod penetracji, które można wykonać ręcznie lub za pomocą narzędzi do automatyzacji.
Dalsze czytanie:
Standardy testów piórkowych
- PCI DSS (Standard bezpieczeństwa danych w branży kart płatniczych)
- OWASP (Open Web Application Security Project)
- ISO / IEC 27002 , OSSTMM (Podręcznik metodologii testowania bezpieczeństwa Open Source)
Certyfikaty
- GPEN
- Associate Security Tester ( AST )
- Starszy tester bezpieczeństwa (SST)
- Certyfikowany tester penetracji ( CPT )
Wniosek
Wreszcie, jako tester penetracji, powinieneś zbierać i rejestrować wszystkie luki w systemie. Nie ignoruj żadnego scenariusza, biorąc pod uwagę, że nie zostanie on wykonany przez użytkowników końcowych.
najlepszy darmowy ripper DVD do zaszyfrowanych płyt DVD
Jeśli jesteś testerem penetracyjnym, pomóż naszym czytelnikom swoim doświadczeniem, wskazówkami i przykładowymi przypadkami testowymi, jak skutecznie przeprowadzać testy penetracyjne.
rekomendowane lektury
- 19 potężnych narzędzi do testowania penetracji używanych przez profesjonalistów w 2021 r
- Przewodnik dla początkujących po testach penetracyjnych aplikacji internetowych
- Testy alfa i testy beta (kompletny przewodnik)
- Testowanie bezpieczeństwa sieci i najlepsze narzędzia bezpieczeństwa sieci
- Podręcznik testowania zabezpieczeń aplikacji internetowych
- Kompletny przewodnik po testach weryfikacyjnych kompilacji (testy BVT)
- Testy funkcjonalne a testy niefunkcjonalne
- Najlepsze narzędzia do testowania oprogramowania 2021 (Narzędzia do automatyzacji testów QA)