Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 13 лет назад пользователемblagodarenko
1 ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ Технологический институт « Южного федерального университета » в г. Таганроге докладчик: Благодаренко А. В. руководитель: д.т.н., проф. Макаревич О. Б.
2 Фаззинг Фаззинг – тестирование методом черного ящика, основанное на передаче большого набора входных данных исследуемому ПО Внедрение ФайлыСеть IOCTL Окружение Данные ГенерацияМутация 2
3 Фаззинг в памяти Фаззинг в памяти - вид фаззинга при котором данные передаются через внутренние структуры программы Позволяет миновать интерфейсные функции программы и их ограничения ( скорость, объемы данных ). Позволяет сфокусироваться на данных, обрабатываемых исследуемой частью кода. Не требуется подготовка данных в формате, который требуется интерфейсными функциями. 3
4 Цикл мутации 4
5 Восстановление состояния 5
6 Corelan in-memory fuzzer Целевой процесс / модуль Адрес точки входа в функцию ( получение слепка ) Адрес точки выхода из функции ( восстановление слепка ) Необходимы данные: Аргументы функции 6
7 Фаззинг и модульные тесты while(1): accept(); recv() unmarshal() parse() func-1() func-2() … inline int __cdecl foo_sub_XX ( int a, int b, int c ); BOOL APIENTRY DllMain( … ) { foo_sub_XX (param_a, param_b, param_c ); } Восстановление прототипов функций Динамический анализ Исполнение в контексте целевого процесса 7
8 Система Dataflow 8
9 Откуда начинать ? 9
10 Рейтинг функций Простой ориентированный граф G(V,E) Матрица смежности, где Матрица E дает информацию обо всех путях длины 1 в графе G(V,E). Композиция отношения E самой с собой Матрица достижимости = 10
11 Параметры функций 11
12 Фаззер файлов.pdf для программы Evince Пример 12
13 Тестовый запуск приложения Начать исследование Тестовый запуск 1 Тестовый запуск 2 Закончить исследование Получить статистику исполнения 13
14 Функции, принимающие данные Evince: 0xC030 14
15 Функции, принимающие данные Evince: 0x
16 Рейтинг функций 16
17 Оценка потенциального охвата 17
18 Подготовка теста. Возможности Вызов внутренних функций с заданными параметрами Динамическая оценка покрытия Последовательное внедрение ошибок Любые другие возможности, применимые к динамическим библиотекам 18
19 Подготовка теста #include "evince.h" CHECK_WITH_FAULT_INJECT( evince_sub_3290( 0x00f45158, ( int )fileName, 0x00f49038, 0, 0, 0 ) ); if( SendCommand( COMMAND_TRACK_STAT, ffd.cFileName ) ) { LogErr( "Can't send command\n" ); } 19
20 Исполнение теста Остановка на определенном этапе работы исследуемого ПО Загрузка динамической библиотеки в адресное пространство исследуемого ПО Исполнение Взаимодействие с тестирующим ПО : Внедрение ошибок Динамическая оценка покрытия 20
21 Оценка результатов 21
22 Вопросы ? 22
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.