Содержание
- 2. Драйверы часто встречаются в Антивирусах – доступ к файловой системе, перехват системных функций Межсетевых экранах –
- 3. Взаимодействие GUI NTDLL.DLL I/O manager Driver Kernel space User space Режим ядра Пользовательский режим NtDeviceIoControlFile Kernel32.dll
- 4. Функция DeviceIoControl Параметры hDevice – описатель устройства dwIoControlCode - управляющий код ввода-вывода lpInBuffer – указатель на
- 5. Информация закодированная в dwIoControlCode Метод передачи данных – способ передачи входных данных Идентификатор функции – идентификатор
- 6. Методы передачи входных данных METHOD_BUFFERED METHOD_IN_DIRECT METHOD_OUT_DIRECT METHOD_NEITHER
- 7. Метод: METHOD_BUFFERED Проверка входных параметров функциями ProbeForRead, ProbeForWrite I/O manager выделяет память в пространстве ядра Объём
- 8. Метод: METHOD_IN_DIRECT, METHOD_OUT_DIRECT Проверка входных параметров функциями ProbeForWrite, ProbeForRead I/O manager выделяет память в пространстве ядра
- 9. Метод: METHOD_NEITHER I/O manager передаёт указатели на данные без какой-либо проверки Отсутствуют проверки ProbeForRead, ProbeForWrite Все
- 10. Функции ProbeForRead, ProbeForWrite Параметры: Address –указатель на буфер памяти пользовательского режима Length – длина в байтах
- 11. Обход функций ProbeForRead, ProbeForWrite При длине равной нулю, не вызывает исключения, и не выполняет никаких проверок
- 12. Типичные уязвимости METHOD_NEITHER Arbitrary kernel memory write NULL pointer dereference METHOD_BUFFERED Buffer overflows NULL pointer dereference
- 13. Методология поиска уязвимостей Fuzzing тестирование без предварительной информации о коде драйвера Fuzzing+мониторинг информация о коде драйвера
- 14. Fuzzing Перебор входных параметров DeviceIoControl: dwIoControlCode - DWORD lpInBuffer – PVOID nInBufferSize - DWORD lpOutBuffer –
- 15. Fuzzing ioctl fuzzer NTDLL.DLL I/O manager Driver Kernel space User space Режим ядра Пользовательский режим #1
- 16. 5 минут работы ioctl fuzzer’a
- 17. Fuzzing: Тестовые наборы dwIoControlCode - полный перебор lpInBuffer – NULL, invalid kernel space address nInBufferSize –
- 18. Fuzzing: Плюсы и минусы Плюсы Лёгкий в реализации(40 строк C кода) Неплохие результаты Минусы Пропуск уязвимостей,
- 19. Fuzzing+мониторинг Отслеживание прохода для определённого тестового набора данных(Code coverage) Протоколирование состояний контекста(Data flow) Протоколирование “падений” Генерация
- 20. Windows Kernel Fuzzing+мониторинг ioctl fuzzer Driver #1 DeviceIoControl Kernel Debugger Plugin 1.Log 2.Log N.log Code coverage
- 21. Fuzzing+мониторинг: Плюсы и минусы Плюсы Покрытие кода для конкретного тестового набора Протоколирование найденной уязвимости Минусы Сложность
- 22. Ручной анализ Локализация IOCTL обработчика Анализ обрабатываемых IOCTL значений Формирование тестовых наборов Анализ обработки входных значений
- 23. Ручной анализ: Плюсы и минусы Плюсы Нахождение наибольшего количества уязвимостей Лучший в комбинации с fuzzing подходом
- 24. Статистика протестированных продуктов Всего в исследовании участвовали 40 продуктов: антивирусы, межсетевые экраны, виртуальные машины, эмуляторы, криптосистемы.
- 25. Количество обнаруженных уязвимостей Полная компрометация системы Отказ в обслуживании
- 26. Сравнение методов поиска уязвимостей
- 27. Пути решения IoCreateDeviceSecure – безопасное создание устройства(Microsoft, Dr. Web) PsGetCurrentProcessId – проверка идентификатора процесса(Eset) KeGetPreviousMode –
- 28. Выводы Тестирование драйверов в большинстве компаний не проводится Большое количество уязвимостей, которые можно быстро обнаружить и
- 29. Welcome! http://www.securitylab.ru/lab/
- 30. Будущие исследования Полные результаты исследования и детальная информация по методам поиска уязвимостей будут опубликованы на сайте
- 31. Никита Тараканов [email protected] Вопросы?
- 32. PT Research Team Раздел "Лаборатория" www.securitylab.ru/lab на портале SecurityLab публикует уязвимости, обнаруженные в программном и аппаратном
- 34. Скачать презентацию































Язык запросов поисковой системы Yandex
Готовимся к экзамену №1. Разбираем типовые ошибки
Электронная почта
Содержание и оформление сайта (Управление закупок)
Кодирование графики
Работа над ошибками по программированию 1
Against all odds
Транспортный уровень. Модель OSI
Электронные таблицы. Обработка числовой информации в электронных таблицах
Функции объекта. Характеристика объекта по плану
Использование Excel для аналитической деятельности завуча Грязных В.С. Зам.директора по УВР МОУ «Лихославльская СОШ№7»
Путешествие в страну Занимательной грамматики
Лекция 1
Системы счисления. Двоичная система счисления
Операции управления программой
Программирование на языке Паскаль
Презентация на тему Текстовый процессор MS WORD
Computer clusters systems
Принципы функционирования передачи данных сотовых сетей (1)
Юные комики
Классификация систем автоматического управления и принципы управления. Лекция 2
Компьютерная память
Презентация "Основные этапы разработки моделей на компьютере" - скачать презентации по Информатике
Конструирование, как разновидность моделирования
Функции в С++
Аппаратное и программное обеспечение ЭВМ и сетей
Язык Python
Яндекс Диск. Знакомимся с синхронизацией