/PODCAST

Jak zostać pentesterem/jak zacząć naukę bezpieczeństwa?

Chcesz zostać pentesterem/specjalistą bezpieczeństwa?

Dobrze trafiłeś. W tym materiale przedstawię Ci kilka możliwych ścieżek rozwoju.

Uwaga: ten materiał to skrócona wersja webinaru dostępnego również w formie pliku pdf.

Ścieżki rozwoju

Wprowadzenie

Możesz pracować jako:

  • pentester
  • przy testach red teamingu
  • osoba, która analizuje złośliwe oprogramowanie
  • specjalista SOC
  • threat hunter
  • informatyk śledczy
  • lub zajmować się tworzeniem exploitów na oprogramowanie

Postaram się scharakteryzować każdą ze ścieżek ze szczególnym uwzględnieniem pierwszej z nich - ponieważ testy penetracyjne to jedna z najpopularniejszych form pracy w branży bezpieczeństwa.

Ale najpierw - ważna uwaga.

Naucz się szukać

Jeżeli chcesz zostać ekspertem - naucz się szukać informacji w Internecie na własną rękę. W swojej pracy często napotkasz na problemy, których nie będziesz umiał rozwiązać. Umiejętność poszukiwania informacji jest zatem kluczowa, aby odnieść sukces.

Czy studia są konieczne w pracy pentestera

Często pojawiającym się pytaniem jest kwestia posiadania dyplomu wyższej uczelni. Generalnie wyższe wykształcenie nie jest Ci potrzebne aby zostać pentesterem. W rzadkich przypadkach pracy w dużej korporacji może się okazać, że nie zostaniesz przyjęty na jakieś stanowisko z tego powodu - chociaż dzieje się tak coraz rzadziej. Warto jednak pamiętać, że studia to jeden z dłuższych życiowych projektów.

Uczą cierpliwości (no bo trzeba chodzić na zajęcia i wykonywać różne projekty). Dają także solidne podstawy (chociażby z sieci, podstaw programowania, historii komputerów). A dodatkowo - tworzą się dzięki nim przyjaźnie i znajomości na lata.

Czy umiejętność programowania jest potrzebna w pracy pentestera

Drugim często pojawiającym się pytaniem jest kwestia znajomości języka programowania. Teoretycznie umiejętność programowania nie jest konieczna żeby zostać pentesterem. Będzie natomiast bardzo przydatna i na pewnym poziomie - zapewne niezbędna.

Dlaczego? Znając dowolny język programowania jesteś w stanie tworzyć własne narzędzia, ale także wiesz jak działają różne procesy i funkcjonalności. Idealnie byłoby zatem gdybyś posiadał jakieś doświadczenie jako programista/osoba zarządzająca infrastrukturą.

Ta wiedza sprawi, że poszukiwanie błędów będzie dużo prostsze. Bo jeżeli umiesz coś zrobić - to też wiesz, jak można to zepsuć. Wystarczy delikatna zmiana myślenia i już - gotowe.

Poza tym, jeżeli samemu programowałeś to wiesz jakie funkcjonalności są trudne do implementacji. A właśnie takie elementy aplikacji są idealne do testowania i poszukiwania błędów. Jeżeli coś jest trudne - to jest spora szansa, ze ktoś popełnił tam błąd.

Pentest

Pentest

Pentest (lub test penetracyjny) to kontrolowany atak na system informatyczny. Programiści tworzą oprogramowanie. Rolą testera natomiast jest znalezienie w nim błędów.

Jakie umiejętności trzeba posiadać na samym początku?

Podstawy

  1. Podstawowa umiejętność korzystania z Windowsa/Linuxa
  2. Wiedza na temat działania sieci Internet - co to jest routing, czym różni się protokół http od https
  3. Warto (chociaż nie jest to konieczne) znać co najmniej jeden język programowania
  4. Umiejętność korzystania z maszyn wirtualnych (VMware, VirtualBox)
  5. Znajomość OWASP Top 10
  6. Edytor tekstu/kodu do tworzenia notatek/przeglądania kodu źródłowego
  7. Burp Suite Community Edition

OWASP Top 10

Dlaczego polecam OWASP Top 10 i co to właściwie jest?

To zbiór 10 najpopularniejszych podatności (czyli błędów), które występują na stronach Internetowych. Dzięki temu dość szybko zdobędziesz poglądowy zakres tego, z czym przyjdzie Ci się mierzyć w przyszłości.

