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

3,628 views

Published on

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

Published in: Education, Technology, Business
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,628
On SlideShare
0
From Embeds
0
Number of Embeds
139
Actions
Shares
0
Downloads
62
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

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

×