Your SlideShare is downloading. ×
Очир Абушинов - Применение fuzz-тестирования
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

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

2,598
views

Published on

Доклад на SQA Days-9, Казань, 22-23 апреля 2011

Доклад на SQA Days-9, Казань, 22-23 апреля 2011

Published in: Education, Technology, Business

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,598
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
47
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Применение fuzz тестирования
    ОчирАбушинов
    WWPass Corporation
  • 2. План
    Что такое фаззинг (fuzzing) и зачем он нужен
    Обзор инструментов для фазз тестирования
    Фаззинг файлов
    Фаззинг протоколов
    Фаззинг драйверов
    Фаззингвеб-приложений
    Пример фаззингавеб-приложения
    Пример фаззинга сетевого приложения
    Какие баги можно найти при помощи фаззинга
    Фаззинг в процессе тестирования
    Полезные ссылки и литература
  • 3. Что такое фаззинг (fuzzing)
    Фаззинг (fuzzing) – методика тестирования,
    при которой на вход программы подаются
    невалидные, непредусмотренные или
    случайные данные
  • 4. Что такое фаззинг (fuzzing)
  • 5. Зачем он нужен?
  • 6. Что можно фаззить?
    • Файлы
    • 7. Драйверы
    • 8. Приложения
    • 9. Веб-приложения
    • 10. Протоколы
    • 11. API
  • Как можно фаззить?
    1) Генерация
    - случайные данные (dumb)
    • входные данные, сформированные по моделям (smart)
    2) Мутация
    - изменение существующих входных данных
  • 12. Фаззинг файлов
    1) Выбираем входные данные
    2) Фаззерискажает эти данные
    3) Фаззерзапускает приложение с передачей ему искаженных данных
    4) Фаззер перебирает входные данные
    5) В случае возникновения ошибки, записываем данные и анализируем результаты
  • 13. Фаззинг файлов
  • 14. Фаззинг файлов
    • MiniFuzz (Windows)
    • 15. FileFuzz (Windows)
    • 16. FileP (Python)
    • 17. Zzuf (Linux, Mac)
  • Фаззинг протоколов
    Выбираем фаззер (свой или сторонний)
    2)Создаем модели данных
    3) Описываем параметры модели в входном файле
    4) Запускаем фаззер
    5) В случае возникновения ошибки, записываем данные и анализируем результаты
  • 18. Фаззинг протоколов
  • 19. Фаззинг протоколов
  • 20. Фаззинг протоколов
    • PROTOS (WAP, HTTP-reply, LDAP, SNMP, SIP, ISAKMP) (Java)
    • 21. Peach и HotFuzz
    • 22. SPIKE (Linux, C)
  • Фаззингдрайверов
    IOCTL fuzzer
  • 23. Фаззингвеб-приложений
    Выбираем какими запросами будем фазить
    Подбираем фаззер
    3)Создаем скрипт для фаззинга
    4) Запускаем фаззер
    5) В случае возникновения ошибки, записываем данные и анализируем результаты
  • 24. Фаззингвеб-приложений
  • 25. Фаззингвеб-приложений
  • Фаззинг исходного кода
    • Jsfuzzer – фаззерJavaScript
    http://code.google.com/p/jsfuzzer/
    • JavaFuzz – фаззер Ява классов http://code.google.com/p/javafuzz/
    • 32. PFF – фаззерPHPhttp://www.setec.org/~calcite/code/pff/
  • Прочие фаззеры
    • Sulley—фреймворк для создания сложных структур данных
    • 33. Fusil —библиотека на Python для написания фаззеров
    • 34. Bunny The Fuzzer – фаззер для протоколов на языке С
    • 35. Много фаззеров на http://code.google.com
  • Пример фаззингавеб-приложения
  • 36. Пример фаззинга сетевогоприложения
  • 37. Какие баги можно найти при
    помощи фаззинга
    • Утечки памяти
    • 38. Переполнение буфера
    • 39. Неверные коды ошибок
    • 40. Ошибки обработки входных данных
    • 41. Отказ в обслуживании
  • Фаззинг в процессе
    тестирования
    • Часть процесса тестирования безопасности
    • 42. Стоит попробовать с другими видами тестирования
    • 43. Необходимо знание протоколов и форматов данных
    • 44. Документирование
    • 45. Это не очень сложно 
  • Полезные ссылки и
    литература
    • http://en.wikipedia.org/wiki/Fuzz_testing
    • 46. http://www.xakep.ru/post/52726/
    • 47. http://www.fuzzing.org/
    • 48. http://msdn.microsoft.com/en-us/library/cc162782.aspx
    • 49. ПедрамАмини, «Fuzzing. Исследование уязвимостей методом грубой силы», Символ-Плюс, 2009 г.
  • Спасибо за внимание!
    Вопросы?
    E-mail:ochir.abushinov@gmail.com
    Skype: ochir_abushinov