Brainfuck w 155 linijkach
Kompilator Brainfucka (JIT!) w bardzo małej formie:
http://dginasa.blogspot.com/2012/10/brainfuck-jit-compiler-in-around-155.html
Brainfuck w 155 linijkachKompilator Brainfucka (JIT!) w bardzo małej formie:
http://dginasa.blogspot.com/2012/10/brainfuck-jit-compiler-in-around-155.html
Nudzi Ci się? Złam CrackMeCześć, po przeczytaniu wywiadu z panem Dawidem Farbańcem odezwał się do mnie tajemniczy nieznajomy, który pragnął pozostać tajemniczym i prosił, żeby wręczyć mały challange dla pana Farbańca w postaci CrackMe.
Zadaniem jest napisanie keygena, no patch, wpisujcie się komentarze moje małe reverse engineerowe potworki jeśli coś ciekawego zwróci waszą uwagę lub uda wam się je rozwiązać.
Download – cm.zip
Wyszła nowa wersja disassemblera Hiew 8.30, wiele zmian nie ma, doszła obsługa instrukcji AVX (Advanced Vector Extensions) – czyli instrukcji operujących na 256 bitowych rejestrach YMM z wykorzystaniem 3 operandów (na wzór procesorów ARM).Hiew – http://hiew.ru/files/hiew32demo.zip
Materiały dotyczące AVX:
Jedno z największych forów programistycznych w Polsce – 4programmers uległo awarii, próbujemy się dowiedzieć czy to błąd administracyjny czy może coś innego (np. włamanie).
Nie odpowiada zarówno strona główna:
Jak i forum:
http://forum.4programmers.net/
Update
Jak się dowiedzieliśmy, był to błąd serwera. Zapraszamy wszystkch na forum!
Kolejna część szopki spod parasolu Software Press i Hakin9, tydzień temu chcieli mnie pozwać, dzisiaj padło na Niebezpiecznik:
http://niebezpiecznik.pl/post/hakin9-grozi-procesem-tworcy-nmapa-i-polskim-blogerom-nam-takze/
Pomóżmy im to upublicznić i ukrócić zapędy H9
http://www.wykop.pl/link/1287233/hakin9-pozwow-czesc-dalsza/
Nie wiem jak wy, ale dla mnie to mistrzostwo świata w zrażeniu do siebie większej części społeczności skupionej wokół security, groźby pozwów wysłane do Niebezpiecznika, Zaufanej Trzeciej Strony, Secnews, zagranicznym autorom też grozili krokami prawnymi, czy tam naprawdę nikt nie pomyślał o konsekwencjach takich kroków?
Może to pytanie należałoby zadać właścicielowi Software-Wydawnictwo, którym jest pan Paweł Marciniak?
IAT RedirectionThemida to exe-protektor, który posiada opcję ukrywania tabeli importów aplikacji poprzez ukrycie faktycznych adresów funkcji w bibliotekach DLL.
Działa to na tej zasadzie, że w zabezpieczonej aplikacji, po jej uruchomieniu, adresy funkcji w tabeli importów, które normalnie wskazuja na jakieś funkcje, np. na ExitProcess(), sa zamienione adresami kodu, który w końcu wykona skok do przykładowego ExitProcess().
Technika ta ma nazwę API Redirectingu lub inaczej – IAT Redirection, Import table redirection (w obiegu jest kilka nazw).
Celem tej techniki zabezpieczeń jest uniemożliwienie odtworzenia struktury pliku wykonywalnego z pamięci, praktycznie każdy nowoczesny protektor wykrzystuje jakąś formę tej ochrony.
Struktura tabeli importów w bardzo dużym skrócie przedstawia się następująco (dla bardziej zaciekawionych polecam poszukać IMAGE_IMPORT_DESCRIPTOR):
Tak wygląda ona w niezabezpieczonym pliku, czyli mamy bloki odpowiadające kolejnym bibliotekom, z których korzysta nasza aplikacja, w każdym bloku znajdziemy adresy tych funkcji (po załadowaniu aplikacji, wskazują na bezpośredni kod np w KERNEL32.dll).
Po potraktowaniu pliku protektorem Themida, po jego załadowaniu do pamięci, struktura będzie wyglądać następująco:
Przykładowa funkcja ExitProcess() ma taki kod:
Widać, że po zabezpieczniu, oryginalne instrukcje z funkcji zostały pomieszane z kodem zaciemniającym.
Proces redirectingu wygląda następująco:
Całość sprawia, że wywołanie funkcji ExitProcess() z poziomu aplikacji przebiega dokładnie tak samo, jak to ma miejsce w niezabezpieczonej aplikacji.
Publiczne narzędzia jak np. ImpRec posiadają wtyczki potrafiące poradzić sobie z różnymi zabezpieczeniami tabel importów, jednak akurat mój przypadek był taki, że musiałem skorzystać ze skryptu ODbgScript, który służy do sterowania debuggerem OllyDbg.
Kilka słów o działaniu mojego skryptu, kolejne etapy przedstawiają się tak:
Aplikacja po załadowaniu do debuggera i dojściu do OEP jest zatrzymywana po czym skrypt skanuje ręcznie wybrany obszar wskazujący na tabelę importów (na tabelę wskaźników do funkcji).
Na tym etapie odrzucane są błędne wskaźniki oraz funkcje, które nie zostały poddane procesowi zabezpieczenia, są to np. adresy funkcji, które nie są funkcjami, a np. wskaźnikami na dane w bibliotece DLL, przykład to funkcja _acmdln() z rodziny bibliotek MSVCRT.dll).
Jeśli znaleziony zostanie kod redirectora dla kolejnej funkcji, poddawany jest on takim procesom jak:
Odbudowany kod redirectora po takim procesie będzie w 99% wierną kopią zredirectowanych początkowych instrukcji zabezpieczonej funkcji.
Teraz, mając fragment oryginalnej funkcji, tworzony jest z niej wzorzec binarny (z maskowaniem adresów niektórych instrukcji, np. „E9????????”).
Taki wzorzec jest następnie poszukiwany w pamięci bibliotek DLL aplikacji i jeśli zostanie znaleziony jest to równoznaczne ze znalezieniem poprawnej funkcji, której adres może być umieszczony w pamięci tabeli importów i tym razem bezproblemowo można skorzystać z narzędzi typu ImpRec do odbudowy tabeli importów i symbolicznych nazw wykorzystanych funkcji.
Wady, zalety i efekty uboczneDo wad skryptu należy to, że w 1% przypadków odbudowany kod niekoniecznie będzie idealnie taki jak kod ze zredirectowanej funkcji i tym samym nie będzie możliwe po jego wzorcu znalezienie tej owej oryginalnej funkcji (zostaje ręczna robota przy tym).
Sporą wadą, chociaż bardziej efektem ubocznym jest też czas wykonywania skryptu w OllyDbg, który może sięgać 5 minut dla zabezpieczonych aplikacji.
Zaletą jest natomiast cała reszta, która pozwala w prosty sposób odbudować tabele importów oraz dokonać błyskawicznych zmian, biorąc poprawki na jakieś wyjątkowe warunki w kodzie.
Kod skryptu do ściągnięcia – themida_iat_rebuilder.zip (6 kB)
Wszelkie uwagi mile widziane.