Выбор точки внедрения для фаззинга в памяти
-
Upload
anne-woodward -
Category
Documents
-
view
41 -
download
2
description
Transcript of Выбор точки внедрения для фаззинга в памяти
![Page 1: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/1.jpg)
ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИТехнологический институт «Южного федерального университета» в г. Таганроге
докладчик:Благодаренко А. В.
руководитель:д.т.н., проф. Макаревич О. Б.
![Page 2: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/2.jpg)
Фаззинг
Фаззинг – тестирование методом черного ящика, основанное на передаче большого набора входных данных исследуемому ПО
Внедрение
Файлы Сеть IOCTL Окружение
Данные
Генерация Мутация
2
![Page 3: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/3.jpg)
Фаззинг в памяти
Фаззинг в памяти - вид фаззинга при котором данные передаются через внутренние структуры программы
Позволяет миновать интерфейсные функции программы и их ограничения ( скорость, объемы данных ).
Позволяет сфокусироваться на данных, обрабатываемых исследуемой частью кода. Не требуется подготовка данных в формате, который требуется интерфейсными функциями.
3
![Page 4: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/4.jpg)
Цикл мутации4
![Page 5: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/5.jpg)
Восстановление состояния 5
![Page 6: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/6.jpg)
Corelan in-memory fuzzer
Целевой процесс/модуль
Адрес точки входа в функцию (получение слепка)
Адрес точки выхода из функции (восстановление слепка)
Необходимы данные: Аргументы функции
6
![Page 7: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/7.jpg)
Фаззинг и модульные тесты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
![Page 8: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/8.jpg)
Система Dataflow8
![Page 9: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/9.jpg)
Откуда начинать?9
![Page 10: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/10.jpg)
Рейтинг функцийПростой ориентированный граф G(V,E)Матрица смежности , где
Матрица E дает информацию обо всех путях длины 1 в графе G(V,E). Композиция отношения E самой с собой Матрица достижимости
=
10
![Page 11: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/11.jpg)
Параметры функций11
![Page 12: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/12.jpg)
Фаззер файлов .pdf для программы Evince
Пример12
![Page 13: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/13.jpg)
Тестовый запуск приложения
Начать исследование Тестовый запуск 1 Тестовый запуск 2 Закончить исследование Получить статистику исполнения
13
![Page 14: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/14.jpg)
Функции, принимающие данные
Evince: 0xC030
14
![Page 15: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/15.jpg)
Функции, принимающие данные
Evince: 0x3290
15
![Page 16: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/16.jpg)
Рейтинг функций16
![Page 17: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/17.jpg)
Оценка потенциального охвата17
![Page 18: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/18.jpg)
Подготовка теста. Возможности
Вызов внутренних функций с заданными параметрами
Динамическая оценка покрытия Последовательное внедрение ошибок Любые другие возможности,
применимые к динамическим библиотекам
18
![Page 19: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/19.jpg)
Подготовка теста
#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
![Page 20: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/20.jpg)
Исполнение теста
Остановка на определенном этапе работы исследуемого ПО
Загрузка динамической библиотеки в адресное пространство исследуемого ПО
Исполнение Взаимодействие с тестирующим ПО:• Внедрение ошибок• Динамическая оценка покрытия
20
![Page 21: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/21.jpg)
Оценка результатов21
![Page 22: Выбор точки внедрения для фаззинга в памяти](https://reader036.fdocument.pub/reader036/viewer/2022062314/5681321c550346895d987e3a/html5/thumbnails/22.jpg)
Вопросы?22