Dodatkowo jest to pewnego rodzaju standard w branży. Każdy szanujący się pentester wie co to TOP 10, jakie błędy się tam znajdują i jak ich poszukiwać.

Inne projekty OWASP

OWASP to otwarta organizacja, która posiada wiele innych ciekawych projektów. Stanowią one cenne źródło informacji - warto się z nimi zapoznać.

Burp Suite

W ostatnim punkcie “must have” wspominam o Burp Suite. Jako pentester wysyłasz żądania (czyli dane) do serwera i sprawdzasz jego odpowiedzi.

Przeglądając strony w normalny sposób - klikasz w odnośniki, wypełniasz formularze lub podajesz adresy w pasku adresu. Tutaj podobnie - tylko, że zamiast wypełniać jeden formularz - wypełniasz ich setki, często modyfikując tylko jedną literkę.

Modyfikacja takich danych za każdym razem w przeglądarce (chociażby wypełnianie 10 pól formularza) może być męcząca. Stąd narzędzie Burp, które upraszcza naszą pracę.

Nas interesuje zakładka Repeater. Dzieli ona ekran na dwie części. Po lewej stronie znajdują się dane, które chcemy wysłać do serwera. Po prawej - odpowiedź, którą od niego uzyskaliśmy.

Aplikacje vulnerable by design

Jestem zwolennikiem nauki przez przykład. Spróbuj przeczytać parę materiałów na temat dowolnej podatności (np. XSS) i zacznij działać - to znaczy spróbuj odnaleźć błąd samemu. Mogą Ci w tym pomóc aplikacje specjalnie podatne - czyli napisane specjalnie w nieprawidłowy sposób.

Znalezienie błędów w takich aplikacjach jest dużo prostsze. Poza tym - jeśli Ci się nie uda możesz poczytać rozwiązania innych. Dzięki temu dość szybko znajdziesz swój pierwszy błąd.

Aplikacji tego rodzaju jest co najmniej kilka. Spróbuj wyszukać frazy vulnerable by design w Google.

Skąd się uczyć

Znalazłeś już swój pierwszy błąd i chcesz uczyć się dalej. Skąd czerpać dodatkową wiedzę?

Moim zdaniem warto zainteresować się kilkoma stronami:

  1. https://pentester.land/
  2. https://www.reddit.com/r/netsec/
  3. https://portswigger.net/
  4. https://github.com/Simpsonpt/AppSecEzine
  5. https://twitter.com/hashtag/BugBountytips
  6. https://ctftime.org/writeups
  7. https://hackerone.com/hacktivity

Pentester Land

Na sam początek warto zainteresować się stroną Pentester Land. Jest to cotygodniowy zbiór najlepszych materiałów - dostępny w formie newslettera, który możesz przeczytać na stronie. Jeżeli masz ograniczony czas - ten link wystarczy aby być na bieżąco.

Co ciekawe materiały tam zgromadzone są dzielone na kategorie - również względem umiejętności czytelników. A wiec każdy - od poczatkujących do bardziej zaawansowanych użytkowników - znajdzie tam coś dla siebie.

Certyfikaty IT

Czy warto wydawać pieniądze na różnego rodzaju certyfikaty? Certyfikaty na pewno segregują zdobytą wiedze. Chociażby w przypadku Microsoftu - praktycznie każdy certyfikat posiada odpowiadającą mu książkę, w której znajdziemy uszeregowaną wiedzę. Z tego powodu - tak, warto zdobywać certyfikaty.

Należy jednak pamiętać, że zdanie certyfikatu tak naprawdę o niczym nie świadczy. Zwłaszcza, że w Internecie znajduje się sporo firm, które po prostu sprzedają odpowiedzi na pytania z certyfikatów. Może więc dochodzić do sytuacji, kiedy jakaś osoba zdała certyfikat, bo po prostu wyuczyła się odpowiedzi na pytania na pamięć.

Dodatkowo - żaden z certyfikatów nie daje gwarancji pracy. Dlatego osobiście - jeżeli posiadasz odpowiednie fundusze - stawiałbym na certyfikaty, które w głównej mierze opierają się na praktyce. Chociażby takie, które w ramach wydanych pieniędzy udzielają nam dostępu do jakiegoś przygotowanego laboratorium, w którym czeka na nas szereg zadań praktycznych.

Kursy/szkolenia/książki

To samo tyczy się wszelkiego rodzaju kursów/szkoleń. Liczy się jakość - a nie ilość.

