Reverse engineering na IRCu

Reverse engineering

Wszystkich zainteresowanych tematami związanymi z zagadnieniami reverse engineeringu polecamy kanał na IRCu:

#crackscene

Jak to zrobić? Wystarczy:

  • ściągnąć klienta IRC-a, np. mIRC ze strony www.mirc.com
  • połączyć się z serwerem polska.irc.pl
  • wpisać komendę /join #crackscene

Prosimy o:

  • przedstawienie się
  • nie zadawanie pytań „gdzie znajdę cracka do xxx” (autoban)
  • kulturalne zachowanie (w przeciwnym wypadku leci ban)

Zapewniamy:

  • konsultacje z zakresu reverse engineeringu (w miarę możliwości)
  • informacje o narzędziach do RE:
  • dyskusje o nowościach anime
  • porady sercowe 🙂

W razie trybu invite only, należy poprosić o zaproszenie na kanał, wydając komendę /query i poprosić wybranego operatora kanału o zaproszenie, uprzednio przedstawiając się:

  • /query ReWolf
  • /query krzywy_
  • /query ved
  • /query cauchy
  • Przybywajcie 🙂

Hex Workshop ehh

Ja się pytam, do czego edytorowi Hex Workshop potrzebny jest restart po instalacji!

Głupota ludzka chyba osiągnęła apogeum (nigdy bym takich skomplikowanych słów nie używał, ale ręce mi opadają)…

Nie byłbym sobą jakbym tego nie sprawdził — zainstalował sobie menu kontekstowe dla shella, no dobra ale nie żyjemy w czasach Windows 3.11 i takie operacje nie wymagają restartu,  przypomnij sobie kiedy restartowałeś komputer po instalacji np. WinRara, który również wrzuca menu kontekstowe — nigdy!

Praca w ArcaBit

ArcaBit to polski producent oprogramowania antywirusowego ArcaVir, wywodzący się z MksVir-a. Całą smutną historię rozdzielenia się części pracowników i utworzenia ArcaVir oraz o późniejszych wielu sporach moża przeczytać na forach obu firm oraz na portalu DobreProgramy.pl.

Dzisiaj ciekawe opinie o pracy w tej firmie znalazłem na forum 4programmers, a docelowo znajdują się na portalu o pracy GoWork, jeden z ciekawszych cytatów:

Właściciele mają samochody za kilkaset tysięcy [każdy] a w biurze nie ma nawet sprzątaczki.
Jest biuro na parterze i tam ludzie mają grafik, kto i kiedy sprząta [myje podłogi, odkurza i czyści kible – tak kible]. Biuro na piętrze jest sprzątane przez Panią W. [odkurzanie, mucie naczyń, kurze i kible]. Warto nadmienić że Pani W. jest szefową biura a mimo wszystko w godzinach pracy w elegandzkim stroju – sprząta.
Najlepsza było przyjęcie wigilijne – było owszem ciasto i Cola i ….. no niestety nic więcej nie było.
Okropne dziadostwo

Oryginalny wpis:

http://www.gowork.pl/opinie_czytaj2,33733,0,0

PS.
Dzisiaj wyszedł news o upadłości firmy MKS, R.I.P gorszego dziadostwa antywirusowego nie widziałem, jeszcze w czasach wersji DOS-owej skasował mi połowę exeków z dysku, a w czasach Windowsa nie chcieli ze mną nawet rozmawiać o false-positivach w moich pierwszych exe-pakerach.

Narzędzia do analizy aplikacji .NET

Analiza aplikacji .NET

Zestaw narzędzi do analizy .NET-owych aplikacji znacznie różni się od klasycznych narzędzi dla zwykłych aplikacji x86 / x64, odmienna architektura kodu wymusiła utworzenie całej gamy dedykowanych narzędzi dla plików wykonywalnych .NET, spróbuję przedstawić kilka z nich, które mogą się przydać w reversingu.

Dekompilacja kodu

Pierwszym i podstawowym narzędziem, które chyba zna większość osób zajmujących się analizą oprogramowania i nie tylko jest dekompilator .NET Reflector.

.NET Reflector

.NET Reflector

Pozwala on na dekompilację plików wykonywalnych z formatu kodu przejściowego CIL (Common Intermediate Language) do kodu wysokiego poziomu w wybranym lub ulubionym przez nas języku np. C#, VB# etc.

