Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2018-0952-SystemCollector — PoC для повышения привилегий в Windows 10 Diagnostics Hub Standard Collector Service | Kitploit
Инструменты/GitHubGitHub/atredispartners/cve-2018-0952-systemcollector
Повышение привилегийАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеRed TeamingЭксплуатация Бинарных Файлов
GitHubatredispartners/cve-2018-0952-systemcollector

CVE-2018-0952-SystemCollector

PoC для повышения привилегий в Windows 10 Diagnostics Hub Standard Collector Service

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
111318 лет назадПроверено Kitploit

SystemCollector

PoC для повышения привилегий в Windows 10 Diagnostics Hub Standard Collector Service

Затронутые продукты

  • Windows 10
  • Windows Server
  • Windows Server 2016
  • Visual Studio 2015 Update 3
  • Visual Studio 2017

Краткое описание

Библиотеку Diagnostics Hub Packaging, используемую службой Windows Standard Collector, можно принудить скопировать произвольный файл в произвольное место из-за отсутствия олицетворения клиента в DiagnosticsHub.StandardCollector.Runtime.dll.

Подробное описание того, как эта уязвимость была найдена и использована, доступно здесь: Уязвимость повышения привилегий в Windows Standard Collector Service.

Технические подробности

Служба Standard Collector позволяет задавать несколько значений при настройке сеанса диагностики, включая временный каталог и идентификатор сеанса. Идентификатор сеанса может быть любым GUID, а временный каталог — любым расположением, к которому у пользователя есть права на запись. Если сеанс сбора настроен с идентификатором c13851b2-b1e1-438f-bf73-949df897f1bf и временным путём C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\, при вызове метода GetCurrentResult объекта ICollectionSession происходят следующие события:

  1. Во временном пути создается файл журнала трассировки событий (.etl): C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl

объекта ICollectionSession

  1. Во временном каталоге также создается папка Report: C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1
  2. В папке Report создается папка со случайным GUID: C:\Users\Bob\AppData\Local\Temp\Microsoft\F12\perftools\visualprofiler\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1\EAD6A227-31D4-4EA2-94A9-5DF276F69E65

Эти папки и ETL-файлы создаются службой сбора для пакета .diagsession, который обычно создается после завершения сеанса. Вызов метода Stop объекта ICollectionSession приведет к тому, что служба сбора зафиксирует пакет диагностики, вызвав Microsoft::DiagnosticsHub::Packaging::DhPackageDirectory::CommitPackage. Функция CommitPackage скопирует или переместит исходный файл {scratch path}\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl в папку со случайным GUID: {scratch path}\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1\EAD6A227-31D4-4EA2-94A9-5DF276F69E65\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl

Операция копирования/перемещения, запускаемая функцией CommitPackagingResult в DiagnosticsHub.StandardCollector.Runtime.dll, выполняется без олицетворения пользователя (в отличие от первоначального создания файлов/папок), что приводит к возможной проблеме TOCTOU, если целевая папка будет заменена точкой подключения (mount point), перенаправляющей копирование в произвольное место. Чтобы использовать эту проблему с пользой для себя, атакующему необходимо подменить содержимое ETL-файла до его копирования. Это можно сделать, выиграв состояние гонки с помощью OpLock после того, как служба освободит дескриптор файла.

Хотя мы не полностью контролируем имя копируемого .etl-файла, мы можем использовать трюк с симлинком в каталоге объектов, чтобы контролировать его. Схема с точкой подключения и симлинком будет выглядеть примерно так:

  • Точка подключения: {scratch path}\Report.c13851b2-b1e1-438f-bf73-949df897f1bf.1\EAD6A227-31D4-4EA2-94A9-5DF276F69E65\ -> \RPC Control\
  • Симлинк: \RPC Control\c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl -> C:\Windows\System32\anything.dll

Контроль над содержимым файла, местом копирования и именем файла дает атакующему множество возможностей для загрузки DLL. Однако включенный PoC демонстрирует, что контроль над именем файла не нужен, поскольку служба сбора с радостью загружает DLL с любым именем, если она находится в каталоге C:\Windows\System32 или C:\Windows\System32\DiagSvcs. Это делается путем запуска нового сеанса сбора с агентом, имя сборки которого совпадает с именем скопированной DLL c13851b2-b1e1-438f-bf73-949df897f1bf.1.m.etl.

Включенный PoC представляет собой решение VS с проектом C++ DLL для нагрузки, запускающей notepad.exe, и проектом C# для взаимодействия со службой и эксплуатации уязвимости с помощью библиотеки NtApiDotNet.

Шаги для воспроизведения:

  1. Соберите решение Visual Studio
  2. Запустите SystemCollector.exe от имени обычного пользователя

Ожидаемый результат:

Операция фиксации пакета выполняется с олицетворением пользователя и завершается ошибкой при попытке скопировать файл.

Наблюдаемый результат:

Файл копируется в целевую папку точки подключения C:\Windows\System32, затем загружается как агент сбора, и, наконец, notepad.exe запускается с привилегиями SYSTEM.

Дополнительные ссылки

  • https://www.atredis.com/blog/cve-2018-0952-privilege-escalation-vulnerability-in-windows-standard-collector-service
  • https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-0952
  • https://github.com/atredispartners/advisories/blob/master/ATREDIS-2018-0004.md
Скачать инструмент