Hackles op school met 'Capture the Flag'
Datum: 23 augustus 2019 | Categorie: Gastlessen | 4 minuten

Update 8 september 2019: Je kunt nu hints kopen door op het icoontje rechts van de challengetitel te klikken. Dit kost je 5 punten!

Sinds het begin van mijn studietijd (ja, we gaan way way back) geef ik gastlessen op basisscholen en middelbare scholen. Waar het voornamelijk begon om meisjes meer te enthousiasmeren voor technische / IT studies door lessen te geven over web & app design (binnen het project DigiVITA van VHTO), beviel het eigenlijk zo goed dat ik deze gastlessen nog steeds met alle liefde en plezier geef. Nu gaan ze niet meer over HTML en CSS trouwens, maar over cyber security en de veiligheid op het internet Happy.

In het kader van deze gastlessen organiseer ik ook jaarlijks de Summer School, waarbij meer dan 50 kinderen tussen de 8 en 15 jaar twee verschillende dingen mochten doen: de social engineering game en een technische Capture the Flag. Waar de social engineering game gericht was op kinderen van 8 tot 11 jaar, konden de oudere kinderen vanaf 12 jaar met de Capture the Flag aan de slag. Een Capture the Flag is een soort van wedstrijd waarbij teams op zoek moeten naar ‘vlaggen’. Deze vlaggen zitten verstopt in bijvoorbeeld een webapplicatie; je krijgt ze pas te zien wanneer je een opdracht succesvol hebt opgelost. Security experts of ethische hackers gebruiken dit om te oefenen, maar ook in schoolklassen werkt dit goed vanwege het spelelement. Je krijgt al snel door hoe gemakkelijk het is om ergens binnen te komen en zal daardoor zelf bijvoorbeeld een sterker wachtwoord kiezen of tweestapsverificatie inschakelen.

Het platform voor de Capture the Flag heb ik geschreven in Laravel. Aangezien verschillende leeftijden met verschillende niveaus ermee moesten werken, wilde ik het platform zo simpel mogelijk maken (en dat kon ik niet in bestaande platforms vinden). Bovendien vind ik het niet zo erg om wat te coden op z’n tijd Wink. Om het platform en de challenges op alle manieren te testen, hebben we een oefenrondje gespeeld met heel wat security specialisten. Mocht je toch nog iets vinden, laat het me vooral weten!

Het registratiescherm

Op het landingsscherm kun je je registreren als nieuw team. Vergeet vooral geen icoontje te kiezen welke goed bij je persoonlijkheid past Wink. Een CTF-code is ingesteld als vereiste, zodat er een beetje regulatie zat in wie er op welk moment mee kon spelen (zoals bijvoorbeeld alleen de kids in de klas).

Het overzicht
Voorbeeldchallenge

Links staat het overzichtscherm met meerdere categoriëen. Op dit moment zijn dit hacking, forensics, crypto en coding. Per categorie wordt er bijgehouden hoeveel je al hebt gevonden per categorie als balk met percentages. Op de rechterscreenshot zie je hoe de challenges worden weergeven per categorie. In een lijst, waarbij de titel de link is naar de challenge, staan de challenges gesorteerd op moeilijkheidsgraad. Per challenge staat er een invoerveld: hier moet de gevonden flag ingevoerd worden.

Voorbeeldchallenge
Voorbeeldchallenge

Bovenstaande screenshots zijn van twee challenges: ‘Standaard’, waarbij je moet proberen in te loggen met vaak gebruikte gebruikersnamen en wachtwoorden (gepubliceerd in een blog) en ‘Frequentie’, een lastige challenge waarbij je veelvoorkomende letters in een zin moet vervangen door veelverkomende letters in Nederlandse teksten. Laten we eens kijken hoe we de eerste challenge moeten oplossen. We gaan als voorbeeld de linkerchallenge doen. Door op de link te klikken, vind je een blogpost over de meest gebruikte wachtwoorden. Deze moet je handmatig proberen (of automatisch als je een 1337-hacker bent). Je weet echter de gebruikersnaam niet, maar als je de foutmelding goed leest, kom je hier gemakkelijk achter. Heb je de gebruikersnaam en het wachtwoord goed? Dan krijg je een flag.

Voorbeeldchallenge
Gevonden flag
Punten verdiend

Links zie je de flag. Wanneer je deze invult bij het invoerveld onder de juiste challengenaam (midden), krijg je punten (rechts) en geeft hij de challenge aan als ‘opgelost’.

Scorebord

Let op: aan het einde van iedere maand wordt de winnaar van die maand (dus degene met de meeste punten behaald in die maand, niet totaal) aangekondigd op het Twitteraccount (Twitter HackchallengeNL). Daarnaast worden alle gebruikers met 0 (of minder) punten verwijderd om het platform een beetje schoon te houden Happy.


Wil je dit nou ook gebruiken voor bij een gastles? Op https://ctf.hackchallenges.nl kun je naar de CTF-omgeving inclusief zo’n 25 challenges (waarbij er meer worden ontwikkeld). Je kunt slides met korte uitleg hier downloaden: Lesmateriaal-CTF.pdf. Om ook mee te spelen, heb je een CTF-code nodig. Deze kun je bij me opvragen via bijvoorbeeld een Twitter DM, een LinkedIn bericht of door te mailen naar ctf [apenstaartje] hackchallenges [punt] nl.