Jest to najbardziej znany dekompilator i nie tylko, gdyż dzięki całej masie wtyczek umożliwia np. modyfikację plików binarnych (wtyczka Reflexil), debugowanie aplikacji (wtyczka Deblector) i wiele innych czynności związanych z analizą kodu.

Ostatnio .NET Reflector stracił na popularności, gdyż projekt od początku istnienia był darmowy, jednak po przejęciu go przez firmę Red Gate Software (notabene twórców obfuscatora SmartAssembly, z czego można wysnuć teorię spiskową, że chcieli ograniczyć dostęp do jednego z najpopularniejszych narzędzi do analizy aplikacji) i początkowych zapewnień o utrzymaniu jego darmowego statusu, po jakimś czasie został przekształcony w komercyjną wersję, z najtańszą licencją za 35 USD. W Internecie można jednak znaleźć złamane kopie jak również całkowicie zrekompilowane (wraz ze źródłami), bardziej odporne na narzędzia zabezpieczające.

Strona domowa — www.reflector.net

Lista wtyczek  — http://reflectoraddins.codeplex.com/

Telerik JustDecompile

Darmowy dekompilator firmy Telerik, raczej dla niewymagających użytkowników, ponieważ liczba dostępnych opcji (lub ich brak) nie powala na kolana, nie można nawet przejrzeć kodu w postaci IL, nie mówiąć o innych rzeczach, jest tu tylko dekompilator i wyszukiwarka referencji.

Strona domowa — www.telerik.com/products/decompiler.aspx

IL DASM

Warto wspomnieć również o tym narzędziu, chociaż z mojego doświadczenia wynika, że jest ono raczej mało używane, to deasembler dla .NET-owych binariów firmy Microsoft dołączany do SDK .NET-a oraz dostarczany wraz z Visual Studio.

Pozwala on na przeglądanie struktury pliku oraz deasembling do kodu przejściowego w związku z czym nie jest tak poręczny w analizie jak .NET Reflector.

IL DASM

Simple Assembly Explorer

Jest to kolejny deasembler i edytor jednak już bardziej zaawansowany od IL DASM-a, posiadający masę opcji, pozwalających na łatwą modyfikację kodu IL, kopiowanie instrukcji, wycinanie, wszystko bardzo poręcznie skonstruowane, od jakiegoś czasu jest to mój faworyt jeśli chodzi o modyfikację .NET-owych plików binarnych.

Simple Assembly Explorer

SAE posiada system wtyczek oraz wbudowany deobfuscator, który może przydać się w analizie zabezpieczonych aplikacji.

Simple Assembly Explorer Deobfuscator

Jeśli chcesz nauczyć się podstaw programowania w IL, zmodyfikować szybko i sprawnie binaria to jest to idealne narzędzie.

Strona domowa — http://code.google.com/p/simple-assembly-explorer/

Dis#

Dis# to stosunkowo mało znany dekompilator, być może ze względu na to, że to komercyjne narzędzie, projekt dawno nie był aktualizowany, ale może być traktowany jako ciekawostka, gdyż posiada kilka interesujących cech jak wbudowany deobfuscator, edytor kodu pozwalający w prosty sposób zamieniać nazwy funkcji, zmiennych etc.

Dekompilator Dis#

Strona domowa — http://netdecompiler.com

Debuggery

Z moich obserwacji i doświadczeń wynika, że większość analiz związanych z .NET da się rozwiązać statycznie (w przeciwieństwie do natywnych aplikacji), jednak i tutaj może przydać się prześledzenie wykonywanego kodu.

Dotnet IL Editor (DILE)

Dile to prosty w obsłudze debugger dla .NET-owych aplikacji, troszkę przypomina debugger z Visual Studio.

DILE

Strona domowa http://sourceforge.net/projects/dile/

Identyfikatory

Dla aplikacji natywnych podstawowym identyfikatorem jest PEiD oraz częściej uaktualniany Protection ID (oraz kilka innych), dla .NET powstał odpowiednik PEiD o nazwie DNiD.

Identyfikator DNiD

Wykrywa on obecnie większość stosowanych zabezpieczeń stosowanych dla aplikacji .NET-owych. Do ściągnięcia lokalna kopia  — DNiD.v0.11-Rue.rar (384 kB)

Dumpery

Aplikacje .NET-owe obecnie rzadko rozprowadzane są w czystej formie po kompilacji, gdyż dzięki narzędziom takim jak .NET Reflector jest to praktyczne równoznaczne z rozprowadzaniem open source i większości wypadków do zabezpieczania używane są obfuscatory.

