Trwają zapisy do grupy

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

Szkolenie reverse engineering kodu w Windows i Linux uczy analizy, zabezpieczania i ochrony aplikacji przed inżynierią odwrotną, obejmuje praktyczne warsztaty z użyciem narzędzi takich jak IDA Pro, Ghidra, x64dbg, GDB, Radare2 oraz metody obfuskacji, detekcji i rekonstrukcji kodu

  • Trenerzy praktycy
  • Kameralne grupy

Czas trwania szkolenia:5 dni (40h)

Poziom zaawansowania:

Kod kursu:RE

cyberbezpieczenstwoochrona-oprogramowaniaanaliza-kodu

Dostępne terminy szkolenia

  • Termin
  • Trener
  • Cena
  • Zapis
  • Lokalizacja

Termin:

16 marca
Trwają zapisy na szkolenieDostępne w BUR

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

Forma szkolenia

Interesuje Cię szkolenie stacjonarne?

Powiadom o kolejnych terminach

Interesuje Cię szkolenie w innym terminie?

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

Cele szkolenia

  • Szkolenie przygotowuje do samodzielnego analizowania i rozpoznawania technik inżynierii odwrotnej stosowanych w aplikacjach desktopowych na platformach Windows i Linux

  • Szkolenie uczy stosowania narzędzi do deasemblacji, debugowania, dekompilacji oraz monitorowania działania programów w celu identyfikacji algorytmów i formatów plików

  • Szkolenie rozwija umiejętność zabezpieczania własnych aplikacji przed reverse engineeringiem poprzez wdrażanie technik obfuskacji, antydebugowania i wykrywania modyfikacji

  • Szkolenie pokazuje, jak analizować i rekonstruować kod źródłowy oraz identyfikować podatności i mechanizmy zabezpieczeń w oprogramowaniu

  • Szkolenie omawia etapy procesu reverse engineeringu, od identyfikacji celu po rekonstrukcję kodu, przygotowując do dalszych szkoleń z zakresu bezpieczeństwa IT


Dla kogo?

  • Szkolenie adresowane jest do programistów, testerów oraz specjalistów ds. bezpieczeństwa aplikacji z doświadczeniem w pracy z systemami Windows lub Linux

  • Przeznaczone dla osób posiadających podstawową znajomość języków C/C++, Java lub .NET oraz rozumiejących architekturę komputerów


Efekty kształcenia

  • Uczestnik analizuje kod maszynowy i pliki wykonywalne na różnych platformach

  • Uczestnik stosuje narzędzia do deasemblacji, debugowania i dekompilacji

  • Uczestnik identyfikuje i omija zabezpieczenia programów

  • Uczestnik wdraża techniki obfuskacji i antydebugowania

  • Uczestnik rozpoznaje algorytmy i formaty plików

  • Uczestnik monitoruje i rekonstruuje działanie 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


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 szkolenia

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

Ekspert QA z ponad 12-letnim doświadczeniem, specjalizujący się w zapewnianiu bezpieczeństwa produktów oraz szeroko pojętym zapewnieniu jakości oprogramowania. Moje kompetencje obejmują automatyzację testów funkcjonalnych i wydajnościowych, testy penetracyjne, a także przeglądy kodu, co pozwala na identyfikację i eliminację potencjalnych zagrożeń już na najwcześniejszych etapach cyklu życia aplikacji. W trakcie mojej kariery osiągnąłem znaczące sukcesy w dziedzinie bug bounty – zgłosiłem 48 podatności…

Wybrane opinie

Przeczytaj pozytywne opinie pochodzące z ankiet satysfakcji z naszych szkoleń wypełnianych wyłącznie przez ich uczestników po realizacji usługi

4.8
Ikona podpowiedziŚrednia ocen Sages w serwisie Google Ocena pochodzi ze średniej ocen Sages w serwisie Google i nie jest weryfikowana

13.10.2023

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

Prowadzacy przedstawial material w praktyczny sposob. Mozna bylo poczuc, ze posiadal duza, pratyczne wiedze

Więcej opinii