Выбор точки внедрения для фаззинга в памяти

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

Upload: anne-woodward

Post on 01-Jan-2016

41 views

Category:

Documents


2 download

DESCRIPTION

докладчик: Благодаренко А. В. руководитель: д.т.н., проф. Макаревич О. Б. Выбор точки внедрения для фаззинга в памяти. Технологический институт «Южного федерального университета» в г. Таганроге. Фаззинг. - PowerPoint PPT Presentation

TRANSCRIPT

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