CTF-owe przemyślenia

Wczoraj nasza CTF-owa drużyna odegrała już drugi event :muscle:

Nasza kolektywna wiedza przyrasta - i powoli rodzi się potrzeba jej dokumentacji. Niniejszy wątek jest miejscem, w którym zbieramy do kupy przemyślenia z CTF-ów, w których bierzemy udział - przemyślenia apropos pewnych typów zadań, przydatne wnioski, narzędzia i ich wywołania itd.

1 Like

To ja może zacznę :smiley:

Stego tool cheatsheet:

Command line:

file - sprawdź typ pliku
strings - wyciągnij wszystkie drukowalne znaki
binwalk - wyizoluj wszystkie nagłówki znanych typów plików z danego pliku (np. pliki ukryte jeden w drugim)
exiftool sprawdź metadane pliku
java -jar stegsolv - narzędzie do steganografii wizaualnej (ma GUI)
pngcheck - sprawdź, czy plik jest prawidłowym png
zsteg - sprawdź ukryte dane w plikach png i bmp; wiele metod
stegcracker - narzęedzie do wyciągania zaszyfrowanych danych w obrazkach
stegdetect - wykrywanie steganografii w plikach .jpg na podstawie analizy statystycznej
stegbreak - Brute force cracker for JPG images. Claims it can crack outguess, jphide and jsteg.
stegoveritas - Kombajn do stego, wiele formatów plików i sposobu analizy zawartości


stegsnow - narzędzie do steganografii tekstowej (whitespace stego)

Web:

Wyszukiwarki obrazów: https://tineye.com/ | Google Bilder | Yandex.Images: search for images online or search by image
Analiza metadanych: Jeffrey Friedl's Image Metadata Viewer
Analiza steganograficzna: StegOnline


Steg checklist: StegOnline


Polecam również ten profil na githubie:

2 Likes

Moje obserwacje, bardziej ogólne:

  • Warto przyjrzeć się wszystkim miejscom, gdzie jest używany input użytkownika - czy to z formularza, czy z URL-a. Każdy z nich to potencjał na jakieś exploitowańsko
  • Jeżeli treść zadania ma jakąś podpowiedź w treści, w pierwszej fazie rekonesansu warto wyszukać frazy z tej podpowiedzi online, być może wyniki nakierują nas w jakiś sposób na rozwiązanie. Być może sam tytuł zadania zawiera już podpowiedź?
  • Jeżeli podajemy aplikacj serwerowej jakiś URL (lub jego kawałek), sprawdźmy co serwer robi z tym URL-em. Być może robi na niego zapytanie? Można postawić własny serwer i to sprawdzić w logach lub wykorzystać https://requestbin.io/
1 Like

Hejka! :raised_hand_with_fingers_splayed:t2:
W tym wpisie, postaram się przybliżyć kilka użytecznych narzędzi OSINT’owych, które mogą się przydać na następnych CTF’ach. Głównie są to narzędzia pozwalające wyciągnąć dane z podanej domeny.

  • The Harvester (link do repo na Githubie) - domyślnie zainstalowane narzędzie w Kali, służy głównie do wyszukiwania adresów mailowych, nazw, subdomen, adresów IP oraz URL po żądanej przez nas domenie. Mówiąc zupełnie szczerze, bardzo mało danych uzyskiwałem poprzez Harvestera, zatem od razu przejdę do (moim zdaniem) użyteczniejszych narzędzi, już niedostępnych domyślnie w Kali.
    Przykładowe użycie The Harvestera: theHarvester -d nazwa_domeny

  • Harpoon (link do repo) - potężne narzędzie OSINT’owe idące filozofią, że nie warto zbierać jak najwięcej tylko się da informacji, lecz skąd one pochodzą i jak rzetelne one są. Narzędzie pozwala nie tylko sprawdzać informacje o domenie na podstawie 14 różnych serwisów do analizy, ale również pozwala sprawdzać rzetelność kont na twitterze czy telegramie (myślę, że to kiedyś się może przydać na jakimś CTF’ie).
    Tutaj link do instalacji i funkcji Harpoon’a.

  • FinalRecon (link do repo) - o ile się nie myle, to narzędzie, które zgromadza największą ilość danych na podstawie domeny. Podczas CTF’a otrzymywałem z tego narzędzia po kilkaset, jak nie kilka tysięcy linijek danych, naprawdę najróżniejszych. Wydaje mi się, ze puszczone z jakąś flagą, bądź grep naprawdę może się przydać do analizy domeny.
    Link do artykułu o FinalRecon na Hackin9.org - szczególnie polecam demo z działania na samym dole artykułu ^^

  • Domain Analyzer (link do repo) - nie mogło tutaj zabraknąć narzędzia o nazwie Domain Analyzer. Podobnie jak FinalRecon zbiera ogrom różnych informacji, naprawdę bardzo dużo. Twórcy chwalą się, że potrafią znaleźć “all the information possible” o zabezpieczeniach danej domeny. Również może się przydać, myślę, że nawet bardzo. Użyteczne narzędzie.
    Przykładowe użycie: domain_analyzer.py -d nazwa_domeny zwraca nam ogrom infromacji - głównie DNSy, skrzynki mailowe, czy adresy IP, ale naprawdę jest tego dużo więcej.

