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, jakie mam co do 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 indywidualnie 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 (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 dotyczące 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.
Klient HTTP
Pierwszym narzędziem, które Ci się przyda, jest klient HTTP. W artykule Zapytania HTTP – zestaw przydatnych narzędzi przedstawiłem kilka popularnych klientów HTTP, które możesz wykorzystać. Możesz również wykonywać zapytania z poziomu kodu, co może Ci dać nieco większe możliwości niż graficzny klient HTTP. W ramach uczestnictwa w Capture The Flag wykorzystałem Postmana. Umożliwia on szybkie i wygodne zdefiniowanie użytej metody HTTP, nagłówków, parametrów body zapytania oraz parametrów query co było dla mnie wystarczające.
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ócz tego, Burp pozwala na zautomatyzowanie pewnych czynności. Do tego celu można wykorzystać mechanizm repeatera. Obszerny poradnik do pracy z Burpem możesz znaleźć na blogu Sekuraka oraz w książce Sekuraka Bezpieczeństwo Aplikacji Webowych.
Wyszukiwarka
Może to brzmieć 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órych 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.
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 opisującym korzyści z uczestnictwa w konkursach. Z uwagi na zróżnicowany poziom trudności zadań, uważam, że OWASP Juice Shop jest bardzo dobrym wyborem zarówno na pierwszy Capture The Flag, jak i okazja do rozwoju dla nieco bardziej zaawansowanych. 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
- CTF Hacking: What is Capture the Flag for a Newbie?
- What is Capture The Flag?
- OSINT, czyli biały wywiad – metoda pozyskiwania informacji z cyberprzestrzeni w oparciu o dane jawnoźródłowe
- OWASP Top Ten
- Zapytania HTTP – zestaw przydatnych narzędzi
- Komunikacja HTTP w JavaScript
- Wprowadzenie do REST API
- OWASP Juice Shop: Probably the most modern and sophisticated insecure web application
- Postman
- cURL
- Mastering Burp Suite #1 – Poznaj sekrety topowego narzędzia dla pentesterów web aplikacji
- Książka: Bezpieczeństwo aplikacji webowych
- Burp Suite
- JWT.io
Zapisz się na mailing i odbierz e-booka
Odbierz darmowy egzemplarz e-booka 106 Pytań Rekrutacyjnych Junior JavaScript Developer i realnie zwiększ swoje szanse na rozmowie rekrutacyjnej! Będziesz też otrzymywać wartościowe treści i powiadomienia o nowych wpisach na skrzynkę e-mail.