Articles

CTF Hacking: Wat is Capture the Flag voor een newbie?

Wat is capture the flag hacking?

Deze blog is bedoeld voor iemand die nog helemaal nieuw is met Capture The Flag (CTF) hacking en legt de basis uit om je de moed te geven om aan een CTF mee te doen en zelf te ervaren hoe het is om mee te doen. CTF’s zijn evenementen die meestal worden georganiseerd op informatiebeveiligingsconferenties, waaronder de verschillende BSides-evenementen. Deze evenementen bestaan uit een reeks uitdagingen die variëren in moeilijkheidsgraad, en waarvoor de deelnemers verschillende vaardigheden moeten oefenen om ze op te lossen. Zodra een individuele uitdaging is opgelost, wordt een “vlag” aan de speler gegeven en hij zendt deze vlag naar de CTF-server om punten te verdienen. Spelers kunnen eenzame wolven zijn die de verschillende uitdagingen alleen proberen, of ze kunnen samenwerken met anderen om te proberen het hoogste aantal punten te scoren als een team.

CTF evenementen zijn meestal getimed, en de punten worden getotaliseerd zodra de tijd is verstreken. De winnende speler/team is degene die de meeste uitdagingen heeft opgelost en dus de hoogste score heeft behaald.

Hier ziet u een screenshot van een scorebord van een BSides San Francisco CTF-evenement:

CTF at Bsides San Francisco

Let op de zin die ik met een rood vakje heb gemarkeerd. Zoals u snel zult zien, zijn CTF-taken vaak gebaseerd op echte incidenten/kwetsbaarheden die u de kans geven te ervaren hoe het in werkelijkheid wordt gedaan en u beter voor te bereiden op de verdediging van uw eigen systemen tegen dit soort aanvallen. CTF-evenementen zijn dus niet alleen leuk, ze kunnen ook leerzaam en professioneel lonend zijn.

CTF-voorbereiding

Als je nog nooit een CTF-evenement hebt meegemaakt, raak dan niet gefrustreerd en geef niet op, want de sleutel tot elke vorm van hacken is geduld. Hoewel dit soms moeilijk is om te hebben, is de enige manier om het te leren door vol te houden en zelf te oefenen (zie dit bericht verderop over hoe je kunt oefenen) en misschien scoor je de volgende keer wel de eerste plaats! Eén ding dat je kan proberen te doen tijdens je eerste CTF evenement, indien mogelijk, is een ervaren team vinden dat bereid is om je toe te laten. Laat duidelijk blijken dat dit je eerste CTF event is en dat je graag wilt dat ze je wegwijs maken.

In mijn ervaring zijn leden van de InfoSec community meestal erg bereid om hun kennis te delen met iedereen die geïnteresseerd is om te leren en te groeien in dit vakgebied. Tegelijkertijd is er echter ook een gemeenschappelijk thema dat je vaak hoort in de gemeenschap, namelijk dat er een tekort is aan talent. Soms is dit een zeer reële strijd, en veel professionals die zich in het vakgebied hebben opgewerkt, hebben daar veel tijd in gestoken en veel opgeofferd om te leren, te oefenen en hun vak aan te scherpen. Om deze reden zou je, voordat je om hulp vraagt bij basisvragen, eerst onderzoek moeten doen naar het onderwerp en een poging moeten doen om dingen zelf uit te zoeken.

Binnen de InfoSec gemeenschap is vertrouwen niet iets waar je waarde aan kunt hechten. Als het je taak is om in te breken in het netwerk van een klant, is het laatste wat iemand wil dat die gevoelige informatie wordt gedeeld met iemand buiten het team. Vertrouwen is een cruciaal onderdeel van deze relatie en ik kan niet genoeg benadrukken hoe belangrijk het is om ook tijdens wedstrijden ethisch te blijven. Tenslotte, last but certainly not least: als je naar een CTF evenement gaat, vergeet dan niet om een laptop of een andere computer mee te nemen waarop een besturingssysteem staat met verschillende tools al geïnstalleerd (meer hierover hieronder), want zonder dat ga je een moeilijke start hebben.

In samenvatting, CTF zijn een geweldige kans om te leren, dus als je nog nooit een CTF evenement of zelfs een BSides evenement hebt meegemaakt, moedig ik je sterk aan om in te springen en er een mee te doen zo snel als je kunt!

Adversary Simulation Service

Laat klanten hun beveiligingsoperaties en detectiecapaciteiten testen tegen geavanceerde penetratietesttechnieken.

Meer informatie

Types of Events

Er zijn gewoonlijk twee verschillende types CTF-events. De twee meest voorkomende zijn:

  • Red Team/Blue Team
    • In dit soort evenementen probeert het rode team vlaggen te veroveren, terwijl het blauwe team de verschillende vlaggen probeert te verdedigen tegen verovering.
  • Red Team
    • In dit soort evenementen proberen meestal een of meer mensen, alleen of in teamverband, vlaggen te veroveren terwijl er geen team is dat ze verdedigt.

