Wykrywanie i unikanie podatności w aplikacjach natywnych

Czas trwania szkolenia:3 dni (24h)

Kod kursu:XPL

Poziom zaawansowania:
security

Szkolenie na zamówienie

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

  • Dostosowany program
  • Indywidualna wycena
  • Dowolny termin
Icon with laptop

O szkoleniu Wykrywanie i unikanie podatności w aplikacjach natywnych

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

Dla kogo?

  • Szkolenie jest adresowane do specjalistów z zakresu bezpieczeństwa aplikacji, testerów wykonujących testy penetracyjne oraz programistów

Wymagania

  • Od uczestników wymagana jest znajomość zasad działania komputera na poziomie architektury oraz biegłe posługiwanie się wybranym systemem operacyjnym (Windows lub Linux)
  • Wymagana jest też umiejętność rozumienia kodu napisanego w języku C/C++ oraz asemblera x86 i x86-64
  • Pomocne jest wcześniejsze odbycie szkolenia z Inżynierii wstecznej (Reverse engineering)

Zalety

  • Istotnym elementem szkolenia są warsztaty, podczas których uczestnicy przećwiczą poznane techniki na praktycznych przykładach z wykorzystaniem wiodących narzędzi i technik
  • 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

Cele szkolenia

  • Uczestnik szkolenia będzie umiał identyfikować podatności, wykorzystywać je do zakłócenia bądź przejęcia kontroli nad systemem oraz przygotować odpowiedni kod PoC (Proof of Concept)

Program

Wprowadzenie

  • Linux
  • Narzędzia: GDB+GEF
  • Windows
  • Narzędzia: Ghidra, IDA Pro, x64dbg

Wyszukiwanie błędów - podejście

  • Oprogramowanie z i bez dostępnego kodu źródłowego

Kategorie błędów

  • Przepełnienie stosu (stack overflow)
  • Łańcuchy formatujące (format string)
  • Przepełnienie sterty (heap overflow)
  • Sytuacje wyścigu (race condition)
  • Użycie zwolnionej pamięci (use after free)
  • Użycie nieaktualnej wartości (time of check, time of use)
  • Odmowa usługi

Metody wyszukiwania błędów

  • Analiza statyczna z użyciem Semgrep, Graudit, CodeQL
  • Fuzzing statyczny z użyciem Radamsa i Boofuzz
  • Fuzzing dynamiczny - zwiększanie skuteczności fuzzera przez badanie pokrycia kodu i modyfikację próbek z użyciem AFL++ i Honggfuzz
  • Generowanie błędów (fault injection)
  • Pokrycie kodu i wnioski z pokrycia kodu z użyciem IDA Pro/Binary Ninja i Lightning
  • Porównywanie zmian w kodzie oraz poprawek z użyciem IDA Pro i Diaphora

Kody powłoki (shellcode) dla systemów Linux i Windows

  • budowa shellcode z użyciem ROPgadgets
  • zdobycie adresów bazowych z wykorzystaniem wycieków pamięci (infoleak)

Implementacja PoC (Proof of Concept)

  • Samodzielny program exploit - przykłady w C i Python
  • Implementacja przykładowego exploita z użyciem pwntools

Mechanizmy zabezpieczające na poziomie OS

  • W^X
  • Niewykonywalny stos
  • Filtry - shellcode z wykorzystaniem Unicode/ASCII
  • ASLR

Mechanizmy zabezpieczające na poziomie kompilatora i języka programowania

  • Wykrywanie nadpisania stosu (stack canaries)
  • Użyteczne wzorce i biblioteki
  • Przykłady z użyciem GCC i Visual C++

Podobne szkolenia