Mój pierwszy Capture The Flag - okładka

Mój pierwszy Capture The Flag

Niedawno, w ramach projektu na studia, miałem okazję brać udział w swoim pierwszym konkursie Capture The Flag (CTF). Z uwagi na to, że było to niesamowicie ciekawe doświadczenie, postanowiłem podzielić się w tym wpisie swoimi przemyśleniami i spostrzeżeniami odnośnie konkursów Capture The Flag.

Czym jest Capture The Flag?

Capture The Flag, w skrócie CTF, to konkurs z dziedziny cyberbezpieczeństwa. Zadaniem uczestników jest znalezienie tzw. flag w podatnym systemie, wykorzystując znalezione luki bezpieczeństwa. Konkursy Capture The Flag mogą być przeprowadzane indywidulanie lub w grupach. Można spotkać się zarówno z wariantem konkursu, gdzie wszyscy uczestnicy są atakującymi, jak i z wariantem gdzie część uczestników jest atakującymi a część ma za zadanie obronić się przed atakiem. Do udziału w konkursach Capture The Flag oprócz wiedzy z dziedziny cyberbezpieczeństwa, bardzo istotna jest też wiedza programistyczna oraz wiedza z zakresu technik pozyskiwania informacji (tzw. OSINT – Open Source Intelligence).

Pierwszy konkurs Capture The Flag

Konkurs, w którym miałem okazję wziąć udział wykorzystywał aplikację OWASP Juice Shop. Aplikacja ta posiada sporą ilość celowo pozostawionych luk bezpieczeństwa. Może ona być wykorzystana do szlifowania umiejętności znajdowania podatności i ich późniejszego wykorzystania. Oprócz podatności znanych z dokumentu OWASP Top Ten, znajdują się tam także inne, równie ciekawe luki bezpieczeństwa. Poziom trudności zadań jest bardzo szeroki. Każda podatność umiejscowiona jest na skali trudności w zakresie od 1 do 6. Zadania z oceną 1 są dosyć proste i do ich wykonania potrzebna jest minimalna wiedza. Natomiast zadania z oceną 6 stanowią już spore wyzwanie. Oprócz skali trudności, zadania są podzielone ze względu na rodzaj wykorzystanej podatności.

Uruchomienie aplikacji jest proste i można to zrobić na kilka sposobów. W README projektu można znaleźć instrukcje odnośnie uruchomienia aplikacji zarówno lokalnie, jak i przy wykorzystaniu np. Heroku czy AWS EC2.

Po uruchomieniu aplikacji można zacząć szukać podatności. Lista podatności, wraz z już odnalezionymi dostępna jest na podstronie /score-board. Niemniej jednak nie zachęcam, aby zaglądać tam na samym początku, z uwagi na to że część informacji tam zawartych ułatwia wykonanie części zadań oraz może zepsuć zabawę.

Przydatne narzędzia

Do znalezienia i wykorzystania sporej części podatności niezbędne okażą się dodatkowe narzędzia.

Postman

Postman jest narzędziem do manualnego testowania API. O podstawach pracy z API pisałem już w artykułach Komunikacja z API – zestawienie metod oraz Wstęp do REST API.

Aplikacja Postman pozwala na wykonywanie zapytań HTTP. Umożliwia ona szybkie i wygodne zdefiniowanie użytej metody HTTP, nagłówków, parametrów body zapytania oraz parametrów query. Argumentem przemawiającym za użyciem Postmana jest komfort użytkowania oraz prosty i przyjazny interfejs.

Komunikacja z API - Postman

Postman będzie bardzo przydatny podczas testowania REST API będącego elementem aplikacji Juice Shop. Jeśli nie czujesz się dobrze z Postmanem, możesz oczywiście skorzystać z innych narzędzi, na przykład z curl.

Burp

Burp to narzędzie do analizy komunikacji z wykorzystaniem protokołu HTTP. Dzięki wykorzystaniu mechanizmu proxy, atakujący jest w stanie przechwytywać, czytać i modyfikować zapytania HTTP. Opróćz tego, Burp pozwala na zautomatyzowanie pewnych czynności. Do tego celu można wykorzystać mechanizm repeatera. Obszerny poradnik odnośnie pracy z Burpem można znaleźć na blogu Sekurak oraz w książce Bezpieczeństwo Aplikacji Webowych.

Wyszukiwarka

Może brzmieć to jak coś oczywistego ale wyszukiwarka to będzie Twój najlepszy przyjaciel w konkursach Capture The Flag. Przede wszystkim, nie ma chyba takiej osoby, która wiedziałaby o cyberbezpieczeństwie wszystko. Dodatkowy research w trakcie testowania aplikacji jest czymś pewnym.

Po drugie, część zadań zakłada przeprowadzenie researchu z wykorzystaniem OSINT. Niektóre zadania wymagają wiedzy o użytkownikach posiadających konta w systemie oraz o autorze aplikacji.

Po trzecie, do ukończenia niektóych zadań potrzebne będą dodatkowe narzędzia oprócz Postmana czy Burpa i konieczne będzie ich znalezienie. Jednym z takich narzędzi jest jwt.io, które przyda Ci się do pracy z JSON Web Tokenami. Więcej Ci nie podpowiem 😉

Podsumowanie

Konkursy Capture The Flag to świetny sposób na zwiększenie swoich umiejętności z zakresu cyberbezpieczeństwa, a oprócz tego fajna zabawa i produktywne spędzenie czasu. Branie udziału w konkursach niesie również szereg innych korzyści, które opisałem w artykule Dlaczego warto brać udział w konkursach. Z uwagi na zróżnicowany poziom trudności zadań, uważam że OWASP Juice Shop jest bardzo dobrym wyborem. Zachęcam do uruchomienia projektu i spróbowania swoich sił. Zachęcam też do podzielenia się swoim wynikiem oraz napotkanymi trudnościami w komentarzu!

Materiały dodatkowe i źródła