Finn flagget!

Det å tilegne seg kunnskap innen informasjonssikkerhet ses ofte på som en kjedelig affære, lange kurs med slides og mye teori. Her kommer et tips til en praktisk og morsom måte å lære deg dette på. I denne artikkelen går jeg gjennom hva Capture the Flag (CTF) konseptet går ut på, hvorfor det gir verdi for deg som utvikler og hvilken verdi det vil gi arbeidsgiveren din.

Hva er Capture the Flag?

CTF er en konkurranse der du må løse forskjellige typer oppgaver innenfor IT-sikkerhet. Oppgaven er fullført når du finner “flagget”, som ofte er en tekststreng med et forhåndsdefinert format. Det finnes et bredt sortiment av oppgaver der ute, og da med varierende vanskelighetsgrad. Du kan for eksempel måtte bryte deg inn på en server, finne gjemte flagg i filer og på nettsider eller drive med kodeknekking. For å løse oppgavene må du sette deg inn i et tema, finne egnede verktøy som kan hjelpe deg med løsningen eller programmere noe selv. Alt i alt, en veldig morsom øvelse for å lære deg ferdighetene du trenger som etisk hacker.

CTF oppgavetyper

Som nevnt finnes det stor variasjon når det kommer til type oppgaver og vanskelighetsgrader. Her får du noen av de vanligste typene, hvor du noen ganger vil støte på kombinasjoner av disse i din søken etter en løsning.

Web sårbarheter

Dette er kanskje de mest relevante oppgavene for de fleste utviklere i dag. Du skal identifisere og utnytte svakheter på en gitt nettside. Ofte handler det om å få logget seg inn på en bruker med administratortilgang. En slik utfordring løses kanskje i flere steg med svakheter, der du til slutt finner flagget. OWASP topp ti er ofte stikkord for løsningene.

Reverse Engineering      

Her vil du motta en kjørbar fil som må dekompileres/disassembles for å kunne lese og forstå hva som skjer. Når du jobber deg gjennom innholdet i filen, vil det typisk dukke opp en kodesnutt som leder til løsningen. Det høres kanskje enkelt ut, men det er ikke rett frem å lese og forstå flyten i Assembly eller obfuskert kode.

Binære sårbarheter

Det sier seg kanskje selv, men også her vil utgangspunktet være en binær fil. For å kunne løse denne typen oppgave må du identifisere sårbarheter i filen, og utnytte disse slik at applikasjonen avslører flagget. Buffer overflow er nok den mest kjente teknikken, og opp gjennom tiden har slike sårbarheter vært sentral i spredningen av flere kjente ormer. Det finnes også et bredt spekter av andre angrep som kan utnyttes. GOT, Heap overflow og ROP er noen eksempler på andre teknikker som kan benyttes. Her gjelder det å analysere for å finne ut hva som passer, ofte gis det et hint i oppgaveteksten.

Digital etterforskning

Oppgaver innenfor denne sjangeren går ut på å finne flagg gjemt på en datamaskin, som da kan være alt fra en fil til nettverkstrafikk. Det finnes flere underkategorier innen digital etterforskning, og de største oppgavene kan være et komplett image av en harddisk som du må analysere. En annen underkategori er steganografi, som går ut på å gjemme data rett foran nesa på deg. Det som tilsynelatende er et helt vanlig bilde, filmsnutt eller lydfil, kan inneholde skjulte flagg. Teknikkene for å utføre steganografi er ofte avanserte og utrolig fascinerende å lese seg opp på. Kanskje du finner noe spennende i bildene i artikkelen?

Kryptografi

Kodeknekking synes jeg personlig er gøy, og noe jeg kan grave meg dypt ned i! Her får du mulighet til å bygge opp en basisforståelse på hvordan forskjellige språklige og matematiske krypteringsalgoritmer fungerer. Nybegynneroppgavene består ofte av enkle historiske krypteringsmetoder som Cæsar og Vigenère. Slike krypteringsmetoder er morsomme å utføre kryptoanalyse på, spesielt med selvskreven kode. For mer avanserte oppgaver kan det være nyttig å finne egnede verktøy på internett. Da handler det ofte om å identifisere hvilken krypteringsmekanisme som er benyttet, og utfordringen vil være å finne dekrypteringsnøkkelen. Kanskje oppgaven er en sammensetning av flere algoritmer, eller kanskje er nøkkelen gjemt i et bilde på nettsiden som presenterer oppgaven – kanskje du klarer å finne noe i bildene i denne artikkelen?

