Od zera do pierwszego 0-daya! Warsztaty automatycznego wyszukiwania podatności i ich analizy | Instytut PWN
WARSZTAT - PWNing Online Security & Code 2020

Od zera do pierwszego 0-daya! Warsztaty automatycznego wyszukiwania podatności i ich analizy

Do konferencji zostało jeszcze:
20
dni
20
godziny
22
minuty
21
sekundy

Jeżeli chcesz “mieć” swoje CVE to trafiłeś idealnie!

Warsztat jest opracowany z myślą o wprowadzeniu uczestników w arkana najlepszych metod i narzędzi służących do automatycznego wykrywania podatności i analizy błędów w oprogramowaniu w praktyczny sposób.

Na początku skupimy się na zrozumieniu technik: analizy binarnej, wyszukiwania różnych typów podatności oraz debuggowania. “Wgryziemy” się w praktyczny fuzzing i błędy, które spędzają sen z powiek programistom za pomocą swojego niedeterministycznego występowania. Uczestnicy poznają techniki do analizy słabych stron aplikacji, pisania gramatyk oraz pozyskiwania korpusów testowych gwarantujących interesujące wyniki.

Po zrozumieniu aspektów bughuntingu nadejdzie czas na automatyzację analizy podatności i sposoby debuggowania gwarantujące szybkie znalezienie wadliwych elementów kodu.

Szkolenie skupia się na architekturze x86/x64 i atakowaniu parserów (tekstowych, sieciowych, binarnych), fuzzingu sieciowym na platformach Windows i Linux.

To szkolenie nauczy Cię…

  • charakterystyk klas podatności i sposobów obrony przed nimi,
  • technik automatycznego poszukiwania błędów i doboru najlepszych narzędzi do wykrywania luk,
  • podstaw analizy binarnej,
  • analizować i automatyzować analizę znalezionych błędów,
  • tunigować sieć, pliki, binaria i skalować proces fuzzingu na wielu poziomach,
  • pisania własnego fuzzera dla wybranego projektu open-source,
  • gotowego do wdrożenia w proces wytwarzania kodu podejścia Fuzz-Driven Development.

Program

19 listopada
09:00
Dlaczego warto szukać podatności bezpieczeństwa?

Proces Microsoft Security Development Lifecycle (SDL)

Ewolucja krytyczności błędów
Dlaczego warto to robić za pomocą fuzzerów i metod automatycznych?
Najczęściej występujące problemy bezpieczeństwa w oprogramowaniu i mechanizmy mitygacji
  • Klasy podatności
    • Business-logic vulns
    • OOBRs
    • Buffer overflows
    • UAF
    • Double free
    • Use after scope
    • Initialization order bugs
    • Dziwne rzeczy z kodem
  • Mechanizmy ochrony
    • RELRO
    • ASLR
    • DEP / NX
    • SEHOP
    • CFI
    • Code & pointer signing
    • Przejście na inne języki programowania?
Proces bughuntingu
  • 8 praw fuzzingu
  • Workflow poszukiwania podatności
  • Fuzz-Driven Development
Fuzzery pod maską i niejedno imię fuzzera
  • Guided fuzzing
  • Dumb fuzzing
  • Mutation based fuzzing
  • Generation based fuzzing
  • Hypervisor specjalizowany pod fuzzing
  • Antyfuzzing
Jak znaleźć interesujący komponent do ataku?
  • Co chcemy atakować?
