Leren hacken met CTF challenges / Capture the flag
Hacken kun je leren, maar dit lukt alleen door veel proberen en experimenteren. Door hacken op de juiste manier, bij de juiste organisaties en in een veilige omgeving, help je mee om cybercrime tegen te gaan en mogelijk zelfs op te lossen, zonder de wet te overtreden. Eén van die manieren is een capture the flag-hackcompetitie. Lees hier meer overCTF challenges.
Security CTF’s oftewel capture the flag-competities hebben in deze context niks te maken met schietspelletjes op de computer of met het veroveren van de vlag bij het paintballen. Het zijn uitdagende opdrachten, ook wel challenges genoemd, waarbij je nieuwe hackingtechnieken kunt leren.
Vaak vinden CTF’s plaats tijdens een van de vele securityconferenties over de hele wereld. Al in 1996 werd er een CTF georganiseerd tijdens Def Con, een grote en bekende cyberbeveiligingconferentie die jaarlijks wordt gehouden in Las Vegas. Naarmate het internet groeide, groeide ook de CTF-competities en kon ook het internet gebruikt worden om waar dan ook ter wereld mee te doen. Tegenwoordig zijn CTF’s voor iedereen en overal bereikbaar en kun je online direct deelnemen.
In dit artikel leggen we je uit welke challenges er zijn en hoe je zelf CTF’s kunt vinden om te spelen, zowel online als offline.
Deelnemen aan een CTF
De meeste deelnemers aan CTF’s zijn hackers of hebben ervaring met hacken. Maar er komen ook veel studenten die een IT-opleiding volgen, al dan niet in de richting van security. Uiteraard is er ook niks mis mee om als volledige nieuweling mee te doen aan CTF’s, er is altijd wel iemand die je wil helpen of waar je bij kunt aanschuiven om mee te kijken en wat van kunt leren.
Uiteindelijk leer je wel het meest door het zelf te doen en proberen. Maar in het begin is het erg lastig, je weet niks en het lukt je maar niet om de challenges op te lossen. Maar aan het einde van elke CTF worden er write-ups gemaakt door de deelnemers, een volledige beschrijving van hoe anderen een challenge hebben weten op te lossen. Vaak voorzien van de gebruikte exploitcode, korte video’s of een complete stap-voor-stap YouTube-video. Deze zijn heel leerzaam en het beste kun je in het begin veel van deze beschrijvingen lezen en video’s bekijken om het zelf proberen na te doen, zodat je begrijpt hoe het moet en hoe het kan, en je daarna zelf mee aan de slag kunt.
Vaak zijn er aan de online CTF’s ook forums en IRC-kanalen verbonden. Hier worden de verschillende challenges besproken, maar altijd zonder dat er echt een hint of antwoord wordt prijsgegeven. Vragen naar flags, oplossingen of hints is niet netjes en vaak zelfs niet toegestaan. Zeker niet wanneer het voor anderen ook te lezen is.
Benodigdheden
Om mee te kunnen doen aan de online CTF’s, moet je weten waar ze te vinden zijn, vaak moet je een account aanmaken om in te kunnen loggen zodat ook je scores bijgehouden kunnen worden. Voor de Jeopardy stijl-challenges (uitleg verderop) heb je vaak niet meer nodig dan je computer of laptop en toegang tot de website. Bij de attack/defense- of penetratie-challenges heb je vaak een installatie van Kali nodig, het besturingssysteem voor hackingdoeleinden. Daarop zijn dan ook veel programma’s en tools te vinden die je nodig hebt. Overige tools kun je downloaden van bijvoorbeeld Github op het moment dat je ze nodig hebt.
Bekende tools zijn Nmap voor een eerste scan om informatie over porten en services te vinden, het Linux-tooltje smbclient voor meer informatie over samba shares, Wireshark voor het analyseren van netwerkverkeer, Nikto om webservers te scannen, hashcat voor het decoderen van wachtwoorden en sqlmap om geautomatiseerd SQL-injections te ontdekken.
©PXimport
Je kunt ook een volledige virtuele machine om mee te oefenen downloaden, die worden vaak als iso-bestand aangeboden. De machine is al helemaal voorbereid en je kunt hem op je eigen computer of laptop draaien. Zo heb je de beschikking over je eigen kwetsbare server, waar geen andere deelnemers op zitten. Deze downloadbare kwetsbare machines vind je bijvoorbeeld op de website vulnhub.com, hier staan inmiddels meer dan driehonderd .iso-bestanden op die elk hun eigen uitdaging en moeilijkheid hebben.
Soorten CFT challenges
Er zijn verschillende soorten challenges. Bij reverse engineering krijg je meestal een bestand, een uitvoerbaar programma, dat je lokaal kunt draaien. Met de juiste input voor het programma wordt uiteindelijk de flag onthuld. Door het reverse engineeren van het programma leer je hoe het algoritme werkt en weet je welke input je moet geven om de flag te vinden.
Bij cryptochallenges gaat het om cryptografie, vaak uiteenlopend van simpele of zelfgemaakte encryptie tot zwakke random generators. Maar het kan ook heel geavanceerd en wiskundig worden, waarbij je snel het spoor bijster bent als je niet volledig van dit soort technieken op de hoogte bent.
Bij pwning challenges krijg je meestal ook een uitvoerbaar programma, maar ook een ip-adres en een poort waar het programma op een server draait. Met het uitvoerbare bestand kun je lokaal proberen om het programma te exploiten en zo remote code execution te krijgen. Vervolgens gebruik je je ontwikkelde exploit code om op afstand een toepassing binnen te dringen en een actie uit te voeren. Als je op de server gekomen bent, kun je het bestand met de flag vinden en uitlezen. Vaak lopen deze challenges uiteen van een simpele buffer overflow tot erg geavanceerde heap overflows.
Een forensics challenge kent allerlei varianten. Bij een memory dump is het de bedoeling om een bestand te analyseren en bijvoorbeeld alle gebruikersnamen en wachtwoorden die op het moment van de dump in het geheugen van die computer waren geladen, eruit te halen. Bij netwerk packet analyse moet je analyseren hoe de communicatie tussen twee servers eruitzag en moet je bijvoorbeeld een gebruikersnaam en wachtwoord die in deze communicatie werd meegestuurd, vinden. De flag kun je vinden door de verborgen informatie uit de bestanden te lezen, alsof je een forensisch onderzoek aan het doen bent. Voor beginners zijn deze challenges vaak lastig.
Web challenges werken aan de hand van URL’s en kennen challenges zoals authenticatie bypass; het omzeilen van het inloggen met een gebruikersnaam en wachtwoord, en SQL- of XML-injections.
De IoT- (Internet Of Things) challenges zul je vaker bij een bedrijf of organisatie op kantoor vinden, omdat je hiervoor fysiek toegang tot het IoT-apparaat nodig hebt. Vaak is dit een combinatie van een web challenge, omdat er een administrator interface op zit, reverse engineering, omdat de firmware onderzocht kan worden, en een hardwarehack via bijvoorbeeld de netwerkaansluiting of UART, een seriële poort op een IoT-apparaat.
©PXimport
Er zijn eigenlijk twee veelvoorkomende soorten CTF’s. Namelijk Jeopardy-stijl CTF’s en attack/defense-CTF’s. Er zijn CTF’s die meer lijken op een werkelijke security penetratietest en er zijn gemengde competities; een combinatie van meerdere soorten CTF’s.
Bij de Jeopardy-stijl CTF is het de bedoeling om verschillende opdrachten (challenges) op te lossen van verschillende categorieën. Vaak kun je jezelf door het oplossen van de challenges toegang verschaffen tot een server, waar je dan een bepaalde tekst kunt vinden, die vlag (flag) heet. Vandaar ook de naam ‘capture the flag’. Deze flag kun je vervolgens uploaden als bewijs dat je de challenge gehaald hebt. Hiermee verdien je punten voor jezelf of je team.
De attack-/defense- CTF’s werken anders. Vaak worden ze gespeeld in teamverband. Elk team heeft zijn eigen kwetsbare servers en services. Als team moet je je eigen systeem verdedigen tegen andere teams die jouw systeem aanvallen. Tegelijkertijd kun je als team de server van andere teams proberen aan te vallen.
Bij de penetratietest-CTF probeer je individueel of met een team via vooraf bepaalde kwetsbaarheden een systeem binnen te komen. Een aantal veelvoorkomende kwetsbaarheden zijn het gebruik van zwakke wachtwoorden, gedeelde harde schijven zonder de juiste ACL’s, gesimuleerde eindgebruikers of bufferoverflows. Ook bij deze vorm van CTF is het niet toegestaan om elkaar aan te vallen, maar alleen de machines die voor de CTF beschikbaar zijn gemaakt.
De Jeopardy-stijl CTF’s gaan vaak over meer dan security alleen. Er komen ook veel raadsels en wiskundige breinkrakers in voor. De verschillende categorieën waarin challenges voorkomen zijn onder meer reverse engineering, cryptografie, pwning, forensics, web, IoT enzovoort. Hoe meer challenges je weet op te lossen, hoe moeilijker ze zullen worden. Moeilijker challenges leveren meer punten op. Degene met de meeste punten wint. Het is bij de Jeopardy-stijl CTF overigens niet toegestaan om elkaar aan te vallen, iedereen gebruikt over het algemeen zijn eigen laptop en logt in op de server of servers waar de challenges op staan.
Online CTF’s
Wil je zelf aan de slag met CTF, dan is een online-variant het makkelijkst om mee te beginnen. Er zijn wel honderden voorbeelden te noemen van websites die CTF’s hosten. Hier noemen we een aantal van de grootste en meestgebruikte websites.
Google heeft een CTF waarbij de beste tien teams na een online kwalificatieronde uitgenodigd worden om onsite de finale te spelen. En hier zijn leuke prijzen te winnen, maar het begint wel eerst online en daar kan iedereen aan mee doen.
CTF time is gemaakt door de CTF-community voor de CTF-community. Hier vind je CTF’s zowel online als offline, die binnenkort zullen plaatsvinden. Hoe en waar je je kunt inschrijven staat er ook, net als historische CTF-events en onder meer de ranglijst van deelnemende CTF-teams.
Overthewire is een verzameling van zogenoemde wargames. Elke challenge is te bereiken via een eigen ssh-poort. Er zijn verschillende levels die steeds moeilijker worden naarmate je verder komt. De Bandit-challenge is uitermate geschikt voor iedereen die net begint.
©PXimport
W3challs is een trainingsplatform met verschillende realistische challenges met verschillende moeilijkheidsgraden (easy, medium, hard). Deze heeft ook een forum waar je met andere deelnemers over de challenges kunt discussiëren.
Root-Me heeft meer dan 200 hack-challenges en ook nog 50 virtuele omgevingen waar je je skills kunt oefenen.
Op Hackthebox staan zowel kwetsbare servers als challenges in verschillende categorieën. Toegang krijgen tot de website is al een challenge op zich. Er zijn teams en ruim 150.000 mensen van over de hele wereld die dagelijks proberen de challenges te kraken.
Onsite CTF’s
Nog leuker is het natuurlijk om een on-site CTF bij te wonen of zelf aan deel te nemen. Er is een aantal bekende CTF’s. Secure by design organiseert elk jaar een CTF waar ongeveer 250 deelnemers op afkomen. Afgelopen jaren was het een uitgebreide penetratietest-stijl CTF in een studio in Hilversum.
Het Platform voor InformatieBeveiliging organiseert ook jaarlijks een CTF in Jeopardy-stijl. Aan meedoen zitten wel wat kosten verbonden, tenzij je lid bent, maar daarvoor krijg je wel een gezellige avond waar veel mensen aan deelnemen.
Hack in the box is een jaarlijkse hackingconferentie in Nederland, waar naast de conferentie ook een CTF wordt georganiseerd. Tijdens het tweedaags evenement wordt in teamverband geprobeerd de Jeopardy-stijl CTF te hacken.
Nog leuker is meedoen aan de CTF tijdens een van de hackingconferentie in de Verenigde Staten, zoals het eerder genoemde Def Con. Hiervoor moet je wel naar de VS, maar naast de CTF kun je ook de conferentie zelf bezoeken en er zijn leuke prijzen te winnen.
Tekst:Joost van ‘t Zand