Уязвимости операционной системы windows




|

Протокол удаленного рабочего стола Windows содержит уязвимость входа в систему, которую Microsoft отказывается исправлять. Она уверяет, что без нее протокол вовсе перестанет работать. Безопасность пользователей отходит на второй план.

Зачем чинить, если работает

Корпорация Microsoft признала факт наличия уязвимости в протоколе рабочего стола Windows (Remote Desktop Protocol, RDP), но отказалась ее устранять. Как пишет TechSpot, она не видит в ней проблему – наоборот, Microsoft уверена, что это и не «дыра» вовсе, а особенность протокола, без которой он перестанет корректно работать.

Уязвимость заключается в том, что Windows позволяет подключаться к удаленным компьютерам с использованием устаревших паролей, находящихся в кэше. Они будут работать, даже если ранее были заменены на новые.

Иными словами, если киберпреступник получил пароль удаленного доступа к компьютеру посредством RDP, то даже после смены пароля на новый у него по-прежнему будет возможность подключения к этому ПК.

Миллионы пользователей могут стать жертвами взлома благодаря упертости Microsoft

Именно этот недочет в RDP Microsoft не собирается устранять, не видя в нем никакой проблемы. Microsoft заявила, что не планирует исправлять эту проблему, поскольку это нарушит совместимость со многими приложениями.

Случайная, но старая находка

Проблему с кэшированием паролей выявили независимые эксперты. Технология RDP восходит к эпохе Windows NT 4.0, ранней 32-разрядной операционной системы, выпущенной в 1998 г. Начиная с Windows XP, каждая профессиональная или серверная версия Windows включала клиент RDP, официально известный как Remote Desktop Connection.

По словам обнаруживших уязвимость ИБ-специалистов, каждая версия Windows со времен аналоговых модемов 56 Кбит/с подвержена этой уязвимости. Аналитик Дэниел Уэйд (Daniel Wade) сообщил об этой проблеме в Microsoft в начале мая 2025 г. Уязвимость, по его мнению, нарушает общепризнанные методы операционной безопасности (opsec) — и даже больше. Когда пароль меняется, он больше не должен предоставлять доступ к удаленной системе. «Люди верят, что смена пароля отсечет несанкционированный доступ», – сказал Уэйд.

Тише воды, ниже травы

Проблема, судя по всему, очень глубоко проникла в программную экосистему Microsoft. Мало того, что сам RDP-протокол содержит столь огромную дыру, так еще и фирменный клиент не уведомляет пользователей о том, что старые пароли для удаленного доступа будут продолжать действовать даже после их замены.

Онлайн-платформы управления и безопасности Microsoft, включая Entra ID, Azure и Defender, тоже не на стороне пользователей в этом вопросе. Они не подают никаких сигналов тревоги.

Microsoft предоставила конечным пользователям настолько мало информации об этой весьма интересной особенности протокола RDP, что миллионы пользователей в итоге находятся под угрозой взлома и потери данных. Исследователи пришли к выводу, что проблема касается как обычных пользователей, так и целых компаний, притом вне зависимости от их размера.

Где ошибка? Нет ошибки

Когда ИБ-специалисты обратились в Microsoft с просьбой решить проблему с возможностью использования старых паролей вместо новых при удаленном подключении по RDP, она заявила, что ее протокол работает в точности так, как и было задумано.

По данным Microsoft, такое поведение является проектным решением, призванным «гарантировать, что по крайней мере одна учетная запись пользователя всегда будет иметь возможность войти в систему, независимо от того, как долго система находится в автономном режиме» (ensure that at least one user account always has the ability to log in no matter how long a system has been offline).

Важно отметить, что компания совершенно точно осведомлена об этой проблеме на протяжении нескольких лет. В августе 2023 г. ей поступало уведомление о ней, пишет TechSpot, но и тогда она никак не отреагировала.

Существует отличная от нуля вероятность, что Microsoft столь рьяно защищает «дыру» в своем протоколе лишь потому, что не в силах ее устранить. По данным TechSpot, ее инженеры ранее предпринимали попытки устранения бэкдора, но отказались от этой затеи. Якобы они сдались потому, что предложенные ими изменения могли привести к тому, что связанные с протоколом RDP приложения могли начать работать некорректно.

  • Обзор смартфона VERTU METAVERTU 2: первый тест в России