Co z tego, że posiadamy 100 kursów na platformie Udemy - jeżeli żadnego z nich nie skończyliśmy. Samo czytanie nie wystarczy. Proponuję drobny eksperyment - zamiast od razu czytać książkę od deski do deski - przeczytaj jeden rozdział - a następnie spróbuj wykorzystać poznaną w ten sposób wiedzę w praktyce.

Książki i szkolenia to tak naprawdę zebranie i uszeregowanie wiedzy, która już jest w Internecie. Jeżeli Cię nie stać - nic straconego. Podobne informacje znajdziesz w Internecie - po prostu stracisz więcej czasu na ich odnalezienie.

Web Hacking 101

W przypadku książek warto rozważyć kilka pozycji:

  1. Web Hacking 101
  2. Bezpieczeństwo aplikacji webowych
  3. The Web Application Hacker’s Handbook 2

W dawnych zawodach istniała relacja mistrz/uczeń - kiedy to czeladnik uczył się zawodu od swojego mistrza. Myślę, że i tutaj może być podobnie. Zobacz jakie błędy odnajdują inni.

Exploit Database

Exploit Database to strona na której znajdują się błędy odnalezione przez badaczy na całym świecie. Cenną lekcją może być sprawdzenie informacji tam zawartych.

Zobacz opis błędu i spróbuj go zrozumieć. Sprawdź kod źródłowy i poprawkę, opublikowaną przez producenta.

W ten sposób poznasz elementy, na które warto zwrócić uwagę podczas własnych testów. Będziesz wiedział gdzie popełniane są błędy i jak one wyglądają.

Atakowanie infrastruktury

Infrastruktura

Dotychczasowo pisałem jedynie o testowaniu aplikacji webowych - czyli takich dostępnych z poziomu przeglądarki. Ale w firmach nie używa się jedynie stron internetowych.

Każda firma posiada zazwyczaj co najmniej kilkanaście różnych serwerów, które wykonują różne czynności. Serwery te są również ze sobą w różnoraki sposób połączone.

Osobną gałęzią są zatem testy infrastruktury. Tutaj nie tylko atakujemy aplikacje webowe, ale próbujemy pójść o krok dalej - czyli zaatakować jak najwięcej serwerów w organizacji.

Podnoszenie uprawnień

Aplikacje mogą być uruchomione z różnymi uprawnieniami. Dobrą praktyką jest uruchamianie aplikacji bez uprawnień roota/administratora.

Kolejnym elementem jest zatem podnoszenie uprawnień - mówiąc w prostych słowach, próba zostania administratorem danego komputera. Dlaczego? Uprawnienia administratora dają nam praktycznie nieograniczoną kontrolę nad daną maszyną.

Każdy system atakuje się nieco inaczej. Dla zainteresowanych, dwa linki z podstawami ataków privilege escalation:

Enumeracja serwera

Gdy już posiadamy pełny dostęp do serwera - musimy go przeszukać - czyli poszukać ciekawych z naszego punktu widzenia informacji. Mogą to być pliki na dysku, w których zawarte są loginy i hasła do innych aplikacji. Bądź też pliki z konfiguracjami różnych usług.

Mówiąc ogólnie - próbujemy znaleźć wszystkie informacje, które mogą się nam przydać w przyszłości. Takie poszukiwanie informacji wcale nie jest proste. Zwłaszcza jeżeli mamy do czynienia z olbrzymim serwerem, na którym znajduje się wiele terabajtów danych. No bo jak znaleźć w tym gąszczu bajtów te najciekawsze?

Narzędzia

Do testów infrastruktury nie wystarczy sam Burp.

  1. NMAP pozwala na odnajdywanie innych serwerów w sieci a także usług, które są na nich uruchomione
  2. Metasploit to framework ułatwiajacy atakowanie wielu komputerów naraz
  3. Kali Linux dystrybucja Linux-a, która zawiera wszystkie potrzebne narzędzia

W Twojej głowie może się zrodzić pytanie - a co z użytkownikami Windowsa? Niestety, wiele narzędzi jest dostępnych jedynie pod Linuxa. Można obejść ten problem używając Commando VM - lekko zmodyfikowanej dystrybucji Windowsa, ale traktowałbym to bardziej jako ciekawostkę.

Commando VM

W przypadku aplikacji webowych sprawa ćwiczeń była względnie prosta. Wybieramy losową aplikację, instalujemy ją i próbujemy znaleźć w niej błąd.

