Genomgång av CERT-SE CTF2020
Inför cybersäkerhetsmånaden 2020 släppte CERT-SE en utmaning, CTF (Capture The Flag). Här följer ett förslag på lösning.
Utmaningen gick ut på att i en dump av nätverkstrafik hitta en “flagga”. Liknande utmaningar görs av olika anledningar ofta inom cybersäkerhetsområdet. Syftet kan vara för att öva incidenthantering, testa sina kunskaper, i rekryteringssyfte eller som tävling för att utmana varandra. CERT-SE valde en kombination där deltagarna kunde testa sina kunskaper men med en lite mer humoristisk vinkel.
Poängen var inte att utmaningen skulle vara svår, utan istället att så många som möjligt skulle kunna hitta flaggan. Flera deltagare kommenterade just att utmaningen var för lätt, men trots detta är det mycket få (endast fem st av 181 st inskickade riktiga svar) som har hittat det hemliga meddelandet som ligger gömt i binären. Utmaningen utformades på ett sådant sätt för att så många som möjligt skulle kunna lösa den, oavsett vilket operativsystem man använder och med programvaror som är gratis tillgängliga på internet.
Spridningen och mottagandet av vår CTF/utmaning överträffade våra vildaste fantasier. Den laddades ner nästan 2500 gånger från cert.se under oktober månad och vi har tagit emot 181 svar från 21 länder (samt 6 okända). CTF:en fick nästan ett eget liv i olika forum. Det finns många sätt att lösa utmaningen och CERT-SE har tagit emot många bra redovisningar om hur man har valt att lösa den, flera har till och med skrivit kompletta rapporter!
Har du själv missat utmaningen och vill testa att lösa den innan du läser genomgången hittar du den här. [1]
Ett exempel på hur löser du CERT-SE CTF2020
Vid analys av nätverkstrafik finns olika verktyg att tillgå, ett vanligt förekommande (och gratis tillgängligt på internet) är Wireshark.[2]
Att bli duktig på analys av nätverkstrafik eller nätverksforensik kräver en del övning, både i att lära sig verktygen och att lära sig se vad som är viktigt i en dataström.
I CERT-SE CTF 2020 finns två delar, en IRC-chat och en FTP-överföring.
Den första delen är en IRC-konversation i en retrodator-kanal mellan två individer med väldigt specifika intressen. Konversationen börjar i paket 140, eller ström sju.
För att få upp denna, högerklicka på paket 140 i listan och välj Follow -> TCP-stream. Nu kan du läsa hela IRC-konversationen i klartext.
En bit ner i konversationen nämns att en fil laddats upp till en FTP-server, samt en kod.
Letar vi återigen i vår dataström hittar vi i paket 152 att en anslutning görs mot en FTP-server. Genom att högerklicka på paket 152 och välja Follow -> TCP-stream ser vi att en fil som heter demo.tar.xz överförts från användaren som tidigare skrev att han skulle överföra en fil.
Nu måste vi hitta själva datat som överförts. I paket 282 hittar vi att FTP-kommandot “STOR demo.tar.xz” utförts.
Högerklickar vi på paket 282 och väljer Follow -> TCP-stream så får vi upp, skräp? Nejdå, detta är en binär-fil. Väljer vi “Show data as: Raw” och sen “Save as…” och döper filen till “demo.tar.xz” så får vi ner binären till disk.
Nu har vi en fil med ändelsen “.tar.xz”. För att packa upp denna kan man t.ex. använda programmet 7zip.[3] Öppnar vi nu filen med 7zip så ser vi att den är lösenordsskyddad.
Hur ska vi då få reda på vad lösenordet är? Om vi drar oss till minnes tidigare i IRC-konversationen så nämndes en “kod”…
Det ser ju inte ut som ett lösenord i klartext, men hur ska vi få reda på om det är krypterat eller obfuskerat på något sätt? Ett bra sätt är att använda ett verktyg som vår brittiska motsvarighet GCHQ tagit fram som heter CyberChef. [4]
Här matar man helt enkelt in en text i chiffer och sen finns det olika alternativ att försöka få texten i klartext. I detta fall är det helt enkelt en base64 och lösenordet i klartext blir “8-bit-C0mput3r-w0nd3r?!?”.
Nu kan vi packa upp filen med lösenordet och ser att en fil är packad i två nivåer. Den fil vi till sist får fram heter “cert-se ctf2020.tap”. Och vad i all världen är en .tap-fil? Det finns lite olika sätt att få reda på olika filformat.
I Unix/Linux-baserade opertivsystem kan man använda kommandot “file” för att få en fingervisning om filformat. I detta fall används istället VirusTotal (något som man alltid bör göra om man får tag på en fil som man är osäker på, dock inte om man tror att den kan innehålla känslig eller sekretessbelagd information). [5] Här får vi fram att filen är en “C64 Tape image format”.
Det finns lite olika sätt att köra filen. Det enkalste sättet är att använda någon av de emulatorer som finns tillgängliga, t.ex. Virtualconsoles.[6] Ladda in filen “cert-se ctf2020.tap” och vänta en stund (det gick inte så fort förr i tiden). Skulle den inte starta automatiskt så beror det på ett fel i emulatorn, att den missar att skriva “run”. Detta avhjälps enkelt genom att skriva “run” och trycka enter.
Nu startar CERT-SE:s lilla demo där den sista ledtråden står i gult mitt på skärmen.
HTTP 418 - en felkod som enl. RCF2324 betyder “I’m a teapot”.[7] Alltså, den slutliga flaggan är “I’m a teapot”! Det var väl lätt! Men, vi nämnde tidigare om ett “hemligt meddelade”. Detta är gömt i minnet efter att binären exekverats i emulatorn och presenteras aldrig på skärmen utan man måste debugga programmet (vem sa att det var för lätt?!?).
CERT-SE har fått mycket frågor gällande “animationen” i emulatorn. Sanningen är den att hela demon är skriven i 100% assembler för MOS6510-processorn i Commodore 64. Musiken är komponerad av legendaren Tomas Danko och CERT-SE är överlyckliga att få hans välsignelse att använda låten “Complications” i vår demo.[8]
Det är faschinerande att det fortfarande finns en aktivitet runt en dator som snart fyller 40 år!
Ett exempel på detta är att dagen efter vi släppte vår CTF/utmaning så släppte medlemmen Trasher från svenska gruppen Fairlight en “crackad” version av vår demo där de plockat fram det “hemliga meddelandet”.[9] CERT-SE tackar och är glada för uppmärksamheten.
CERT-SE vill med detta tacka alla som engagerat sig, spelat vår CTF/utmaning, delat på forum och disktuerat. Vi hoppas på fler tillfällen att göra fler CTF/utmaningar framöver.
Länkar
[1] - https://www.cert.se/2020/09/cert-se-challenge-2020
[2] - https://www.wireshark.org/
[3] - https://www.7-zip.org/
[4] - https://gchq.github.io/CyberChef
[5] - https://www.virustotal.com/
[6] - https://virtualconsoles.com/online-emulators/c64
[7] - https://tools.ietf.org/html/rfc2324
[8] - http://www.danko.se/articles/110/featured-in-swedish-contingencies-agency-en-svensk-tiger