Вирусный аналитик В этой статье рассмотрим последние уявзимости, которые были найдены за последние несколько лет. Основной критерий отбора уязвимостей — работа с DACL, что можно делать с системой, если подобные уязвимости попадаются в операционной системе. В качестве исследуемых будем использовать CVE-2022–25 365 и CVE-2021–4533. В операционной системе Windows, согласно документации, существует минимальная единица проставления привилегий — ACE(Access Contorl Entity). По одному эти сущности не существуют и их обычно используют совместно. Набор ACE называется Access Control List или просто ACL. ACL может быть 2х типов: SACL DACL Если не вникать в детали, то первый используется для того, чтобы следить за состоянием объектов в ОС и давать возможность составлять подробные логи работы системы, то второй это как раз и есть те самые привилегии, которые требуются для выполнения операций или доступа к ресурсам. Оба списка находятся в токене пользователя или ресурса, к которму пользователь или приложение пытается получить доступ. Как эти самые списки увидеть? Данные по ACL можно собирать проще всего 2-мя способами: Обратиться к get‑ACL командлету Запросить данные из LDAP В первом случае это будет работать как локально на системе, так и в инфраструктуре под управлением Windows AD, а второй вариант работает только в Active Directory. Попробуем получить данные токена для директории: Как видно из описания на картинке, данные скомпонованы по группам и есть описание, какие именно права есть у конкретной группы. По сути это уже разобранные данные ACL списка, но нам сойдет и так. То же самое можно выполнять и для просмотра данных о файлах и ключах реестра. Вообще информацию по токену можно достать из чего угодно, главное — чтобы у вас был создан объект powershell, к которому можно применить командлет. Ну и конечно, это должен быть объект, который считается securable, в Windows это всё, что имеет название. Далее в общем‑то нет никакой магии, но если среди данных из картинки будут те группы пользователей, в которых может появиться пользователь системы, то это можно использовать как примитив для атаки. Результатом атаки может быть: повышение привилегий, удаление/перемещение произвольных файлов в системе. Алгоритм действий при этом достаточно прост: Нужно найти ресурс, который нужно измениить. Если брать обобщенные подходы, то обычно стараются перезаписать файлы, которые используются для запуска команд другими пользователями. Необходимо обнаружить приложение, которое содержит уязвимость, позволяющую менять адрес обрабатываемого объекта. Определить, что нам нужно — командная строка от имени другого пользователя или просто удаленный файл. Первый вопрос перекрывается задачей, если смотреть на примеры нашей статьи CVE-2022–25 365 и CVE-2021–4533, то становится ясно, что тактика действий должна решать общую задачу — выполнение команд на наибольшем количестве систем. Второй вопрос — процедура достаточно длительная, решается через изучение приложения, обычно рассматриваются следующие проблемы: работа с файловой системой и проставляемые привилиегии на файлы и директории; работа с механизмом pipe, которые располагаются в системе. Во всех случаях важно, какие привилегии устанавливаются на конечный ресурс. Следить за этой информацией можно через инструменты: process monitor IO Ninja NTObjectManager PipeViewer Уязвимость, которая была обнаружена в Docker Desktop приложении, основная проблема, которая была использована для атаки — это неверно проставленные привилегии для pipe, которые были использованы приложением. Итог — эскалация привилегий. Если выкладывать основные действия согласно алгоритму, который приведен выше в статье, то эксплуатация уязвимости разбита на несколько частей. Поиск механизма работы с файловой системой или с системой пердачи данных между процессами. Идентификация опасных ACL разрешений (опасность определяется в зависимости от задач приложения). Запуск функционала, который позволяет обращаться к объекту с опасными ACL. С помощью инструмента мониторинга pipe, которые исользует приложение было выявлено, что pipe с именем «dockerBackendV2» позволяет обычным пользователям читать и писать в него. Кстати, именованные pipe могут использоваться для доступа к системе и удаленно. Следующий этап атаки заключается в использовании метода, который был описан ZDI. Если коротко, то любые действия с файлами, которые могут быть проконтроллированы атакующим, могут быть использованы для эскалачии привелегий. Для этого используется механизм отката MSI. Подробный разбор можно найти тут. Одна из уязвимостей, которая была найдена в приложении от компании AVAST Free Antivirus. В этом случае проблема позволяла работать с сервисом приложения. Более того, можно было просто от имени процесса сервиса запустить любую команду в системе. Это было возможно из‑за того, что любой пользователь мог запустить OpenProcess функцию и получить любые данные о процессе, включая его токен. Это тоже является достаточно серьезной уязвимостью и наравне с теми примерами, которые были рассмотрены выше — позволяет повышать привелегии. Если так же проецировать находку на алгоритм из первой части этой статьи, то последовательность действий следующая: Получаем данные о доступе к процессу сервиса. Запускаем процедуру копирования токена (примеры можно найти в сети). Открываем командную строку или работаем с файловой системой. Таким образом, уязвимости с обычными, на первых взгляд, привилегиями могут быть использованы для достаточно разных атак. От вывода из строя приложений и ОС до выполнения команд из‑под любого пользователя в системе. В качестве дополнительного чтения также рекомендую ознакомиться с этой статьей, там есть описание еще дополнительных методов эскалации привелегий, в том числе и за счет неверно проставленного DACL. В заключение приглашаю всех желающих на открытое занятие «Acl атаки в Windows AD». На нем мы изучим основные наборы привилегий, которые позволяют проводить атаки на AD. Записаться можно на странице курса «Пентест. Практика тестирования на проникновение».  Редактор