Ale infrastruktura - to co innego. Ciężko samemu źle skonfigurować serwer, a potem próbować się do niego włamać - przecież to nie ma sensu. Dlatego powstały serwisy, które przygotowują gotowe, źle skonfigurowane maszyny - tak abyśmy mogli na nich ćwiczyć.

Hack The Box

Hack The Box to jeden z serwisów tego rodzaju. Bardzo duża liczba maszyn do wyboru, a do tego - większość dostępna za darmo. Co jakiś czas niektóre z maszyn uzyskują status retired.

Wtedy to inni użytkownicy (którzy z sukcesem je zaatakowali) mogą opublikować swoje rozwiązanie w Internecie. Dzięki temu - ponownie możemy się uczyć na pracy innych.

IppSec

IppSec to YouTuber, na którego kanale znajdziesz rozwiązania zadań właśnie z tej platformy. Filmy te są długie (nierzadko ponad 1 godzina) ale w kompleksowy sposób tłumaczą jak rozwiązać daną maszynę, jaką komendę użyć, gdzie można było napotkać trudności.

Autor dodatkowo udostępnił wyszukiwarkę, która pozwala na przeszukiwanie jego materiałów na podstawie słowa kluczowego. Chcesz zobaczyć jak używa się metasploita w praktyce? Skorzystaj z wyszukiwarki i dostaniesz listę filmów, w których korzystał z tego narzędzia.

OSCP

Inną (płatną) alternatywą jest certyfikat OSCP. Wykupujemy tutaj dostęp do laboratorium (na określoną liczbę dni), które próbuje symulować komputery w realnej firmie.

Często dochodzi więc do sytuacji, w której nie możemy od razu zaatakować komputera X. Najpierw bowiem musimy zdobyć dostęp do maszyny Y - bo tylko tam na pulpicie znajduje się hasło do komputera X.

Na samym końcu przystępujemy do egzaminu. Trwa on 24 godziny i w ramach tego czasu musimy zaatakować pewną liczbę serwerów i uzyskać do nich dostęp root.

Jest to więc typowo praktyczny certyfikat, który cieszy się dość dobrą renomą w środowisku security. Nie da się go zdać, jeżeli nie umiemy posługiwać się w praktyce podstawowymi narzędziami używanymi podczas pentestu.

Minusy? Cena. Poza tym, jeżeli chcesz się wiele nauczyć - zarezerwuj sobie sporo czasu. To nie jest kurs, który prowadzi Cię za rękę od A do Z.

Zapewne nie raz czy dwa w trakcie kursu będziesz miał momenty frustracji - ale zapewniam Cię - warto.

Active Directory

Osobną podgrupą testów infrastruktury są systemy Windows Server - a zwłaszcza Active Directory. Jeżeli interesuje Cię ten temat polecam:

Testy blackbox vs whitebox

Jeśli chodzi o testy penetracyjne, możemy je jeszcze podzielić na dwie podgrupy - w zależności, czy posiadamy dostęp do kodu źródłowego, czy też nie. Możesz sobie teraz zadać pytanie - ale przecież ja nie posiadam dostępu do żadnych kodów źródłowych. Mało prawdopodobne jest też, że jakakolwiek firma udostępni Ci swój dobytek. Jak zatem nauczyć się testów whitebox - czyli takich, w których analizujemy kod źródłowy?

Projekty Open Source

Na ratunek przychodzą projekty Open Source. Spróbuj znaleźć jakiś mały projekt napisany w języku, który znasz - a następnie zapoznaj się z jego kodem źródłowym - patrząc na niego z punktu widzenia bezpieczeństwa.

Potencjalnie złośliwe funkcje w PHP

Najprostszą formą takiej analizy może być poszukiwanie funkcji, które mogą być potencjalnie niebezpieczne.

Na przykładzie PHP, mogą to być funkcje, które umożliwiają wykonanie dowolnej komendy na serwerze:

  • system()
  • exec()
  • popen()
  • eval()
  • unlink()

Co nam to da? Jeżeli znajdziesz wystąpienie takiej funkcji w kodzie źródłowym - wiesz gdzie takie potencjalnie niebezpieczne funkcje są używane. Zamiast więc szukać po omacku - czyli próbować wszystkich funkcjonalności serwisu po kolei - od razu skieruj swoje kroki w odpowiednie miejsce.

Jeżeli wiesz, że w panelu administratora, na podstronie X używana jest funkcja system - która jest potencjalnie niebezpieczna - to możesz próbować przekazać do niej złośliwy ciąg znaków.

Prawne aspekty