Время на прочтение4 мин

Количество просмотров15K

Уязвимости в ОС и программном обеспечении всегда являлись одними из самым мощных векторов тестирования на проникновение. Какими интересными свежими уязвимостями можно пополнить свой арсенал? В статье попробуем разобраться, как работают 3 уязвимости в ОС Windows и MS Office, которые были опубликованы в последние полгода.

Список уязвимостей

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

Шаг первый — определим набор программного обеспечения, который нам был бы интересен. Так как пентест обычно проводится для корпоративных сетей, где особой популярностью пользуется ОС Windows, то логично будет в список включать уязвимости для нее и её компонентов. Итак, в списке следующий софт:

  • Windows 7,8,10

  • Windows Server 2016, 2019

  • Exchange Server

  • Sharepoint Server

  • Пакет приложений MS Office

  • Atlassian Confluence

  • Atlassian Jira

  • git

  • WordPress

Быстрый поиск через любую поисковую машину находит несколько тысяч уязвимостей, которые были выпущены в public для перечисленных продуктов. Определим небольшой список:

  • CVE-2021-1727 (Windows)

  • CVE-2021-1732 (Windows)

  • CVE-2021-40444 (Office)

CVE-2021-1727

Уязвимость в ОС Windows, согласно находится в Windows Installer сервисе. Успешная эксплуатация может позволить повысить свои привилегии до уровня пользователя System. Иными словами, это полная компрометация ОС. Описание, в чем конкретно заключается уязвимость, не доступно. Среди уязвимых систем — Windows 7, 8, 10 до 2004 билда включительно.

Попробуем найти информацию среди уже готовых эксплойтов. Первая же ссылка нас приводит к вот этому репозиторию. Эксплойт написан на языке программирования C++. В этот раз нам повезло: PoC снабжен исходным кодом, в котором есть даже интересные комментарии. С использованием исходного кода опишем верхнеуровнего алгоритм эксплойта:

  1. main функция почти весь код содержит в цикле, условием которого является успешное чтение ключа реестра SYSTEM\\CurrentControlSet\\Services\\Fax\\ImagePath. Причем поиск осуществляется следующего значения — %systemroot%\\Temp\\asmae.exe

  2. На строке 76 и 77 внутри цикла устанавливается приоритет процесса и потока эксплойта.

         SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
         SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);

    Это может указывать на то, что эксплойт использует проблему типа Race Condition.

  3. Подтверждение пункту 2 можно привести так же использование вот такого цикла для загрузки процессора:

    DWORD WINAPI thread(void* args) {
     do {
    
     } while (1);
    }
  4. Основная эксплуатация происходит параллельно следующей команде:

    c:\\windows\\system32\\msiexec.exe", L" /fa C:\\Windows\\Temp\\asmae.msi /quiet

Таким образом, перед нами эксплойт, который приводит к Race Condition и, используя эту уязвимость, перезатирает исполняемый файл для сервиса внутри Windows. В данном случае используется сервис «Fax».

В репозитории уже есть 2 файла, которые используются для запуска полезной нагрузки: asmae.msi и asmae.exe.

CVE-2021-1732

Уязвимость в Windows Win32k подсистеме. Win32k — самая популярная подсистема для повышения привилегий. Данная уязвимость не стала исключением. Основные проблемы, которые преследуют эту подсистему — рассинхронизация создания и уничтожения объектов, с которыми работают алгоритмы. Практически всегда это элементы пользовательского интерфейса, которые создаются со случайными значениями параметров инициализации.

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

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

Итак, чтобы повысить привилегии для пользователя, эксплойт выполняет следующие этапы:

  1. Создание и инициализация фэйковых объектов подсистемы Win32k

  2. Использование уязвимости или стандартного механизма ОС для получения маппинга оперативной памяти ядра ОС

  3. Поиск primary Token в памяти запущенного процесса

  4. Модификация привилегий напрямую или с использованием донорского процесса, как правило это процесс System.exe

