Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16...

17
Fuzzer Fuzzer Seminar Internet- Seminar Internet- Technologie Technologie Fachgebiet Praktische Fachgebiet Praktische Informatik Informatik Referent: Mirko Schäfer, FB 16 Informatik Referent: Mirko Schäfer, FB 16 Informatik

Transcript of Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16...

Page 1: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

FuzzerFuzzer

Seminar Internet-TechnologieSeminar Internet-Technologie

Fachgebiet Praktische InformatikFachgebiet Praktische Informatik

Referent: Mirko Schäfer, FB 16 InformatikReferent: Mirko Schäfer, FB 16 Informatik

Page 2: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

GliederungGliederung1.1. Ideen und Motivation Ideen und Motivation 2.2. Kategorisierung für SoftwaretestsKategorisierung für Softwaretests3.3. BegriffsdefinitionBegriffsdefinition4.4. HistorischesHistorisches5.5. Fuzzing TechnikenFuzzing Techniken6.6. Aktuelle ImplementierungenAktuelle Implementierungen7.7. PraxisbeispielePraxisbeispiele

1.1. Fuzzing einer FTP Server ImplementierungFuzzing einer FTP Server Implementierung2.2. Fuzzing Framework PeachFuzzing Framework Peach

8.8. Fazit und AusblickFazit und Ausblick9.9. Fragen Fragen 10.10. LiteraturLiteratur

#

Page 3: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

Ideen und MotivationIdeen und Motivation

Erstellung eines möglichst einfachen, objektiven und universellenErstellung eines möglichst einfachen, objektiven und universellenTestverfahren , um Schwachstellen zu finden, die sonst niemand Testverfahren , um Schwachstellen zu finden, die sonst niemand

aufdecken würde.aufdecken würde.

Einfache Bedienung

Plattform unabhängig

Verlässliche Fehlererkennung

Für jeden Softwaretyp einsetzbar

Suche nach ALLEN

Fehlermöglichkeiten

#

Page 4: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

Kategorisierung für Kategorisierung für SoftwaretestsSoftwaretests

1.1. Zugriff auf Programmquellcode und BinarysZugriff auf Programmquellcode und Binarys z.B. Open Source Software (Linux Kernel)z.B. Open Source Software (Linux Kernel)

2.2. Zugriff auf BinarysZugriff auf Binarys z.B. Closed Source SW (Internet Explorer…)z.B. Closed Source SW (Internet Explorer…)

3.3. Kein Zugriff auf Binarys oder QuellcodeKein Zugriff auf Binarys oder Quellcode (Black Box (Black Box Fuzzing)Fuzzing)

z.B Webserver, FTP Server, SMTP….z.B Webserver, FTP Server, SMTP….

#

Page 5: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

BegriffsdefinitionBegriffsdefinition

Überprüfung des Programmcodes durch

Provokation eines Programmabsturzes

oder

fehlerhafte Datenverarbeitung

Robustheitstest für Software / Softwaredienste in Bezug auf Manipulation der Eingabedaten

ZIEL

#

Page 6: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

HistorischesHistorisches Geburtstag als „fuzz“ Unix-Kommando 1990 in einer Geburtstag als „fuzz“ Unix-Kommando 1990 in einer

Forschungsgruppe um Barton MillerForschungsgruppe um Barton Miller[2][2]

Tool zum Testen von gängigen Unix Kommandos mit Random Tool zum Testen von gängigen Unix Kommandos mit Random Eingabedaten variabler LängeEingabedaten variabler Länge

Abstürze u.A. bei emacs, ftp, identAbstürze u.A. bei emacs, ftp, ident

medienwirksames Beispiel der Fuzzing Technik: IFrame-Lücke im IE 2005medienwirksames Beispiel der Fuzzing Technik: IFrame-Lücke im IE 2005 [3][3] Resultat: MyDoom WurmResultat: MyDoom Wurm[4][4]

#

Page 7: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

