zasobach CTF

jedną z najczęstszych sztuczek steganograficznych jest ukrycie pliku wewnątrz obrazu. Plik otworzy się normalnie jako obraz, ale będzie również zawierał ukryte pliki wewnątrz, zwykle zip, tekst, a nawet inne pliki obrazów.

dziaĹ 'a to dlatego, Ĺźe gdy plik obrazu jest odczytywany, ma on bajty poczÄ … tkowe i koĹ „cowe okreĹ” lajÄ … ce Rozmiar obrazu. Przeglądarka obrazów, której używasz, użyje informacji między tymi bajtami, aby zaprezentować Ci obraz, ignorując wszystko po kończącym bajcie.

na przykład, kończącym bajtem dla JPEG jest FF D9 w formacie hex, więc używając przeglądarki hex (xxd jest dobre dla Linuksa, lub czegoś takiego jak HxD Dla windows), możesz dowiedzieć się, gdzie kończy się obraz. Te bajty są czasami trudne do znalezienia w morzu liczb, więc patrząc na zrzut szesnastkowy (tekst reprezentujący szesnastkowe bajty) może również pomóc znaleźć ukryte .txt lub .pliki zip.

przykład

w przykładzie wykorzystano bardzo prostą implementację tej strategii.plik jpg w tym katalogu. Jeśli zapiszesz go na komputerze i otworzysz go za pomocą przeglądarki obrazów, powinieneś otrzymać prosty obraz jpg.

teraz spróbujmy znaleźć flagę. Otwórz obraz w swoim ulubionym edytorze szesnastkowym i zacznij rozglądać się za czymś dziwnym (możesz znaleźć samą flagę z zrzutu w tym momencie, ale dla przykładu spróbuj ją wyodrębnić). W dolnej części pliku powinieneś zobaczyć kończący się bajt jpg ffd9:

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

inną ważną częścią tej linii jest PK na końcu. PK to inicjały Phila Katza, wynalazcy pliku zip i wskazują, że plik zip zaczyna się w tym momencie.

korzystając z tych informacji możemy użyć innego przydatnego narzędzia linuksowego, dd). Polecenie dd jest bardzo wszechstronne i pozwala na kopiowanie i konwertowanie wielu plików. W naszym przypadku będziemy go używać do wyodrębnienia pliku zip.

wiemy, gdzie znajduje się Lokalizacja pliku zip, ale dd przyjmuje tylko wartości dziesiętne, więc konwertujemy lokalizację szesnastkową 0x01e17ad z szesnastkowego na dziesiętny, aby uzyskać 1972141.

podłączam to do dd:

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

jest to przykład obrazu.jpg, Plik 'in’, jeśli, czyta jeden blok na raz,’ rozmiar bloku 'bs, pomija blok 1972141, pomija i zapisuje go do pliku’ out ’ zip, który nazywamy foo.zip. Po zakończeniu powinieneś mieć plik zip, który możesz łatwo rozpakować, aby uzyskać dostęp do pliku tekstowego w środku.

jest to długa droga do rozwiązania prostego problemu steganografii, ale pokazuje, jak działa strategia. W sekcji Rozwiązywanie opisano bardziej zwięzłe i skuteczne metody.

wykrywanie

te wyzwania są zwykle przedstawiane jako prosty obraz bez innych instrukcji, a do konkurenta należy uruchomienie go przez edytor szesnastkowy, aby dowiedzieć się, czy wiąże się to ze steganografią. Jeśli jesteś przedstawiony z obrazem i nie ma instrukcji, najbezpieczniejszym zakładem jest to, że ma coś ukrytego po tagach zamknięcia obrazu.

rozwiązywanie

chociaż możliwe i czasami praktyczne jest rozwiązywanie tych zadań za pomocą narzędzi linuksowych, takich jak dd, istnieje kilka narzędzi, które znacznie to ułatwiają. Binwalk to niezwykle przydatne narzędzie, które automatycznie wykrywa i wyodrębnia pliki ukryte za pomocą narzędzi steganograficznych

przykład CTF

Steganografia tego typu zwykle nie jest oceniana zbyt wysoko, ale jest przyzwoicie rozpowszechniona. BackdoorCTF 2014 stworzył taki, który jest ogólnie prosty, przykładowy.jpg, ale obejmuje wiele warstw.

XXD

HxD

DD

Binwalk

Leave a Reply

Twój adres e-mail nie zostanie opublikowany.