Elk soort evenement heeft zijn voor- en nadelen. In een Red Team vs. Blue Team-scenario leren de aanvallers essentiële technieken, terwijl de verdedigers de kans krijgen te leren hoe ze hun systemen tegen een actieve aanval kunnen verdedigen. In een Red Team-scenario echter, spant iedereen samen tegen de arme CTF-host en doet hij zijn best om elke vlag te onthullen die de aanvallers met hun digitale klauwen te pakken kunnen krijgen.

Typen uitdagingen

CTF’s hebben meestal verschillende uitdagingen die specifieke aandachtsgebieden gebruiken of oefenen. Enkele populaire aandachtsgebieden zijn:

  • Programmeren
    • Deze soorten uitdagingen vereisen meestal een soort programmering om op te lossen. In de meeste gevallen gaat het om een combinatie van programmeren en reverse engineering.
  • “Crypto”
    • Deze uitdagingen hebben betrekking op veelvoorkomende “echte wereld”-scenario’s die vaak het altijd populaire type ransomware bevatten.
  • Exploitatie
    • Deze opdrachten dwingen je om te bepalen hoe je een bepaald lopend proces kunt exploiteren (met behulp van bufferoverloop, stringopmaak, SQL-injectie, enz….) van een bepaald lopend proces op de CTF-doelmachine.
  • Reverse Engineering
    • Voor dit soort taken zal meestal reverse engineering nodig zijn, bijvoorbeeld wanneer de server je een uitvoerbaar bestand stuurt.

Hoe deel te nemen aan een CTF-evenement?

Mijn eerste ervaring met een CTF was tijdens een lokaal BSides-evenement. Ik ging naar het BSides evenement met de volgende gedachte: “Er zullen hier waarschijnlijk veel ervaren hackers zijn; ik denk dat ik een Tails laptop meeneem waarmee ik aantekeningen kan maken en op het web kan surfen als dat nodig is.” Hoewel de mentaliteit om mijn apparaten te willen beschermen niet bepaald een slecht idee was, maakte het vertrouwen op een Tails het leven nogal moeilijk als het ging om deelname aan het CTF-evenement. Om eerlijk te zijn, ik wist niet dat er een CTF evenement zou zijn en dus heb ik niet eens nagedacht over dat aspect van het evenement. Wat ik je zou aanraden om te gebruiken tijdens je eerste CTF, in volgorde van makkelijkst tot moeilijkst, is een van de volgende:

  • Kali Linux
    • Deze distributie is speciaal gebouwd voor penetratietesten. Hij zit vol met alle denkbare tools en waarschijnlijk nog veel meer dan je ooit nodig zult hebben.
  • BlackArch
    • Deze distributie is gebaseerd op Arch Linux, maar is net als Kali vooraf voorzien van tonnen beveiligingshulpmiddelen.
  • Arch Linux
    • Dit is een basis-Linux-installatie die wordt geleverd met standaard Linux-tools. Als je voor deze optie kiest, zul je alle tools die je nodig hebt moeten installeren, of er op zijn minst voor moeten zorgen dat je toegang hebt tot een internetverbinding zodat je snel de tools kunt installeren die je nodig hebt tijdens het evenement.

Voorbeelden

Zoals ik al eerder zei, was er een BSides evenement in San Francisco waar een paar maanden geleden een CTF sessie werd georganiseerd. We kunnen dit evenement nader bekijken om u een beter idee te geven van waar het bij capture the flag om draait.

Op de eerste plaats ziet u op de schermafbeelding hierboven het uiteindelijke scorebord, dat ik ook hier zal plaatsen:

CTF voor nieuwelingen, capture that flag

Merk op dat de winnaar won met 6.773.000 punten, terwijl de speler die het dichtst in de buurt kwam 5.178.000 punten had. Dat is een behoorlijke voorsprong die mij vertelt dat dcua waarschijnlijk een behoorlijk ervaren hacker/CTF-speler is. Laten we ons nu eens verdiepen in de verschillende soorten taken waar we het eerder over hebben gehad. Hier is een lijst met de verschillende taken die beschikbaar waren in dit CTF-evenement:

Zoals je kunt zien, zijn er verschillende soorten taken en overlappen sommige taken elkaar in termen van de vaardigheden die nodig zijn om ze op te lossen. Laten we eens wat meer in detail kijken naar een aantal taken uit die lijst. We kiezen er gewoon eentje uit:

Taylor’s Magical Flag Oracle is een taak gebaseerd op reverse engineering en codering, die 150 punten waard is. Als je op de link ‘Taak’ klikt, krijg je gedetailleerde informatie over wat er allemaal bij komt kijken:

Reverse engineering-punten in een CTF

Zoals je kunt zien, zijn er een heleboel details, waaronder hints over hoe je deze CTF-uitdaging/taak moet oplossen. Omdat dit evenement al is afgesloten, is er ook een “Writeups”-sectie waarin verschillende spelers de stappen hebben beschreven die ze hebben gebruikt om de uitdaging op te lossen. Deze sectie is erg interessant om te lezen en kan je ook helpen als je de uitdaging zelf wilt proberen en een duwtje in de goede richting nodig hebt.