Znalazłeś już kilka błędów w aplikacjach zainstalowanych na swoim komputerze, ale masz apetyt na więcej. Chciałbyś spróbować zaatakować komputery jakiejś firmy.

Pamiętaj - atakowanie infrastruktury firmy bez pozwolenia - jest nielegalne. Nie rób tego - bo możesz skończyć w więzieniu. Jak zatem znaleźć firmę, która pozwoli nam na atakowanie swoich serwerów?

Odpowiedzią są programy Bug Bounty.

Bug Bounty

Bug Bounty

Jeżeli firma bierze udział w programie Bug Bounty - zezwala na atakowanie swojej infrastruktury w pewnym zdefiniowanym zakresie. To sprawia, że jeżeli program jest publiczny - każdy może spróbować swoich sił i starać się znaleźć błąd bezpieczeństwa na czyimś serwerze.

Jakie są minusy takiego rozwiązania? Bardzo duża konkurencja. Sporo osób traktuje Bug Bounty jako pracę - osobom początkującym może być ciężko znaleźć jakikolwiek błąd - zwłaszcza, jeżeli firma bierze udział w programach od dłuższego czasu.

Dodatkowo nikt nie gwarantuje nam rezultatu. Możesz spędzić 20 godzin poszukując błędów i nie znaleźć ich.

Należy też pamiętać o duplikatach. Są to błędy, które zostały już wcześniej zgłoszone przez kogoś innego. Jeżeli firma płaci za odnalezione błędy, to w przypadku duplikatu - zapłaci jedynie temu, kto był pierwszy.

Czyli ponownie - możesz spędzić sporo czasu nad poszukiwaniem błędów i nie mieć z tego żadnych korzyści.

Szukanie błędów - jak zacząć

Szerzej opisuję ten temat w dwóch materiałach:

Zazwyczaj, jeżeli firma posiada program Bug Bounty - to obsługuje go przy pomocy zewnętrznej platformy. Są to więc pewnego rodzaju agregatory, które skupiają wszystkie firmy, które umożliwiają poszukiwanie błędów na swoich serwerach.

Platformy Bug Bounty

Istnieją dwie najpopularniejsze platformy:

HackerOne

Znajdziesz na nich programy wielu firm. Chociażby polskie Allegro.

Zakres

Koniecznie powinieneś zapoznać się z zakresem konkretnego programu. Definiuje się w nim co wolno, a czego nie. Jest tam też informacja, czy firma płaci za błędy (i za jakie), a także czy posiada osobną infrastrukturę testową.

W Internecie znajdziesz informacje na temat osób, które na programach Bug Bounty zarabiają miliony dolarów.

Trzeba jednak pamiętać, że początki są trudne. Programy Bug Bounty na platformach działają w specyficzny sposób.

Nie wszystkie firmy publikują informacje o swoim programie publicznie. Niektóre prowadzą tak zwany prywatny program, do którego trzeba zostać zaproszonym.

Prywatne programy Bug Bounty

A jak otrzymać zaproszenie? Trzeba wcześniej zgłosić błędy do innych programów. Na samym więc początku przygody może się okazać, że będziemy zmuszeni do odnajdywania błędów za darmo w mniej znanych publicznych programach. Tylko po to, aby zdobyć punkty w rankingu i otrzymać zaproszenia do bardziej lukratywnych programów.

Poszukiwanie programów w Google

Innym pomysłem jest poszukiwanie firm z programami Bug Bounty w Google. Nie zawsze firmy płacą pieniędzmi za błędy. Czasami wysyłają koszulki/czapki, bądź kubki.

Mogą też dopisać Cię do tak zwanej galerii sław (Hall of Fame). Publicznie dziękują Ci tam za pomoc w bezpieczeństwie serwisu.

Możesz poszukać takich list korzystając z Google. Jeżeli firma posiada “hall of fame” to zapewne prowadzi też program bug bounty.

Im mniej osób o tym wie - tym większe szanse, że znajdziesz błąd.

Poszukiwanie informacji - rekonesans

Takie poszukiwanie informacji to część rekonesansu. Gdy już wiemy co możemy testować - powinniśmy zdobyć jak największą wiedzę na temat naszego celu.

Jedną z podstaw jest poznanie jak największej ilości subdomen do testowania. Jeżeli w opisie celu właściciel domeny postawił gwiazdkę (czyli np. *.szurek.pl) oznacza to, że pozwala na pentest wszystkich subdomen w domenie szurek.pl - czyli dla przykładu możesz testować stronę a.szurek.pl, b.szurek.pl (o ile oczywiście takie domeny istnieją).

