29
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP Foundation OWASP http://www.owasp.org Fuzzing Piotr Łaskawiec J2EE Developer/Pentester Metrosoft (www.metrosoft.com) [email protected] 14.01.2010

OWASP - Piotr Łaskawiec - Fuzzing

  • Upload
    doanque

  • View
    224

  • Download
    2

Embed Size (px)

Citation preview

Page 1: OWASP - Piotr Łaskawiec - Fuzzing

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundation

OWASP

http://www.owasp.org

Fuzzing

Piotr ŁaskawiecJ2EE Developer/Pentester

Metrosoft (www.metrosoft.com)[email protected]

14.01.2010

Page 2: OWASP - Piotr Łaskawiec - Fuzzing

2OWASP

Abstract

Metody testowania aplikacjiZapewnienie bezpieczeństwa aplikacjiFuzzing – definicjaZastosowanie fuzzinguPodział fuzzerówFuzzing a SDLCKto korzysta z fuzzerów?Przykładowe fuzzeryWeb application fuzzingPodsumowanie

Page 3: OWASP - Piotr Łaskawiec - Fuzzing

3OWASP

Testowanie aplikacji

Popularne testy:Testy jednostkoweTesty funkcjonalneTesty regresyjneTesty wydajnościoweTesty usability

Inna klasyfikacja:Whitebox, Graybox, Blackbox

Co z bezpieczeństwem tworzonej aplikacji?Bezpieczeństwo na poziomie projektowania,

implementacji, testowania oraz wdrażania.

Page 4: OWASP - Piotr Łaskawiec - Fuzzing

4OWASP

Zapewnianie bezpieczeństwa aplikacji

Reagowanie vs zapobieganieReagowanie:

FirewallIDS/IPSAntywirusMechanizmy uwierzytelniająceSkanery podatności (Nessus, Nikto, etc.)Itd.

Zapobieganie:Fuzzing!Audyt kodu/RE

Page 5: OWASP - Piotr Łaskawiec - Fuzzing

5OWASP

Fuzzing - definicja

Fuzzing jest metodą testowania oprogramowania pod kątem występowania luk w bezpieczeństwie oraz nieprzewidzianych reakcji programu, za pomocą częściowo losowych (pseudolosowych) danych.

Fuzzing najczęściej jest procesem w pełni zautomatyzowanym - „uruchom i czekaj na wyniki”.

Page 6: OWASP - Piotr Łaskawiec - Fuzzing

6OWASP

Fuzzing – co to znaczy w praktyce?

Fuzzing == Negative testingCelem fuzzera jest przekazanie do testowanej

aplikacji wadliwych (zbyt długi ciąg znaków, niepoprawne kodowanie, wadliwy format pliku, zła kolejność komunikatów) danych.

Liczymy na zaakceptowanie wadliwych danych i wystąpienie nieprzewidzianej reakcji programu – DoS, wyświetlenie komunikatu o błędzie, zwiększenie zapotrzebowania na zasoby.

Naszym celem jest „zepsucie” aplikacji!

Page 7: OWASP - Piotr Łaskawiec - Fuzzing

7OWASP

Zastosowanie fuzzerów

Aplikacje działające lokalnieAplikacje weboweWebService'yAplikacje siecioweKontrolki ActiveXPlikiBiblioteki…

Page 8: OWASP - Piotr Łaskawiec - Fuzzing

8OWASP

Klasyfikacja fuzzerów

Istnieje wiele kryteriów klasyfikacji fuzzerówPrzykłady:

Fuzzery

Mutacyjne Generacyjne Ewolucyjne

Fuzzery

Manualne Półautomatyczne/Automatyczne

Fuzzery

Aplikacji webowych Protokołów ...

Page 9: OWASP - Piotr Łaskawiec - Fuzzing

9OWASP

Proces fuzzingu

Konfiguracja wstępna Przekazanie danychdo programu. Raportowanie

Monitorowanie

Przygotowanie środowiska

Przygotowanie programu

Określenie punktówwejściowych

Przygotowanie danychwejściowych

Page 10: OWASP - Piotr Łaskawiec - Fuzzing

10OWASP

Monitorowanie testowanej aplikacji

Obserwacja zachowania programuLogi systemoweDebuggery (!exploitable...)Monitory procesów, plików, połączeń sieciowychWirtualizacja (VMWare)Modyfikacja kodu źródłowego (dodanie punktów

kontrolnych)Inne techniki (Valgrind, Guard Malloc)Techniki łączone

Page 11: OWASP - Piotr Łaskawiec - Fuzzing

11OWASP

Process Explorer

Page 12: OWASP - Piotr Łaskawiec - Fuzzing

12OWASP

Process Monitor

