Reverse Engineerging. Dawid Zarzycki

Podobne dokumenty
Infekowanie plików EXE PE amdfanatyk

Wstęp do Reverse engineeringu

WIRUSY KOMPUTEROWE ARCHITEKTURA KOMPUTERÓW. Autorzy: Mariusz Ciepły Krzysztof Składzień

Praktycznie całe zamieszanie dotyczące konwencji wywoływania funkcji kręci się w okół wskaźnika stosu.

Portal Security - ModSec Enterprise

Środowiska i platformy programistyczne

Środowisko Keil. Spis treści. Krzysztof Świentek. Systemy wbudowane. 1 Trochę teorii. 2 Keil

Programowanie MorphX Ax

Programowanie w C. dr inż. Stanisław Wszelak

Komputery przemysłowe i systemy wbudowane

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

dlibra 3.0 Marcin Heliński

Reverse Engineering for fun and profit :)

Spis treści. Wstęp 15

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Systemy zdalnego zarządzania i monitoringu: Carel platforma PRO. Tomasz Andracki, Bydgoszcz

Poszczególne punkty napisali (* oznacza współautorstwo):

Ataki w środowiskach produkcyjnych. (Energetic bear / Dragon Fly / Still mill furnace)

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Java jako język programowania

1.1 Definicja procesu

Rozwój zagrożeń i ich mitygacja. Seweryn Jodłowski Senior Systems Engineer, CISSP, CNSE

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

Instrukcja instalacji aplikacji Generator Wniosków Aplikacyjnych Edytor.

Autorzy opracowania (* oznacza współautorstwo):

Emulacja maszyny. Program udaje zupełnie inną architekturę. Musi przetłumaczyć instrukcje emulowane na instrukcje platformy, na której działa

Podstawy programowania

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

STUDIA STACJONARNE I STOPNIA Przedmioty kierunkowe

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Programowanie Systemów Czasu Rzeczywistego

Programowanie w asemblerze Linkowanie

Spis treści 1. Wstęp 2. Ćwiczenia laboratoryjne LPM

Historia modeli programowania

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Podstawy programowania. Wprowadzenie

Instrukcja instalacji aplikacji Generator Wniosków Aplikacyjnych Edytor.

Spis treści 3. Spis treści

AUTOR: Tajiri. Analiza metod ochrony oprogramowania przed łamaniem zabezpieczeń.

Instrukcja instalacji aplikacji Generator Wniosków Aplikacyjnych Edytor.

Komunikacja i wymiana danych

Zaawansowane programowanie w języku C++

Tworzenie oprogramowania

Zabezpieczanie platformy Windows Server 2003

DSL w środowisku Eclipse. Grzegorz Białek Architekt techniczny, Sygnity S.A.

KOMPUTER. Programy użytkowe i systemy operacyjne

Instrukcja instalacji oprogramowania dla środowiska Windows

Dokumentacja projektu QUAIKE Architektura oprogramowania

Fuzzing OWASP The OWASP Foundation Piotr Łaskawiec J2EE Developer/Pentester

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

TEMAT SZKOLENIA: MS 6292 Installing and Configuring Windows 7 Client (szkolenie autoryzowane przez Producenta oprogramowania Microsoft)

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Android - wprowadzenie. Łukasz Przywarty

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

Necurs analiza malware (1)

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Programowanie obiektowe zastosowanie języka Java SE

Projekt przejściowy 2015/2016 BARTOSZ JABŁOŃSKI, TOMASZ JANICZEK

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

5. Arkusz kalkulacyjny Excel 205

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Architektura typu Single-Cycle

Tworzenie aplikacji na platformie Android

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

WOJEWÓDZKI KONKURS INFORMATYCZNY DLA UCZNIÓW GIMNAZJÓW ETAP REJONOWY BIAŁYSTOK, 8 LUTEGO 2017

Hackowanie zamrożonych binariów

Programowanie w języku C++ Grażyna Koba

MS Office dla zaawansowanych

