Chyba każdy chciałby przekonać się, jak przełamać zabezpieczenia. Historia Michała Dziekana
Branża IT potrzebuje na już wyspecjalizowanych pentesterów. Wiele osób właśnie teraz zastanawia się, czy zacząć swoją karierę od tego profilu. Kto w takim wypadku może zostać pentesterem? Jak chronić się przed złośliwymi atakami? Dlaczego warto swoją przygodę z bezpieczeństwem rozpocząć od stażu w Comarch?
Odpowiedzi na te i wiele innych pytań udzielił Michał Dziekan –- na co dzień pracujący, jako Inżynier ds. bezpieczeństwa w Comarch.
Spis treści
Mówi się, że pentesterzy to legalni hakerzy, którzy na zlecenie klienta badają, jak da się włamać do firmy za pomocą technologii i fizycznie. Prawda czy fałsz? A może masz własną definicję tego profilu?
Po części mogę się z tym zgodzić, większość naszej pracy to poszukiwanie sposobu na złamanie zabezpieczeń lub wykrycie ich braku. Jednakże nie jest to precyzyjna definicja, brakuje w niej tego, że odpowiadamy za identyfikację zagrożeń oraz przygotowanie rekomendacji, by ich uniknąć.
Pentester – praca i doświadczenie
Czym w takim razie zajmuje się tester penetracyjny? Jest to praca powtarzalna, czy raczej każdy dzień to nowe wyzwanie?
Tester zajmuje się poszukiwaniem błędów m.in. w architekturze czy aplikacjach różnego typu. Dodatkowo przeprowadza analizę systemów i projektów pod kątem prawdopodobnych podatności. Na takie zadanie składa się weryfikacja znanych luk jak również odkrywanie nowych lub łączenie je w jakiś większy atak. Z tego wynika to, że praca jest w pewnym stopniu powtarzalna, ponieważ należy pamiętać o tych samych podatnościach, które często występują.
Jednak spora część to nowe wyzwanie, poszukiwanie nowych błędów zabezpieczeń lub znanych, ale w zupełnie nowych miejscach. Tak szybko jak pojawiają się nowe technologie lub ich nowsze wersje tak szybko pojawiają się nowe błędy w zabezpieczeniach. Podsumowując będąc pentesterem możemy oczekiwać codziennie nowych wyzwań.
Jak wygląda taki test? Są one zapowiedziane, czy działacie z zaskoczenia?
Taki test zaczyna się od rozpoznania środowiska i podstawowych skanów. Następnie sprawdzamy, czy nie występują znane podatności np. w wykorzystanych bibliotekach. Na koniec zostaje najlepsze, czyli poszukiwanie całkiem nowych błędów w zabezpieczeniach i sposobu ich wykorzystania. Same testy zazwyczaj kończą się porównaniem z jakąś listą czy nie pominęliśmy jakiegoś miejsca. Zwykle są one zapowiedziane, ponieważ zadaniem naszego zespołu jest aktywny udział w SSDLC (Secure Software Development Life Cycle) – jest to cały proces wytwarzania bezpiecznego oprogramowania, który ma zapewnić, że jest ono bezpieczne w trakcie tworzenia i utrzymywania.
Czy w takim razie „szeregowi” pracownicy również powinni przechodzić specjalne szkolenia? Jaki wpływ mają oni na cyberbezpieczeństwo firmy? Jakie ryzykowne działania zdarza się im podejmować?
Tak, powinni. Chociażby programiści powinni wiedzieć jak wytwarzać bezpiecznie oprogramowania, ale także znać sposoby na obronę przed atakami typu phishing lub credentials stuffing. Jeśli pracownicy nie są odpowiednio przeszkoleni, może to prowadzić do różnego rodzaju wycieków danych, utraty wiarygodności lub kar finansowych. Do przykładowych działań pracowników, które narażają cyberbezpieczeństwo firmy możemy zaliczyć m.in. stosowanie tych samych prostych haseł w celach służbowych i prywatnych, niesprawdzanie maili pod kątem oszustw lub używanie zbyt prostych haseł, a także podczas wykorzystania elementów zawierających znane podatności podczas tworzenia różnego rodzaju systemów.
Załóżmy, że właśnie z powodzeniem włamujesz się do systemu. Pierwsza myśl to radość – że udało się sforsować zabezpieczenia, czy złość – że system jest nieszczelny?
W pierwszej kolejności zastanawiam się, dlaczego mi się tu udało? Jakie czynniki pozwoliły mi na przełamanie zabezpieczeń lub jakich mechanizmów brakuje. Dalej myślę jak uniknąć takiej sytuacji w badanym systemie. Oczywiście jest gdzieś ta radość, że się udało. Jest to jednak ułamek sekundy, ponieważ możliwość włamania się trzeba niezwłocznie zgłosić i przekazać sposób na jego uniknięcie.
Stare wygi, które już wiele lat tkwią po uszy w znajdowaniu luk zabezpieczeń systemów IT, podkreślają, że najlepiej zacząć karierę od zostania po prostu programistą aplikacji webowych lub mobilnych albo rozwijać się na stanowisku administratora systemów. Zgadza się z tym?
Jasne, łatwiej zacząć, gdy znamy szczegółowo zagadnienia, w których później mamy szukać błędów bezpieczeństwa. Na pewno wymagana jest dobra znajomość w wielu działach IT i podążanie za nowymi technologiami.
Rekrutacja na pentestera
Podobno najlepszymi pentesterami są pasjonaci, osoby związane z siecią i programowaniem od najmłodszych lat. Kto w takim wypadku może zostać pentesterem?
Ktoś, kto od najmłodszych lat szukał jak znaleźć obejście na różne rozwiązania, lub jak coś po prostu zepsuć. Osoba, która lubi zastanawiać się, co by się stało, gdyby podać na wejście urządzenia czy aplikacji, coś, co nie wpisuje się w schemat. Dość istotne jest także to, aby pentester był kimś, komu można zaufać. Nie wyobrażam sobie, aby taka osoba chwaliła się, jakie dokładnie luki znalazła i gdzie.
Przeglądając ogłoszenia rekrutacyjne dla 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. Sporo. Dlaczego w takim razie warto zostać pentesterem?
Przede wszystkim jest to ciekawa praca, stawia często nowe wyzwania, a umiejętności i doświadczenie wystawiane są na ciągłą próbę. Chyba każdy chciałby przekonać się, jak przełamać zabezpieczenia systemów i aplikacji, z jakich korzysta na co dzień. Myślę, że codzienne wyzwania i satysfakcja ze znalezionych podatności jest warta poświęcenia czasu na spełnienie wymagań stawianych przez pracodawców.
Co powinien poznać tester zabezpieczeń? Jakie technologie powinien mieć opanowane?
Co najmniej podstawy wykorzystywanych technologii webowych i mobilnych, takich jak: SQL, SSO, OAuth czy AJAX. Technologie związane z bezpieczeństwem sieci będą również przydatne tak samo, jak znajomość popularnych języków programowania, a co za tym idzie, inżynierii wstecznej.
Czy są jakieś narzędzia, które każdy pentester powinien znać? Może istnieje coś na wzór „Bilbii” pentesterów?
Do takich narzędzi należy program pozwalający na analizę ruchu między przeglądarką internetową a aplikacją internetową. Tutaj warto znać takie rozwiązania jak Burp Suite lub ZAP. Przydatne będą także różnego rodzaju narzędzia do inżynierii wstecznej, analizy komunikacji sieciowej i pamięci aplikacji. Ciekawym wsparciem jest także Frida, która przydaje się zarówno przy testach aplikacji mobilnych, jak i webowych. W dalszej kolejności mogę wymienić różnego rodzaju skanery i narzędzia do automatyzacji. Do takiej „Biblii” na pewno można zaliczyć większość dokumentów przygotowanych przez OWASP i inne metodyki.
Wspomnieliśmy wcześniej metodyki. Jak ważna jest także znajomość metodyk testów penetracyjnych i jakie są najpopularniejsze według Ciebie?
Metodyki te wspierają nas podczas testów – pozwalają określić, co powinniśmy przeanalizować lub przyśpieszają weryfikację znalezionych podatności. Opisują one szczegółowo standardy, jakie aplikacje muszą spełniać. Bez znajomości metodyk ciężko zweryfikować, czy system działa poprawnie. Na pewno jedną z najpopularniejszych jest OWASP, o którym wspomniałem wcześniej oraz NIST. Warto wypracować również jakieś własne metodyki przeprowadzania testów penetracyjnych.
Często słyszymy, że mentorzy i partnerzy w nauce są bezcenni. W Twoim przypadku było podobnie? Byłeś samoukiem, czy wspierałeś się wiedzą innych?
Znaczną część wiedzy przyswoiłem sam, jednak bez wsparcia osób z większym doświadczeniem nie da się osiągnąć dużego progresu. Bardzo ważna jest systematyczna wymiana wiedzy z osobami o podobnym poziomie umiejętności. Ciężko określić czego powinienem się nauczyć, gdy zaczynamy przygodę z IT. Odpowiednie wsparcie innych osób może zdecydowanie ułatwić ten proces.
Staż w IT
W tym roku Comarch, wychodząc naprzeciw oczekiwaniom studentów uruchamia w ramach wakacyjnego stażu IT kolejny raz profil Cyber Security. Czego mogą spodziewać się studenci aplikujący na ten profil?
Mogą się spodziewać dużej dawki wiedzy oraz praktyki, ciekawych zadań i oczywiście pracy w fantastycznym zespole. Warto podkreślić, że program stażowy ma dwa główne cele. Pierwszym jest stworzenie działającego narzędzia, które będzie później używane przez pracowników Comarch, a drugim jest pozyskanie nowych pracowników. Taki projekt jest nierzadko rozwijany jeszcze przez wiele lat po zakończeniu stażu, również przez byłych stażystów, jako samodzielnych specjalistów, a czasem staję się nawet częścią komercyjnie sprzedawanego rozwiązania. Na koniec trzymiesięcznego stażu każdy uczestnik jest oceniany, a najlepszym składane są propozycje zatrudnienia.
Na koniec, kilka rad, jak chronić się przed atakami hakerów.
Odciąć się od Internetu – najlepszy sposób. A tak na poważnie, to weryfikować maila, instalować niezwłocznie wszystkie aktualizacje i nie klikać w podejrzane linki, a jeśli klikamy, to sprawdzać dokąd prowadzą w rzeczywistości. Warte uwagi jest wykorzystanie losowo generowanych haseł i przechowywanie ich w menadżerze haseł, dzięki temu potrzebujemy tylko jedno dobre hasło do bazy danych logowania. Proponuję także skorzystanie z dwuskładnikowego uwierzytelniania tam, gdzie to tylko możliwe.
Na staż w Comarch możecie aplikować do 15 kwietnia. Więcej informacji dotyczących profili stażowych znajdziecie tutaj.
Michał Dziekan. Inżynier ds. bezpieczeństwa, który dołączył do Comarch w ramach stażu w roku 2019. Do jego zadań należy przeprowadzanie testów penetracyjnych aplikacji internetowych, mobilnych i desktopowych oraz konsultację w ramach SSDLC. Obecnie odpowiada dodatkowo za nadzorowanie pracy jednego z mniejszych wewnętrznych zespołów. W ramach wykonywanych zadań i wolnego czasu pogłębia swoją wiedzę na temat bezpieczeństwa i wykorzystania sztucznych sieci neuronowych w detekcji ataków cybernetycznych.