Wykrywanie i unikanie podatności w aplikacjach natywnych

LICZBA DNI: 3 (24h)

KOD KURSU: XPL

# security

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

Sugerowana 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.

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

  • Linux
    • zarządzanie pamięcią i formaty plików wykonywalnych
    • narzędzia: GDB, objdump
  • Windows
    • zarządzanie pamięcią i formaty plików wykonywalnych
    • narzędzia: IDA Pro, OllyDbg, WinDbg, Immunity Debugger
  • oprogramowanie z i bez dostępnego kodu źródłowego
  • 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
  • do czego można wykorzystać błędy - DoS vs. zdobycie kontroli
  • analiza statyczna
  • fuzzing statyczny
  • fuzzing dynamiczny - zwiększanie skuteczności fuzzera przez badanie pokrycia kodu i modyfikację próbek
  • generowanie błędów (fault injection)
  • pokrycie kodu i wnioski z pokrycia kodu
  • porównywanie zmian w kodzie oraz poprawek
  • lint, FindBugs, PMD oraz SonarQube
  • Valgrind
  • zzuf, SPIKE, AFL
  • IDA, IDASploit
  • BinNavi
  • Po co shellcode?
  • Budowa kodu shellcode
    • Linux
    • Windows
  • Samodzielny program exploit - przykłady w C i Python
  • Moduł Metasploit - implementacja przykładowego exploita
  • W^X
  • Niewykonywalny stos
  • Filtry - shellcode z wykorzystaniem Unicode/ASCII
  • ASLR
  • wykrywanie nadpisania stosu (stack canaries)
  • użyteczne wzorce i biblioteki
  • przykłady z użyciem GCC i Visual C++

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.