Fuzzing OWASP 14.01.2010. The OWASP Foundation http://www.owasp.org. Piotr Łaskawiec J2EE Developer/Pentester



Podobne dokumenty
Jak efektywnie wykrywać podatności bezpieczeństwa w aplikacjach? OWASP The OWASP Foundation

Zapewnienie bezpieczeństwa w całym cyklu życia aplikacji (czyli dlaczego lepiej zapobiegać chorobom, niż leczyć je w zaawansowanym stadium)

Bezpieczeństwo aplikacji Czy musi być aż tak źle? OWASP The OWASP Foundation

Obsługa incydentów bezpieczeństwa: część I, z punktu widzenia menadżera. OWASP The OWASP Foundation

Narzędzia OWASP dla developerów OWASP ESAPI & AppSensor OWASP The OWASP Foundation

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

OWASP OWASP. The OWASP Foundation Cross-Site Scripting. Ryzyko do zaakceptowania? Warszawa, 27 stycznia 2011 Michał Kurek

Tester oprogramowania 2014/15 Tematy prac dyplomowych

OWASP Day - Spring of Code 2k7 OWASP The OWASP Foundation

Plan testów do Internetowego Serwisu Oferowania i Wyszukiwania Usług Transportowych

Testowanie i walidacja oprogramowania

Opis Przedmiotu Zamówienia na przeprowadzenie testów bezpieczeństwa systemu wspomagania nadzoru archiwalnego e-nadzór

OWASP OWASP. The OWASP Foundation Mariusz Burdach Prevenity

Rubik s Manager - Plan testów

Zawód tester, czyli na czym polega testowanie. Katarzyna Łabinska Justyna Sacha - Gawlik

Bezpieczeństwo aplikacji webowych - standardy, przewodniki i narzędzia OWASP OWASP The OWASP Foundation

Usługa: Audyt kodu źródłowego

Web Application Firewall - potrzeba, rozwiązania, kryteria ewaluacji.

Maciej Oleksy Zenon Matuszyk

Open(Source) Web Application Security Project

Wstęp do testowania : Szymon Ramczykowski

Bezpieczeństwo aplikacji WWW. Klasyfikacja zgodna ze standardem OWASP. Zarządzanie podatnościami

Portal Security - ModSec Enterprise

Microsoft Test Manager

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Testowanie oprogramowania. Piotr Ciskowski

Audytowane obszary IT

Szczegółowy opis przedmiotu zamówienia:

Szablon Planu Testów Akceptacyjnych

Program szkolenia: Continuous Integration i Git

Programowanie Komponentowe WebAPI

Warsztaty szkoleniowe. Technologia SafetyLon w systemach związanych z bezpieczeństwem funkcjonalnym Narzędzia SafetyLon Moduł 4.5.

Plan Testów Systemu SOS

Porównanie metod i technik testowania oprogramowania. Damian Ryś Maja Wojnarowska

Win Admin Replikator Instrukcja Obsługi

REFERAT PRACY DYPLOMOWEJ

Bezpieczeństwo aplikacji i urządzeń mobilnych w kontekście wymagań normy ISO/IEC oraz BS doświadczenia audytora

Luki w bezpieczeństwie aplikacji istotnym zagrożeniem dla infrastruktury krytycznej

Testowanie oprogramowania. Testowanie oprogramowania 1/34

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Praca w środowisku Visual Studio 2008, Visual C

Przewodnik użytkownika (instrukcja) AutoMagicTest

Overlord - Plan testów

PHP revisited - odświerzenie spojrzenia na programowanie w PHP

Wojciech Dworakowski. Zabezpieczanie aplikacji. Firewalle aplikacyjne - internetowych

Automatyzacja Testowania w WEB 2.0

Plan testów dla systemu USOSweb 2.0

Opis metody pracy Komisji podczas Kwalifikacji TestingCup 2017

Flex 3. Piotr Strzelczyk Wydział EAIiE Katedra Automatyki. Kraków, 2008

Testujemy dedykowanymi zasobami (ang. agile testers)

Program szkolenia: Symfony, nowoczesny framework PHP

ZAŁĄCZNIK NR 3 OPIS PRZEDMIOTU ZAMÓWIENIA DOTYCZĄCY WDROŻENIA PLATFORMY ZAKUPOWEJ

Cykle życia systemu informatycznego

Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

Bezpieczeństwo IT Audyty bezpieczeństwa i testy penetracyjne

Aplikacja sieciowa kalkulatora macierzowego zadanie za 10 punktów

PRZEWODNIK PO PRZEDMIOCIE

Zakres prac implementacja VPLEX i ViPR dla środowiska macierzy VNX 5800

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Dlaczego testowanie jest ważne?

Usługa: Testowanie wydajności oprogramowania

Win Admin Replikator Instrukcja Obsługi

Studia podyplomowe PROGRAM NAUCZANIA PLAN STUDIÓW

Testy poziom po poziomie

Etapy życia oprogramowania

PROJEKTOWANIE. kodowanie implementacja. PROJEKT most pomiędzy specyfikowaniem a kodowaniem

Projektowanie oprogramowania. Termin zajęć: poniedziałek, a podstawie materiału ze strony.

Program szkolenia: JavaScript Craftsmanship

System zarządzający grami programistycznymi Meridius

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Metody testowania oprogramowania w cyklu wytwarzania aplikacji. Milena Sobolewska. Rule Financial - Software Test Engineer

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

TESTOWANIE OPROGRAMOWANIA

