It sikkerhed og kryptering

Hackerkrig i Las Vegas

Defcon CTF (Capture The Flag) er der, hvor godsindede hackere battler for at udvikle deres viden om hackerangreb og beskyttelsesmetoder i realtid. Danske Robert Larsen var med og sendte sin dagbog hjem.

Klik, klik, klik. Hvem kunne vide, at computerarbejde kunne være så intenst?
Jeg er i Las Vegas til Defcon-konferencen, hvor det uofficielle verdensmesterskab i hacking afholdes, og det danske hold, Gallopsled, har kvalificeret sig. Det har 19 andre hold også, og de forsøger med alle kræfter at bryde ind i vores stakkels server. Fair nok, for vi forsøger det samme imod dem, men det vender vi tilbage til.

Seriøse danskere

Defcons kvalifikationsrunde er af "Jeopardy style"-typen, men den i Vegas er Attack/Defense, og sværhedsgraden er i top. Der er kun binære services, og sidste år var serveren baseret på ARM-arkitekturen. Det kom lidt bag på Pwnies, som ikke klarede sig så godt. Det er de samme arrangører i år, så vi gætter på, at det igen er ARM. Gallopsled har derfor afholdt interne ARM-workshops og opsat ARM-baserede udfordringer, som medlemmerne kan træne med.

Gallopsled har cirka 30 medlemmer (løse og faste), og de holder et ugentligt møde i deres lokale på DIKU, hvor de arrangerer workshops, løser CTF-opgaver eller udvikler værktøjer. En del af holdets værktøjer kan findes på GitHub, men de sidste par måneder har de lavet en hel del opdateringer og udvidelser, som er holdt tilbage og først offentliggøres efter Defcon. Nogle af værktøjerne bliver ikke offentliggjort.

Jeg bor i Nordjylland og kan derfor ikke deltage i møderne, men jeg har de fleste aftener i et halvt år brugt op til fire timer på træning og udvikling. Andre holdmedlemmer bruger mere tid.

Vi er cirka 15 mand af sted fra Gallopsled, men kun otte må deltage i CTF'et. Resten er med for at høre talks, give moralsk støtte og løbe ærinder. Der er tre primære roller på holdet: reverser, pakkeanalytiker og systemadministrator. Reverseren analyserer de sårbare services for sårbarheder, laver patches, som fixer eller omgår fejlene, og udvikler exploits, som kan trække flaget ud af servicen hos de andre hold. Der kan være flere sårbarheder i samme program, så arbejdet stopper ikke efter første fund.

Pakkeanalytikeren kigger på netværkstrafik. Vi kan ikke selv dumpe netværkstrafik på vores server, men hvert femte minut får vi adgang til et 15 minutter gammelt dump, og ud fra det kan analytikerne ofte se, hvordan de andre hold angriber os. Finder de noget interessant, filtreres alt
unødvendigt væk og replays forsøges, eller de sender det til reverserne, så de kan finde ud af, hvilken sårbarhed de andre hold udnytter imod os.

Systemadministratoren sætter reversernes patches og exploits i produktion og holder øje med, om ændringen ødelagde noget. Arrangørerne laver tjeks for at se, om vores services opfører sig som forventet, og gør de ikke det, så mister vi points. Derudover holder de holdets værktøjer kørende, sørger for, at reverserne har adgang til angrebsmaskinerne, ser om der er ”mærkelig” aktivitet på vores udleverede server og lignende. Vi var to systemadministratorer, to pakkeanalytikere og fire reversere.

Torsdag, 7. august

Vi ankom i går aftes. I dag laver vi inventarlister og finder ud af, hvad vi mangler, så vi kan nå at købe ind. I morgen starter slaget, så vi har resten af dagen til at planlægge og falde til efter rejsen. Defcon er en lidt spøjs konference. Den er meget pro privatliv, så man kan ikke købe billet, før konferencen starter, for det kræver en form for registrering. Den eneste måde at komme ind på, er ved møde op på dag ét og stå i kø ved billetlugen med kontanter i hånden, for betalingskort kræver også en form for registrering. Man får så udleveret et ikke helt almindeligt badge.

