CTF Resources

en av de vanligaste steganography tricks är att dölja en fil inuti en bild. Filen öppnas normalt som en bild, men kommer också att hålla dolda filer inuti, vanligen zip, text, och även andra bildfiler.

anledningen till att detta fungerar är att när en bildfil läses har den Start-och slutbyte som dikterar bildens storlek. Bildvisaren som du använder kommer att använda informationen mellan dessa byte för att presentera en bild för dig, ignorerar något efter den avslutande byte.

till exempel är den avslutande byte för en JPEG FF D9 I hex, så med hjälp av en hex viewer (xxd är bra för linux, eller något liknande HxD för windows) kan du ta reda på var bilden slutar. Dessa byte är ibland svåra att hitta i ett hav av siffror, så att titta på dumpningen av hex (texten som representerar hex bytes) kan också hjälpa dig att hitta dolda .txt eller .zip-filer.

exempel

en mycket enkel implementering av denna strategi används i exemplet.jpg-fil i den här katalogen. Om du sparar den på din dator och öppnar den med en bildvisare bör du få en enkel jpg-bild.

nu kan vi försöka hitta flaggan. Öppna bilden i din favorit hex editor och börja leta efter något udda (du kan hitta flaggan själv från dumpningen vid denna tidpunkt, men för exempel på exempel försök att extrahera det). Nära botten av filen bör du se den avslutande byte av en jpg ffd9:

01e17a0: 685c 7fab 8eb4 5b32 61f1 c4ff d950 4b03 h\....[2a....PK.

en annan viktig del av denna rad är PK nära slutet. PK är initialerna till Phil Katz, uppfinnaren av zip-filen, och indikerar att en zip-fil börjar vid den punkten.

med hjälp av denna information kan vi använda ett annat praktiskt linux-verktyg, dd). Kommandot dd är mycket mångsidigt och möjliggör kopiering och konvertering av en mängd filer. I vårt fall kommer vi att använda den för att extrahera zip-filen.

vi vet var platsen för zip-filen är, men dd tar bara decimalvärden, så vi konverterar den hexadecimala platsen 0x01e17ad från hex till decimal för att få 1972141.

ansluta detta till dd:

dd if=example.jpg bs=1 skip=1972141 of=foo.zip

detta tar i bildexemplet.jpg,’ in file ’ if, läser ett block i taget,’ block size ’ bs, hoppar över för att blockera 1972141, hoppa över och skriver det till ’out file’ zip vi kallar foo.zip. När detta är klart bör du ha en zip-fil som du enkelt kan packa upp för att komma åt textfilen inuti.

detta är den långa vägen att lösa ett enkelt steganografiproblem men visar hur strategin fungerar. I Lösningsavsnittet beskrivs mer koncisa och effektiva metoder.

upptäcka

dessa utmaningar presenteras vanligtvis som en enkel bild utan andra instruktioner, och det är upp till konkurrenten att köra den genom en hex-redaktör för att ta reda på om det handlar om steganografi. Om du får en bild och inga instruktioner är din säkraste satsning att det har något dolt efter bildens avslutande taggar.

lösa

även om det är möjligt och ibland praktiskt att lösa dessa uppgifter med hjälp av linux-verktyg som dd, finns det några verktyg som gör det mycket lättare. Binwalk är ett oerhört användbart verktyg som automatiskt upptäcker och extraherar filer dolda med steganografiverktyg

CTF exempel

steganografi av denna typ görs vanligtvis inte mycket högt men är anständigt utbredd. BackdoorCTF 2014 skapade en som i allmänhet är enkel, ctfexample.jpg, men involverar flera lager.

XXD

HxD

DD

Binwalk

Leave a Reply

Din e-postadress kommer inte publiceras.