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

LICZBA DNI: 5 (40h)

KOD KURSU: RE

Powiadom
o kolejnych terminach

# reverse-engineering

Autor szkolenia:
Sebastian Chmielewski

Szkolenie na zamówienie

Szkolenie dostosowane do potrzeb Twojego zespołu. Dostępne wyłącznie na zamówienie.

  • Dostosowany program
  • Indywidualna wycena
  • Dowolny termin

O szkoleniu

DLA KOGO?

Szkolenie 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 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?
  • zastosowanie 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

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.