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:

9 grudnia
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 ;