Эксплойт с самого начала использует механизм поиска базовых адресов в оперативной памяти. Для этого используется функция HmValidateHandle. На основании данных от этой функции собирается примитив для чтения памяти:

QWORD    MyRead64(QWORD qwDestAddr)
{
    MENUBARINFO pmbi = {};
    pmbi.cbSize = sizeof(MENUBARINFO);
    if (g_bIsInit)
    {

    }
    else
    {
        QWORD *pTemp = (QWORD*)LocalAlloc(0x40u, 0x200ui64);
        memset(pTemp, 0, 0x200);
        QWORD qwBase = 0x000000400000000;
        QWORD qwAdd = 0x0000000800000008;
        for (int i = 0; i < 0x40; i++)
        {
            *(pTemp + i) = qwBase + qwAdd*i;
        }
        *(QWORD *)ref_g_pMem5 = (QWORD)pTemp;
        GetMenuBarInfo(g_hWndMax, -3, 1, &pmbi);
        g_pmbi_rcBar_left = pmbi.rcBar.left;
        bool    g_bIsInit = 1;
    }

    *(QWORD *)ref_g_pMem5 = qwDestAddr - g_pmbi_rcBar_left;
    GetMenuBarInfo(g_hWndMax, -3, 1, &pmbi);
    return     (unsigned int)pmbi.rcBar.left + ((__int64)pmbi.rcBar.top << 32);
}

В качестве примитива на запись используется функция SetWindowLongPtrA. Далее перезатирается токен для выполнения команд с повышенными привелегиями.

CVE-2021-40444

Уязвимость в модуле mshtml, который используется для работы с разметкой в ОС Windows. Наиболее популярной уязвимость стала в совокупности с использованием MS Office пакета приложений. Это, наверное, одна из самых простых узявимостей, которые появлялись за последнее время. Уязвимость достаточно быстро получила большое количество фреймворков для воспроизведения и использования. Например, вот этот репозиторий.

Суть уязвимости заключается в том, что mshtml используется для того, чтобы скачивать из сети шаблоны для работы с Office документами. Причем производятся подобные загрузки автоматически, без какой-либо валидации.

В стандартном сценарии загрузка шаблонов позволяет работать с xml/html файлами, которые могут перемежаться cab архивами. Это обстоятельство и используется для эксплуатации. То есть чтобы стриггерить узявимость, эксплойты из репозитория просто создают подложный файл шаблона и cab файл, который будет выполнять запуск команд на системе с привелегиями пользователя, который открыл документ.

Триггер можно найти здесь.

Выводы

Изучение уязвимостей может помочь более эффективно использовать их при тестировании на проникновение. Без знаний о том, что происходит в результате использования той или иной уязвимости, будет потрачено драгоценное время, которого всегда мало на проведение всех тестов.


Материал подготовлен Александром Колесниковым в рамках курса «Пентест. Практика тестирования на проникновение».

Microsoft игнорирует «черный ход» в своем популярном протоколе удаленного входа, который позволяет получить доступ к системам даже с измененными паролями.

Эксперты по безопасности бьют тревогу. Протокол удаленных рабочих столов Windows (RDP) имеет критическую уязвимость, которая позволяет получить доступ со старыми паролями, даже после их смены. И что самое удивительное: Microsoft не планирует ее устранять. Компания считает это «дизайнерским решением» и утверждает, что устранение уязвимости нарушит совместимость со старыми приложениями, как сообщает TechSpot.

Хотя исследователи вновь обнаружили этот недостаток в мае 2025 года, проблема уходит корнями в далекое прошлое. Уязвимость существует с момента появления первой версии RDP в Windows NT 4.0 в 1998 году и затрагивает все современные версии Windows, от XP до Windows 11 и Server 2022.

Проблема в том, что RDP хранит проверенные пароли в зашифрованных областях на диске, что позволяет паролям с истекшим сроком действия продолжать прекрасно работать. Представьте, что вы меняете пароль, чтобы заблокировать атакующего, но он все равно проникает в систему как ни в чем не бывало. Даже система не обнаруживает его как подозреваемого.

