23.09.11 | kl. 09:01 | Aktuelt, Prosabladet
Træn dine hackerevner med Capture The Flag
Stærkt inspireret af lignende events fra sikkerhedskonferencer som for eksempel Defcon afholdt PROSA sidste år den første offentlige Capture The Flag- (CTF) hackerkonkurrence i Danmark.
Udfordringer i hackerteknikker er ikke noget nyt, og der findes mange forskellige typer, blandt andre usikre applikationer, wargames og crackme's.
Men kongen af dem alle er CTF, for her er der både fokus på angreb og forsvar, og derudover er der et tidspres.
Reglerne varierer hos de forskellige arrangører, men i PROSA arbejder man sammen i hold om at forsvare en server imod andre deltagere, samtidig med at man skal angribe de andre.
I konkurrencen i 2010 var der seks tilmeldte hold, som hver fik ansvaret for en virtuel maskine med Ubuntu-server. Alle servere var ens konfigureret og installeret med fire services, som var udviklet specielt til konkurrencen og med vilje fyldt med sikkerhedsfejl.
En service i CTF er et program, som kan påvirkes via netværket, og som kan gemme et flag. Et flag består af 64 tegn og er tilfældigt genereret af spilserveren. Spilserveren leverer med jævne mellemrum disse flag til de forskellige services på alle holdserverne. Lykkes leveringen, får holdet et point. Senere tjekker spilserveren, at flaget stadig findes i servicen, og er det tilfældet, får holdet endnu et point.
Udnytte fejl
Udfordringen for arrangørerne i at udvikle en service til CTF er at kunne automatisere leveringen, tjekke og i visse tilfælde endda at gøre det muligt at udnytte fejlen.
Hvis der for eksempel er tale om cross site scripting, er det kun spilserveren, som kan udløse fejlen. Det må heller ikke være en fejl, som kan genere holdet for meget. En service, som kan crashes, skal helst automatisk kunne komme op at stå igen. Visse fejl vil kunne få hele maskinen til at crashe, så det vil være en stor udfordring at lave en brugbar sårbarhed i kernen.
Flagene kan for eksempel plantes i et websystem, som et password ved at oprette en bruger med et tilfældigt genereret brugernavn. Dets tilstedeværelse verificeres da ved at forsøge et login.
Holdet skal holde sine services kørende, så flagene kan leveres og tjekkes, og samtidig skal de finde fejl i deres services, som gør, at man kan finde flagene. Når fejl identificeres, har holdet så to nye opgaver: Fiks fejlen lokalt, og stjæl de andre holds flag. Hvert stjålet flag udløser yderligere points.
Fejlene kan være hvad som helst – fra SQL injection til buffer overflows eller simple konfigurationsproblemer. I konkurrencen i 2010 var der for eksempel en service, som gemte sine flag i en SQLite-database, som lå i webfolderen og derfor bare kunne downloades. Den ser vi på om lidt.
Udfordringer giver point
I løbet af konkurrencen kom der yderligere pointgivende opgaver kaldet 'udfordringer', som ikke er bundet op mod et holds server og derfor kan have mange former: Krypterede data, som skulle brydes, en crackme, som der skulle skrives serienummergenerator til, og netværksdumps, som skulle analyseres.
Som et eksempel på en service kan vi kigge på en fra sidste år. 'SpeakersCorner' var navnet på en blogging-webservice, som kan ses i figur 1.
Servicen var kodet i PHP, og bagved lå der en SQLite-baseret database, og det var jo oplagt at lede efter SQL injections, men dem var der ingen af. Til gengæld lå databasen i samme folder som webapplikationen, og den kunne derfor bare downloades via webserveren og søges i lokalt.
Et muligt exploit kan ses i figur 2. Det henter databasefilen fra alle specificerede hosts og udfører en søgning i den, samt fjerner alt, som ikke ligner flag.
Figur 3 viser eksekveringen, hvor jeg først lister to filer: Exploitet og et script til at levere flag til spilserveren. Derefter eksekverer jeg exploitet, som viser de stjålne flag. Til sidst leverer jeg alle flagene til scriptet, som leverer dem til spilserveren, som fortæller, at vi leverede fire flag.
Alle kan være med
Der findes mange gode bøger om sikkerhed og angrebsteknikker, og PROSA afholder en del foredrag og kurser i sikkerhed, men teori kan ikke gøre det ud for praksis, og det får man ved en CTF-event. Alle kan være med uanset deres tekniske baggrund og kompetence, for holdet har brug for mange forskellige profiler, for eksempel:
• Systemadministratoren ved, hvordan man sikrer sin maskine og minimerer effekten af et angreb.
• Hackeren ved, hvordan man udnytter sikkerhedsbrister til at opnå adgang til data eller kodeeksekvering på andres maskiner.
• En reverse engineer ved, hvordan man får mening ud af binære programmer (for eksempel compilerede C-programmer), og finder ud af, hvordan de fungerer.
• En programmør kan lave værktøjer og automatisere hackerens angreb.
• Kryptologen ved, hvornår en RSA-nøgle er genereret med nok entropi, og om tilfældighedsgeneratoren er seedet korrekt.
Én person kan selvfølgelig godt udfylde flere profiler, men det burde være muligt for alle at bidrage med ét eller andet. Om ikke andet så bare med assistance, sparring og opmuntring til de mere rutinerede holdmedlemmer.
Vellykket ilddåb
Konkurrencen i 2010 var debut for arrangørerne, så vi forventede problemer, for nok havde vi testet programmerne, men hvordan ville de fungere, når flere hold hackere gik amok? Var der nok opgaver? Var opgaverne for svære? For lette? Ville der blive problemer med VPN-adgangen? Kunne alle hold mønstre Linux-kompetence? Og var der overhovedet interesse for denne slags konkurrencer?
Heldigvis forløb aftenen utrolig smertefrit og med masser af deltagere. De færreste løste alle opgaver, men alle fik udført succesfulde angreb. Ét hold kom senere i gang på grund af VPN-problemer, et andet havde problemer med holdnavnet, som indeholdt et dansk tegn. Vi løb også tør for udfordringer, men fik lavet et par ekstra i løbet af konkurrencen.
Disse problemer er der selvfølgelig taget hånd om ved dette års CTF, som løber af stablen 4. og 5. november, og udviklingen af services og udfordringer er i fuld gang.
Hvis du ikke var med sidste år og gerne vil prøve dine evner, kan du downloade en VMWare VM med alle sidste års services installeret. Ellers vil det være en god idé at tage et kig de forskellige wargames og crackme's på nettet, så vil du være bedre rustet til dette års konkurrence.
-
Om forfatteren
Robert Larsen er 33 år og har de seneste syv år arbejdet som ledende spiludvikler hos CEGO ApS, hvor han styrer spiludviklingen på www.komogvind.dk samt udvikler backend, frameworks og værktøjer til spiludvikling.
Derudover interesserer han sig for softwaresikkerhed og hackerteknikker, og efter at have deltaget i en CTF-event i Holland i 2009 fik han ideen om at bringe hackerkonkurrencen til Danmark og udviklede spilserversoftwaren samt sårbare services og udfordringer til PROSAs CTF i 2010.
-
PROSAs CTF
PROSAs danske CTF-konkurrence holdes i år 4. og 5. november. Man danner et hold og deltager via nettet, så det er en fordel at finde et sted, hvorfra holdet kan deltage. Det kan for eksempel være en af deltagernes lejlighed, et lokale, man låner på sin arbejdsplads, skole eller lignende. Enkelte steder kan PROSA være behjælpelig med at finde et sted.
-
Andre hackerudfordringer
• Usikre applikationer, hvormed man kan træne sin brug af forskellige sikkerhedsværktøjer og angrebsteknikker (WebGoat, Google Gruyere, Damn Vulnerable Linux). Disse tilbyder ofte lidt hjælp til deres gennemførelse og er derfor gode for begyndere.
• Wargames er typisk serverprogrammer eller virtuelle maskiner, som man kan downloade og angribe i ro og mag uden tidspres.
• Crackme's er programmer, som man skal forsøge at reverse engineere og typisk skrive serienummergeneratorer til.
• Bogserien "Hacker's Challenge" i tre bind, som hvert indeholder 20 beskrevne scenarier, hvor man skal komme med et bud på, hvad der er sket.
-
Links
Capture The Flag-daemon, som står for udlevering og indsamling af flag: sourceforge.net/projects/ctfd.
Website for PROSA CTF 2010: prosa-ctf.the-playground.dk.
VMWare image med Ubuntu-server konfigureret med alle CTF 2010-services: prosa-ctf.the-playground.dk/ctf1.zip.
10 Wargames, som du kan øve dine færdigheder på: the-playground.dk/index.php?page=wargames.
Vinderholdets beskrivelse af holdets exploits: https://nopsled.eu/Writeups.html.
Videointroduktion til PROSAs CTF: mirrors.dotsrc.org/blivklogere/njlug/2010-09-16_CTF.2010.
-
Ordforklaringer
Exploit: Program, som udnytter et konkret problem i ét specifikt program.
SQL injection: Sårbarhed, hvor en angriber får mulighed for at udføre databasesøgninger eller opdateringer, som det ikke var intentionen, at han eller hun skulle kunne.
Cross Site Scripting: Sårbarhed, hvor en angriber kan sende ondsindet kode til brugerne af en service såsom et website.
PRINT