I stedet for det sørgelige plastickort i en keyhanger, man typisk får til konferencer, får man her et print med microcontroller, lysdioder og alt muligt sjovt på. Man får ikke at vide, hvordan det virker, for en del af det sjove er at finde ud af den slags selv. Rigtige hackere har ikke brug for manualer!

Det stærke fokus på privatliv betyder også, at man - hvis man begynder at tage billeder - kan risikere at blive eskorteret ud meget hurtigt.


Badger-servicen lå på et lille print og krævede altså, at vi dumpede firmwaren, inden vi kunne reverse engineere og lede efter sårbarheder.

 

Fredag, 8. august

Klokken er lidt i ni om morgenen, og vi står otte mand og venter uden for CTF-lokalet. Kun otte fra hvert hold får lov til at gå ind, så tilskuere må vente. Vi har hver vores laptop og derudover fire maskiner udelukkende til angreb, tre-fire switches, en Odroid-server i stil med sidste års server samt en masse kabler og power-convertere. Odroid-serveren skal bruges til tests. Klokken ni åbner dørene, og vi stormer ind og finder vores bord. Det tager os 40 minutter at rigge til, hvorefter vi er klar til at gå i gang. Klokken 10 er der adgang for holdene imellem.
Alle holds kaptajner er til møde, hvor de får at vide, hvordan vi får adgang til vores egen server, og hvor de andre holds servere er lokaliseret. Da vores kaptajn kommer tilbage, går vi straks i gang med at kigge indholdet af serveren efter og få kopieret alt fra den over på en lokal maskine, så reverserne har noget at gå i gang med. Kun to services er tilgængelige, ”eliza” og ”wdub”, men flere vil følge.

Arrangørerne holder øje med, om vores services er tilgængelige og fungerer, som de skal - det såkaldte SLA-tjek (Service Level Agreement). De plejer at give adgang til et værktøj, som kan fortælle os, om de tre seneste tjeks mod hver service gik godt, men det har vi ikke fået noget at vide om, og der er ingen information i de udleverede dokumenter, så vores holdkaptajn går igen til arrangørerne for at få adgang til dette værktøj. Det findes ikke, får han at vide. Der går typisk mange timer, fra reverserne får adgang til services, og til de har patches og exploits klar, og så længe der ikke angribes, har pakkeanalytikerne heller ikke meget at lave, andet end at udlede, hvordan SLA-tjekket foregår. Systemadministratorerne, derimod, kan begynde at sætte application level firewalls op for hver service, som kan filtrere det åbenlyst forkerte væk, og vi kan sætte monitorering op, som holder øje med load og disk og andet på vores servere samt meget simple tjeks på, at vores services kører.

Vi får ret i, at serveren igen er baseret på ARM, en Odroid U2, men eliza kører i en x86-emulator. Ikke noget problem, for det har vi god forstand på. Der er dog lidt panik, da vi opdager, at der er installeret en PowerPC-emulator, for vi har ikke megen PowerPC-erfaring. Pludselig mister vi point, og uden SLA-værktøjet ved vi ikke hvorfor, men det er usandsynligt, at nogen allerede har et exploit klar, så vores application level firewall må have ødelagt et eller andet på en af vores services. Hvilken? Begge to måske? Uden at kende protokollen, som servicen bruger, er det svært at vide.

Vi piller den ene af og venter for at se, om det løser problemet. Spillet foregår i runder af fem minutter. Hvert femte minut bliver flag-filen opdateret med et nyt flag, og der udføres et SLA-tjek. Jeg spørger arrangørerne, om vi virkelig ikke har adgang til resultatet af SLA-tjekket. Vi har ikke adgang, så vi famler videre i blinde. Midt på dagen får nogen hul på eliza-servicen, så der bliver stjålet flag. Vores pakkeanalytikere finder frem til trafikken mellem exploit'et og servicen og sender det til vores reverser, som har ansvaret for eliza. Han siger, at han også næsten har et exploit klar.