Дэниел Уэйд, аналитик, раскрывший это дело, говорит прямо: «Пользователи думают, что, меняя пароль, они закрывают дверь для злоумышленников, но с RDP эта дверь никогда не закрывается. Хуже того, такие средства безопасности, как Windows Defender, не обнаруживают эти доступы как аномальные».

Microsoft оправдывает такое поведение, утверждая, что «по крайней мере одна учетная запись сохраняет возможность входа в систему независимо от того, как долго система была отключена». По имеющимся данным, они пытались исправить ситуацию в 2023 году, но отказались от этой затеи, когда поняли, что изменения затронут ключевые бизнес-приложения.

Риск особенно велик для домашних пользователей и малых предприятий, которые используют RDP для удаленной работы без дополнительных средств защиты. По оценкам экспертов, миллионы компьютеров подвержены такому риску, поскольку в последние годы наблюдается бурный рост удаленной работы.

Рекомендация специалистов проста: отключите RDP, если ваша информация является конфиденциальной, и ищите альтернативы с двухэтапной проверкой.

Telegram-канал @overclockers_news — теперь в новом формате. Подписывайся, чтобы быть в курсе всех новостей!

Теги: информационная безопасность, пентест, pentest, иб, уязвимости windows, uaf, type confusion, heap overflow, stack corruption

Pentest_deep_23.3-5020-c58bfc.png

Третий модуль курса «Пентест. Практика тестирования на проникновение» посвящён структуре ОС Windows и тому, какие существуют механизмы ограничения доступа в этой популярной операционной системе. Но не менее важно знать, какие именно уязвимости используются злоумышленниками, чтобы обойти существующие механизмы ограничения доступа. О них и поговорим.

На момент написания материала из наиболее распространённых уязвимостей Windows можно выделить четыре:

1-20219-e64b0c.png

Давайте вкратце рассмотрим каждую из них.

Stack Corruption

Stack Corruption — это повреждение стека или массива данных, которые сохраняются на стеке.

2-20219-1ce07b.png

Как известно, все программы, которые запускаются на любых языках программирования, попадают в оперативную память. Хранятся они там в виде своеобразных «табличек», и эти таблички разделены на части: в одной части лежат команды, в другой части лежат данные и т. п. Так вот, там, где находятся данные, возможны ситуации, связанные со Stack Corruption.

Стек — именно та ячейка, которая хранит информацию, необходимую для приложения, чтобы оно выполнялось и знало, как именно исполнять алгоритмы (там находятся специальные адреса и данные). Переполнение какой-нибудь переменной, находящейся на стеке, может привести к тому, что специальные адреса, используемые приложением для его корректной работы, могут быть перезаписаны. Перезапись этих адресов является способом перехвата управления и прямым доказательством того, что этот перехват произошёл.

Heap overflow

Речь идёт о переполнении, которое происходит на куче. «На куче» — это если программист написал приложение, которое очень много делает при обработке файлов, соответственно, вместо стека переполнение происходит на куче. Здесь как раз и происходит выполнение команд, то есть отсюда уже забирается информация, которая в дальнейшем будет открывать порт, дампить какие-нибудь значения или переконфигурировать операционную систему.

3-20219-f82690.png

Heap overflow — сложно диагностируемая ошибка, так как реализация кучи может быть собственной у каждого ПО.

Type Confusion and Use-After-Free

Эти уязвимости можно назвать вспомогательными. Что касается Type Confusion, то это уязвимость, которая позволяет вывести приложение из строя или выполнить дополнительные действия. Она чаще всего используется злоумышленниками для повреждения памяти.

Use-After-Free (UAF) — уязвимость, при которой процесс может войти в неопределённое состояние. Сам этот класс уязвимости не приводит к проблемам, но при определённых условиях может быть произведено выполнение команд. Например, эти уязвимости могут позволить подменить значения в памяти, что, в свою очередь, может привести к выполнению вредоносного кода либо к остановке и выходу из строя самого приложения.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как отключить службу политики диагностики windows 10
  • Балансировка сетевой нагрузки windows
  • Почему ассасин крид вальгалла не запускается на windows 11
  • Msvcp140 dll как установить для windows 10 x64
  • Как включить блютуз на ноутбуке windows 7 сони