Warto pamiętać aby z powyższych narzędzi korzystać jako root - wtedy możemy wykorzystać ich pełnie potencjału.
Poza tym, są dwie przydatne strony, które uznałem, że warto zamieścić tutaj:

  1. Awsome Osint - zbiór najróżniejszych stron internetowych, które posegregowane są według kategorii i mogą pomóc np. w oczekiwaniu, aż któreś z narzędzi o których mówiłem wyżej zakończy swoją pracę.
  2. WhoXY - strona która pozwala sprawdzać za darmo dane o domenie z jakiegoś miejsca z przeszłości. Dzięki niej, udało się nam rozwiązać (zasługa @Darkstar49 :sunglasses: ) zadanie OSINT’owe na Securnets2020. Watro pamiętać o tej stronie, gdyż zadanie podobne do tego z Securnets2020 może się powtórzyć (dla niewtajemniczonych, były podane 4 domeny, trzeba było znaleźć imię i nazwisko osoby, na które są zarejestrowane - whois.net pokazywało, że tych danych nie ma w ich bazie aktualnie. Okazało się, że były u nich parę dni przed rozpoczęciem tego CTFa, zatem wystarczyło wyciągnąć dane z przeszłości i właśnie to umożliwia WhoXY).

Mam nadzieję, że narzędzia te przydadzą się nam w następnych CTF’ach i pozwolą nam szybko radzić sobie z szukaniu flag w kategorii OSINT. Dzięki za uwagę i pjona! :raising_hand_man:t2:

4 Likes

Druga część cheatsheet, tym razem o gicie

Git undercover hackz

Git jaki jest każdy widzi. Albo czasami nie widzi, wtedy przydają sie takie narzędzia, jak te niżej, żeby odkryć to, co może nas interesować, a nie jest widoczne na pierwszy rzut oka.


Find

Żeby wykryć, czy a danym miejscu istnieje repo git, można użyć narzędzia Finder z paczki GitTools

Uwaga

Można ręcznie spróbować stwierdzić, czy dany serwer posiada repo git. Wystraczy z poziomu przeglądarki wejść na #server#/.git Jeżeli dostaniemy komunikat typu Forbidden, to repo istnieje, ale listowanie katalogów jest wyłączone/zabronione. Da się jednak pobrać każdy z plików z osobna, trzeba tylko wiedzieć jak się nazywają. To z resztą właśnie robi Dumper.

Download

Jak już wykrywamy repo .git, możemy próbować pobrać z niego pliki. Czasami jednak nie mamy dostępu do struktury, i nie wiemy co dokładnie tam siedzi. Tutaj z pomocą przychodzi Dumper z paczki GitTools. Próbuje pobrać pliki z repo, które mają standardowe nazwy w środowisku git. Nie zawsze wyciągnie wszystko, szczególnie jeżeli są tam pliki/katalogi, które nie są typowe dla gita, ale to zawsze coś. Od ostaniej wersji jest w stanie ściągać też dane z modułu work in progress (WIP) z magita #pdk.

Historię zmian, logi i inne dane można przeglądać z konsoli, albo z jakiegoś klienta, np. magit z emacsa czy gitk (GUI).

Extract

Trzecie narzedzie, z paczki GitTools to Extractor. Z pobranego już repo jest on wstanie przeiterować po każdym commicie i stworzyć osobny folder dla każdego z nich odpowiednimi dla nich zmianami. Krótko mówiąc, tworzy drzewo wszystkich zmian z ich zawartościami. Można potem szukać w tym np. grepem.

2 Likes

Kilka obserwacji po wczorajszych rozgrywkach:

  • w przypadku zadań rev/forensic do określenia formatu pliku (szczególnie jeśli jest bardziej egzotyczny i nie da się łatwo zidentyfikować po magic numbers) przydaje się opcja Tools > File Format Identification w tym edytorze – poradziła sobie skutecznie w testach z kilkoma dość hermetycznymi formatami,
  • również w przypadku zadań rev/forensic: sprawdzanie zawartości extended attributes (Unix: xattr, Windowsowski “odpowiednik” to NTFS attribute types) sporo by podpowiedziało (w tym przypadku: pewnie przetestowałabym inny emulator, który akurat był podlinkowany w tychże),
  • bardziej ogólna myśl: przekombinowujemy często :wink: jeśli można spróbować coś zrobić po linii najmniejszego oporu, to warto zrobić to przed optymalizowaniem rozwiązania, czasem to wystarczy.
1 Like

Wydaje mi się, że to dotyczy tych zadań bardziej niż jakichkolwiek innych. W tym CTFie chyba zadania bywały specjalnie tworzone tak, żeby były różne ścieżki dochodzenia do rozwiązania i żeby istniały skróty z góry przewidziane przez twórcę. Prowadzi to do właśnie takich przemyśleń “że też na to nie wpadłam, można było prościej!”, co bardzo lubię robić studentom, więc słusznie mi się taka nauczka co jakiś czas należy. :wink:

2 Likes

Bwa, ha, ha!

To prawda, ale na którymś CTFie mieliśmy podobny problem (zadanie z ASCII ART) – zamiast wziąć na chama kopiuj wklej znaków, kombinowaliśmy z biblioteką do figletów, haszami napisów, aż w końcu się nie wyrobiliśmy z zakodzeniem tego wszystkiego… Trzeba przybrać najprawdziwsze haxxiorskie i informatyczne podejście i zwiększyć na maksa poziom lenistwa w proponowanych rozwiązaniach :wink: