10. ППррииммеенниимм кк
• ПО с закрытым исходным кодом
• Сетевым приложениям
• Драйверам
• Интерфейсам (RPC, ActiveX)
• …
11. ССттррааттееггиияя
•Давать всякие штуки на вход
•Смотреть, что получается на выходе
•Смотреть, что происходит с приложением в
процессе
•Похоже на тестирование
23. ГГееннеерраацциияя ппоо ооббррааззццуу
•Один или несколько примеров входных данных
•Мутатор, который делает новые файлы на базе
примеров с помощью рандомизации, смешивания
и т.п.
24. ММееттооддыы
• Переворачивание битов
• Переворачивание байтов
• Арифметические операции
• Подстановка волшебных числа, например, 0,1,-
1,MAXINT, MININT
• Перемешивание, дублирование, вырезание, …
• Сплайсинг двух и более файлов
26. ЭЭффффееккттииввннооссттьь
Фаззер: afl, цель: jpeg
• Переворачивание битов: 70-80 путей
• Переворачивание байтов: 30 путей
• Арифметические операции: 5 путей
• Подстановка волшебных чисел: 10 путей
• Перемешивание, …: 100 путей
• Сплайсинг двух и более файлов: 40 путей
29. ГГееннеерраацциияя ппоо шшааббллооннаамм
•Ограниченное описание грамматики и семантики
входных данных
• Генерация входных данных на основе описания
• Сложно, но более эффективно
•Необходима для форматов с контрольными
суммами
51. ППррааккттииккаа
• Фаззинг тренировочных файлов с помощью radamsa
• Эксплуатация тренировочных файлов
• Повторение известной уязвимости с помощью Peach
• Анализ ранее неизвестной ошибки на возможность
эксплуатации (у нас одна есть!)
• Фаззинг серьезных приложений (Word, Reader) с помощью
Peach
• Анализ найденных ошибок