Fuzzing TechnikFuzzing Technik Generation von möglichst effektiven TestdatenGeneration von möglichst effektiven Testdaten Testdaten müssen zum zu testenden Programm passen Testdaten müssen zum zu testenden Programm passen

Zu beachten:Zu beachten: bei Kapselung (OSI-Layer)bei Kapselung (OSI-Layer) Erwartung eines definierten Formates (Bilddateien…)Erwartung eines definierten Formates (Bilddateien…) Prüfsummen (CRC)Prüfsummen (CRC)

Reduktion durch Optimierung der gültigen Eingabedaten (EingaberaumReduktion durch Optimierung der gültigen Eingabedaten (Eingaberaum))

ZIEL

#

Page 8: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

Fuzzing Techniken Fuzzing Techniken Vergleich der gängigen AnsätzeVergleich der gängigen Ansätze

DatenmutationDatenmutation

gezieltes Suchen und Testen von möglichen Schwachstellen

EingabedatenanalyseEingabedatenanalyse

+ sehr kleiner Eingaberaum

- übersehen von Fehlern - langwierige Programmanalyse

Wahllose Datenmutation in Inhalt und Länge

- riesiger Eingaberaum

+ Test auf alle Möglichkeiten + schnell einsetzbar

#

Page 9: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

Aktuelle Aktuelle ImplementierungenImplementierungen

Unix-Unix-FuzzFuzz

Unix System Unix System KommandosKommandos

ISICISIC TCP/IP StacksTCP/IP Stacks

FTP-FTP-StressStress

FTP ProtokollFTP Protokoll

MangleMangleMeMe

HTML-Tags HTML-Tags und Codeund Code

Programmbezogene Fuzzer Fuzzing Frameworks

- hohe Spezialisierung auf Einsatzgebiet

SpikSpikee

NetzwerkprotokollNetzwerkprotokollee

Sprache: CSprache: C

OS: Linux / UnixOS: Linux / Unix

PeacPeachh

Universell Universell einsetzbareinsetzbar

Sprache: Python Sprache: Python

OS: alleOS: alle

BeDBeD Web ApplikationenWeb Applikationen

Sprache: CSprache: C

OS:alleOS:alle #

Page 10: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

Praxisbeispiel 1Praxisbeispiel 1FTP Server Fuzzing – FTP Stress FTP Server Fuzzing – FTP Stress [6][6]

Testumgebung:

FTP Server Golden FTPd Server auf lokalem Recher

FTP Stress Fuzzer[5]

Getestet werden alle FTP Kommandos mit Übergabeparametern variabler Länge und Textinhalt „A“

Programmabsturz

Programm terminiert nach Ausführung des CWD/CDUP Kommandos mit einem Übergabeparameter einer bestimmten Länge

#

Page 11: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

Praxisbeispiel 1Praxisbeispiel 1FTP Server Fuzzing – FTP StressFTP Server Fuzzing – FTP Stress

Einsatz eines Programm Debuggers

EIP Register Inhalt entspricht Testtext

Ungültiges Sprungadressziel

Durch Anpassung der Länge des Übergabewertes ist Manipulation des Sprungzieles möglich!

Buffer Overflow Problem

#

Page 12: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

Praxisbeispiel 2Praxisbeispiel 2Einsatz eines Fuzzing Frameworks – Einsatz eines Fuzzing Frameworks –

PEACHPEACH[7][7]

gen = Static('Hello world') print gen.getValue()

Hello World

Scriptsprache Python

Objekt Orientierter Programmansatz

beinhaltet Generatoren für Vielzahl von Datenpaketen und Inhalten

MS .net und Eclipse Plugins verfügbar

Plattformunabhängig

Integration von „Selbsttest- Routinen“

DAS Beispiel:

#

Page 13: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

Praxisbeispiel 2 Praxisbeispiel 2 Einsatz eines Fuzzing Frameworks - Einsatz eines Fuzzing Frameworks -

