Zawody IT - Tester Penetracyjny

Dobra, stabilna aplikacja powinna nie tylko być użyteczna i wygodna w obsłudze, ale także jej architektura nie może posiadać luk, które mogłyby posłużyć do ominięcia zabezpieczeń. Takich luk nie mogą zresztą posiadać w ogóle systemy IT. W wielu przypadkach jest więcej niż pewne, że luki jednak istnieją. Dlatego konieczne jest przetestowanie zabezpieczeń. I wtedy pojawia się ON – niesamowity, perfekcyjny, uzbrojony w gruntowną wiedzę wirtuoz tropienia luk, czyli po prostu tester zabezpieczeń (pentester). No dobrze, ale jak zostać takim specjalistą?

Czym zajmuje się tester penetracyjny?

Zacznijmy jednak od wyjaśnienia, czym tak naprawdę zajmuje się pentester. Najogólniej można powiedzieć, że wykonuje testy bezpieczeństwa systemów IT, które nazywa się testami penetracyjnymi, a potem ocenia stan bezpieczeństwa sprawdzanego systemu. Pentester sprawdza system pod kątem znanych podatności i jego odporności na różnego rodzaju ataki. Testowanie odbywa się na konfiguracji sieciowej, systemowej, usług działających na serwerze, jak i na warstwie aplikacji. Do tego, po analizie systemu, oprócz sprawdzenia standardowych podatności, tester zabezpieczeń może wymyślać niestandardowe wektory ataku w oparciu o swoją wiedzę.

Analizując ogłoszenia pracodawców, poszukujących kandydatów na stanowisko pentestera, można się jeszcze dowiedzieć, że taka osoba powinna także współpracować z programistami w zakresie tworzenia bezpiecznego oprogramowania. Pentester zajmuje się również analizą konfiguracji urządzeń sieciowych, gromadzi dane z testów penetracyjnych na potrzeby raportów, opracowuje rekomendacje poprawy stanu zabezpieczeń, ocenia procedury bezpieczeństwa IT i doradza w zakresie realizacji tych procedur. Widać, że tester zabezpieczeń ma jednak wiele na głowie. Dlatego zastanówcie się dwa razy, czy rzeczywiście chcecie zostać pentesterem. Jeśli tak, zapraszamy do dalszej lektury.    

Kto może zostać pentesterem?

Niestety, pentesterem nie można zostać od jednego pstryknięcia palcem. O nie, tak dobrze nie ma. Gdybyście porozmawiali z którymkolwiek testerem zabezpieczeń, przekonalibyście się, ile jest w nich pasji, ciekawości, zamiłowania do „grzebania” tu i tam. Oczywiście, niektórzy mogą udawać, że fajnie jest być pentesterem. Dlatego najlepiej przekonać się o tym osobiście.

Na rynku pojawia się już coraz więcej szkół hakerstwa, testów penetracyjnych i innych tego rodzaju umiejętności. Stare wygi, które już wiele lat tkwią po uszy w znajdowaniu luk zabezpieczeń systemów IT, podkreślają jednak, że najlepiej zacząć karierę od zostania po prostu programistą aplikacji webowych lub mobilnych albo rozwijać się na stanowisku administratora systemów. I ciągle poznawać nowe rzeczy uczyć się języków programowania, technologii, systemów, zdobywać doświadczenie i rozbudowywać wiedzę dodatkowo o aspekty bezpieczeństwa tych rozwiązań, które już są znane przyszłemu pentesterowi. Najlepiej również testować, czytać i podpytywać o różne kwestie doświadczonych w tym temacie kolegów.

Nie bez znaczenia są także kompetencje twarde i miękkie pentestera. Na pewno ważne jest doświadczenie w testach bezpieczeństwa, trzymanie ręki na pulsie nowych technologii i nowych zagrożeń. Przyda się także zamiłowanie do niekonwencjonalnych rozwiązań. Dobrze, jeśli tester zabezpieczeń jest komunikatywny, posiada umiejętność jasnego opisywania podatności i potrafi pracować w zespole.

