Девятый бит: Блог кафедры АСОИУ ОмГТУ

Форсируем виндовую защиту

Этим постом я открываю цикл статей, который закончится постом «взять первое место на олимпиаде по программированию за 10 минут».

Большинство людей поставив винду и не думают, что ее нужно допиливать, да что уж там когда им всучивают ноут с предустановленной форточкой они и не думают снести ее и собрать Gentoo. Так почему же защита работает не в полную силу? Ответ прост: чтоб работала сделанная на коленке поделка, при включенной защите прога будет выдавать кучу ошибок (вспоминая скайп…).

Напильников существует много, но в данном цикле статей нас будет интересовать только напильник №8.

ВУЗ DEP (Data Execution Protection)

После установки винды и до первой перезагрузки я всегда полностью включаю DEP. Сделать это можно следующим образом:

  1. открываем свойства системы (можно нажать Win+R и набрать sysdm.cpl )
  2. во вкладке «Дополнительно» в группе «быстродействие» нажать кнопку «параметры»
  3. во вкладке «предотвращение выполнения данных» выбрать пункт «включить DEP для всех программ и служб, кроме выбранных ниже»

Подробнее о DEP, NX/XD-bit, и о том что мы сделали выше приведенной последовательностью команд описано в этой статье.

SEHOP (Structured Exception Handler Overwrite Protection), ECV (Exception Chain Validation)

Вначале поговорим о SEH  - структурная обработка исключений. Чтоб было понятнее откройте С++ проект в Visual Studio, нажмите Alt+F7, зайдите в Configurations Properties — С/С++ — Code Generation, здесь нас интересует Enable C++ exception. Кстати и SEHOP тут неподалеку, поднимаемся на уровень выше до опций линкера Linker — Advanced, и в конце будет Image Has Safe Exception Handlers.

Я рекомендую пока не читать тот материал из ссылки «Enable C++ exception» — неподготовленный ум этого не поймет, лучше следовать этому плану:

  1. закуска: «Шаг 46 — Структурная обработка исключений»
  2. первое: «Структурная обработка исключений — Википедия»
  3. второе: «Enable C++ exception»
  4. десерт: «Централизованная обработка исключений — RSDN»

А теперь как SEHOP включить (копи-паст):

  1. В меню Пуск выберите пункт Выполнить, введите команду regedit и нажмите клавишу ВВОД.
  2. Найдите следующий раздел реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\DisableExceptionChainValidation
    1. Примечание: Если не удалось найти параметр DisableExceptionChainValidation в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ выполните действия, описанные ниже, чтобы создать его.
    2. Щелкните правой кнопкой мыши раздел kernel, выберите команду Создать, а затем — Параметр DWORD.
      Введите DisableExceptionChainValidation и нажмите клавишу ВВОД.
  3. Дважды щелкните элемент DisableExceptionChainValidation.
  4. Присвойте параметру DisableExceptionChainValidation значение 0, чтобы включить его, а затем нажмите кнопку ОК.
    Примечание: Значение 1 отключает этот параметр реестра. Значение 0 включает его.
  5. Перезагрузите комп.

Дополнительно замечу, что ECV защищает только 32-х битные приложения, включая те, что выполняются под Wow64 на 64-х битных системах. 64-х битный код не подвержен этому типу атаки.

А теперь погрузимся в дзен:

  1. SEH на службе контрреволюции
  2. Full disclose: Небезопасный SafeSEH (он находится примерно посередине статьи)
  3. Могущество кодов Рида-Соломона или информация, воскресшая из пепла (даже не знаю как это сюда попало, можно не читать)

EAF (Export address table Address Filter)

Тут уже без полного дзена не получится. Вначале надо понять что такое Export address table. Для этого окунемся в структуру PE (Portable Executable, исполняемые файлы) файла: откроем секцию экспорта и перейдем к address table: «Данная структура данных содержит адреса экспортируемых функций (их точки входа) экпортируемых данных и т.п.».

Погрузимся еще ниже и читаем статью «Путь воина — внедрение в pe/coff файлы» , здесь нам нужен раздел про Экспорт, он находится сразу под надписью «Листинг 7 » .
Надеюсь после прочтения всего этого мозг еще не вскипел. Все это должно было ответить на вопрос: от чего же мы защищаемся, хотя нет, не так, правильный вопрос: при помощи чего мы защищаемся. А ответ здесь.
Кратко: при помощи «навешивания» на Export address table аппаратных точек останова у стандартных библиотек можно определить подмену функций этих стандартных библиотек.

И напоследок пища для размышлений.

Enhanced Mitigation Experience Toolkit

Если заметили, то в обоих последних статьях упоминается про EMET — Enhanced Mitigation Experience Toolkit, это можно сказать центр управления параметрами безопасности, описанных в этой статье.  Он контролирует DEP, SEHOP, EAF, и не описанные в статье: ASLR, NullPage, HeapSpray.
Описание EMET и ссылка на загрузку.

Рекомендую в ней выставить следующие глобальные параметры:

EMET 2.0

EMET 2.0

Также рекомендую к прочтению эту заметку: «Use EMET 2.0 to block Adobe Reader and Acrobat 0-day exploit» .

You must be logged in to post a comment.