Przegląd narzędzi do reverse engineeringu

Witajcie, właśnie ukazał się nowy numer Magazynu Programista 11/2014, w którym znajdziecie m.in. mój artykuł opisujący najpopularniejsze i te trochę mniej znane narzędzia wykorzystywane w reverse engineeringu, wszystkich zainteresowanych tematem zachęcam do wizyt w Empikach.

Magazyn Programista 11/2014

 

Komentarze (10)

AjMonster

Bartek coraz gorzej z twoimi tekstami o RE ciagniesz programiste na dno pisza takie teksty.Jak mozesz polecac takie badziewie jak Pestudio!
myslalem ze tym gniotem zachwycaja sie tylko osoby co nie widza nic o plikach PE.
PEStudio w zasadzie robi tylko strcmp na tablicy importow, takie cos mozna napisac w jeden dzien uzywajac pythona i modul pefile. Nie wspominajac o tym ze autor tego narzedzia to beznadziejny programista a jeszcze gorszy projektant interfejsu uzytkownika, chociaz go troche poprawil w porownaniu do poprzedniej wersji.

Odpowiedz
bartek

@AjMonster: Reasumując

1. Na 23 narzędzia które opisałem, 1 Ci się nie podoba i twierdzisz, że ciągnę magazyn na dno? Rozumiem, że reszta Ci się podobała, więc co narzekasz. 22:1 dla mnie!

2. Uruchamiałeś chociaż raz Pestudio i sprawdzałeś jakie indicatory wyświetla czy piszesz to z własnego niedoświadczenia? Bo z tego co piszesz mam wrażenie, że dla ciebie tablica importów to pierwsze i ostatnie na co się natknąłeś w strukturze PE. Kończyłeś korespondencyjny kurs reverse engineeringu z Reader’s Digest?

3. Nikt nie pisze wysokowydajnych narzędzi do manipulacji PE w Pythonie, od tego jest C++. Dowód – nie istnieje ani jeden exe-protector, exe-packer ani wirtualizer, który jest napisany w Pythonie, ani nawet żadne inne narzędzie do RE: w Pythonie (nie licząc tych, które wspierają skryptowanie) bo to by po prostu nie działało (a przecież można skompilować do bytecode, co nie?), w Pythonie piszą głównie pracownicy AV, którzy nie mają czasu pisać porządnego kodu C++ i na szybko potrzebują odxorować parę rzeczy. W której firmie pracujesz?

4. Twierdzisz, że jesteś w stanie to napisać w jeden dzień – wyzwanie przyjęte, jest 23:37 pisz re-gimbusie do jutra, czekam na rezultaty!

5. Konsola, python (2.xx czy 3?) i pefile jest najlepsze mówisz :), Ci co wybierali 2013 Top Security Tools (ToolWatch) chyba mieli inne zdanie 🙂

Odpowiedz
AjMonster

1. reszta OK. Dodal bym w kategori Deasembler i Dekompilatory alternatywy hopper – hopperapp.com czy radar – radare.org
Zamiast PE-Bear polecil bym CFF Explorer bo jest bardziej dopracowany i ma ladny hex edytor i obsluge .NET a PE-Bear dal bym do alternatyw
dolaczajac jeszcze LordPE. Zamiast Hex Workshop polecil bym 010 Editor bo ma obsluge szablonow, skryptow i jest tanszy. Licencja domowa 49.95$

2. Tak uruchamialem nawet wczesniejsze wersje z starym poprzednim UI i doszedlem do wniosku ze jego autor nie jest zby kompetentny,
chociaz sie pare sztuczek nauczyl w ciagu ostatnich dwoch lat. nicolas brulez dobrze podsumowal to narzedzie na twiterze
“Pestudio opened by PeStudio shows same and more worrying facts :)”
https://twitter.com/nicolasbrulez/status/444425180442411008/photo/1

Mozna sie tez dowiedziec ze na liscie blacklistowanych stringow sa USER32.dll, KERNEL32.dll czy SendMessage
Nie konczylem kursu korespondencyjngo z Reader’s Digest (dobry jest?) ale przeczytalem wszystkie ksiazki Dawida Farbaniec 😉

3. > Nikt nie pisze wysokowydajnych narzedzi do manipulacji PE w Pythonie, od tego jest C++.
A kto mowi o manipulacja, edycji ? ale wymysliles skomplikowany termin “wysokowydajnych narzedzi do manipulacji PE”
W PEStudio nie mozesz NIC zmodyfikowac. Nie rozumiem aluzji do exe-protectorow exe-packerow.

> w Pythonie pisza glównie pracownicy AV, którzy nie maja czasu pisac porzadnego kodu C++ i na szybko potrzebuja odxorowac pare rzeczy
bzdura, slyszales na przyklad o Dropbox ? poczytaj na wiki