Defcon handler om at lære, så der er mange konkurrencer og udfordringer. Nogle af disse konkurrencer kan udløse et såkaldt ”black badge”, som er et specielt print, der giver gratis adgang til Defcon på livstid. CTF'et giver otte black badges til vinderholdet, et til hvert holdmedlem, men derudover er der digitale skattejagter, social engineering, hardware-hacking og mange andre. At gennemskue det udleverede badge er en af konkurrencerne, og der opfordres til at lave et vellignende falsk badge. Kan man det, kommer man ind gratis.

Sent på eftermiddagen bliver alle kaptajnerne kaldt til møde. De kommer tilbage med et nyt badge med en LCD og en radio. Det indeholder en ny service, ”badger”, som arrangørerne leverede flag til via radioen. Vi sætter to reversere til at undersøge den, men det giver problemer, for mens de debugger på den, fejler arrangørernes SLA-tjek, og det er svært at se, om de andre services også fejler.


Ud på aftenen siger arrangørerne, at de har patchet ”wdub”-servicen. Det er ikke usædvanligt, at de ændrer noget undervejs for helt bevidst at udfordre holdene. De kan for eksempel fikse simple fejl og tilføje nye, eller tilføje ny funktionalitet. Det betyder, at reverserne skal ændre deres opfattelse af, hvordan noget virker. Der findes heldigvis værktøjer til at vise forskellen mellem forskellige versioner af det samme program, så man ikke behøver at begynde helt forfra. Et par timer før første aften slutter, dukker der en ny service, ”imap”, op på vores server. Imap er en kendt protokol til at hente e-mails, og det her er en meget simpel implementering af protokollen.

Aftenen slutter skidt. Vi ligger i bunden uden fungerende exploits, og muligvis får vores patches vores services til at fejle SLA-tjekket. Man bliver placeret ved et nyt bord hver dag, så alt vores grej skal pakkes sammen og slæbes op på et værelse, hvor vi holder en kort status. Nogle arbejder videre det meste af natten, men vi sysadm'er har ikke så meget at lave væk fra bordet. Jeg kigger lidt på nogle af de værktøjer, jeg åbenbart har misforstået, så jeg er bedre forberedt til lørdagen, inden jeg går i seng.


Hvor man normalt på konferencer får et plastickort med navn, får man på Defcon en lille computer. Den er spækket med udfordringer. Selv keyhangeren indeholder en opgave.


Man kan ikke købe adgang til Defcon på forhånd, men er i stedet nødt til at dukke op og stille sig i køen, som går langt ud af hotellet. Det er så en god mulighed for at møde ligesindede.

Lørdag, 9. august

Spillet er i gang igen, og nu ligger der et exploit imod ”eliza” klar til os fra reverserne. Det bliver indsat i vores angrebsframework, som ligger på vores angrebsmaskiner, men det virker ikke.

Udvikleren bag framework'et bliver sat på sagen, og vi får hurtigt lavet et par scripts, som udfører angrebet automatisk men klodset. Tre hold er sårbare, resten har patchet. Bedre end ingenting.

Nu løber en af vores pakkeanalytikere også op til arrangørerne for at få bekræftet, at vi ikke har adgang til SLA-tjekket. Desværre får han samme besked som vi andre, og vi er ved at være overbeviste. Det er ret skidt, men i det mindste er det lige skidt for alle hold.

Midt på dagen ser vi så noget mærkeligt hos et af modstanderholdene. Normalt er alle hold paranoide over for tilskuere, som kigger på deres skærme, men vi får set, at et af holdene har et webinterface, som viser et SLA-tjek - det, som vi tre gange har fået at vide af arrangørerne, ikke findes. Vores holdkaptajn løber op og spørger, hvad det går ud på og får at vide, at det da hele tiden har været tilgængeligt og også er beskrevet i dokumentationen. Vi kigger efter, og der står intet, men nu har vi så adgang.

Så begynder det at gå bedre. At kunne se, hvilke patches som skader oppetidstjekket, er meget vigtigt, og nu kan vi se det, så vores oppetid forbedres, men en af vores services har sandsynligvis været nede i flere timer, uden at vi kunne se det. Det er svære arbejdsbetingelser.


Disassembleren IDA Pro gør det meget behageligere at læse maskinkode og er derfor det vigtigste våben i reverse engineer'ens arsenal. Her er det en lille del af eliza-servicen, som vises.

