Adresaci szkolenia

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

Cel szkolenia

Celem szkolenia jest przedstawienie metod wykorzystywanych podczas audytów bezpieczeństwa oraz testach penetracyjnych przeznaczonych do znajdowania i wykorzystania błędów w aplikacjach. 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). 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.

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

Parametry szkolenia

3 * 8 godzin (7 godzin netto) wykładów połączonych z warsztatami i ćwiczeniami (z wyraźną przewagą warsztatów).

Wielkość grupy: 5 - 8 osób

Program szkolenia

  • Wprowadzenie
    • 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
  • 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
    • do czego można wykorzystać błędy - DoS vs. zdobycie kontroli
  • Metody wyszukiwania błędów
    • 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
  • Narzędzia i ćwiczenia praktyczne
    • lint, FindBugs, PMD oraz SonarQube
    • Valgrind
    • zzuf, SPIKE, AFL
    • IDA, IDASploit
    • BinNavi
  • Kody powłoki (shellcode)
    • Po co shellcode?
    • Budowa kodu shellcode
      • Linux
      • Windows
  • Implementacja PoC (Proof of Concept)
    • Samodzielny program exploit - przykłady w C i Python
    • Moduł Metasploit - implementacja przykładowego exploita
  • 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++

Pytania?

* Wymagane.


Konsultant on-line
Skorzystaj z usług naszego konsultanta on-line.
Naciśnij przycisk ‘Skorzystaj’ aby przejść do okienka czatu
Kontakt
ul. Nowogrodzka 62c
02-002 Warszawa
Telefon +48 22 2035600
Fax +48 22 2035601
Email