Анализ и использование уязвимости 0day в системе Microsoft Windows
Введение
В прошлом месяце в обновлении безопасности Microsoft был обнаружен уязвимость повышения привилегий win32k, которая используется в дикой природе и существует только в ранних версиях Windows. В этой статье будет проанализировано, как злоумышленники продолжают использовать эту уязвимость на фоне постоянного улучшения современных мер безопасности. Анализ проводился в среде Windows Server 2016.
Фон уязвимости
Уязвимость 0day относится к уязвимостям, которые не были раскрыты и исправлены, и могут быть злоупотреблены для причинения значительного ущерба. Обнаруженная уязвимость 0day в системе Windows позволяет хакерам получить полный контроль над системой, последствия могут включать, но не ограничиваются:
Кража личной информации
Сбой системы, потеря данных
Финансовые потери
Внедрение вредоносного ПО
Закрытый ключ был украден
Цифровые активы были переведены
С более широкой точки зрения, эта уязвимость может повлиять на всю экосистему Web3, работающую на инфраструктуре Web2.
Анализ патчей
Патч исправил проблему многократной обработки подсчета ссылок на объект. Анализ ранних комментариев в исходном коде показывает, что оригинальный код блокировал только объект окна, не блокируя объект меню в окне, что могло привести к неправильной ссылке на объект меню.
Анализ эксплуатации уязвимостей
Анализ показывает, что в функции xxxEnableMenuItem функция MenuItemState возвращает два возможных меню: главное меню окна или подменю в меню.
Создайте специальную многослойную вложенную структуру меню и установите определенные свойства, чтобы обойти проверку функций. При возврате функции xxxRedrawTitle на уровень пользователя удалите ссылки между меню и освободите целевой объект меню. В конечном итоге в функции xxxEnableMenuItem будет ссылаться на недействительный объект меню.
Реализация эксплуатации уязвимости
Общая идея
Рассмотрим два направления использования:
Выполнение кода shellcode
Изменение адреса токена с использованием операций чтения и записи
Выберите второй вариант, разделив процесс на две задачи:
Как использовать уязвимость UAF для управления значением cbwndextra
Как реализовать стабильные операции чтения и записи
Начальная запись данных
Используйте объект имени окна из класса WNDClass для освобождения занимаемого объекта меню. Найдите момент, когда можно записать данные в функции xxxRedrawWindow.
В конечном итоге выбор осуществляется путем записи параметра cb-extra класса HWND через операцию AND с флагом 2.
стабильная память
Создайте три последовательных объекта HWND, освободите средний объект и используйте объект HWNDClass для его замещения. Передние и задние объекты HWND используются для:
Предоставить параметры проверки знаков
Предоставление средств для чтения и записи примитивов
Точно определить порядок размещения объектов по утечке адреса дескриптора ядра.
Реализация примитивов чтения и записи
Произвольное чтение: GetMenuBarInfo()
Произвольная запись: SetClassLongPtr()
Кроме записи TOKEN, все другие операции записи используют объект класса первого окна.
Резюме
Уязвимость win32k может быть устранена в новой версии Windows.
Процесс эксплуатации уязвимости относительно прост, в основном полагается на утечку адреса десктопного кучи.
Обнаружение уязвимостей может зависеть от более полного контроля покрытия кода
Обнаружение аномальных операций чтения и записи памяти помогает выявить аналогичные уязвимости.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
13 Лайков
Награда
13
3
Репост
Поделиться
комментарий
0/400
MidnightTrader
· 19ч назад
Ещё одна большая дыра, Windows действительно не справляется.
Посмотреть ОригиналОтветить0
TokenDustCollector
· 19ч назад
Уязвимость в Microsoft довольно серьезная, Закрытый ключ можно украсть.
Анализ уязвимости Windows 0day: от UAF в меню до повышения привилегий в системе
Анализ и использование уязвимости 0day в системе Microsoft Windows
Введение
В прошлом месяце в обновлении безопасности Microsoft был обнаружен уязвимость повышения привилегий win32k, которая используется в дикой природе и существует только в ранних версиях Windows. В этой статье будет проанализировано, как злоумышленники продолжают использовать эту уязвимость на фоне постоянного улучшения современных мер безопасности. Анализ проводился в среде Windows Server 2016.
Фон уязвимости
Уязвимость 0day относится к уязвимостям, которые не были раскрыты и исправлены, и могут быть злоупотреблены для причинения значительного ущерба. Обнаруженная уязвимость 0day в системе Windows позволяет хакерам получить полный контроль над системой, последствия могут включать, но не ограничиваются:
С более широкой точки зрения, эта уязвимость может повлиять на всю экосистему Web3, работающую на инфраструктуре Web2.
Анализ патчей
Патч исправил проблему многократной обработки подсчета ссылок на объект. Анализ ранних комментариев в исходном коде показывает, что оригинальный код блокировал только объект окна, не блокируя объект меню в окне, что могло привести к неправильной ссылке на объект меню.
Анализ эксплуатации уязвимостей
Анализ показывает, что в функции xxxEnableMenuItem функция MenuItemState возвращает два возможных меню: главное меню окна или подменю в меню.
Создайте специальную многослойную вложенную структуру меню и установите определенные свойства, чтобы обойти проверку функций. При возврате функции xxxRedrawTitle на уровень пользователя удалите ссылки между меню и освободите целевой объект меню. В конечном итоге в функции xxxEnableMenuItem будет ссылаться на недействительный объект меню.
Реализация эксплуатации уязвимости
Общая идея
Рассмотрим два направления использования:
Выберите второй вариант, разделив процесс на две задачи:
Начальная запись данных
Используйте объект имени окна из класса WNDClass для освобождения занимаемого объекта меню. Найдите момент, когда можно записать данные в функции xxxRedrawWindow.
В конечном итоге выбор осуществляется путем записи параметра cb-extra класса HWND через операцию AND с флагом 2.
стабильная память
Создайте три последовательных объекта HWND, освободите средний объект и используйте объект HWNDClass для его замещения. Передние и задние объекты HWND используются для:
Точно определить порядок размещения объектов по утечке адреса дескриптора ядра.
Реализация примитивов чтения и записи
Кроме записи TOKEN, все другие операции записи используют объект класса первого окна.
Резюме
Уязвимость win32k может быть устранена в новой версии Windows.
Процесс эксплуатации уязвимости относительно прост, в основном полагается на утечку адреса десктопного кучи.
Обнаружение уязвимостей может зависеть от более полного контроля покрытия кода
Обнаружение аномальных операций чтения и записи памяти помогает выявить аналогичные уязвимости.