use of fuzz testing

26
Применение fuzz тестирования Очир Абушинов WWPass Corporation

Upload: camypau

Post on 07-Dec-2014

1.905 views

Category:

Technology


0 download

DESCRIPTION

презентация доклада на SQA Days 9 в Казани

TRANSCRIPT

Page 1: Use of  fuzz testing

Применение fuzz тестированияОчир Абушинов

WWPass Corporation

Page 2: Use of  fuzz testing

План• Что такое фаззинг (fuzzing) и зачем он нужен• Обзор инструментов для фазз тестирования• Фаззинг файлов• Фаззинг протоколов• Фаззинг драйверов• Фаззинг веб-приложений• Пример фаззинга веб-приложения• Пример фаззинга сетевого приложения• Какие баги можно найти при помощи фаззинга• Фаззинг в процессе тестирования• Полезные ссылки и литература

Page 3: Use of  fuzz testing

Что такое фаззинг (fuzzing)

Фаззинг (fuzzing) – методика тестирования, при которой на вход программы подаются невалидные, непредусмотренные или случайные данные

Page 4: Use of  fuzz testing

Что такое фаззинг (fuzzing)

Page 5: Use of  fuzz testing

Зачем он нужен?

Page 6: Use of  fuzz testing

•Файлы•Драйверы•Приложения•Веб-приложения•Протоколы•API

Что можно фаззить?

Page 7: Use of  fuzz testing

1) Генерация- случайные данные (dumb)- входные данные,

сформированные по моделям (smart)

2) Мутация- изменение существующих входных данных

Как можно фаззить?

Page 8: Use of  fuzz testing

Фаззинг файлов

1) Выбираем входные данные2) Фаззер искажает эти данные3) Фаззер запускает приложение с передачей ему искаженных данных4) Фаззер перебирает входные данные5) В случае возникновения ошибки, записываем данные и анализируем результаты

Page 9: Use of  fuzz testing

Фаззинг файлов

Page 10: Use of  fuzz testing

Фаззинг файлов

•MiniFuzz (Windows) •FileFuzz (Windows)•FileP (Python) •Zzuf (Linux, Mac)

Page 11: Use of  fuzz testing

Фаззинг протоколов

1) Выбираем фаззер (свой или сторонний) 2) Создаем модели данных3) Описываем параметры модели в входном файле4) Запускаем фаззер 5) В случае возникновения ошибки, записываем данные и анализируем результаты

Page 12: Use of  fuzz testing

Фаззинг протоколов

Page 13: Use of  fuzz testing

Фаззинг протоколов

Page 14: Use of  fuzz testing

Фаззинг протоколов

•PROTOS (WAP, HTTP-reply, LDAP, SNMP, SIP, ISAKMP) (Java)•Peach и HotFuzz•SPIKE (Linux, C)

Page 15: Use of  fuzz testing

Фаззинг драйверов

IOCTL fuzzer

Page 16: Use of  fuzz testing

Фаззинг веб-приложений

1) Выбираем какими запросами будем фазить2) Подбираем фаззер 3) Создаем скрипт для фаззинга4) Запускаем фаззер 5) В случае возникновения ошибки, записываем данные и анализируем результаты

Page 17: Use of  fuzz testing

Фаззинг веб-приложений

Page 18: Use of  fuzz testing

•Skyfish•SPIKE Proxy•OWASP WSFuzzer (SOAP)•Rfuzz •Fuzzops•PowerFuzzer•итд.

Фаззинг веб-приложений

Page 19: Use of  fuzz testing

Фаззинг исходного кода

•Jsfuzzer – фаззер JavaScript http://code.google.com/p/jsfuzzer/•JavaFuzz – фаззер Ява классов http://code.google.com/p/javafuzz/•PFF – фаззер PHP http://www.setec.org/~calcite/code/pff/

Page 20: Use of  fuzz testing

•Sulley — фреймворк для создания сложных структур данных•Fusil — библиотека на Python для написания фаззеров•Bunny The Fuzzer – фаззер для протоколов на языке С• Много фаззеров на http://code.google.com

Прочие фаззеры

Page 21: Use of  fuzz testing

Пример фаззинга веб-приложения

Page 22: Use of  fuzz testing

Пример фаззинга сетевогоприложения

Page 23: Use of  fuzz testing

Какие баги можно найти припомощи фаззинга

•Утечки памяти•Переполнение буфера•Неверные коды ошибок•Ошибки обработки входных данных•Отказ в обслуживании

Page 24: Use of  fuzz testing

Фаззинг в процессетестирования

•Часть процесса тестирования безопасности •Стоит попробовать с другими видами тестирования•Необходимо знание протоколов и форматов данных•Документирование •Это не очень сложно

Page 25: Use of  fuzz testing

Полезные ссылки илитература

•http://en.wikipedia.org/wiki/Fuzz_testing•http://www.xakep.ru/post/52726/•http://www.fuzzing.org/•http://msdn.microsoft.com/en-us/library/cc162782.aspx•Педрам Амини, «Fuzzing. Исследование уязвимостей методом грубой силы», Символ-Плюс, 2009 г.

Page 26: Use of  fuzz testing

Спасибо за внимание!Вопросы?

E-mail: [email protected]: ochir_abushinov