Problem w tym, że musisz je jakoś znaleźć.

Specjalizacja

Jednym z pomysłów na sukces jest więc specjalizacja. Nie staraj się wiedzieć wszystkiego - wybierz wąski kawałek tortu, ale poznaj go bardzo dokładnie.

Jeżeli dla przykładu staniesz się ekspertem od XSS, który wie o tym ataku dosłownie wszystko - to istnieje spora szansa, że będziesz w stanie znajdować błędy, o których inni nie mieli pojęcia. To tak jak w normalnych zawodach - każdy z nas chciałby trafić do lekarza, który zna się na swojej specjalizacji.

Raport to ważna część pracy

Samo poszukiwanie błędów to tylko połowa pracy pentestera. Znalezione podatności należy jeszcze dokładnie opisać w raporcie.

Taki raport przesyła się do firmy, która zleciła nam pracę. Dzięki temu wiedzą jakie błędy zostały odnalezione i co należy poprawić.

Podobnie w przypadku programów Bug Bounty.

Dobry raport to podstawa

Dobry raport, napisany w czytelny sposób może sprawić, że otrzymamy więcej pieniędzy za błąd. Dlaczego? Jeżeli nasz raport jest zrozumiały dla każdego - nie trzeba spędzać dodatkowego czasu, aby go zrozumieć. A czas - to pieniądz.

Dobry raport zawiera:

  • opis błędu
  • informacje jak go znalazłeś, jakich narzędzi użyłeś
  • jeżeli błąd wymaga spełnienia dodatkowych, opcjonalnych warunków - opisz je
  • plik proof of concept (poc), który pozwala na reprodukcję błędu
  • impakt dla organizacji - czyli przewidywania jak groźna może być ta podatność, jeżeli zostałaby odnaleziona przez przestępcę
  • jeżeli to możliwe - jak naprawić błąd
  • w przypadku mniej znanych typów podatności - odnośniki do innych stron/blogów, tłumaczących na czym polega dany błąd
  • (opcjonalnie) materiał video, który krok po kroku pokazuje co należy zrobić, aby wykorzystać dany błąd

Capture the flag

Inną metodą nauki są konkursy Capture the Flag - CTF. Ich zasada jest prosta - otrzymujemy zadanie (stronę internetową, plik wykonywalny) i musimy przełamać zabezpieczenia. Gdy się nam to uda - otrzymujemy flagę - czyli ciąg liter i cyfr - zazwyczaj zaczynający się od jakiegoś stałego elementu (np. CTF{tutaj_flaga}).

Taką flagę wpisujemy w serwis rankingowy, który liczy odpowiednie punkty za zadania. CTFy to świetny sposób na naukę bo:

  • uczymy się pracy w grupie (ciężko jest wygrać konkurs samemu bo średnio do rozwiązania jest kilkanaście zadań)
  • sprawdzimy jak reagujemy na presję czasu (CTF średnio trwa tylko dwa dni)
  • nauczymy się cierpliwości i pokory

CtfTime

Ważnym aspektem jest jednak to, że po zakończeniu konkursu sporo zespołów dzieli się swoimi rozwiązaniami zadań. Jeżeli więc spędzisz dwa dni na próbie znalezieniu jakiejś podatności i Ci się nie uda - nic straconego. Po zakończeniu konkursu istnieje spora szansa, że ktoś opublikuje swoje rozwiązanie.

Dzięki temu zobaczysz gdzie popełniłeś błędy, czego nie wiedziałeś lub o czym zapomniałeś. Walory edukacyjne takiego podejścia są nieocenione.

Testowanie aplikacji na telefony

Wszystko o czym dotychczasowo mówiłem opiera się głównie na testowaniu aplikacji webowych. Ale testować można jeszcze inne rzeczy - chociażby aplikacje na telefon.

Bezpieczeństwo chmury

Można też specjalizować się w bezpieczeństwie chmury - AWS/Azure/Google. Tylko znowu - ciężko będzie poszukiwać błędów w konfiguracji chmury, jeżeli nie znamy podstaw administracji tymi usługami.

Jeżeli chciałbyś zobaczyć jak wygląda poszukiwanie błędów w chmurze sprawdź:

Przykładowy raport bezpieczeństwa

Innym pomysłem podglądania pracy innych jest czytanie publicznych raportów z przeprowadzonych testów penetracyjnych:

Red Teaming

Red Teaming