-17:00
Dlaczego Linux jest preferowany do testów?
20 listopada
9:00
Atakowanie whitebox
  • Pokrycie kodu (C/C++)
    • Pokrycie kodu – filar whitebox’owej analizy!
    • Zarządzanie i tworzenie korpusów testowych
    • Budowa testowanego projektu ze wstawkami pokrycia kodu
    • Korpus testowy
    • Zbieranie informacji o code coverage
    • Wizualizacja pokrycia kodu
    • Poszukiwanie brakujących elementów korpusu i ręczne craftowanie inputu
    • [Praca domowa] Pokrycie kodu – wersja hardcore!
  • AFL++ (C/C++)
    • Kompilacja testowanego projektu z AFL i A/MSAN
    • Pozyskanie i minimalizacja korpusu
    • Fuzzing kilkoma instancjami AFL++
    • Praca ze słownikami
    • Persistent Mode
    • ASAN vs. LibDislocator
    • Własne “mieszacze”
    • Bitwa na moc!
    • Inne tryby pracy AFL++
    • [Praca domowa] AFL++ i dowolny projekt
  • Honggfuzz (C/C++)
    • Kompilacja projektu z honggfuzz i UBSAN
    • Minimalizacja korpusu testowego
    • Słowniki
    • Kilka instancji hfuzz
    • Sprzętowe pokrycie kodu
    • Shots fired!
    • Persistent Mode w dwóch wydaniach
    • Własne “mieszacze”
    • Wszystkie inne ciekawe opcje
    • [Praca domowa] honggfuzz + Python 3
  • LLVM LibFuzzer (C/C++)
    • Poznanie kodu harnessu
    • Kompilacja projektu z fuzzerem
    • Minimalizacja korpusu
    • Słowniki
    • Fuzzing w wielkiej skali
    • Fuzzing w wielkiej skali: fork server
    • (Prawie) wszystkie opcje fuzzera
    • Własne “mieszacze”
    • Punkt wyjścia do harnessu
    • Tuning harnessu
    • Testy opcji fuzzera
    • Google OSS-Fuzz & Wireshark
    • [Praca domowa] LibFuzzer + dowolny projekt OSS-Fuzz
    • [Praca domowa] [Eksperymentalne] Fuzzing z DFSAN
  • sharpfuzz (C#)
    • Przygotowanie projektu + harness
    • Uruchomienie AFL ze środowiskiem .NET
    • Sharpfuzz + LibFuzzer + CoreFX
    • [Praca domowa] sharpfuzz + dowolny projekt .NET
  • python-afl (Python)
    • Harness w Pythonie 3
    • Persistent Mode
    • Uruchomienie fuzzera
    • [Praca domowa] python-afl i testy innych projektów
  • DeepState (C/C++)
    • Poznanie arsenału
    • „Harness” i filozofia unit-testów
    • Uruchomienie testów
    • Rozpoczynamy testy „na produkcji”
    • Wbudowany fuzzer
    • DeepState + AFL
    • DeepState + honggfuzz
    • DeepState + LibFuzzer
    • DeepState + Eclipser
    • [Praca domowa] DeepState + dowolny projekt
  • Inne rodzaje fuzzerów (C/C++)
    • pythia – czyli jak trudno jest znaleźć awarię w kodzie?
    • QSYM – concolic & symbolic execution
    • Fuzzing wspomagany machine learningiem
Atakowanie blackbox (bez potrzeby posiadania kodu źródłowego)
  • AFL++ Blackbox
    • QEMU Mode
    • [Praca domowa] Blackbox’owy AFL++ z dowolnym projektem
    • [Praca domowa] [Eksperymentalne] QEMU Mode i fuzzing binarek Windows
    • [Praca domowa] [Eksperymentalne] Instalacja Dyninst i statyczna instrumentacja z jego pomocą
  • Honggfuzz Blackbox
    • QEMU + honggfuzz = <3
    • [Praca domowa] Blackbox’owy honggfuzz z dowolnymi binarkami OS
  • Fuzzing sieciowy
    • Fuzzing poprzez sieć bez sieci!
    • boofuzz czyli customowe fuzzery sieciowe
    • Trochę lepszy boofuzz, czyli Fuzzowski
    • Testy różnych rodzajów fuzzingu sieciowego
  • winafl – fuzzing na platformie Windows
    • Uruchomienie winafl
    • Minimalizacja korpusu
    • winafl + harness
    • winafl + żywy organizm – testy IrfanView
    • [Praca domowa] Weekend z winafl
Atakowanie greybox (z wiedzą o formatach przyjmowanych przez program)
  • AFLSmart (C/C++)
    • Nowe odcienie szarości
    • Czas na testy z opisem danych
    • [Praca domowa] Zrobimy dowolny projekt na szaro!
  • aflgo (C/C++)
    • Nowy, stary AFL
    • [Praca domowa] Zrobimy dowolny projekt na szaro! ^2
Analiza statyczna
  • Analiza za pomocą Clang Static Analyzer
  • Analiza za pomocą cppcheck
  • [Praca domowa] Analiza statyczna znalezionych błędów
Analiza dynamiczna
  • DrMemory, czyli Valgrind na sterydach
  • Valgrind, trochę biedniejszy kuzyn…
  • [Praca domowa] Analiza dynamiczna w praktyce
Analiza niedeterministycznych awarii za pomocą rr
  • Instalacja i przygotowanie projektu do badania
  • Debugowanie i analiza podatności
FuzzManager - raportowanie i zarządzanie wieloma "fuzzing jobami"
  • Instalacja serwera
  • Konfiguracja klienta
  • Badanie pokrycia kodu
Co dalej?
  • Nauka exploitacji!
  • Rode0day
  • Open Research Attack Teams
-17:00
Inne
  • Materiały dodatkowe
  • Samouczek Docker
  • Słownik pojęć

EKSPERT

Kamil Frankowicz foto

KAMIL FRANKOWICZ

fan fuzzingu oraz nowych metod powodowania awarii programów. Na co dzień broni bezpieczeństwa polskiego Internetu, pracując jako Senior Security Engineer w CERT Polska.

Do jego specjalności należy psucie – często nieintencjonalne. Odkrywca ponad 130 podatności bezpieczeństwa i 500+ błędów w oprogramowaniu.

W czasie wolnym lata dronem, fotografuje i nieregularnie opisuje swoje znaleziska na blogu związanym z bughuntingiem.

Uczestnicy

Kto powinien wziąć udział w szkoleniu?

  • specjaliści ds. bezpieczeństwa IT i pentesterzy,
  • programiści i testerzy,
  • badacze bezpieczeństwa IT,
  • dostawcy rozwiązań w zakresie bezpieczeństwa IT,
  • pasjonaci bezpieczeństwa teleinformatycznego,
  • wszyscy, którzy myślą o karierze w obszarze ofensywnego bezpieczeństwa aplikacji!

 


 -Wymagania:

  • Podstawy programowania w C/C++ lub Python
  • Podstawy obsługi systemów operacyjnych z rodziny GNU\Linux i Windows
  • Własny komputer:
    • 64-bitowy system operacyjny Windows lub GNU/Linux (preferowane pochodne Debiana, np. Ubuntu)
    • zainstalowane oprogramowanie VirtualBox
    • minimum 8 GB RAM, sugerowane 16+ GB
    • minimum 2-rdzeniowy procesor
    • minimum 50GB wolnego miejsca na dysku

Miejsce i termin

19-20 LISTOPADA, ONLINE
virtual meeting
transmisjeonline.pl

Podobne wydarzenia:

Konferencja
PWNing Online Security & Code 2020

Formularz rejestracyjny

Warunki uczestnictwa

Warunkiem udziału w warsztacie jest wypełnienie poniższego formularza zgłoszeniowego oraz akceptacja regulaminu.

Podstawą do uiszczenia należności jest faktura pro forma, która zostanie przesłana w postaci PDF na adres mailowy podany w zgłoszeniu.

Nieuregulowanie faktury pro forma nie jest równoznaczne z rezygnacją z udziału w warsztacie.

Zasady składania rezygnacji zostały określone w regulaminie.

W przypadku złożenia rezygnacji w terminie późniejszym niż 14 dni kalendarzowych przed terminem wydarzenia, organizator zastrzega sobie prawo, zgodnie z regulaminem, do obciążenia zamawiającego pełnymi kosztami udziału w konferencji.

——————————————————————–

Warsztaty odbędą się w formule online za pośrednictwem platformy Transmisje Online

Termin

19-20 LISTOPADA 2020, ONLINE

Cennik/kod

przedsprzedaż do 30 września 2020
3499 PLN
netto + Vat 23%
(do zapłaty: 4303.77 PLN)
od 01 października 2020
3999 PLN
netto + Vat 23%
(do zapłaty: 4918.77 PLN)

Dane do wystawienia faktury VAT

Firma/Instytucja
Osoba fizyczna

Warunki zwolnienia z VAT

Tak - oświadczam, że udział w szkoleniu finansowany jest ze środków publicznych
Nie - udział w szkoleniu nie jest finansowy ze środków publicznych

Typ płatności

Przelew po otrzymaniu faktury PRO FORMA
Pay-U