Børn er velkomne

Defcon er ret børnevenligt, og der er arrangeret talks og workshops for de mindste, så de kan lære lockpicking, social engineering, hardware-hacking og andet. En femårig lærte at lodde udvidelser på sit badge! Næste generation af hackere er åbenbart ved at være klar.

Ud på eftermiddagen hører vi arrangørerne i højttalerne: "ATTENTION TEAMS: You all look bored, so we patched eliza. We're sorry and you're welcome!". Eliza er servicen, som var baseret på x86, men nu er den recompilet til ARM. Det betyder, at vi ikke kan lave en simpel diff, og ingen exploits og patches er længere noget værd. De kan også have ændret funktionalitet, så alle er nødt til at begynde helt forfra.

Ud på aftenen er moralen på holdet lav. Vi føler os snydt af arrangørerne, vores kritiske værktøjer har fejlet, så vi har spildt megen tid. Score-serveren regner forkert, så ingen ved, hvilken plads de har, men vi er nok nær bunden. Imap-servicen er notorisk ustabil for alle hold, så det er svært at vide, om patches virker, for selv en u-patchet version fejler ofte.


Her er jeg med stridsøksen. Det var ikke muligt at tage billeder uden tilladelse, og tilladelsen var ikke nem at få.

Efter at der blev fundet fejl i beregningen af scores, satte arrangørerne en visualisering af angrebene på storskærmen i stedet.

Søndag, 10. august

Konkurrencen slutter klokken 14, så i dag bliver et kort run. Jeg frygtede lidt, at vores reversere ville have givet op og forladt os, men der ligger exploits klar, så morgenen starter med, at vi stjæler en masse flag. Det er tiltrængt, men scoreboard'et er væk, fordi der er fejl i beregningen af scores, så vi kan ikke se, hvordan det går os. Til gengæld har arrangørerne lavet en visualisering af angrebene, og den er interessant at kigge på.

Pludselig får vi travlt på sysadm-holdet. Vi ser mærkelige processer på vores server. Processer, som kører i eliza-servicens navn. Vi ser læsning af flagfilen, som efterfølgende bliver sendt til et fremmed hold via programmet ”netcat”. Det forventede vi ville ske, men vi har ikke fået lavet et værktøj, som kan gøre en hel masse ved det, så det strikker vi sammen ved bordet. Det kører desværre for langsomt, så det er ikke mange flag, vi redder på den måde, for det skal kun lykkes en gang hvert femte minut.

Nu kommer en af arrangørerne hen til bordet og siger, at de har kigget på vores application level firewall og synes, at det er for simpel en løsning, til at de kan tillade den, så den skal vi pille af. Vi har set en hel del problemer med den, så det er ikke det store tab for os. Den er fjernet fra de fleste services allerede.

Siden vi fik adgang til resultatet af SLA-tjekket, var vores oppetid tæt på perfekt. Vi var nu nok havnet nær bunden af scoreboardet, men havde vi haft adgang fra dag et, havde det højst sandsynligt set meget anderledes ud, for oppetid er bare utroligt vigtig.

Vi ender på en tredjesidste-plads. Det er langt under forventning, men med den sene adgang til SLA-tjekket samt problemer med vores værktøjer er det forståeligt.


Mit udviklingssetup består af en Odroid U3, forbundet til min laptop med et krydskabel. Man kan komme langt med virtuelle maskiner, men rigtig hardware opfører sig ofte lidt anderledes, så det er vigtigt at teste med hardware.

 

Vores setup består af fire angrebsmaskiner i baggrunden, et par switche, en Odroid U2-server bagerst til venstre og min og min medadministrators laptop i forgrunden. Rundt om os sad resten af holdet det meste af tiden.

 

 

Mandag, 11. august

Det hele er slut, og de fleste Defcon-deltagere er taget hjem, men vi har en dag mere. Vi bruger dagen i hotellets poolområde eller på værelset og brainstormer ideer til forbedringer. Nogle går straks i gang med prototyper, mens andre spiller kort eller løser udfordringer. Forberedelsen til næste CTF er altså allerede i fuld gang! Fik jeg sagt, at Gallopsled er seriøse?