Олексюк Дмитрий dmitry@esagelab.ru eSage lab www.esagelab.ru Беззащитная защита? Уязвимости в драйверах режима ядра.

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



Advertisements
Похожие презентации
Вычисление времени запрета обработки внешних прерываний ОС с использованием ячейки МПВ-М Магистерская диссертация Студент: Севастинович Павел, 515 гр.
Advertisements

Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень.
Проблемы обеспечения безопасности приложений Тема 20.
Системные механизмы Windows. Системные механизмы диспетчеризация ловушек, в т.ч. прерываний, DPC (deferred procedure call), APC (asynchronous procedure.
Rootkit Rootkit программа или набор программ для скрытия следов присутствия злоумышленника или вредоносной программы в системе. Термин rootkit пришел из.
Процессоры Intel в защищенном режиме. Недостатки реального режима Невозможно адресовать пространство памяти свыше 1-го Мб Невозможно работать с массивами,
Проблемы обеспечения безопасности приложений Тема 20.
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень.
Проблемы обеспечения безопасности приложений Тема 20.
Лабораторная работа 7. Работа с динамической памятью, строками и файлами.
Администраторы ресурсов в QNX. Администратор ресурсов в QNX является пользовательской программой, которая предоставляет стандартизированный по интерфейсу.
Алиса Шевченко eSage lab Беззащитная защита? Технологии обхода антивирусов.
Архитектура операционной системы Microsoft Windows 2000.
Обобщенный формат дескриптора сегмента в IA - 32 База 31 : 24 G G D/BD/B D/BD/B 0 0 AVLAVL AVLAVL Предел сегмента 19 : 16 P P DPL S S Тип База 23 : 16.
1 ЛЕКЦИЯ 4 ОБРАБОТКА ПРЕРЫВАНИЙ В ЗАЩИЩЕННОМ РЕЖИМЕ Обработка прерываний в защищенном режиме так же сильно отличается от обработки в реальном режиме, как.
Системное программное обеспечение Кыргызско – Российский Славянский Университет Кафедра ИВТ, 3-й курс ИВТ, 5 семестр Лекция 9.
1 ЛЕКЦИЯ 3 ХАРАКТЕРИСТИКА ЗАЩИЩЕННОГО РЕЖИМА РАБОТЫ МИКРОПРОЦЕССОРА В реальном режиме работы поддерживается выполнение всего одной программы. Для этого.
Обнаружение уязвимостей в web- приложениях, написанных на Python, средствами динамического анализа исходных кодов Заливин Д.А. Козлов Д.Д. Петухов А.А.
1 Управление памятью Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Файлы - именованная область внешней памяти ЭВМ, хранящая совокупность данных. Файл.
Транксрипт:

Олексюк Дмитрий eSage lab Беззащитная защита? Уязвимости в драйверах режима ядра

eSage lab Типы уязвимостей Уязвимости в реализации –При обработке IOCTL запросов –При обработке control flow данных –При обработке данных из общесистемных ресурсов Уязвимости в архитектуре

eSage lab Взаимодействие с драйвером Диспетчер ввода-вывода LPC Named Pipes Более сложные механизмы

eSage lab Диспетчер ввода-вывода Создание устройства –\Device\MyControlDevice Создание символьной ссылки –\\.\MyControlDevice Регистрация IRP обработчиков –IRP_MJ_CREATE –IRP_MJ_CLOSE –IRP_MJ_READ/ IRP_MJ_WRITE –IRP_MJ_DEVICE_CONTROL

eSage lab Диспетчер ввода-вывода

eSage lab I/O Control Code Device Type (16-31 биты) Access (14-16 биты) –FILE_READ_ACCESS –FILE_WITE_ACCESS –FILE_ANY_ACCESS Function (2-14 биты) Method (0-2 биты)

eSage lab Методы ввода-вывода METHOD_BUFFERED –Проверка указателей выполняется диспетчером –Данные копируются в не подкачиваемый пул –Самый безопасный но достаточно ресурсоёмкий METHOD_IN_DIRECT (METHOD_OUT_DIRECT) –Проверка указателей выполняется диспетчером –Для входных (выходных) данных создаётся MDL METHOD_NEITHER –Указатели передаются драйверу «as is» –Самый быстрый но нуждающийся в дополнительных проверках безопасности

eSage lab Уязвимости в реализации Неверная проверка указателей Неверная проверка размера данных Неверная проверка формата данных

eSage lab Проверка указателей User Mode адреса –MM_HIGHEST_USER_ADDRESS –MmUserProbeAddress –ProbeForRead() и ProbeForWrite() Kernel Mode адреса –MmIsAddressValid()

eSage lab Другие уязвимости в реализации Выход за границу буфера при обработке строк –При вызове strlen, strcpy, итд. Запись по неверному Kernel Mode адресу –Как результат уязвимости в архитектуре Некорректные дескрипторы –NtClose() -> INVALID_KERNEL_HANDLE Double-fetch уязвимости –Пример: уязвимость MS в win32k.sys

eSage lab Уязвимость типа double-fetch case IOCTL_PROCESS_DATA: { if (stack->Parameters.DeviceIoControl.InputBufferLength == sizeof(REQUEST_BUFFER)) { PREQUEST_BUFFER Buff = (PREQUEST_BUFFER)Irp->AssociatedIrp.SystemBuffer; UCHAR Data[BUFFER_SIZE]; if (Buff->Size Data, Buff->Size, 1); bOk = TRUE; } __except (EXCEPTION_EXECUTE_HANDLER) { // ProbeForRead вызвала исключение } if (bOk) { RtlCopyMemory(Data, Buff->Data, Buff->Size); // обработка полученых данных } break; }

eSage lab Ошибки при парсинге PE-файлов в антируткитах 1. Поиск ядра в записях списка загруженных системных модулей 2. Копирование оригинального файла 3. Модификация копии ядра 4. Подмена пути в LDR_DATA_TABLE_ENTRY

eSage lab Протестированные утилиты Rootkit Unhooker –Абсолютно корректная работа SafenSec Rootkit Detector –BSoD GMER –Аварийное завершение процесса gmer.exe IceSword –Завершение процесса с ошибкой

eSage lab Уязвимость MS Call Stack –win32k!NtUserMessageCall(…, lParam=Buffer, xParam=StringSize, …) –win32k!NtUserfnOUTSTRING() –nt!ProbeForWrite() Возможность обнуления произвольного байта в Kernel Mode памяти

eSage lab Системы безопасности и уязвимости в архитектуре Необходимо препятствовать получению дескриптора устройства со стороны потенциально злонамеренного кода –Фильтрация IRM_MJ_CREATE –Перехват NtCreateFile/NtOpenFile –Препятствие копированию дескриптора Перехват NtDuplicateHandle Препятствие открытию процесса

eSage lab Типы уязвимостей по методу эксплуатации Перезапись памяти Обнуление памяти Переполнение пула Переполнение стека

eSage lab Эксплуатация перезаписи памяти Модификация IDT Модификация GDT Эксплуатация методом перезаписи адреса обработчика системного вызова в KiServiceTable не надёжна

eSage lab Шлюз прерывания Offset High и Offset Low Segment Selector P (Present) DPL (Descriptor Privileges Level) D (16/32 bit)

eSage lab Шлюз вызова Type (1100b – 32-bit call gate) Parameters Count

eSage lab HalDispatchTable и уязвимости обнуления памяти Call Stack –nt!NtQueryInternalProfile() –nt!KeQueryInternalProfile() –hal!HalQuerySystemInformation()

eSage lab Эксплуатация уязвимости обнуления памяти 1. Поиск адреса HalDispatchTable и др. функций 2. Выделение памяти по 0x Затирание нулём указателя на HalQuerySystemInformation 4. Вызов NtQueryInternalProfile 5. Замена указателя HalQuerySystemInformation на заглушку

eSage lab Классические уязвимости Переполнение Пула –Сводится к эксплуатации уязвимости перезаписи памяти Переполнение стека –Нет необходимости копирования шеллкода на стек –Нет проверки целостности стека –Эксплуатировать очень легко

eSage lab Неэксплуатируемые уязвимости Чтение по некорректному адресу памяти Ошибки связанные с некорректными дескрипторами Ошибки связанные с внезапным завершением процесса

eSage lab Payload Снятие перехватов Запуск произвольного кода в Ring 0 Повышение привилегий

eSage lab Повышение привилегий 1. Получение указателя на EPROCESS системного процесса 2. Получение указателя на EPROCESS целевого процесса 3. Копирование значение поля AccessToken

eSage lab

eSage lab IOCTL Fuzzer Фаззинг IOCTL запросов с любыми методами ввода-вывода Логирование информации о запросах (включая данные) в файл или окно консоли Фильтрация IOCTL запросов –По имени устройства –По имени драйвера –По имени процесса –По I/O Control Code

eSage lab

eSage lab Уязвимые продукты Kaspersky Internet Security (kl1.sys) Defence Wall (dwall.sys) Avira Premium Security (avgntflt.sys) BitDefender Total Security 2009 (bdfndisf.sys) ZoneAlarm Security Suite (srescan.sys) Panda Global Protection 2009 (APPFLT.SYS) Internet Security 2009 (fsdfw.sys) И другие…