ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

22
ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ Технологический институт «Южного федерального университета» в г. Таганроге докладчик: Благодаренко А. В. руководитель: д.т.н., проф. Макаревич О. Б.

description

ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Transcript of ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Page 1: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИТехнологический институт «Южного федерального университета» в г. Таганроге

докладчик:Благодаренко А. В.

руководитель:д.т.н., проф. Макаревич О. Б.

Page 2: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Фаззинг

Фаззинг – тестирование методом черного ящика, основанное на передаче большого набора входных данных исследуемому ПО

Внедрение

Файлы Сеть IOCTL Окружение

Данные

Генерация Мутация

2

Page 3: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Фаззинг в памяти

Фаззинг в памяти - вид фаззинга при котором данные передаются через внутренние структуры программы

Позволяет миновать интерфейсные функции программы и их ограничения ( скорость, объемы данных ).

Позволяет сфокусироваться на данных, обрабатываемых исследуемой частью кода. Не требуется подготовка данных в формате, который требуется интерфейсными функциями.

3

Page 4: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Цикл мутации4

Page 5: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Восстановление состояния 5

Page 6: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Corelan in-memory fuzzer

Целевой процесс/модуль

Адрес точки входа в функцию (получение слепка)

Адрес точки выхода из функции (восстановление слепка)

Необходимы данные: Аргументы функции

6

Page 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

Page 8: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Система Dataflow8

Page 9: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Откуда начинать?9

Page 10: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Рейтинг функцийПростой ориентированный граф G(V,E)Матрица смежности , где

Матрица E дает информацию обо всех путях длины 1 в графе G(V,E). Композиция отношения E самой с собой Матрица достижимости

=

10

Page 11: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Параметры функций11

Page 12: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Фаззер файлов .pdf для программы Evince

Пример12

Page 13: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Тестовый запуск приложения

Начать исследование Тестовый запуск 1 Тестовый запуск 2 Закончить исследование Получить статистику исполнения

13

Page 14: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Функции, принимающие данные

Evince: 0xC030

14

Page 15: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Функции, принимающие данные

Evince: 0x3290

15

Page 16: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Рейтинг функций16

Page 17: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Оценка потенциального охвата17

Page 18: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Подготовка теста. Возможности

Вызов внутренних функций с заданными параметрами

Динамическая оценка покрытия Последовательное внедрение ошибок Любые другие возможности,

применимые к динамическим библиотекам

18

Page 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

Page 20: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Исполнение теста

Остановка на определенном этапе работы исследуемого ПО

Загрузка динамической библиотеки в адресное пространство исследуемого ПО

Исполнение Взаимодействие с тестирующим ПО:• Внедрение ошибок• Динамическая оценка покрытия

20

Page 21: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Оценка результатов21

Page 22: ВЫБОР ТОЧКИ ВНЕДРЕНИЯ ДЛЯ ФАЗЗИНГА В ПАМЯТИ

Вопросы?22