Use of fuzz testing
-
Upload
camypau -
Category
Technology
-
view
1.905 -
download
0
description
Transcript of Use of fuzz testing
Применение fuzz тестированияОчир Абушинов
WWPass Corporation
План• Что такое фаззинг (fuzzing) и зачем он нужен• Обзор инструментов для фазз тестирования• Фаззинг файлов• Фаззинг протоколов• Фаззинг драйверов• Фаззинг веб-приложений• Пример фаззинга веб-приложения• Пример фаззинга сетевого приложения• Какие баги можно найти при помощи фаззинга• Фаззинг в процессе тестирования• Полезные ссылки и литература
Что такое фаззинг (fuzzing)
Фаззинг (fuzzing) – методика тестирования, при которой на вход программы подаются невалидные, непредусмотренные или случайные данные
Что такое фаззинг (fuzzing)
Зачем он нужен?
•Файлы•Драйверы•Приложения•Веб-приложения•Протоколы•API
Что можно фаззить?
1) Генерация- случайные данные (dumb)- входные данные,
сформированные по моделям (smart)
2) Мутация- изменение существующих входных данных
Как можно фаззить?
Фаззинг файлов
1) Выбираем входные данные2) Фаззер искажает эти данные3) Фаззер запускает приложение с передачей ему искаженных данных4) Фаззер перебирает входные данные5) В случае возникновения ошибки, записываем данные и анализируем результаты
Фаззинг файлов
Фаззинг файлов
•MiniFuzz (Windows) •FileFuzz (Windows)•FileP (Python) •Zzuf (Linux, Mac)
Фаззинг протоколов
1) Выбираем фаззер (свой или сторонний) 2) Создаем модели данных3) Описываем параметры модели в входном файле4) Запускаем фаззер 5) В случае возникновения ошибки, записываем данные и анализируем результаты
Фаззинг протоколов
Фаззинг протоколов
Фаззинг протоколов
•PROTOS (WAP, HTTP-reply, LDAP, SNMP, SIP, ISAKMP) (Java)•Peach и HotFuzz•SPIKE (Linux, C)
Фаззинг драйверов
IOCTL fuzzer
Фаззинг веб-приложений
1) Выбираем какими запросами будем фазить2) Подбираем фаззер 3) Создаем скрипт для фаззинга4) Запускаем фаззер 5) В случае возникновения ошибки, записываем данные и анализируем результаты
Фаззинг веб-приложений
•Skyfish•SPIKE Proxy•OWASP WSFuzzer (SOAP)•Rfuzz •Fuzzops•PowerFuzzer•итд.
Фаззинг веб-приложений
Фаззинг исходного кода
•Jsfuzzer – фаззер JavaScript http://code.google.com/p/jsfuzzer/•JavaFuzz – фаззер Ява классов http://code.google.com/p/javafuzz/•PFF – фаззер PHP http://www.setec.org/~calcite/code/pff/
•Sulley — фреймворк для создания сложных структур данных•Fusil — библиотека на Python для написания фаззеров•Bunny The Fuzzer – фаззер для протоколов на языке С• Много фаззеров на http://code.google.com
Прочие фаззеры
Пример фаззинга веб-приложения
Пример фаззинга сетевогоприложения
Какие баги можно найти припомощи фаззинга
•Утечки памяти•Переполнение буфера•Неверные коды ошибок•Ошибки обработки входных данных•Отказ в обслуживании
Фаззинг в процессетестирования
•Часть процесса тестирования безопасности •Стоит попробовать с другими видами тестирования•Необходимо знание протоколов и форматов данных•Документирование •Это не очень сложно
Полезные ссылки илитература
•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 г.
Спасибо за внимание!Вопросы?
E-mail: [email protected]: ochir_abushinov