Trwają zapisy do grupy

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

Szkolenie "Inżynieria odwrotna kodu w systemach Windows i Linux oraz metody zabezpieczania programów" wprowadzi Cię w zagadanienia inżynierii odwrotnej. Sprawdź program.

3950 PLN+23% VAT (4858 PLN brutto / 1 os.)

Czas trwania szkolenia:5 dni (40h)

Poziom zaawansowania:

Kod kursu:RE

reverse-engineering

Dostępne terminy

  • Termin
  • Trener
  • Cena
  • Zapis
  • Lokalizacja

Termin:

19 sierpnia
Trwają zapisy na szkolenie

Trener:

Trener-Sages

Cena:

3950 PLN netto
Ikona podpowiedziDowiedz się więcej o cenach szkoleń - zapraszamy do kontaktu
+23% VAT

Lokalizacja:

Zdalne
Zdalne
Ikona podpowiedziZapytaj o inne lokalizacje - w tym celu skorzystaj z chatu

Termin:

7 października
Trwają zapisy na szkolenie

Trener:

Sebastian Chmielewski

Cena:

3950 PLN netto
Ikona podpowiedziDowiedz się więcej o cenach szkoleń - zapraszamy do kontaktu
+23% VAT

Lokalizacja:

Zdalne
Zdalne
Ikona podpowiedziZapytaj o inne lokalizacje - w tym celu skorzystaj z chatu

Forma szkolenia

Interesuje Cię szkolenie stacjonarne?

Dostępne terminy

Interesują Cię inne terminy?

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

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, Ghidra, x64dbg, GDB, Radare2 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ń zakresu bezpieczeństwa dotyczących testowania bezpieczeństwa i wyszukiwania podatności, inżynierii odwrotnej na platformach mobilnych oraz technik informatyki śledczej i analizy powłamaniowej

Dla kogo?

  • Szkolenie Inżynieria odwrotna kodu jest adresowane do programistów, testerów oraz specjalistów z zakresu bezpieczeństwa aplikacji

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
  • Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań
  • Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką
  • Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how

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

W cenie otrzymasz:

  • Materiały szkoleniowe
  • Certyfikat ukończenia szkolenia
  • W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki

Program

Pobierz program w PDF

Wprowadzenie do tematyki reverse engineering

  • 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)

Podstawy asemblera

  • 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

Utrudnianie inżynierii odwrotnej - jak się zabezpieczyć?

  • Sztuczki „antydebug”: wykrywanie śledzenia i piaskownicy (sandbox)
  • Wykrywanie maszyn wirtualnych
  • Zaciemnianie znaczenia kodu asemblera (obfuskacja kodu)
  • Optymalizacja kodu kompilowanego
  • Wykrywanie modyfikacji i pułapek
  • Zabezpieczenia warstwowe i emulacja kodu
  • Użycie protektorów i pakerów
  • rekonstrukcja spakowanych plików
  • Zaciemnianie kodu w językach opartych o maszyny wirtualne, stworzenie modułu disassemblera i emulatora dla maszyny wirtualnej

Etapy procesu RE

  • 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

Identyfikacja celu

  • 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

Monitorowanie celu

  • Otwieranie plików i ścieżek rejestru
  • Komunikacja sieciowa
  • Narzędzia: Process Monitor (Regmon+Filemon)

Usuwanie utrudnień w reverse engineering

  • Ręczne i automatyczne usuwanie pakerów i protektorów
  • Manualna rekonstrukcja plików wykonywalnych
  • Narzędzia: Scylla, OllyDumpEx

Debugowanie

  • Techniki debugowania
  • Używanie debuggera
  • Narzędzia: x64dbg

Instrumentacja i profilowanie

  • Wykorzystanie w celu śledzenia pokrycia kodu i przeprowadzania obserwacji typu Side-Channel
  • Narzędzia: PIN Framework

Deasemblacja kodu

  • Co to jest deasemblacja, trudności deasemblacji
  • Proces deasemblacji: IDA Pro i Ghidra
  • Identyfikacja funkcji bibliotecznych
  • Zastosowania skryptów IDC w IDA Pro
  • Skrypty w IDAPython
  • Debugger i emulator IDA Pro

Dekompilacja kodu za pomocą Ghidra

Postępowanie z typowymi celami na platformie Windows

  • Pliki natywne (.exe - PE i PE64)
  • Visual Basic i języki posługujące się bytecode (p-code)
  • Delphi i C++ Builder

Postępowanie z typowymi celami na platformie Linux

  • Pliki natywne - ELF
  • Dedykowane narzędzia Linux: EDB, GDB+GEF, Radare
  • automatyzacja zadań w debuggerach z użyciem skryptów

Postępowanie z programami Java

  • Użycie dekompilatorów Java - JD
  • Zabezpieczanie i utrudnianie reverse engineeringu kodu Java

Postępowanie z programami .NET

  • Użycie dekompilatorów - dnSpyEx
  • Zabezpieczanie i utrudnianie reverse engineeringu kodu .NET

Charakterystyczne cechy języków C i C++

  • 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, Clang, Borland C/C++

Reversing algorytmów

  • 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
  • Identyfikacja algorytmów z pomocą kodu źródłowego
  • Identyfikacja zmienionych części kodu za pomocą porównania plików (patch-diffing)

Reversing protokołów komunikacyjnych

  • Wykorzystanie snifferów

Reversing formatów plików

  • Typowe zagadnienia spotykane w plikach: sygnatury, sumy kontrolne, kompresja
  • Użycie hexedytora, wzorców (Templates) i skryptów
  • Narzędzia: MultiExtractor, 010editor

Przykłady uzycia narzędzi Symbolic Execution (angr, manticore)

Autorem szkolenia jest 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 ;