Shizzer
2019-09-08 19:32

Wczoraj postawiłem duży krok w kierunku rozwiajania swojej kariery w branży security. Osiągnąłem jeden ze swoich celów - chociaż miałem nadzieję, że kiedyś mi się to uda to byłem przekonany, że nie nastąpi to tak szybko (zacząłem się uczyć security mniej więcej po tym jak założyłem ten temat -> Cyberbezpieczeństwo). Tym celem było zagranie z drużyną w konkursie CTF większej rangi niż Pico i tym podobne. Miałem przyjemność zagrać gościnnie z jedną z najlepszych drużyn na świecie -> @p4. :)

Wzięliśmy udział w dwóch konkursach -> TrendMicro (https://www.trendmicro.com/en[...]mpaigns/capture-the-flag.html) i DefCamp (https://dctf.def.camp/). Nie były to finały, ale kwalifikacje do nich. Udało się awansować w obu przypadkach, żeby tak się stało musieliśmy zająć miejsca w top 10 rankingów drużyn. Zajęliśmy odpowiednio 3. i 8. miejsce.

Co do mojego debiutu to wszystko zaczęło się o 6 rano w sobotę kiedy zaczęły się kwalifikacje do TrendMicro CTF'a. Walka o miejsca zakończyła się o 11 rano dnia następnego kiedy to zakończyły się qualsy do Defcamp'a. Grałem od około 7 rano do około 1:00 w niedzielę. Właściwie teoretycznie zostało jeszcze 10 godzin do końca, ale nie wyposażyłem się w żadne energetyki ani kawę więc po grubo ponad 12 godzinach rozwiązywania zadań czułem się wyczerpany. Tzn. uznałem, że moje siedzenie przed monitorem i tak nic nie da, bo po prostu nie miałem sił myśleć. Żeby było śmieszniej - nastawiałem się na granie całego przedziału czasowego z krótkimi przerwami, ale jak widać nie jest to takie proste. (jeszcze) ;/

Na siebie wziąłem zadanie z TrendMicro w kategorii RE za 200 punktów. Była to binarka ELF na arch x64. Wszystko fajnie tylko niestety była linkowana statycznie i trzeba było zgadywać, które funkcje są z libc i za co odpowiadają. Płatna IDA sama sobie "rewersuje" te nazwy, ale niestety nie mam płatnej wersji, bo bieda.
Generalnie siedziałem nad całym tym zadaniem koło 15h, czyli czas mojego grania bez doliczania przerw. Po zrewersowaniu okazało się, że trzeba dokładnie 6 razy sprawić, żeby został wywołany SIGFPE, jeśli się udało to input był flagą. Do tego celu można było użyć jakiegoś z3 solvera, żeby wyliczył znaki flagi odpowiednie do wyowłania SIGFPE tyle razy ile nam potrzeba. Oprócz mnie z tego co wiem to @Shalom i des patrzyli na to kilka godzin. Z tego wszystkiego powstał taki program, którego autorem był des -> https://pastebin.com/mX42s9a4, ale nie dawał flagi na stdout, bo wynik z3 był unsat. Też pisałem swoją wersję programu i constrainty do z3 były dokładnie takie same co w efekcie nic nie dało. Wtedy stwierdziłem, że jestem tak zmęczony, że nic już więcej nie wymyślę.

Podsumowując: Niestety nie rozwiązałem żadnego zadania przez co nie jestem do końca zadowolony, bo nie czuję, żebym pomógł drużynie. Z drugiej strony dość szybko udało mi się zagrać CTF'a z jednymi z najlepszych ludzi w branży i wybrałem dość trudne zadanie jak na debiut, a brakowało do jego rozwiązania naprawdę niewiele. To była świetna przygoda i mam nadzieję, że jeszcze będę mógł z Wami zagrać. Dzięki @p4!

A no i zapomniałem dodać -> energetyki i kawa musi być następnym razem, bo bez tego znów będę trupem wcześniej niż tego oczekiwałem :D

baant

gz, pamiętam jeszcze jak zaczynałeś :)

Shalom

@Shizzer: no akurat wybrałeś sobie jakieś chore zadanie, takie życie ;)

Shizzer

Jest to jakieś pocieszenie :D

kochansky

Gratulacje, następnym razem zaopatrz się w yerbe/tabletki z kofeina lepiej dadzą rade.I życzę powodzenia w rozwoju!!

Cr0w

Nice. To teraz jakąś praca ;)

kate87

Nie zawsze się udaje ale trzeba próbować, bo każde doświadczenie czegoś uczy. Gratulacje że jednak zagrałeś i nie poddałeś się.😉

Shizzer

@Cr0w najpierw pasowałoby się na studia pierwszego wyboru dostać, a potem praca. @kate87 dzięki!

viader

Gratki. Tak trochę offtop, ale czemu do RE narzędzia typu IDA tak kuleją z User Interfacem? Kiedyś miałem okazję korzystać i poczułem się dokładnie tak jak gdy przesiadałem się z Maya na Blendera, niby wszystko jest, ale tak pokitrane, że ciężko się używa.

stivens

Hmm.. a testowales to RE od NSA? Ghidra czy jakos tak / @viader & @Shizzer

Shalom

@stivens: W kontekście rozpoznawania funkcji chodziło o sygnatury FLIRT w IDA. Maja zindeksowane różne biblioteczne funkcje i je "rozpoznają". Ghidra słabiej sobie z tym radzi.

stivens

Ale lepiej niz darmowa IDA czy niekoniecznie?

Shalom

@stivens: kwestia preferencji pewnie. Ja używam obu na raz, ghidry dla dekompilacji, a IDY do patrzenia w kod, bo wygodniej się nią nawiguje.

Cr0w

@Shizzer meh, spróbować nie zaszkodzi

Shizzer

@Cr0w już niby gdzieś tam dostałem ofertę pracy w Wawie, ale to jeszcze za wcześnie jak dla mnie

cw

jako osoba z wieloletnim doświadczeniem w informatyce śledczej powiem tylko, że żaden konkurs nie dostarczy takich emocji jak prawdziwa sprawa. Próbowałem analizować zadania z różnych konkursów (informatyka śledcza !=cyberbezpieczeństwo, ale trochę to o siebie zahacza) i po prostu nie dałem rady się na nich skupić, nuda. To trochę jak porównać pisanie programów na podstawie tutoriala z pisaniem programu dla rzeczywistego klienta

Shalom

@cw jasne, przecież takie CTFy są na 24-48 godzin więc nie mogą zawierać nie-wiadomo-czego, szczególnie że zwykle masz do rozwiązania kilka zadań przynajmniej :) Niemniej akurat TrendMicro robi na swoich CTFach sporo wielopoziomowych zadań z zakresu forensics/osint/