PEACHPEACHgen = www.http(*,/dev/stdout); gen = Block([

Static('GET / HTTP/1.0rn'), Static(‚Host: http://'), Repeater(group, Static('A'), 1, 4), Static('rn'),]) while True: print gen.getValue() group.next();

GET / HTTP/1.0 Host: http://A

GET / HTTP/1.0 Host: http://AA

GET / HTTP/1.0 Host: http://AAA

GET / HTTP/1.0 Host: http://AAAA

#

Page 14: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

Praxisbeispiel 2 Praxisbeispiel 2 Einsatz eines Fuzzing Frameworks - Einsatz eines Fuzzing Frameworks -

PEACHPEACHgen = www.http(*,/dev/stdout); gen = Block([

Static('GET / HTTP/1.0rn'), Static(‚Host: http://'), Repeater(group, Static('A'), 1, 4), Static(‘/input.php?value=‘), Repeater(group, Static(‚b'), 1, 4), Static('rn'),]) while True: print gen.getValue() group.next();

GET / HTTP/1.0 Host: http://A/input.php?value=b

GET / HTTP/1.0 Host: http://AA/input.php?value=bb

GET / HTTP/1.0 Host: http://AAA/input.php?value=bbb

GET / HTTP/1.0 Host: http://AAAA/input.php?value=bbbb

#

Page 15: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

Fazit und AusblickFazit und AusblickStarke Zunahme der verfügbaren Tools und

Plattformen

durch Frameworks wenig Fachwissen nötig

„Script-kiddies“

Überschwemmung der Entwickler mit Fehlern

Priorisierung und Kategorisierung der Fehler schwierig

Zukunftsträchtige Technik mit jedoch hohem Forschungs- bzw. Optimierungsbedarf

#

Page 16: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

LiteraturverzeichnisLiteraturverzeichnis [1] Heise Verlag / Ct Ausgabe 18,2006 Artikel S.201ff[1] Heise Verlag / Ct Ausgabe 18,2006 Artikel S.201ff Wikipedia dt, en VersionWikipedia dt, en Version [2]ftp://ftp.cs.wisc.edu/paradyn/technical_papers/fuzz.pdf UNIX-fuzz [2]ftp://ftp.cs.wisc.edu/paradyn/technical_papers/fuzz.pdf UNIX-fuzz

Kommando Kommando [3]MS Internet Explorer I-Frame Lücke [3]MS Internet Explorer I-Frame Lücke

http://www.heise.de/newsticker/meldung/53841http://www.heise.de/newsticker/meldung/53841 [4]My-Doom Würmer [4]My-Doom Würmer

http://www.heise.de/security/news/meldung/53052http://www.heise.de/security/news/meldung/53052 [5]FTP-Stress Tool http://www.infigo.hr/files/ftpfuzz.zip[5]FTP-Stress Tool http://www.infigo.hr/files/ftpfuzz.zip [6]FTP-Fuzzing mit dem FTP-Stress Tool [6]FTP-Fuzzing mit dem FTP-Stress Tool

http://www.infigo.hr/files/INFIGO-TD-2006-04-01-Fuzzing-eng.pdfhttp://www.infigo.hr/files/INFIGO-TD-2006-04-01-Fuzzing-eng.pdf [7] PEACH Fuzzing Framework http://peachfuzz.sourceforge.net/[7] PEACH Fuzzing Framework http://peachfuzz.sourceforge.net/

Vielen Dank für eure Vielen Dank für eure Aufmerksamkeit !Aufmerksamkeit !

Page 17: Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik.

MeinungsbildMeinungsbild

Wer hat :Wer hat : Von Fuzzing / Fuzzern noch nie etwas gehört?Von Fuzzing / Fuzzern noch nie etwas gehört? Den Begriff schon gehört, aber nicht im konkreten Den Begriff schon gehört, aber nicht im konkreten

Zusammenhang mit Software Testing Tools?Zusammenhang mit Software Testing Tools? Schonmal einen Fuzzing Tool benutzt um Software Schonmal einen Fuzzing Tool benutzt um Software

zu testen?zu testen? Schonmal einen Fuzzer selber erstellt um Software Schonmal einen Fuzzer selber erstellt um Software

zu testen?zu testen?