<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Google Android. Opracował Maciej Ciurlik

Programowanie Niskopoziomowe

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2016/2017

Inżynieria Wytwarzania Systemów Wbudowanych

AM 331/TOPKATIT Wsparcie techniczne użytkowników i aplikacji w Windows 7

PyPy's Approach to Virtual Machine Construction

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Android tworzenie aplikacji mobilnych

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Usługa: Testowanie wydajności oprogramowania

Programowanie Komponentowe WebAPI

Sprzętowo wspomagane metody klasyfikacji danych

1 Wprowadzenie do koncepcji Microsoft Office BI 1 Zakres ksiąŝki 2 Cel ksiąŝki 3 Wprowadzenie do tematu 3 Zawartość rozdziałów 4

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Katedra Inżynierii Oprogramowania Tematy prac dyplomowych inżynierskich STUDIA NIESTACJONARNE (ZAOCZNE)

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, O STRUKTURZE PRZEDMIOTOWEJ

Tematy projektów C++ Programowanie obiektowe Mateusz Cicheński

STUDIA NIESTACJONARNE I STOPNIA Przedmioty kierunkowe

INŻYNIERIA OPROGRAMOWANIA

Nowe produkty w ofercie Red Hat

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

Transkrypt:

Reverse Engineerging Dawid Zarzycki

Plan prezentacji Definicja Reverse Engineering Zastosowanie RE Pojęcia Podstawy budowy pliku Portable Executable Pamięd, proces i PE Język programowania Asembler Etapy analizy aplikacji Zadanie 1 crack, keygen Zadanie 2 modyfikacja aplikacji

Zanim zaczniemy 0x01 Narzędzia: http://fizyka.umk.pl/~236436/re.rar

RE Reverse Engineering (inżynieria wsteczna) to analiza gotowego oprogramowania lub urządzenia i próba odpowiedzenia na pytanie jak przebiegał proces jego tworzenia. RCE Reverse Code Engineering

Zastosowanie Modyfikacja aplikacji: Zmiana wersji językowej. Odblokowanie dodatkowych funkcji. Zmodyfikowanie, usunięcie pewnych funkcji. Zmiana API, platformy (Syndicate Wars) Analiza złośliwych aplikacji (malware etc.) Cracking, cheating at games, fixing vulns Vulnerability discover, analysis Analiza i modyfikacja sprzętu (Play Station 3) Patch analysis: Black Tuesday / Exploit Wednesday

Pojęcia Relative Virtual Address (RVA) adres pamięci, relatywny, od początku segmentu (np. ImageBase). Virtual Address (VA) bezwzględny adres pamięci. Offset przesunięcie względem danego segmentu. Raw Address (RA) offset w pliku. VA(RVA) = ImageBase + RVA; RVA(VA) = VA ImageBase; RA(RVA) = Section[RVA].PointerToRawData + (RVA Section[RVA].VirtualAddress);

Budowa PE Specyfikacja Microsoftu: http://www.microsoft.com/whdc/system/platform/firmware/pecoff.mspx

Budowa PE Kompatybilnośd wsteczna dla MS-DOS. Struktura: IMAGE_DOS_HEADER e_magic: MZ (Mark Zbikowski) e_lfanew: adres nowego nagłówka PE

Budowa PE Signature: 0x50 0x45 0x00 0x00 Struktura: IMAGE_FILE_HEADER WORD Machine; IMAGE_FILE_MACHINE_I386 IMAGE_FILE_MACHINE_AMD64 WORD NumberOfSections; WORD Characteristics; IMAGE_FILE_EXECUTABLE_IMAGE IMAGE_FILE_DLL

Budowa PE Struktura: IMAGE_OPTIONAL_HEADER DWORD AddressOfEntryPoint; DWORD ImageBase; DLL: 0x10000000 EXE: 0x00400000 DWORD SectionAlignment; 0x1000 = 4096 = 1 strona DWORD FileAlignment; 0x200 = 512 DWORD SizeOfImage; WORD Subsystem; IMAGE_SUBSYSTEM_WINDOWS_GUI IMAGE_SUBSYSTEM_WINDOWS_CUI

