В этой статье поговорим о технологии защиты Windows под названием SEHOP, позволяющей усложнить задачу злоумышленнику, решившему взломать вашу систему. Технология SEHOP — Structured Exception Handler Overwrite Protection (защита от перезаписи обработчика структурных исключений) – это антиэксплоитная технология, предназначенная для блокировки достаточно часто используемой методики взлома систем Windows- SEH overwrite.
Попробуем вкратце разобраться, что же такое технология SEH. SEH — Structured Exception Handling (структурная обработка исключений) – механизм в ОС Microsoft Windows, который позволяет приложениям получать управление при возникновении программных и аппаратных исключений, таких как выполненные запрещенных инструкций, деление на ноль, нарушение доступа к памяти и т.д, и обрабатывать эти ошибки самостоятельно без использования операционной системы. Технология SEH позволяет программистам контролировать обработку исключений, а также является отладочным средством. В том случае, если исключение не обработано, приложение аварийно завершается и пользователь видит знакомое окно с ошибкой «Программа выполнила недопустимую операцию и будет закрыта».
Указатели на SEH-обработчики в основном находятся в стеке в SEH-фреймах, и переполняющийся буфер может перезатирать эти обработчики. Злоумышленники могут прибегнуть к перезаписи SEH-фреймов с целью перехвата управления путем подмены SEH-обработчика и/или для подавления аварийного завершения программы при возникновении исключения (тем самым демаскируется факт атаки).
Технология, используемая хакерами для перезаписи обработчиков SEH называется Structure Exception Handler (SEH) overwrite . С помощью SEH overwrite атакующий может передать управление на вредоносный код, который внедрен через любую доступную уязвимость (обычно через переполнение буфера).
В Windows Server 2003 существовала специальная технология защиты от переполнения буфера, функционирующая именно на основе SEH (таким образом, реализуются и многие другие зашиты этого типа). Хакер, перехватив SEH-обработчик и заменив его своим, обходит данную технологию защиты, которая просто не срабатывает.
Для борьбы с SEH overwrite Microsoft в 2009 году работало специальную технологию SEHOP. Данная технология была внедрена Windows Vista SP1, Windows Server 2008 и все последующие версии Windows. Однако по – умолчанию SEHOP включен только на серверных платформах (Windows Server 2008/2008 R2/2012).
Механизм защиты от перезаписи обработчика структурных исключений применяется во время работы программы. Это означает, что он позволяет защитить приложения независимо от того, были ли они скомпилированы с использованием современных средств защиты, таких как /SAFESEH, или без них. Кроме того, стоит отметить, что 64 битный код не подвержен данному типу атаки, т.е. SEHOP защищает только 32-х битные приложения, включая те, что выполняются под Wow64 на 64-х битных системах.
На клиентских платформах SEHOP выключен из-за несовместимости с некоторыми версиями клиентского ПО. Стоит отметить, что все современное ПО пишется с учетом особенностей архитектуры SEHOP, так что для повышения безопасности вашей системы Windows SEHOP следует включить. В том случае, если после активации этого механизма защиты начнут появляться различные ошибки в прикладном ПО, увы – оно не совместимо с системой защиты от перезаписи SEH. В этом случае, попытайтесь отказаться от несовместимого ПО (или обновить его на более свежую версию, отключить SEHOP для отдельного процесса или для всех).
Как активировать SEHOP в Windows для всех приложений
Включить технологию защиты SEHOP можно с помощью модификации реестра (напомним, что в Windows Server 2012/ 2008 R2/ 2008 эта функция уже активирована)
- Откройте редактор реестра regedit.exe
- Перейдите в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel
- Найдите ключ DisableExceptionChainValidation, если он отсутствует – создайте его (тип — Dword, имя – DisableExceptionChainValidation)
- Задайте ключу DisableExceptionChainValidation значение 0 (включить SEHOP).
- Закройте редактор реестра и перезагрузите ПК
В том случае, если после перезагрузки перестанет работать часть программ, попробуйте обновить их, и если и это не поможет, отключите SEHOP, для этого задайте ключу DisableExceptionChainValidation значение 1.
Кроме того, имейте в виду, что ряд приложений могут некорректно работать именно из-за SEHOP. В том случае, если вы не хотите отключать SEHOP, целиком, можно отключить эту функцию для конкретных процессов.
SEHOP для отдельного процесса
Чтобы отключить SEHOP для отдельного процесса, откройте редактор реестра и перейдите в ветку:
- Для 32-битной Windows HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
- Для 64-битной Windows HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
Внутри ветки Image File Execution Options создайте новую ветку с именем процесса, для которого вы хотите создать исключение SEHOP (например, skype.exe). Внутри данного раздела создайте новый ключ DisableExceptionChainValidation и задайте ему значение 1 (тем самым вы отключите SEHOP для процесса skype.exe).
Значение 0 – включить SEHOP для процесса.