Laten we nog even snel twee uitdagingen bekijken en dan ga ik verder met bronnen die je kunt gebruiken om meer te leren over CTF, hoe je eraan kunt deelnemen, of zelfs hoe je er een kunt hosten.

Voor ons volgende voorbeeld lijkt het me een goed moment om de ‘xref’-taak te kiezen, gezien al het nieuws over de recente WannaCry ransomware-infecties:

XREF-taak geselecteerd in CTF

Hier volgen de details voor ‘xref’:

Het valt op dat deze beschrijving niet veel houvast biedt. Dat maakt deze taak bijzonder interessant en een uitdaging; als je het nog nooit hebt gedaan, is het moeilijk om te weten waar je moet beginnen. Maar gelukkig is dit evenement voorbij, dus we zullen een van de write ups gebruiken om een idee te krijgen van hoe de uitdaging is opgelost.

De URL hier: https://github.com/1337pwnie/ctf-writeups/tree/master/2017/UIUCTF geeft de details. In dit geval is er een README bestand in het bijgeleverde .ZIP bestand dat een hint geeft. Om de uitdaging op te lossen, moet er wat code geschreven worden (hoewel de opdracht de ‘programming’ tag lijkt te missen). In plaats van het hele stuk hier door te nemen, kun je hier de URL en de stap-voor-stap oplossing bekijken.

Volgende, laten we eens kijken naar onze laatste taak:

Goodluck is een kwetsbaarheid voor p0wn in CTF

Goodluck is een “p0wn”-kwetsbaarheid in string-formaat, wat in wezen betekent dat als je ertegen scoort, de vlag wordt uitgespuugd. In de echte wereld zou je idealiter onbeperkte toegang tot de doelmachine krijgen als je een taak als deze zou volbrengen. Hier volgen de details over goodluck:

details over goodluck in ctf

Om dit op te lossen, moeten we erachter zien te komen hoe we een string-formaat kwetsbaarheid kunnen gebruiken om ons een vlag te geven. De details hiervan zijn technisch en diepgaand, dus kijk in de bronnensectie hieronder voor links naar de verschillende uitdagingen die in dit bericht zijn genoemd en je kunt dan gebruik maken van de verschillende schrijf-ups over de verschillende oplossingen die zijn gebruikt om de uitdagingen/taken op te lossen.

Hoe kan ik meer leren over CTF?

Er zijn veel bronnen op het web die je kunt gebruiken om te bepalen hoe je een CTF kunt spelen of hoe je een CTF kunt hosten. Zoek op Google en YouTube naar details over verschillende evenementen waar je aan mee kunt doen. Veel van deze evenementen laten spelers op afstand toe om mee te spelen, zodat je niet noodzakelijk fysiek aanwezig moet zijn om deel te nemen. De specifieke CTF die ik gebruikte om te bespreken hoe CTF werkt en mijn ervaringen ermee is hier vandaan gehaald: https://ctftime.org/event/453.

Hier is een andere interessante en nuttige bron die je misschien handig vindt: http://www.amanhardikar.com/mindmaps/Practice.html. Deze URL geeft u toegang tot een breed scala van tools die allemaal te maken hebben met kwetsbare applicaties, webapplicaties, besturingssystemen, enz. Deze bronnen zijn een goede plek om te beginnen.

Als Google, YouTube en de andere hier gepresenteerde bronnen uw vragen niet beantwoorden, neem dan gerust rechtstreeks contact met mij op en ik zal proberen u zo goed mogelijk te helpen. U kunt contact met mij opnemen op Twitter @CerebralMisjif. Voel je vrij om me daar te volgen of te pingen en ik zal mijn best doen om al je vragen te beantwoorden.

Conclusie

Deze blog is bedoeld voor een persoon die helemaal nieuw is met CTF, en het zou je de moed moeten geven om mee te doen aan een CTF en zelf te zien hoe het is. CTF-evenementen zijn uitstekende plaatsen om andere informatiebeveiligingsenthousiastelingen/professionals te ontmoeten, en ze bieden ook goede mogelijkheden om te netwerken, je vaardigheden in een veilige omgeving uit te breiden, en plezier te maken terwijl je dit doet. In sommige gevallen worden er prijzen uitgereikt aan de winnaar van een CTF evenement en die kunnen erg leuk zijn om in de kijker te zetten als je een carrière in het InfoSec veld ambieert.

Ik hoop dat je dit artikel nuttig en leerzaam hebt gevonden. Ik hoop ook dat je een beter begrip hebt gekregen van wat een CTF is, hoe het je kan helpen je kennis en vaardigheden te verbeteren, alsook je vermogen om huidige systemen te verdedigen, en bovenal, hoe leuk een CTF kan zijn! Zoals ik al zei, beginnen sommige sites nu remote spelers toe te laten deel te nemen aan CTF events, dus hou je ogen open voor deze als je geïnteresseerd bent. Ik hoop je op een dag te zien; neem contact met me op als je op een evenement bent zodat we elkaar kunnen ontmoeten.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *