Inżynieria odwrotna kodu w systemach Windows i Linux oraz metody zabezpieczania programów

LICZBA DNI: 5 (40h)

KOD KURSU: RE

POZIOM SZKOLENIA:

# reverse-engineering

Najbliższy termin:

14 czerwca 2021

4300 PLN netto + 23% VAT

Jeszcze 8 miejsc w tej cenie.

  • stacjonarne
  • zdalne

STACJONARNE

W CENIE

  • 5 dni pracy z trenerem
  • Materiały szkoleniowe
  • Lunch
  • Certyfikat ukończenia szkolenia

ZDALNE

W CENIE

  • 5 dni pracy z trenerem na żywo online
  • Materiały szkoleniowe
  • Certyfikat ukończenia szkolenia

Czy wiesz, że możesz uzyskać nawet do 100% DOFINANSOWANIA na szkolenie? Napisz do nas »

Oferta dla firm

Dostosuj zakres, czas i miejsce szkolenia do potrzeb Twojego zespołu. Uzyskaj indywidualną wycenę szkolenia dla grupy.

Weź udział w szkoleniu

Termin

Lokalizacja

Cena / os

14

czerwca

Warszawa,

Kraków,

Łódź,

Wrocław,

Gdańsk,

Poznań,

Zdalne,

4300 PLN netto
+ 23% VAT

Termin

14

czerwca

Lokalizacja

Warszawa,

Kraków,

Łódź,

Wrocław,

Gdańsk,

Poznań,

Zdalne,

Cena / os

4300 PLNnetto
+ 23% VAT

Powiadom
o kolejnych terminach

O szkoleniu

DLA KOGO?

Szkolenie **Inżynieria odwrotna kodu*

jest adresowane do programistów, testerów oraz specjalistów z zakresu bezpieczeństwa aplikacji

WYMAGANIA

Znajomość podstaw działania komputera na poziomie architektury

Umiejętność rozumienia kodu napisanego w językach typu C/C++, Java i .NET

Biegłe posługiwanie się wybranym systemem operacyjnym: Windows lub Linux

Wskazana jest znajomość jednego z popularnych języków skryptowych a także algorytmów i struktur danych

ZALETY

Podczas szkolenia **Inżynieria odwrotna*

uczestnicy poznają metody reverse engineeringu oraz zabezpieczania oprogramowania przed inżynierią odwrotną pod opieką doświadczonego trenera

Przykłady zostały dobrane tak by mogły się na nim odnaleźć osoby o różnym poziomie doświadczenia

Cele szkolenia

Przedstawienie technik inżynierii odwrotnej (ang. reverse engineering, RE) aplikacji, protokołów i formatów plików na platformach typu desktop (x86, x86-64, Java, .NET)

Przećwiczenie poznanych technik w formie warsztatu na praktycznych przykładach używając wiodących w branży narzędzi takich jak IDA Pro, OllyDbg, Immunity Debugger i inne

Pozwoli na lepszą ochronę tworzonych aplikacji przed stosowaniem inżynierii odwrotnej przez atakujących jak również na obchodzenie niektórych z zabezpieczeń dzięki zdobytej wiedzy

Nauka identyfikowania formatów plików, algorytmów (w tym algorytmy kryptograficzne) oraz monitorowania działania aplikacji

Zapewnienie podstawy dla kolejnych szkoleń z zakresu bezpieczeństwa dotyczących analizy malware, inżynierii odwrotnej na platformach mobilnych oraz technik informatyki śledczej i analizy powłamaniowej

Program

  • Co może podlegać inżynierii wstecznej
  • Czym jest inżynieria odwrotna oprogramowania
  • Legalność inżynierii wstecznej
  • Jakie są etapy procesu reverse engineering?
  • Zastosowania reverse engineering: kompatybilność, wyszukiwanie błędów, analiza złośliwego kodu, łamanie zabezpieczeń, odzyskiwanie kodu źródłowego, modyfikacja i poprawianie oprogramowania (reengineering)
  • Działanie procesora
  • Instrukcje
  • Proste programy w asemblerze
  • Różnice pomiędzy platformami x86 a x86-64
  • Asemblery NASM i FASM
  • Kompilacja programów w assemblerze
  • Śledzenie programów z użyciem debuggera: x64dbg
  • Sztuczki „antydebug”: wykrywanie śledzenia i piaskownicy (sandbox)
  • Wykrywanie maszyn wirtualnych
  • Zaciemnianie znaczenia kodu asemblera (obfuskacja kodu)
  • Optymalizacja kodu kompilowanego
  • Maszyny pseudowirtualne
  • Wykrywanie modyfikacji i pułapek
  • Zabezpieczenia warstwowe i emulacja kodu
  • Użycie protektorów i pakerów
  • Zaciemnianie kodu w językach opartych o maszyny wirtualnego na przykładzie yGuard, Proguard, Excelsior JET
  • Identyfikacja celu
  • Monitorowanie celu
  • Usunięcie utrudnień
  • Deasemblacja
  • Identyfikacja algorytmów i bloków budujących np. funkcji bibliotecznych
  • Dekompilacja i rekonstrukcja kodu źródłowego
  • Wykorzystanie instrumentacji i profilowania
  • Detekcja formatów pliku wykonywalnego
  • Detekcja pakerów i protektorów
  • Identyfikacja ciągów znaków w tym ukrytych ścieżek
  • Narzędzia: PEiD, PEbear
  • Otwieranie plików i ścieżek rejestru
  • Komunikacja sieciowa
  • Narzędzia: Process Monitor (Regmon+Filemon)
  • Ręczne i automatyczne usuwanie pakerów i protektorów
  • Manualna rekonstrukcja plików wykonywalnych
  • Narzędzia: OllyDbg, OllyDump
  • Techniki debugowania
  • Używanie debuggera
  • Narzędzia: Immunity Debugger, OllyDbg, WinDbg
  • Użycie maszyn wirtualnych i zdalnego debugowania
  • Wykorzystanie w celu śledzenia
  • Narzędzia: PIN Framework
  • Co to jest deasemblacja, trudności deasemblacji
  • Proces deasemblacji: IDA Pro
  • Identyfikacja funkcji bibliotecznych
    • Jak działa mechanizm FLIRT?
    • Przygotowywanie sygnatur
  • Zastosowania skryptów IDC w IDA Pro
  • Skrypty w IDAPython
  • Debugger i emulator IDA Pro
  • Pliki natywne (.exe - PE i PE64)
    • Format pliku
    • Proces ładowania i wykonywania pliku przez system
    • Zasoby i edycja zasobów
  • Visual Basic i języki posługujące się bytecode (p-code)
    • Dedykowane dekompilatory
  • Delphi i C++ Builder
    • Dedykowane narzędzia: DeDe
  • Cele egzotyczne: pliki obiektowe, skompilowane pliki skryptów w językach interpretowanych typu Python
  • Pliki natywne - ELF i a.out
  • Pliki obiektowe
  • Dedykowane narzędzia Linux: GDB, Fenris, IDA Pro etc
  • Użycie dekompilatorów Java
  • Użycie deasemblerów bajtkodu (bytecode) dla Java
  • Zabezpieczanie i utrudnianie reverse engineeringu kodu Java
  • Użycie dekompilatorów - Reflector
  • Użycie deasemblerów Intermediate Languange (ildasm)
  • Zabezpieczanie i utrudnianie reverse engineeringu kodu .NET
  • Tablice metod wirtualnych
  • Mangling
  • Konstruktory i destruktory
  • Argumenty funkcji i metod
  • Zmienne i zmienne rejestrowe
  • Informacje symboliczne (symbole debugowania)
  • Przykłady dla Visual C++, GCC
  • Cele tworzone przez inne kompilatory: Watcom, Borland C/C++
  • Pliki .com i .exe 16-bit
  • Pascal, FoxPro etc
  • Obserwacja symptomów działania
  • Identyfikacja przepływu danych
  • Wyodrębnianie bloków składowych
  • Metody identyfikacji: magiczne ciągi, sygnatury metod bibliotecznych, metody heurystyczne
  • Identyfikacja algorytmów kryptograficznych
  • Wykorzystanie snifferów
  • Zautomatyzowany reversing protokołów
  • Narzędzia: Hachoir
  • Typowe zagadnienia spotykane w plikach: sygnatury, sumy kontrolne, kompresja
  • Narzędzia: MultiExtractor

Autor szkolenia:

Sebastian Chmielewski

Expert QA z ponad 12 letnim doświadczeniem, ze specjalizacją w technicznej stronie testowania: testach automatycznych, testach wydajności a ostatnio w testach penetracyjnych i zapewnieniu bezpieczeństwa (jako, że testowanie bezpieczeństwa to po prostu bardzo dokładne testowanie oprogramowania). Zainteresowania to literatura postapokaliptyczna, idolem jest McGyver i Robinson Cruzoe a wolny czas spędzam z rodziną, często ogladając z synami dema dla Commodore 64 ;)

POLITYKA COOKIES:

Korzystamy z plików cookies, by móc jak najlepiej dostosować stronę do Twoich potrzeb oraz wyświetlać Ci przydatne i adekwatnych dla Ciebie reklamy w serwisie i poza nim. Możesz kontrolować ustawienia ciasteczek w swoich ustawieniach swojej przeglądarki. Odwiedzając tę stronę, wyrażasz zgodę na wykorzystywanie przez nas plików cookies.