4. to czekaj dalej na rezulataty “re-gimbusie”, jesli chcesz z kim dyskutowac to go nie obrazaj

Odpowiedz
bartek

1. To czekam na oficjalne przeprosiny na NK.pl 🙂

2. Fakt, generuje czasami stek bzdur, jednak pokazuje wiele ciekawych informacji, dzięki którym można dla przykładu ukryć fakt np. że PE był modyfikowany. Wszystkie nienaturalne i podejrzane flagi oraz wartości w strukturach PE wykrywasz wzrokowo?

3. A co ma Dropbox do manipulacji plikami wykonywalnymi i ich strukturami? NIC. Manipulacja strukturami PE w połączeniu z analizą kodu wymaga wysokowydajnych algorytmów.

5. Nie mam zamiaru z tobą dyskutować, jeśli Ci się nie podoba wróć na blog Farbańca 😉

Odpowiedz
bartek

Kompletna bzdura? To gdzie te exe-protectory, exe packery czy wirtualizery w Pythonie?

Przeczytaj komentarz wyżej, pisałem, że Python jest często wykorzystywany ale jako oskryptowanie istniejących, wydajniejszych aplikacji do RE:.

No to spójrzmy co mamy w twoim PDF:

  • BeaEnginePython – BEA Engine jest napisany w C i assemblerze, to tylko binding w Pythonie, w LUA też sobie możesz napisać…
  • Bochs Python Instrumentation – patch dla emulatora Bochs, który z tego co wiem jest napisany w C
  • Buggery – “Python wrapper for DbgEng.” heh, czyli wrapper dla WinDbg, napisanego w C/C++ 😉
  • dislib – bazujący na engine diStorm, które jest stworzone w C, cytat ze źródła “If diStorm isn’t available, we won’t disassemble anything”
  • diStorm – binding dla diStorm w Pythonie, diStorm jak wyżej CAŁE jest w C
  • IDAPython – skryptowanie w Pythonie dla IDA, która jest stworzona w C++
  • ImmLIB – “Immunity Debugger’s Python API includes many useful utilities and functions”, Immunity bazuje na kodzie OllyDbg stworzonym w C/C++
  • OllyDbg – kolejny plugin “OllyPython is an OllyDbg plugin that integrates the Python programming language, allowing scripts to run in OllyDbg.”
  • ProcessTap – “Base Project PinTool, (Valgrind, QEMU, DinamoRIO)” PinTool stworzony w C/C++ 🙂
  • PyCodin – “The first version of the tool uses Qemu as the virtualization back-end.”
  • pydasm – “pydasm is a python wrapper for libdasm” libdasm jest napisany w C
  • PyDbgEng – “PyDbgEng is a Python Wrapper For Microsoft Debug Engine”
  • pygdb – “This is a simple python wrapper around GDB”
  • pyHIEW – “PyHiew is a Hiew External Module that allows users to write Python scripts that interface with Hiew.”
  • pykd – “Python extension for WinDbg”
  • Pylibemu – “Pylibemu is a wrapper for the Libemu library.” libemu jest napisane w C
  • PySTP – “PySTP is a Python extension module that interfaces with STP” STP jest stworzone w C++
  • PythonGdb – “Integrate Python scripting into Gdb.”
  • WinAppDbg – “The WinAppDbg python module allows developers to quickly code instrumentation scripts in Python under a Windows environment.”
  • Z3-python – “This is a Python binding to the SMT solver Z3” Z3 stworzony jest w C++

Co więc mamy? Wrappery, bindingi, pluginy, oskryptowanie do ISTNIEJĄCYCH NARZĘDZI w większości stworzonych w C/C++. Jedynie kilka narzędzi było stworzonych od podstaw w Pythonie, ale tu też znalazły się takie, które były portami narzędzi np. w assemblerze jak biblioteka bazująca na LDE udis.

Co z tego wynika? Że w Pythonie nie powstało żadne poważne, bazowe narzędzie do reversingu (nie mówiąc o jakimś poważnym narzędziu do zabezpieczania PE).

Czy to źle? Oczywiście, że nie! Oskryptowanie istniejących narzędzi w Pythonie jest wygodne, sam Python jest przyjaznym językiem do manipulacji binarnych danych, jednak nie jest to język, w którym pisze się poważne i często komercyjne oprogramowanie do reversingu / protektu.

Jakie z tego płyną wnioski? Radzę uważniej sprawdzać o czym mówisz, bo jak widzisz bardzo prosto sprawdzić takie bzdury.

Odpowiedz
bartek

@ann44: Toś mnie przekonał “Miasm uses: LibTCC tinycc to JIT code for emulation mode. See below or LLVM v3.2”

są jakieś narzędzia w Pythonie, które NIE BAZUJĄ na innych wysokowydajnych narzędziach w C/C++?

Odpowiedz

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *