Автоматический поиск уязвимостей в программах без исходных текстов … или введение в фаззинг Лаборатория информационной безопасности Докладчик: Олексюк.

Презентация:



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

Разработка и реализация системы семантически-ориентированного поиска с использованием Knowledge.NET Выполнил: Ким Сергей Владимирович
НГТУ, каф. ВТ Исключения в С++ Макаревич Л. Г.. Что такое исключение Исключение или исключительная ситуация – возникновение непредвиденных или аварийных.
Назначение CTesK. Архитектура теста в CTesK. Тестовая система Тестовая система Тестирование Целевая система Результаты тестирования результаты воздействия.
Выпускная квалификационная работа Исследование аппаратной предвыборки данных в кэш второго уровня микропроцессора Студент: Гребенкин А.П., 816 гр. Научный.
Обработка исключений в C# Единая техника обнаружения ошибок времени выполнения и передачи информации о них.
Подготовил студент группы 3881 Рамзайцев А.В. Руководитель: Федоров Д.Ю.
ПРОВЕДЕНИЕ РЕЗЕРВИРОВАНИЯ И ОБСЛУЖИВАНИЕ СЕТЕЙ (часть 2) Курец Д.С.
S11-1 PAT318, Section 11, March 2005 SECTION 11 ANALYSIS SETUP.
Системы программирования Системы программирования обеспечивают создания новых программ для компьютера. Современные системы программирования обычно представляют.
Обнаружение уязвимостей в web- приложениях, написанных на Python, средствами динамического анализа исходных кодов Заливин Д.А. Козлов Д.Д. Петухов А.А.
Александр Сербул Руководитель направления контроля качества интеграции и внедрений Автоматическая проверка безопасности интернет-проектов.
АлтГТУ им И. И. Ползунова. АлтГТУ им. И. И. Ползунова Проблемы эксплуатации Текст.
DATASPHERE Activity Monitor. Факт: С каждым днем сложность ИТ-ландшафта стремительно возрастает Распределенные приложения и процессы Activity Monitor.
Нагрузочное тестирование информационных систем с использованием облачных вычислений Исполнитель: Макрушин Д.Н. Руководитель: д.т.н., проф. Запечников С.В.
Расширение технологии UniTESK средствами генерации структурных тестов Дмитрий Воробьев
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – обработка ошибок страниц и приложения, Global.aspx.
1 Диаграммы реализации (implementation diagrams).
Автоматическая генерация кода программ с явным выделением состояний Канжелев С.Ю. магистрант СПбГУ ИТМО Шалыто А.А. доктор технических наук профессор СПбГУ.
Владимир Костюков, АлтГТУ АлтГТУ им И. И. Ползунова Распределенная система мониторинга и диспетчерезации процессов гетерогенной среды.
Транксрипт:

Автоматический поиск уязвимостей в программах без исходных текстов … или введение в фаззинг Лаборатория информационной безопасности Докладчик: Олексюк Дмитрий, системный архитектор eSage Lab

Различные подходы к поиску уязвимостей - Метод «белого ящика» Обычно, поиск уязвимостей по исходным текстам. - Метод «чёрного (серого) ящика» Поиск уязвимостей без исходных текстов, с применением реверс-инжиниринга или без него

К чему применим фаззинг Сетевые протоколы Уязвимости при обработке файлов Драйверы режима ядра Различные интерфейсы (RPC, ActiveX компоненты) Многое другое

Идеальный фаззер Обеспечивает полное покрытие кода исследуемого приложения Требует для своей работы количество ресурсов, не ставящее под сомнение саму целесообразность проведения фаззинга Регистрирует любые аномалии в процессе исполнения исследуемого приложения Обеспечивает линейную масштабируемость Не существует

Этапы фаззинга 1.Анализ исследуемого приложения, разработка фаззера (опционально) 2.Генерация данных 3.Собственно, фаззинг 4.Анализ результатов

Генерация данных - С использованием шаблонов Наиболее эффективный подход, но сложный и долгий в плане реализации - На основе уже имеющихся данных Простота, но с сомнительной эффективностью при реализации «в лоб» На самом деле, предпочтителен промежуточный подход

Подготовка к фаззингу

Генерация данных - Совсем тупо: MutateGen и архивы - Немного лучше: StgOpenStorageEx() и Visio - Почти хорошо: Peach и HTTP протокол

Анализ покрытия кода - Позволяет выявить, какие ветви алгоритма приложения исполнялись в процессе фаззинга - Выбор более подходящих исходных данных для мутационного фаззинга - Оценка эффективности фаззинга (чем больше покрытие кода – тем лучше)

Реализация фаззинга Сетевые протоколы с множеством состояний?

Реализация фаззинга IOCTL запросы к драйверам?

Анализ результатов Мониторинг исключений [+] DLL injected into the target process 8032 [+] Exit on first #AV: Yes ModuleInit(): From process 'VISIO.EXE' (PID: 8032) [!] EXCEPTION OCCURS:STATUS_ACCESS_VIOLATION at 0x Access type: Read Address: 0x EAX=0x EBX=0x ECX=0x EDX=0x773270b4ESI=0x a EDI=0x EBP=0x0012a244

Анализ результатов Аварийные дампы The stored exception information can be accessed via.ecxr. (26dc.178c): Access violation - code c (first/second chance not available) eax= ebx=02bf0d78 ecx=002590c4 edx=02bf0d38 esi=02bf0d38 edi=002593d8 eip=773270b4 esp= ebp=002590a8 iopl=0 nv up ei pl zr na pe nc *** ERROR: Symbol file could not be found. Defaulted to export symbols for VISLIB.DLL - VISLIB!Ordinal1+0xb18e2: 565cf57d 8b4111 mov eax,dword ptr [ecx+11h] ds:0023: =???????? ntdll!KiFastSystemCallRet: b4 c3 ret b5 8da lea esp,[esp] bc 8d lea esp,[esp] ntdll!KiIntSystemCall: c0 8d lea edx,[esp+8] c4 cd2e int 2Eh c6 c3 ret c7 90 nop ntdll!RtlRaiseException: c8 55 push ebp *** Stack trace for last set context -.thread/.cxr resets it ChildEBP RetAddr Args to Child WARNING: Stack unwind information not available. Following frames may be wrong. 0025a01c 565cf VISLIB!Ordinal1+0xb18e2

Анализ результатов Отладчик и !exploitable [+] Analyzing "_minidumps\0xC _0x565CF57D_19.05_ DMP" [+] Faulting file: ac.vsd [+] Exception 0xc at address VISLIB.dll+bf57d [+] Main module version: , fault module version: Exploitability Classification: PROBABLY_EXPLOITABLE Recommended Bug Title: Probably Exploitable - Data from Faulting Address controls subsequent Write Address starting at VISLIB!Ordinal1+0x b18e2 (Hash=0x d.0x39521d59) The data from the faulting address is later used as the target for a later write. [+] Analyzing "_minidumps\0xC _0x _19.05_ DMP" [+] Faulting file: 0000a4e6.vsd [+] Exception 0xc at address VISLIB.dll+2f7161 [+] Main module version: , fault module version: *** ERROR: Module load completed but symbols could not be loaded for VISIO.EXE Exploitability Classification: PROBABLY_NOT_EXPLOITABLE Recommended Bug Title: Read Access Violation near NULL starting at VISLIB!DllCanUnloadNow+0x (Hash=0x6b3b041d.0x544a027a) This is a user mode read access violation near null, and is probably not exploitable.

Проблемы фаззинга - Уязвимости в архитектуре Сложно предугадать, где найдёшь следующую - В результате фаззинга не всегда происходит падение Особенно при pool corruption - Не все найденные уязвимости эксплуатабельны А ведь уникальных воспроизводимых падений может быть сотни и тысячи!

Taint Analysis - «Продвинутый» динамический анализ кода - Позволяет сопоставить конкретные инструкции трассы исполнения с входными данными, которые обрабатывает исследуемая программа.

Taint Analysis и фаззинг - Выявление участков входных данных (файла), которые не обрабатываются программой Сокращение количества сгенерированных данных и как следствие – времени фаззинга - Корректировка алгоритма генерации данных в процессе фаззинга Увеличение покрытия кода (повышение эффективности фаззинга)

Taint Analysis и фаззинг Возможная схема реализации

Ошибки исследователей - Зацикленность на публичных инструментах Общеизвестное не обязательно лучшее, иногда проще написать свой фаззер - Погоня за универсальностью Менее универсальный фаззер может являться более эффективным для частных случаев - Оторванность от задач реальной жизни «Крутой» и концептуальный инструмент не всегда удобен и оправдан в практическом применении

Ошибки исследователей - Неадекватная оценка ресурсов и трудозатрат Вам дороже своё рабочее время, или машинное? - А нужен ли вам вообще фаззинг? Может, проще найти уязвимость вручную?

СПАСИБО ЗА ВНИМАНИЕ twitter.com/d_olex