Jeżeli już masz podstawy - możesz zainteresować się red teamingiem - czyli symulacją realnych ataków na firmy. Różni się on nieco od testu penetracyjnego:

  1. Zazwyczaj ma bardzo szeroki zakres
  2. Zazwyczaj można w nim stosować socjotechnikę (na przykład maile phishingowe do pracowników)
  3. Nie liczy się ilość odnalezionych błędów, ale spełnienie celu - czyli na przykład włamanie się na firmowy serwer X
  4. Służy do weryfikacji zabezpieczeń danej firmy

Marcin Ludwiszewski

Więcej na ten temat dowiesz się z wywiadu z Marcinem Ludwiszewskim.

Narzędzia do red teamingu

Gdy zaczniesz czytać więcej na ten temat, możesz natknąć się na różne narzędzia, które stosowane są podczas takich testów:

Z daleka wygląda to zatem na zabawę dużych chłopców zabawkami różnego rodzaju. Warto jednak wspomnieć o drugiej stronie red teamingu. Atak trwa zazwyczaj bardzo krótko - ale poprzedzają go długie i żmudne przygotowania.

Przygotowania red teamingu

Kolejną potencjalną ścieżką rozwoju jest analiza złośliwego oprogramowania.

Malware jest szkodliwy

Malware

Należy tu jednak mocno podkreślić - nieumiejętne obchodzenie się z malwarem może doprowadzić do utraty danych. Złośliwe oprogramowanie z nazwy jest złośliwe - nigdy nie ma zatem pewności co ono robi, jaki skutek chce osiągnąć przestępca i jakie dane chce nam ukraść.

Analiza plików w sandboxie

Nie polecałbym zatem analizy takich plików na własnym komputerze przez osoby początkujące. Są inne, bezpieczniejsze metody. Można skorzystać z Internetowych serwisów typu sandbox, które uruchamiają taki plik na swojej odpowiedniej infrastrukturze, a nam prezentują wyniki uruchomienia w formie czytelnych wykresów i grafik.

Dzięki takiemu podejściu zobaczysz jak działa malware, jakie pliki tworzy, jakie procesy uruchamia, a dodatkowo nie narazisz się na niebezpieczeństwo. Jeżeli temat Cię interesuje - popatrz na:

Phishing

Ale malware to nie tylko pliki wykonywalne z rozszerzeniem exe. Ludziom można także zaszkodzić przy pomocy phishingu - na przykład strony, która podszywa się pod inną witrynę (przykładowo bank) i próbuje wyłudzić nasze dane do logowania. Ciekawym eksperymentem może być przejrzenie najnowszych kampanii tego rodzaju. Pozwoli to nabrać pokory - bo zobaczysz wtedy, że rozróżnienie prawdziwej strony od tej fałszywej może być bardzo utrudnione.

Phishtank

Istnieje wiele stron, które agregują phishing. Jedne z najpopularniejszych to:

Analiza malware

Jeżeli jednak dalej jesteś zainteresowany analizą złośliwych plików exe - konieczne będą dodatkowe narzędzia:

Mogą się również przydać:

Dlaczego potrzebujesz dodatkowych narzędzi?

Dekompilacja

Pliki z rozszerzeniem .exe (czyli pliki wykonywalne pod Windowsem) w przypadku języka C/C++ są skompilowane. To znaczy, że nie widzisz ich kodu źródłowego - tylko ciąg danych, który jest czytelny dla procesora. Potrzeba zatem narzędzia, które zamieni ten kod na coś czytelnego dla ludzi.

Takim kodem jest asembler. Jest jednak jeden problem - różni się on bardzo od każdego innego języka programowania, a jego nauka nie jest taka prosta. Dlatego powstały narzędzia, które na podstawie asemblera próbują przywrócić pierwotny kod aplikacji. Cała taka procedura nazywa się dekompilacją.

Jeszcze rok temu jedynym narzędziem, które całkiem nieźle sobie z tym radziło była IDA Pro - niestety jedynie w płatnej (drogiej) wersji. Teraz jednak bardzo dobre wyniki można uzyskać przy pomocy darmowej Ghidry.

Monitorowanie wywołań API

Ale w sporej liczbie przypadków nie potrzeba patrzeć na kod asemblera żeby zrozumieć co robi dany program. Sporo można wywnioskować na podstawie wywołań API.

W Windowsie - jeżeli jakiś program chce wykonać jakąś czynność - na przykład zapisać plik na dysku - wywołuje API systemowe (stworzone przez Microsoft) i przekazuje do niego odpowiednie parametry. Monitorując jakie API są wywoływane (i z jakimi parametrami) możemy sporo dowiedzieć się jak działa aplikacja.

