Den 15. marts lancerede FE en optagelsesprøve designet til at rekruttere danske hackertyper, der er i stand til at angribe og spionere på fremmede statsmagter og terrororganisationer.
Det er noget af en jobbeskrivelse, hvorfor det kun er naturligt, at hvervekampagnen også er en kende mere omfattende end den klassiske jobsamtale, som vi kender den. Og hvordan finder man så de helt rigtige nørder, der rent faktisk har solide hacker-færdigheder og ikke bare er nogle såkaldt script kiddies, der har det hele i munden?
Man laver en skattejagt. Et vaskeægte Da Vinci-mysterium i bedste Hollywoodstil, og så krydser man ellers fingre for, at der sidder nogle digitale Robert Langdon-typer derude, der ikke kan lade være med at lede efter spor og knække koder, så man kan få et nyt spor og knække flere koder og på et eller andet tidspunkt finde frem til guldet for enden af regnbuen.
Sådan en type er Politikens redaktionelle udvikler, Emil Bay, som kastede sig ud i udfordringen. Politiken tager dig her med på en turen, som er et kig ind i en meget fremmed verden for langt de fleste af os dødelige danskere, men så meget desto mere interessant er det at smugkigge lidt derind.
Vi starter med et billede af en mørkemand.
1. lag
Først kiggede jeg på alle kodestumperne i billedet. De var alle kendte CVE’ere, hvilket står for for ’Common Vulnerabilities and Exposures’ og kort fortalt betyder ’registrerede sikkerhedshuller’. Man ser blandt andet referencer til ’trampolining’, som er en form for angrebsteknik. Der var også dele af ’full-nelson.c’, som er et af de værste angreb i Linux’ historie, og så var der henvisninger til sikkerhedsforskeren Brad Spengler, i hackerkredse kendt som ’spender’.
Blandt alle disse kodestumper, skilte én bid sig ud øverst i venstre hjørne, fordi den var en kommentar uden mening: ’JS/koyPrmif2M’.
Hvad stod det for? Var det en webadresse? Nej, viste almindelig googling. Altså, det må være en form for krytering. Først prøvede jeg Cæsar Cipher, som er en ældgammel krypteringsmetode, som selveste Julius Cæsar brugte i alle sine korrespondancer. Jeg prøvede også andre enkodninger som Hexadecimal, Binær, Base64 osv. Det ville have været for nemt, så det var det heller ikke.
Næste ide var en ’hash’, som er en krypteringsmetode, der ikke kan dekrypteres. Man skal altså gætte sig frem, hvilket man kalder Brute-forcing. Jeg brugte et lille program, der hedder HashTag til at gætte på krypteringsmetoden, og forslaget blev den uddaterede DES-kryptering, som IBM opfandt i 1975, og som den amerikanske efterretningstjeneste anbefalede gennem 1980’erne. DES blev brugt til at kryptere passwords på gamle UNIX operativsystemer, men er relativt let at bryde på en moderne maskine. Da den først havde besluttet sig for at teste for DES-krypteringen, tog det 13 minutter på en moderne MacBook Pro at knække koden.
Og bag den gemte sig et telefonnummer.
Se, hvordan den krypterede tekst brydes
2. lag
På det angivne telefonnummer ender man med at få forbindelse til en telefonsvarer, der afspiller en lydbid, som minder om den lyd, man hører, når man ringer til en fax eller et modem. Altså, data enkodet som lyd. En analyse af lydspektrummet var derfor oplagt.
Se, hvordan lydfilen bliver analyseret. Upload også din egen lydfil, hvis du har lyst
Lyd er en blanding af mange forskelige frekvenser pr. sekund, og på ovenstående visualisering kan du se lydfilen, efter den er brudt op i de forskellige frekvensbånd. Jeg skrev selv et lille program, der kunne udføre denne spektralanalyse, og en nærmere inspektion af output afslørede bånd af prikker med 7 lodrette enheder i hvert bånd. Prikkerne blev synlige, fordi frekvenserne de steder havde en ekstra stærk intensitet.
Jeg formodede på baggrund af tallet 7 straks, at vi var ude i noget med det binære ASCII-system. Forestil dig, at en prik svarer til et 1-tal eller 0. Det kalder vi en bit i computersprog. Normalt går der 8 bit på en byte, som er den fundamentale enhed i computere, men i det gamle ASCII-system bruger man kun 7, og efter at have konstateret, at vi her har at gøre med ASCII, var det bare at gå i gang med at analysere hvert bånd. De lyse prikker repræsenter et 1-tal, de mørke et 0. Hver kombination giver et ASCII-tegn, og efter at have kørt hele filen igennem, fik jeg denne reference til Alice i Eventyrland:
’Would you tell me, please, which way I ought to go from here? https://hackerakademi.dk/tumbling-down-the-rabbit-hole - - Hacker Akademiet’
Slet teksten, og skriv selv din egen binære kode.
3. lag
Her blev det lidt mere tricky.
Klikkede man på det afkodede link fra lydfilen, endte man på en mere eller mindre tom side, hvor man blot kunne hente en komprimeret fil. Men hvad så? Tør man åbne den? Det er præcis sådan, folk, der klikker på en ukendt vedhæftning i en mail, ender med at få virus.
Jeg ’sandboxede’ derfor filen, hvilket kort fortalt betyder, at man isolerer den fra resten af computeren, før man åbner den, så man undgår, at afsenderen pludselig har kontrol over dig.
I mappen lå to filer. Den ene var et simpelt python script, der fungerer som en form for startknap for den anden, der med en vis ret kan kaldes en ’Black Box’. Det kalder man programmer, man ikke kan afkode formålet med blot ved at se på indholdet. Man kan altså kun sende det input og så se, hvad der kommer af output.
Eller, man kan godt ’disassemble’ programmet, men kun uden at bibeholde kodens originale struktur, så den vej kan være ekstremt tidskrævende, hvorfor jeg i første omgang valgte at gå uden om den mulighed.
I stedet blev det lidt af en gættekonkurrence igen. Da jeg kørte programmet, spurgte den med det samme efter en nøgle og ved at analysere programmets opførsel, når jeg prøvede mig frem, indså jeg, at nøglen måtte være et link til en jpg-fil – altså et billede.
Se, hvilke metadata der gemte sig i billedet
Efter mange mere eller mindre velbegrundede gæt – blandt andet inspireret af referencen til Alice i Eventyrland fra tidligere – viste det sig, at nøglen var lige foran snuden på mig. Da jeg prøvede FE-logoet fra deres egen hjemmeside, gik programmet ind og analyserede billedet ved at se på, hvordan forskellige pixels er placeret og farvekodet. Og det viste sig at låse skabet op – så at sige.
Præmien var en ny jpg-fil, meget lig nøglen - denne var dog ’i stykker’.
Jeg filterede derefter den nye jpg-fil og kom ind til en slags metadata med en masse binær kode. Men midt imellem alle kodestrengene, stod noget ganske almindelig, læsbar tekst:
'Wow you did it. We really want to get to know you. Please call this number +45 51246301 and give us your contact info and we will get back to you asap'
Det var guldet for enden af regnbuen.
Politiken har været i kontakt med FE før udgivelsen af denne artikel, og de gjorde opmærksom på, at den vej, Emil tog i det tredje lag, ikke var den korrekte. Ansøgere med ’det rette mindset’ ville have brugt tiden på at ’disassemble’ det lukkede program, og analysere sig frem til, at nøglen netop var logoet på hjemmesiden.