Najwyżej ocenione raporty dla Mr Buggy 4

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (1) Model kaskadowy (często stosowany w praktyce do projektów o niewielkiej złożonoś

SQL z perspektywy hakera - czy Twoje dane są bezpieczne? Krzysztof Bińkowski MCT,CEI,CEH,ECSA,ECIH,CLFE,MCSA,MCSE..

Przypadek testowy. Teoria i praktyka

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

Wykład 8. Testowanie w JEE 5.0 (1) Autor: Zofia Kruczkiewicz. Zofia Kruczkiewicz

Praktyczne wykorzystanie mechanizmów zabezpieczeń w aplikacjach chmurowych na przykładzie MS Azure

Bezpieczeństwo systemów komputerowych

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

Testowanie. Ryszard Beczek & Piotr Miłkowski 1 04/11/07

Google Testing. Radosław Smilgin, , TestWarez

Analiza i projektowanie aplikacji Java

Projektowanie oprogramowania

Szczegółowy opis przedmiotu umowy. 1. Środowisko SharePoint UWMD (wewnętrzne) składa się z następujących grup serwerów:

Testowanie I. Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego.

KONFIGURACJA STACJI KLIENCKIEJ UMOŻLIWIAJĄCA KORZYSTANIE Z APLIKACJI ewniosek

Przesłanki powstania książki... xvi Dla kogo przeznaczona jest ta książka?... xvi Co znajdziemy wewnątrz książki?... xvii

Automatyczne testowanie infrastruktury pod kątem bezpieczeństwa. Leszek Miś IT Security Architect RHCA,RHCSS,Sec+ Linux Polska Sp. z o.o.

Bezpieczeostwo aplikacyjne

Transkrypt:

Fuzzing Piotr Łaskawiec J2EE Developer/Pentester 14.01.2010 Metrosoft (www.metrosoft.com) piotr.laskawiec@gmail.com Copyright The Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the License. The Foundation http://www.owasp.org

Abstract Metody testowania aplikacji Zapewnienie bezpieczeństwa aplikacji Fuzzing definicja Zastosowanie fuzzingu Podział fuzzerów Fuzzing a SDLC Kto korzysta z fuzzerów? Przykładowe fuzzery Web application fuzzing Podsumowanie 2

Testowanie aplikacji Popularne testy: Testy jednostkowe Testy funkcjonalne Testy regresyjne Testy wydajnościowe Testy usability Inna klasyfikacja: Whitebox, Graybox, Blackbox Co z bezpieczeństwem tworzonej aplikacji? Bezpieczeństwo na poziomie projektowania, implementacji, testowania oraz wdrażania. 3

Zapewnianie bezpieczeństwa aplikacji Reagowanie vs zapobieganie Reagowanie: Firewall IDS/IPS Antywirus Mechanizmy uwierzytelniające Skanery podatności (Nessus, Nikto, etc.) Itd. Zapobieganie: Fuzzing! Audyt kodu/re 4

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

Fuzzing co to znaczy w praktyce? Fuzzing == Negative testing Celem 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! 6

Zastosowanie fuzzerów Aplikacje działające lokalnie Aplikacje webowe WebService'y Aplikacje sieciowe Kontrolki ActiveX Pliki Biblioteki 7

Klasyfikacja fuzzerów Istnieje wiele kryteriów klasyfikacji fuzzerów Przykłady: Fuzzery Mutacyjne Generacyjne Ewolucyjne Fuzzery Manualne Półautomatyczne/Automatyczne Fuzzery Aplikacji webowych Protokołów... 8

Proces fuzzingu Konfiguracja wstępna Przekazanie danych do programu. Raportowanie Przygotowanie środowiska Przygotowanie programu Monitorowanie Określenie punktów wejściowych Przygotowanie danych wejściowych 9

Monitorowanie testowanej aplikacji Obserwacja zachowania programu Logi systemowe Debuggery (!exploitable...) Monitory procesów, plików, połączeń sieciowych Wirtualizacja (VMWare) Modyfikacja kodu źródłowego (dodanie punktów kontrolnych) Inne techniki (Valgrind, Guard Malloc) Techniki łączone 10

Process Explorer 11

Process Monitor 12

Fuzzing a SDLC Wstępna analiza Utrzymanie Projektowanie Testowanie Implementacja 13

Fuzzing a SDLC Wstępna analiza Utrzymanie Projektowanie Testowanie Implementacja Fuzzing 14

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

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/ 16

Przykładowe fuzzery Frameworki: Peach (http://peachfuzzer.com/) Sulley Wyspecjalizowane fuzzery: JBroFuzz () WSFuzzer () TAOF Wfuzz Spike Proxy WebFuzz Autorskie rozwiązania 17

WebScarab Fuzzer plugin 18

JBroFuzz 19

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 20

Identyfikowanie błędów Kody odpowiedzi HTTP Analiza treści strony Porównywanie struktury strony Ataki czasowe Wielokrotne zapytania Analiza danych jednoznacznie identyfikujących daną stronę Logi 21

Anty-fuzzing Nie można bronić się bezpośrednio przed fuzzingiem! Obrona ogólna: Walidacja danych wejściowych Stosowanie się do dobrych praktyk programistycznych Dbanie o bezpieczeństwo oprogramowania przez wszystkie fazy SDLC 22

Podsumowanie 23

Zalety fuzzingu Pełna automatyzacja (w większości wypadków) Fuzzery znajdują realne podatności Możliwość wykrycia błędów trudnych do znalezienia poprzez manualne testy Możliwość szybkiego uzyskania zadowalających wyników (pierwszego błędu) 24

Wady fuzzingu Brak możliwości wykrycia błędu logicznego Brak 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 25

Informacje dodatkowe Prezentacje: PyCON 2008 SEConference 2009 Strony: fuzzing.eu fuzzing.org krakowlabs.com/lof.html 26

09-10.04.2010 www.seconference.pl 27

Pytania 28

Dziękuję za uwagę! 29