Takim narzędziem jest API monitor. Po uruchomieniu wybiera się tam jakiego typu wywołania nas interesują (na przykład tylko te dotyczące zapisu pliku na dysku) i już.

Nauka asemblera

Jeżeli jednak chciałbyś się nauczyć asemblera - zobacz darmową książkę Reverse Engineering for Beginners.

Dobrą metodą praktycznej nauki asemblera jest rozwiązywanie zadań crackme.

Crackme

Są to (zazwyczaj) małe programy, które wykorzystują różne techniki i sztuczki mające utrudnić ich analizę. Ich celem jest wygenerowanie prawidłowego kodu w zależności od naszej nazwy użytkownika.

SOC

SOC

Inną formą kariery zawodowej jest praca w SOC - Security Operations Center. Każda większa firma posiada sporo serwerów i pracowników.

Każdy pracownik ma swój komputer, na którym wykonuje jakieś operacje. Wszystkie dane na temat wyświetlanych stron, uruchamianych plików, potencjalnych ataków są gromadzone w jednym miejscu.

Na ich podstawie generowane są alerty - czyli czynności oznaczone przez system jako potencjalnie niebezpieczne. Rolą analityka jest sprawdzenie takich alertów i odpowiednie zareagowanie na daną sytuację - zgodnie z procedurą.

Praca w SOC

Taka praca pozwala na szybką i naukę. Minusem jest natomiast jej powtarzalność oraz praca w systemie zmianowym 24/7.

Rozbudowaniem SOC jest Threat Hunting.

Threat Hunting

SOC działa na podstawie alertów. Threat Hunting natomiast próbuje działać proaktywnie - czyli próbuje przewidzieć atak jeszcze zanim on nastąpi. Więcej na ten temat możesz dowiedzieć się z wywiadu z Adamem Lange.

Adam Lange

W takiej pracy przyda się znajomość metod stosowanych przez przestępców. Mitre ATT&CK to miejsce gdzie znajdziesz opisane metody, które mogą być używane podczas ataków podzielone na kilka grup i kategorii. Nie tylko dowiesz się na czym polegają, ale także uzyskasz wiedzę w jakich realnych atakach i przez jakie grupy włamywaczy były one używane.

Informatyka śledcza

Informatyka śledcza

W ramach pracy w bezpieczeństwie można się również zajmować informatyką śledczą. Współpracuje się wtedy z policją (i nie tylko) w celu rekonstrukcji zdarzeń, które miały miejsce na danym komputerze.

Jakie witryny były odwiedzane, kiedy korzystano z maszyny. Jest to więc żmudne analizowanie i poszukiwanie metadanych i plików tymczasowych.

Minusem może być utrudniony dostęp do sprzętu i oprogramowania, które jest po prostu drogie. Poza tym praca ta wiąże się ze znajomością prawa. Jeżeli chcielibyśmy zostać biegłym sądowym - musimy wiedzieć co to jest dowód i jak należy go zabezpieczyć

W przypadku popełnienia przez nas błędu - dowód zostanie odrzucony przez sąd - chociażby ze względów formalnych.

Zgodność ze standardami

Inną gałęzią jest weryfikacja zgodności ze standardami - chociażby ISO 27001. W przypadku pentestu - weryfikujemy stan faktyczny aplikacji - to znaczy jak ona działa. Standardy to bardziej założenia, jakie powinna spełniać aplikacja.

Chociażby aplikacje bankowe muszą spełniać pewne normy i procedury. Praca taka to zatem bardziej tworzenie i czytanie dokumentacji niż szukanie błędów samo w sobie.

Threat Modeling

Jeżeli posiadasz rzadką kombinację umiejętności pentestu i tworzenia aplikacji - możesz zająć się architekturą i tak zwanym modelowaniem zagrożeń. W idealnym przypadku serwisy powinny być projektowane z myślą o bezpieczeństwie już od samego początku - tak, aby w przyszłości uniknąć potencjalnych pułapek.

Czytaj, ćwicz, powtarzaj

Chcesz być dobry? Czytaj materiały, ćwicz zdobytą wiedzę i powtarzaj te dwie rzeczy do znudzenia.

Spodobało się? Poleć ten materiał znajomym. Możesz także zapisać się do newslettera i otrzymywać informacje tego rodzaju wprost na swoją skrzynkę mailową.