swectf2015 - Forensic Writeup

Nu är swectf2015 över och det har varit en riktigt spännande tävling! Vinnaren var OwariDa med 1595 poäng och han klarade samtliga utmaningar samt fick extra poäng för att vara först ute med att lösa en utmaning. Så stort grattis till honom!
Värt att nämna är att bashpsykos var först med att klara av alla utmaningar och kom då på plats nummer två.

Nedanför är det slutgiltiga slutresultatet:

Jag vill rikta ett STORT tack till alla som deltog i CTF:en och gjorde den möjlig. Jag vill dessutom tacka våra sponsorer Sentor.se och OVPN.se som var väldigt snälla att erbjuda priser till våra duktiga spelare!

Jag tyckte det var riktigt kul att få skapa en svensk CTF för svenska CTF-spelare och hoppas verkligen att det kommer en till, större CTF nu senare i år! Detta var som sagt enbart en teaser för att se om det uppskattades och fungerade bra, och det gjorde det verkligen!


UNKNOWN

Hinten var "Allt vi vet är att lösenordet är 123" så det är något lösenordsskyddat med i bilden. Man fick en fil utan header, hög entropi och är delbar med en sektorstorlek(512), så det är ganska tydligt att det rör sig om en Truecrypt-container, eller ja... Det är ju subjektivt.

Nåväl, efter man monterat den så får man en ZIP-fil med massor av QR-koder. Om man läser av en så får man base64-liknande data. Så det man ska göra är att skanna alla QR-koder och lägga i en stor fil. Det kan man göra med följande fina kod:

for i in `ls | sort -g`; do zbarimg $i >> ../qr-kod; done

Sedan strippar vi bort "QR-Code:", tar bort newline och konverterar till klartext:

sed 's/QR-Code://g' qr-kod | tr -d '\n' | base64 -d > fil
$ file fil
fil: JPEG image data, JFIF standard 1.01


PWNPCAP

Detta var en PCAP där två bilder har laddats upp till pomf.se. Efter man har extraherat bilderna så ser de likadana ut, men de skiljer sig i storlek så någon skillnad är det. Eftersom man inte kan se skillnaden så kan man använda compare vilket är ett verktyg i Imagemagic som jämför två bilder och visar skillnaden i en ny bild:

compare 1.png 2.png 3.png

Och då får man ett resultat likt:
Kollar man noga så ser man swehack{kan_du_se_mig} och det är meningen att det ska vara lite svårt att se vad det står.


BADMEM

Detta var en debug dump utav en process i Windows XP. Programmet Procdump från sysinternals kan dumpa processer så det var det verktyget jag använde.

Man kan inte använda Volatility eller andra tools, så det man får göra är att använda "dirty tricks" för att förstå vad allt handlar om. Så börja med att kolla efter intressanta processer:

strings badmem.dmp | grep "\.exe$"

Kollar man noga så finner man något intressant, nämligen:

C:\WINDOWS\system32\mspaint.exe  C:\Documents and Settings\chlo\Desktop\Federal_security_service(1015x494).bmp

Så mspaint har öppnat en BMP-bild med namnet Federal_security_service(1015x494).bmp. Eftersom BMP är rå data så kommer det bli svårt att extrahera bilden, det kanske hade gått men meningen var att man skulle visuellt skulle läsa av dumpen, och detta kan man göra i GIMP2 genom att döpa filen till fil.data och sedan öppna den som RAW Image Data(*.data). Och för att detta ska fungera korrekt så behöver vi veta den ungefär storleken på bilden, och det fanns ju i filnamnet(annars hade man kunnat testa sig fram, men jag ville vara lite snäll). Efter lite fifflande med offseten så ser man:

Inte så svårt att utläsa att flaggan då är swehack{crash_and_dig}

Jag fick inspiration ifrån: http://w00tsec.blogspot.se/2015/02/extracting-raw-pictures-from-memory.html så creeds till w00tsec.


RADIO

Detta var en ljudfil som spelade upp ett konstigt brusljud. Om man lyssnar noga så hör man att "noise" har tagits bort vilket innebär att man försökt få ett så rent ljud som möjligt. Kollar man på ljudfilens spektrogram så ser man följande: