Kinderen meer over internetveiligheid leren door Capture the Flag

This blog post is also available in English: Teach children about cyber security by playing Capture the Flag

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.

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. 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. 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). Deze code geeft ook gelijk het klassement aan: leerlingen met dezelfde code, worden in een klassement geplaatst. Op basis hiervan worden ook alleen deze leerlingen in het scorebord geplaatst.

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 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 ‘Deuren’, een challenge waarbij je moet kijken welke poorten er allemaal open staan op een server. 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 worden alle gebruikers met 0 (of minder) punten verwijderd om het platform een beetje schoon te houden :)

Wil je dit nou ook gebruiken voor bij een gastles? Op https://ctf.hackchallenges.nl kun je naar de CTF-omgeving inclusief zo’n 30 challenges (en more to come!). 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.