Bilde av verktøy som utfører Cæsar dekryptering

Hvordan komme i gang?

Første gang vil jeg anbefale å finne oppgaver som allerede finnes gratis på internett.  Du kan velge å jobbe med oppgaver selvstendig eller i et team. Inviter gjerne kollegaer til å være med en kveld med pizza og finn ut av det sammen. Nå i disse Corona-tider passer det ypperlig å ta en slik sesjon via digitale møteplattformer, da det jo er naturlig at de som deltar sitter på egen maskin. 

Det er ingen grunn til å begrense dere til en kveld. En CTF kan kjøres over lengre tid, der du for eksempel slipper en ny oppgave hver dag i en uke, eller et stort oppgavesett med tidsfrist på å skaffe seg mest mulig poeng. Har du kollegaer som sitter i andre deler av landet, kan det jo kjøres en virtuell konkurranse mellom kontorene. Mulighetene er mange, og du vil garantert bygge nye og verdifulle relasjoner – ikke minst vil det øke sikkerhetskunnskapen din.

Verktøy

En del av den naturlige flyten av oppgaveløsning er å teste forskjellige verktøy. Jo mer du forstår av oppgaven, desto bedre blir søkeordene på leten etter det riktige hjelpemiddelet. Noen av verktøyene kjøres rett i nettleseren din, mens andre er åpen kildekode som må kompileres eller installeres. For å unngå å fylle opp med diverse ymse på din egen maskin anbefaler jeg at all oppgaveløsning foregår på en egen dedikert virtuell maskin for CTF. For å komme raskt i gang, vil jeg anbefale å prøve Kali. Dette er en Linux distribusjon som inneholder mange forhåndsinstallerte verktøy. https://www.kali.org/

Oppgaver

Om du googler, finnes det haugevis av oppgaver som ligger gratis tilgjengelig. Plukk noe som ser interessant ut og hack i vei. Ofte får du en god introduksjon til oppgaven, vanskelighetsnivå er spesifisert, og noen gir også hint om du står fast. Det finnes også mange write-ups som er verdifulle å lese, finn noe som ligner og bli inspirert. Jeg kan anbefale https://ctflearn.com/ som en kilde til mange bra oppgaver.

Egne oppgaver

Når du begynner å bli varm i trøya kan du lage dine egne oppgaver. Dette kan være oppgaver inspirert av andre, men med din egen lille vri. Eller kanskje du kan lage en oppgave basert på en sårbarhet du har løst i applikasjonen du jobber med i det daglige. Om du ser for deg å lage en egen konkurranse med kort varighet, med kun en håndfull kollegaer, kan du administrere den manuelt. Ønsker du å gjøre det større og inkludere flere deltakere, eller ha en CTF som går over lengre tid så anbefaler jeg å sjekke ut rammeverket CTFd. Dette tar seg av brukerkontoer, statistikk, registrerte svar, fremvisning av oppgaver med hint, innlevering av flagg og mye mer. https://github.com/CTFd/CTFd

Skjermbilde fra CTFd – finner du flagget?

Oppsummering

Ved løse denne typen utfordringer vil du opparbeide deg sikkerhetskunnskap på en utrolig lærerik og morsom måte, som gir stor verdi å ta med seg i en utviklers hverdag. Du vil kunne få større innsikt i ulike svakheter som andre har oppdaget tidligere, og kanskje best av alt vil du bli bedre kjent med ulike teknikker og verktøy som kan benyttes mot egne tjenester for å avdekke feil. Det å forstå hvordan en hacker angriper, hjelper deg å bygge bedre forsvar. Ved å oppdage en svakhet i god tid før produksjonssetting, blir skaden og kostnaden liten i forhold til at feilen oppdages og potensielt utnyttes. Det er også et glimrende konsept for å bygge sikkerhetskultur og relasjoner både internt og eksternt.

Tar du utfordringen? Finn flagget!

Nyttige ressurser

Skribent
Stig Rune Malterud
Utvikler og arkitekt i Miles Stavanger