Budowa PE IMAGE_DATA_DIRECTORY DataDirectory[16]; 0 EXPORT 1 IMPORT 2 RESOURCE 3 EXCEPTION 4 SECURITY 5 BASERELOC 6 DEBUG 7 ARCHITECURE 8 GLOBALPTR 9 TLS 10 LOAD_CONFIG 11 BOUND_IMPORT 12 IAT 13 DELAY_IMPORT 14 COM_DESCRIPTOR

Budowa PE kernel32.dll CreateFileA LoadLibraryA WriteFile ExitProcess user32.dll MessageBoxA msvcrt.dll puts printf scanf

Budowa PE Struktura IMAGE_SECTION_HEADER. BYTE Name[8]; DWORD VirtualSize; DWORD VirtualAddress; DWORD SizeOfRawData; DWORD PointerToRawData; DWORD Characteristics; IMAGE_SCN_CNT_CODE IMAGE_SCN_CNT_INITIALIZED_DATA IMAGE_SCN_MEM_EXECUTE IMAGE_SCN_MEM_READ IMAGE_SCN_MEM_WRITE

Proces, pamięd i PE 0x00000000 0x7FFFFFFF 0xFFFFFFFF

Proces, pamięd i PE 0x00000000 ImageBase SizeOfImage 0x7FFFFFFF

Język Asembler Język asembler jest znany jako język niskiego poziomu. Na poziomie języka asembler i kodu maszynowego tworzone są polecenia interpretowane bezpośrednio przez procesor. Język asembler jest najczęściej używany w czasie komunikacji z systemem operacyjnym i bezpośredniej pracy ze sprzętem. Dzięki temu językowi możliwa jest także optymalizacja pewnych krytycznych obszarów aplikacji oraz zwiększenie ich wydajności. Język asembler należy poznawad wraz z architekturą komputera i koncepcjami systemu operacyjnego.

Język Asembler

Etapy analizy aplikacji

Rekonesans Narzędzia: PeID, PeView, Skanery AV (VirusTotal) Process Explorer, Process Monitor OllyDump, Import Reconstructor

Właściwa analiza Narzędzia: Disassembler IDA Debugger OllyDbg

Modyfikacja Narzędzia: Debuggery OllyDbg Edytor binarny Hexplorer Resource Hacker Własne programy patchujące

Narzędzia Disasembler IDA http://www.hex-rays.com/idapro/idadownfreeware.htm Debugger OllyDbg http://www.ollydbg.de PeID http://www.peid.info/ Icy s Hexplorer http://artemis.wszib.edu.pl/~mdudek/ Process Explorer, Process Monitor http://technet.microsoft.com/en-us/sysinternals/bb896653 http://technet.microsoft.com/en-us/sysinternals/bb896645

Zanim zaczniemy 0x02 Metod analizowania aplikacji jest wiele. Nie ma jednej i zawsze działającej metody. Każdy reverser ma swoje strategie. W zależności od aplikacji będziemy zmuszeni skorzystad z innych metod. Dlatego aby skutecznie i szybko analizowad różnego rodzaju aplikacje należy poznad jak najwięcej sztuczek, metod, tricków i podejśd.

Zadanie 1 Aplikacja: ConsoleInfinity.exe Autor: Promix17 (www.crackmes.de) Packer:??? Zadania: Zanalizowad aplikację, rozpakowad (jeśli trzeba), zcrackowad. Napisad generator kluczy (aka keygen).

Zadanie 2 Aplikacja: snake.exe Packer: brak Zadania: Zanalizowad aplikację Załadowad własną bibliotekę w pamięd aplikacji Dodad nowe funkcjonalności: Możliwośd wybory poziomu gry Obsługa ekstra zwierzaka (dodatkowe punkty, znika po x sek. etc.)

Dziękuję za uwagę!