WikiDer > Разрушающая атака

Shatter attack

В вычислениях сокрушительная атака это метод программирования, используемый хакеры на Майкрософт Виндоус операционные системы обойти ограничения безопасности между процессами в сессия. Shatter-атака использует недостаток конструкции в системе передачи сообщений Windows, в результате чего может быть использован произвольный код. введен в любое другое запущенное приложение или службу в том же сеансе, который использует цикл сообщений. Это может привести к повышение привилегий эксплуатировать.[1]

Обзор

Shatter-атаки стали темой интенсивного обсуждения в сообществе безопасности в августе 2002 года после публикации статьи Криса Пэджета под названием «Использование конструктивных недостатков Win32 API для повышения привилегий».[2] В статье, в которой был введен термин «сокрушительная атака», объясняется процесс, с помощью которого приложение может выполнять произвольный код в другом приложении. Это могло произойти из-за того, что Windows позволяет непривилегированным приложениям отправлять сообщения на петли сообщений приложения с более высокими привилегиями - и некоторые сообщения могут иметь адрес функции обратного вызова в адресном пространстве приложения в качестве параметра. Если злоумышленнику удастся поместить свою строку в память приложения с более высокими привилегиями (например, вставив шеллкод в поле редактирования) в известном месте, они могут затем отправлять сообщения WM_TIMER с параметрами функции обратного вызова, установленными так, чтобы указывать на строку злоумышленника.

Через несколько недель после публикации этой статьи Microsoft ответила, отметив, что: «В статье правильно сказано, что такая ситуация существует, и она правильно описывает ее эффект. ... Где статья ошибается, так это в утверждении, что это недостаток в Windows. На самом деле недостаток кроется в конкретной службе с высокими привилегиями. По замыслу, все службы интерактивного рабочего стола являются одноранговыми и могут запрашивать друг друга. В результате все службы интерактивного рабочего стола имеют соразмерные привилегии. с самым привилегированным сервисом ".[3]

Решения

В декабре 2002 года Microsoft выпустила патч для Windows NT 4.0, Windows 2000, и Windows XP это закрыло некоторые пути эксплуатации.[4] Однако это было лишь частичным решением, поскольку исправление ограничивалось службами, включенными в Windows, которые можно было использовать с помощью этого метода; основной недостаток дизайна все еще существует и может использоваться для нацеливания на другие приложения или сторонние службы.[5] С Виндоус виста, Microsoft стремилась решить проблему двумя способами: во-первых, локальные пользователи больше не входят в сеанс 0, тем самым отделяя цикл сообщений сеанса вошедшего в систему пользователя от системных служб с высокими привилегиями, которые загружаются в сеанс 0. Во-вторых, новая функция под названием Изоляция привилегий пользовательского интерфейса (UIPI), с помощью которого процессы могут быть дополнительно защищены от атак взлома путем назначения Уровень честности к каждому процессу.[6] Попытки отправить сообщения процессу с более высоким уровнем целостности потерпят неудачу, даже если оба процесса принадлежат одному и тому же пользователю. Однако не все взаимодействия между процессами на разных уровнях целостности предотвращаются UIPI.[6] Internet Explorer 7, например, использует функцию UIPI, чтобы ограничить степень, в которой его компоненты визуализации взаимодействуют с остальной частью системы.

Способ создания экземпляров сессий был переработан в Виндоус виста и Windows Server 2008 для обеспечения дополнительной защиты от разрушительных атак. Логины локальных пользователей были перемещены из сеанса 0 в сеанс 1, тем самым отделив процессы пользователя от системных служб, которые могли быть уязвимы.[7][8]

Служба обнаружения интерактивных служб в Windows Server 2008.

Это создает Обратная совместимость проблемы, однако, поскольку некоторое программное обеспечение было разработано с предположением, что служба работает в том же сеансе, что и зарегистрированный пользователь. Для поддержки этого представления Windows Vista и Windows Server 2008 представили Служба Windows называется "Обнаружение интерактивных служб", который обеспечивает доступ к диалоговым окнам, созданным интерактивными службами, когда они появляются. Интерактивному пользователю отображается диалоговое окно и предлагается возможность переключиться на сеанс 0 для доступа к диалоговому окну.[9] Эта возможность была удалена в Обновление Windows 10 Creators Update.[10]

Смотрите также

Рекомендации

  1. ^ «Использование недостатков дизайна в Win32 API для повышения привилегий. Или ... Shatter Attacks - Как взломать Windows». Получено 2011-12-29.
  2. ^ Крис Пэджет (август 2002 г.). «Использование недостатков дизайна в Win32 API для повышения привилегий». Архивировано из оригинал на 2006-09-04.
  3. ^ «Информация об обнаруженных архитектурных недостатках в Windows». TechNet. Microsoft. Сентябрь 2002 г.
  4. ^ «Бюллетень по безопасности Microsoft MS02-071 - Ошибка в обработке сообщений Windows WM_TIMER может привести к повышению привилегий (328310)». Microsoft. 11 декабря 2002 г.. Получено 2006-07-18.
  5. ^ «Небьющиеся окна» (PDF). Получено 2011-12-29.
  6. ^ а б «PsExec, Контроль учетных записей пользователей и границы безопасности». Получено 2007-10-08.
  7. ^ «WebLog Ларри Остермана - Взаимодействие со службами». Ларри Остерман. 14 сентября 2005 г.. Получено 2007-04-03.
  8. ^ «Почему Vista? Изменения в услугах, часть 2 (безопасность, стабильность, целостность системы)». Кен Шефер. 5 августа 2006 г.
  9. ^ Сирил Вуазен (23 февраля 2007 г.). «Изоляция служб в сеансе 0 Windows Vista и Longhorn Server». Сирил Вуазен (он же Вой) о безопасности. Блоги MSDN. Получено 2008-04-23.
  10. ^ «Функции, которые удалены или объявлены устаревшими в Windows 10 Creators Update». Microsoft.