Przeglądając ogłoszenia rekrutujące pentesterów, łatwo zauważyć, że pracodawcy najczęściej chcą, aby kandydaci posiadali doświadczenie, znali zagadnienia bezpieczeństwa, technologie, urządzenia i protokoły teleinformatyczne, potrafili pisać skrypty (np. w Python, Bash, Powershell), znali metodyki testów penetracyjnych oraz potrafili posługiwać się różnymi narzędziami. Oczywiście konieczna jest także znajomość języka angielskiego. Ufff, jak widać, łatwo nie jest.  

Co powinien poznać tester zabezpieczeń?

W dużym skrócie można odpowiedzieć na powyższe pytanie tak: pentester powinien poznać wszystko, co tylko można i jest związane z kwestią zabezpieczeń oraz włamań do systemów. Co to, u licha, znaczy?!

W rzeczywistości znajomość różnych rozwiązań i technologii powinna zależeć od tego, w czym będzie się specjalizował dany tester zabezpieczeń. Najczęściej wyróżnia się speców od aplikacji i web aplikacji, a także miłośników zagadnień sieciowych. W pierwszej grupie podobno najlepiej sprawdzają się sfrustrowani i wypaleni programiści, którzy niejedno już widzieli. Druga specjalizacja będzie odpowiednia dla osób biegłych w analizie infrastruktury, identyfikacji urządzeń pracujących w określonej sieci, potrafiąca wykorzystywać błędy w konfiguracji i procesie aktualizacji. Oczywiście zdarzają się także mistrzowie od obydwu tych specjalizacji naraz.

Dobry pentester powinien znać przynajmniej podstawowe konstrukcje języków, w jakich programowane są aplikacje i systemy (np. Java, Ruby, Python itd.). Przyda się także znajomość najczęściej używanych protokołów (np. RFC dla HTTP, SSL/TLS itd.). Konieczne jest poznanie różnych metod ataków oraz metod modelowania zagrożeń.

Przyda się także znajomość takich narzędzi, jak Cobalt Strike, Faraday, Metasploit, PowerSploit, Veil Framework, AppScan, Web Inspect, Burp Suite, Nessus, Nmap.

Metodyki testów penetracyjnych

Ważna jest także znajomość metodyk testów penetracyjnych. Najpopularniejsze to: OWASP Web Application Penetration Testing, Web Application Security Consortium Threat Classification (WASC-TC), Penetration Testing Execution Standard (PTES) i Open Source Security Testing Methodology Manual (OSSTMM). Wszystkie one jednak zbudowane są mniej więcej wokół podobnego modelu prowadzenia testów penetracyjnych, który można podzielić na takie etapy, jak:

  1. Określenie wymagań klienta i zasięgu testów.

  2. Pasywne zbieranie informacji z publicznie dostępnych źródeł.

  3. Pół-pasywne zbieranie informacji (np. identyfikacja podsieci, używanej przez klienta architektury).

  4. Aktywne zbieranie informacji (pierwszy duży kontakt z infrastrukturą klienta) – enumeracja portów, identyfikacja urządzeń pośredniczących, wykrywanie zapór ogniowych itp.

  5. Wykonywanie różnego rodzaju testów w poszukiwaniu podatności.

  6. Ataki inżynierii społecznej (atak socjotechniczny na użytkowników systemu, tworzenie ich profilu).

  7. Penetracja systemu informatycznego (atak).

  8. Zwiększanie uprawnień w przełamywanym systemie (pentester przenosi kontrolę na kolejne usługi i systemy).

  9. Skrócenie czasu dostępu do systemu (ukrycie obecności pentestera w systemie, instalowanie tylnych furtek, rootkitów).

  10. Przygotowanie raportu z testów penetracyjnych.

Jeśli macie ochotę poczytać o innych zawodach IT, zapraszamy do lektury artykuły o testerach oprogramowania.