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.
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
- https://cybersecurity.att.com/blogs/security-essentials/capture-the-flag-ctf-what-is-it-for-a-newbie
- https://ctftime.org/ctf-wtf
- https://cyberforces.com/osint-bialy-wywiad
- https://owasp.org/www-project-top-ten
- https://github.com/bkimminich/juice-shop
- https://www.postman.com
- https://curl.se
- https://sekurak.pl/mastering-burp-suite-cz-1-poznaj-sekrety-topowego-narzedzia-dla-pentesterow-web-aplikacji
- https://sklep.sekurak.pl/product/view?id=1
- https://portswigger.net/burp
- https://jwt.io
Zapisz się na mailing
Zapisując się na mój mailing, otrzymasz darmowy egzemplarz e-booka 106 Pytań Rekrutacyjnych Junior JavaScript Developer! Będziesz też otrzymywać wartościowe treści i powiadomienia o nowych wpisach na skrzynkę e-mail.