1 / 17

Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik

Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik. Referent: Mirko Schäfer, FB 16 Informatik. Gliederung. Ideen und Motivation Kategorisierung für Softwaretests Begriffsdefinition Historisches Fuzzing Techniken Aktuelle Implementierungen Praxisbeispiele

dayo
Download Presentation

Fuzzer Seminar Internet-Technologie Fachgebiet Praktische Informatik

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. FuzzerSeminar Internet-TechnologieFachgebiet Praktische Informatik Referent: Mirko Schäfer, FB 16 Informatik

  2. Gliederung • Ideen und Motivation • Kategorisierung für Softwaretests • Begriffsdefinition • Historisches • Fuzzing Techniken • Aktuelle Implementierungen • Praxisbeispiele • Fuzzing einer FTP Server Implementierung • Fuzzing Framework Peach • Fazit und Ausblick • Fragen • Literatur #

  3. Ideen und Motivation Einfache Bedienung Verlässliche Fehlererkennung Plattform unabhängig Suche nach ALLEN Fehlermöglichkeiten Für jeden Softwaretyp einsetzbar Erstellung eines möglichst einfachen, objektiven und universellen Testverfahren , um Schwachstellen zu finden, die sonst niemand aufdecken würde. #

  4. Kategorisierung für Softwaretests • Zugriff auf Programmquellcode und Binarys • z.B. Open Source Software (Linux Kernel) • Zugriff auf Binarys • z.B. Closed Source SW (Internet Explorer…) • Kein Zugriff auf Binarys oder Quellcode(Black Box Fuzzing) • z.B Webserver, FTP Server, SMTP…. #

  5. ZIEL Begriffsdefinition Robustheitstest für Software / Softwaredienste in Bezug auf Manipulation der Eingabedaten Überprüfung des Programmcodes durch Provokation eines Programmabsturzes oder fehlerhafte Datenverarbeitung #

  6. Historisches • Geburtstag als „fuzz“ Unix-Kommando 1990 in einer Forschungsgruppe um Barton Miller[2] • Tool zum Testen von gängigen Unix Kommandos mit Random Eingabedaten variabler Länge • Abstürze u.A. bei emacs, ftp, ident • medienwirksames Beispiel der Fuzzing Technik: IFrame-Lücke im IE 2005[3] • Resultat: MyDoom Wurm[4] #

  7. ZIEL Fuzzing Technik • Generation von möglichst effektiven Testdaten • Testdaten müssen zum zu testenden Programm passen • Zu beachten: • bei Kapselung (OSI-Layer) • Erwartung eines definierten Formates (Bilddateien…) • Prüfsummen (CRC) Reduktion durch Optimierung der gültigen Eingabedaten (Eingaberaum) #

  8. Fuzzing Techniken Vergleich der gängigen Ansätze Eingabedatenanalyse Datenmutation gezieltes Suchen und Testen von möglichen Schwachstellen Wahllose Datenmutation in Inhalt und Länge + sehr kleiner Eingaberaum + Test auf alle Möglichkeiten + schnell einsetzbar • übersehen von Fehlern - langwierige Programmanalyse - riesiger Eingaberaum #

  9. Aktuelle Implementierungen Programmbezogene Fuzzer Fuzzing Frameworks -hohe Spezialisierung auf Einsatzgebiet #

  10. Programmabsturz Praxisbeispiel 1FTP Server Fuzzing – FTP Stress [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“ Programm terminiert nach Ausführung des CWD/CDUP Kommandos mit einem Übergabeparameter einer bestimmten Länge #

  11. Praxisbeispiel 1FTP 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 #

  12. Praxisbeispiel 2Einsatz eines Fuzzing Frameworks – PEACH[7] • 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: gen = Static('Hello world') print gen.getValue() Hello World #

  13. Praxisbeispiel 2 Einsatz eines Fuzzing Frameworks - PEACH gen = 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 #

  14. Praxisbeispiel 2 Einsatz eines Fuzzing Frameworks - PEACH gen = 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 #

  15. Fazit und Ausblick • Starke 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 #

  16. Literaturverzeichnis Vielen Dank für eure Aufmerksamkeit ! • [1] Heise Verlag / Ct Ausgabe 18,2006 Artikel S.201ff • Wikipedia dt, en Version • [2]ftp://ftp.cs.wisc.edu/paradyn/technical_papers/fuzz.pdf UNIX-fuzz Kommando • [3]MS Internet Explorer I-Frame Lücke http://www.heise.de/newsticker/meldung/53841 • [4]My-Doom Würmer http://www.heise.de/security/news/meldung/53052 • [5]FTP-Stress Tool http://www.infigo.hr/files/ftpfuzz.zip • [6]FTP-Fuzzing mit dem FTP-Stress Tool http://www.infigo.hr/files/INFIGO-TD-2006-04-01-Fuzzing-eng.pdf • [7] PEACH Fuzzing Framework http://peachfuzz.sourceforge.net/

  17. Meinungsbild • Wer hat : • Von Fuzzing / Fuzzern noch nie etwas gehört? • Den Begriff schon gehört, aber nicht im konkreten Zusammenhang mit Software Testing Tools? • Schonmal einen Fuzzing Tool benutzt um Software zu testen? • Schonmal einen Fuzzer selber erstellt um Software zu testen?

More Related