OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy...

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

Transcript of OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy...

Page 1: OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

7OWASP

Zastosowanie fuzzerów

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

Page 8: OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

11OWASP

Process Explorer

Page 12: OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

12OWASP

Process Monitor

Page 13: OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

13OWASP

Fuzzing a SDLC

Wstępna analiza

Projektowanie

ImplementacjaTestowanie

Utrzymanie

Page 14: OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

14OWASP

Fuzzing a SDLC

Wstępna analiza

Projektowanie

ImplementacjaTestowanie

Utrzymanie

Fuzzing

Page 15: OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

18OWASP

WebScarab Fuzzer plugin

Page 19: OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

19OWASP

JBroFuzz

Page 20: OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

23OWASP

Podsumowanie

Page 24: OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

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 - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

26OWASP

Informacje dodatkowe

Prezentacje:PyCON 2008SEConference 2009

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

Page 27: OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

27OWASP

09-10.04.2010www.seconference.pl

Page 28: OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

28OWASP

Pytania

Page 29: OWASP - Piotr Łaskawiec - FuzzingPopularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox,

29OWASP

Dziękuję za uwagę!