Część obfuscatorów oprócz modyfikacji kodu IL, całość aplikacji „opakowuje” w kod ładujący (z ang. loader) w formacie natywnym (x86), który zwykle deszyfruje całe .NET-owe assembly i dopiero w odszyfrowanej formie ładuje je do pamięci.

Taka forma zabezpieczenia nie pozwala na używanie narzędzi .NET-owych i wymagane jest najpierw zrzucenie z pamięci załadowanych assembly .NET-owych w celu dalszej analizy.

.NET Generic Unpacker

Projekt autorstwa Daniela Pistelli (obecnie pracujący nad IDA w HexRays), generyczny jak nazwa wskazuje dumper, który potrafi wykryć w pamięci obraz pliku wykonywalnego .NET mimo zewnętrznego natywnego loadera.

.NET Generic Unpacker

Strona domowa —  http://www.ntcore.com/netunpack.php

DotNetDumper

Prosty w użyciu dumper, który również posiada obsługę zrzucania z pamięci plików kilku rodzajów zabezpieczeń, generalnie z tymi dwoma dumperami można sobie poradzić z większością zabezpieczeń natywnych.

DotNet Dumper

Do ściągnięcia lokalna kopia  — DotnetDumper.zip (66 kB)

Oprócz dedykowanych dumperów, równie dobrze działają klasyczne metody przeszukiwania pamięci np. w OllyDbg w poszukiwaniu sygnatur .NET-owych aplikacji (np. stringów „_CorExeMain”).

Fixery

Po zrzuceniu z pamięci obrazu pliku .NET jest on często niezdatny do analizy w narzędziach takich jak .NET Reflector, wynika to ze zmian jakie wprowadzają najczęściej obfuscatory, aby dodatkowo utrudnić analizę. Tak zrzucone obrazy plików należy naprawić.

Universal Fixer

Universal Fixer

Do ściągnięcia lokalna kopia  — Universal_Fixer.zip (31 kB)

Zawsze aktualna kopia — http://forum.tuts4you.com/topic/25376-universal-fixer/

Deobfuscatory

Liczba obfuscatorów dostępnych na rynku jest ogromna, mogę śmiało powiedzieć, że przebija ilość dostępnych narzędzi zabezpieczających dla natywnych aplikacji. W związku z tak zmasowanym atakiem, powstały deobfuscatory dla wielu narzędzi, często zintegrowane i obsługujące wiele rodzajów zabezpieczeń.

de4dot

de4dot to aktywnie rozwijany deobfuscator obsługujący sporą listę zabezpieczeń, podstawa jeśli ktoś myśli poważnie o analizie oprogramowania .NET

Deobfuscator de4dot

Do ściągnięcia ze strony —  https://github.com/0xd4d/de4dot/downloads

Podsumowanie

Obecny stan zabezpieczeń .NET-owych może z początku przerazić i zniechęcić do dalszej analizy, ale jak widać istnieje wiele narzędzi, które potrafią ułatwić nam życie.

Celowo nie opisywałem tutaj gotowych unpakerów, które można z łatwością znaleźć samemu, gdyż nie zawsze sprawdzają się w działaniu i warto wtedy wiedzieć jak sobie poradzić bez ich pomocy.

Jeśli natknę się na jakieś ciekawe narzędzie to dopiszę je do artykułu, a jeśli wy znacie coś interesującego do analizy aplikacji .NET — opiszcie w komentarzach, a ja to przejrzę i z chęcią dodam opis do artykułu.

Na koniec jeszcze kilka linków, gdzie można znaleźć narzędzia do analizy .NET-owych aplikacji:

BlackStorm — http://portal.b-at-s.net/download.php?list.9

RCE Tool Library — http://www.woodmann.com/collaborative/tools/index.php/Category:.NET_Tools

Rozwiązania konkursu Pimp My Crackme

Zgodnie z obietnicą, trochę spóźnioną, ale zawsze, publikuję opisy i rozwiązania wszystkich CrackMe z konkursu Pimp My Crackme.

SecurityNews – Pimp My Crackme (Solutions + Sources).zip

W międzyczasie powstało rozwiązanie oraz częściowy opis mechanizmu CrackMe j00ru na jego blogu.

Pozostałe CrackMe nie zostały od czasu ich opublikowania rozwiązane.