Page 13: OWASP - Piotr Łaskawiec - Fuzzing

13OWASP

Fuzzing a SDLC

Wstępna analiza

Projektowanie

ImplementacjaTestowanie

Utrzymanie

Page 14: OWASP - Piotr Łaskawiec - Fuzzing

14OWASP

Fuzzing a SDLC

Wstępna analiza

Projektowanie

ImplementacjaTestowanie

Utrzymanie

Fuzzing

Page 15: OWASP - Piotr Łaskawiec - Fuzzing

15OWASP

Fuzzing a SDLC

Po opublikowaniu nowej wersji, aplikacja jest testowana przez przygotowane wcześniej fuzzery.

Wyniki testów weryfikowane są przez testerów i trafiają w ręce programistów.

W razie wystąpienia błędów programiści poprawiają oprogramowanie.

Nowy build jeszcze raz przechodzi przez proces fuzzingu.

Page 16: OWASP - Piotr Łaskawiec - Fuzzing

16OWASP

Kilka przykładów

Adobe http://blogs.adobe.com/asset/2009/12/fuzzing_reader_-_lessons_learned.html

Błędy w IIS http://pentestit.com/2009/12/28/microsoft-iis-day-open/

Mozilla JavaScript fuzzer http://blog.mozilla.com/security/2007/08/02/javascript-fuzzer-available/

Microsoft MiniFuzz http://www.microsoft.com/downloads/details.aspx?FamilyID=b2307ca4-638f-4641-9946-

dc0a5abe8513&displaylang=en

Google Flayer http://code.google.com/p/flayer/

Page 17: OWASP - Piotr Łaskawiec - Fuzzing

17OWASP

Przykładowe fuzzery

Frameworki:Peach (http://peachfuzzer.com/)Sulley

Wyspecjalizowane fuzzery:JBroFuzz (OWASP)WSFuzzer (OWASP)TAOFWfuzzSpike ProxyWebFuzz

Autorskie rozwiązania

Page 18: OWASP - Piotr Łaskawiec - Fuzzing

18OWASP

WebScarab Fuzzer plugin

Page 19: OWASP - Piotr Łaskawiec - Fuzzing

19OWASP

JBroFuzz

Page 20: OWASP - Piotr Łaskawiec - Fuzzing

20OWASP

Fuzzing aplikacji webowych

Problemy:Identyfikowanie punktów wejściowych

Analiza komunikacji HTTP Webspidering Wyszukiwarki internetowe

Generowanie danych testowych Payloady zapisane w programie Bruteforce Generowanie danych na podstawie wzorców

Identyfikowanie błędów

Page 21: OWASP - Piotr Łaskawiec - Fuzzing

21OWASP

Identyfikowanie błędów

Kody odpowiedzi HTTPAnaliza treści stronyPorównywanie struktury stronyAtaki czasoweWielokrotne zapytaniaAnaliza danych jednoznacznie identyfikujących

daną stronęLogi

Page 22: OWASP - Piotr Łaskawiec - Fuzzing

22OWASP

Anty-fuzzing

Nie można bronić się bezpośrednio przed fuzzingiem!

Obrona ogólna:Walidacja danych wejściowychStosowanie się do dobrych praktyk

programistycznychDbanie o bezpieczeństwo oprogramowania przez

wszystkie fazy SDLC

Page 23: OWASP - Piotr Łaskawiec - Fuzzing

23OWASP

Podsumowanie

Page 24: OWASP - Piotr Łaskawiec - Fuzzing

24OWASP

Zalety fuzzingu

Pełna automatyzacja (w większości wypadków)Fuzzery znajdują realne podatnościMożliwość wykrycia błędów trudnych do

znalezienia poprzez manualne testyMożliwość szybkiego uzyskania zadowalających

wyników (pierwszego błędu)

Page 25: OWASP - Piotr Łaskawiec - Fuzzing

25OWASP

Wady fuzzingu

Brak możliwości wykrycia błędu logicznegoBrak możliwości wykrycia bardzo złożonych

podatności (gdzie efekt końcowy jest składową sekwencji operacji)

Trudny do sprecyzowania czas potrzebny na przeprowadzenie testów

Page 26: OWASP - Piotr Łaskawiec - Fuzzing

26OWASP

Informacje dodatkowe

Prezentacje:PyCON 2008SEConference 2009

Strony:fuzzing.eufuzzing.orgkrakowlabs.com/lof.html

Page 27: OWASP - Piotr Łaskawiec - Fuzzing

27OWASP

09-10.04.2010www.seconference.pl

Page 28: OWASP - Piotr Łaskawiec - Fuzzing

28OWASP

Pytania

Page 29: OWASP - Piotr Łaskawiec - Fuzzing

29OWASP

Dziękuję za uwagę!