Windows Local Privilege Escalation
Найкращий інструмент для пошуку векторів підвищення привілеїв у Windows: WinPEAS
Початкова теорія Windows
Токени доступу
Якщо ви не знаєте, що таке токени доступу Windows, прочитайте наступну сторінку перед продовженням:
Access TokensACL - DACL/SACL/ACE
Перевірте наступну сторінку для отримання додаткової інформації про ACL - DACL/SACL/ACE:
ACLs - DACLs/SACLs/ACEsРівні цілісності
Якщо ви не знаєте, що таке рівні цілісності в Windows, вам слід прочитати наступну сторінку перед продовженням:
Integrity LevelsКонтроль безпеки Windows
Є різні речі в Windows, які можуть перешкоджати вам перераховувати систему, запускати виконувані файли або навіть виявляти вашу діяльність. Вам слід прочитати наступну сторінку та перерахувати всі ці механізми захисту перед початком перерахунку підвищення привілеїв:
Windows Security ControlsІнформація про систему
Перерахунок інформації про версію
Перевірте, чи має версія Windows відомі вразливості (також перевірте застосовані патчі).
Version Exploits
Цей сайт корисний для пошуку детальної інформації про вразливості безпеки Microsoft. Ця база даних містить більше 4,700 вразливостей безпеки, що демонструє масштабну поверхню атаки, яку представляє середовище Windows.
На системі
post/windows/gather/enum_patches
post/multi/recon/local_exploit_suggester
winpeas (Winpeas має вбудований watson)
Локально з інформацією про систему
Github репозиторії експлойтів:
Environment
Чи зберігаються які-небудь облікові дані/соковита інформація в змінних середовища?
Історія PowerShell
PowerShell Transcript files
Ви можете дізнатися, як це увімкнути за посиланням https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/
PowerShell Module Logging
Деталі виконання конвеєра PowerShell записуються, охоплюючи виконані команди, виклики команд та частини скриптів. Однак повні деталі виконання та результати виходу можуть не бути зафіксовані.
Щоб увімкнути це, дотримуйтесь інструкцій у розділі "Файли транскрипції" документації, вибравши "Module Logging" замість "Powershell Transcription".
Щоб переглянути останні 15 подій з журналів PowersShell, ви можете виконати:
PowerShell Script Block Logging
Повний запис активності та вмісту виконання скрипта фіксується, що забезпечує документування кожного блоку коду під час його виконання. Цей процес зберігає всебічний аудит кожної активності, що є цінним для судової експертизи та аналізу злочинної поведінки. Документуючи всю активність під час виконання, надаються детальні відомості про процес.
Логування подій для Script Block можна знайти в Windows Event Viewer за шляхом: Application and Services Logs > Microsoft > Windows > PowerShell > Operational. Щоб переглянути останні 20 подій, ви можете використати:
Налаштування Інтернету
Диски
WSUS
Ви можете скомпрометувати систему, якщо оновлення не запитуються за допомогою httpS, а за допомогою http.
Ви починаєте з перевірки, чи використовує мережа оновлення WSUS без SSL, запустивши наступне:
Якщо ви отримаєте відповідь, наприклад:
І якщо HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer
дорівнює 1
.
Тоді, це експлуатовано. Якщо останній реєстр дорівнює 0, то запис WSUS буде проігноровано.
Для експлуатації цих вразливостей ви можете використовувати інструменти, такі як: Wsuxploit, pyWSUS - це скрипти експлойтів MiTM, які дозволяють ввести 'фальшиві' оновлення в трафік WSUS без SSL.
Прочитайте дослідження тут:
WSUS CVE-2020-1013
Прочитайте повний звіт тут. В основному, це недолік, який експлуатує цей баг:
Якщо ми маємо можливість змінювати наш локальний проксі, і Windows Updates використовує проксі, налаштований у параметрах Internet Explorer, ми, отже, маємо можливість запускати PyWSUS локально, щоб перехоплювати наш власний трафік і виконувати код як підвищений користувач на нашому активі.
Більше того, оскільки служба WSUS використовує налаштування поточного користувача, вона також використовуватиме його сховище сертифікатів. Якщо ми згенеруємо самопідписаний сертифікат для імені хоста WSUS і додамо цей сертифікат у сховище сертифікатів поточного користувача, ми зможемо перехоплювати як HTTP, так і HTTPS трафік WSUS. WSUS не використовує механізми, подібні до HSTS, для реалізації валідації типу довіри при першому використанні на сертифікаті. Якщо сертифікат, що представляється, довіряється користувачем і має правильне ім'я хоста, він буде прийнятий службою.
Ви можете експлуатувати цю вразливість, використовуючи інструмент WSUSpicious (якщо він буде звільнений).
KrbRelayUp
В локальному підвищенні привілеїв існує вразливість у Windows доменних середовищах за певних умов. Ці умови включають середовища, де підписування LDAP не є обов'язковим, користувачі мають самостійні права, що дозволяють їм налаштовувати обмежену делегацію на основі ресурсів (RBCD), та можливість для користувачів створювати комп'ютери в домені. Важливо зазначити, що ці вимоги виконуються за допомогою налаштувань за замовчуванням.
Знайдіть експлойт у https://github.com/Dec0ne/KrbRelayUp
Для отримання додаткової інформації про хід атаки перевірте https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/
AlwaysInstallElevated
Якщо ці 2 реєстри увімкнені (значення 0x1), тоді користувачі будь-яких привілеїв можуть встановлювати (виконувати) *.msi
файли як NT AUTHORITY\SYSTEM.
Пейлоади Metasploit
Якщо у вас є сесія meterpreter, ви можете автоматизувати цю техніку, використовуючи модуль exploit/windows/local/always_install_elevated
PowerUP
Використовуйте команду Write-UserAddMSI
з power-up, щоб створити в поточному каталозі Windows MSI бінарний файл для ескалації привілеїв. Цей скрипт створює попередньо скомпільований MSI інсталятор, який запитує додавання користувача/групи (тому вам знадобиться доступ GIU):
Просто виконайте створений бінар для ескалації привілеїв.
MSI Wrapper
Прочитайте цей посібник, щоб дізнатися, як створити обгортку MSI за допомогою цих інструментів. Зверніть увагу, що ви можете обернути файл ".bat", якщо ви просто хочете виконати командні рядки.
MSI WrapperCreate MSI with WIX
Create MSI with WIXCreate MSI with Visual Studio
Згенеруйте з Cobalt Strike або Metasploit новий Windows EXE TCP payload у
C:\privesc\beacon.exe
Відкрийте Visual Studio, виберіть Створити новий проект і введіть "installer" у поле пошуку. Виберіть проект Setup Wizard і натисніть Далі.
Дайте проекту ім'я, наприклад, AlwaysPrivesc, використовуйте
C:\privesc
для розташування, виберіть розмістити рішення та проект в одній директорії, і натисніть Створити.Продовжуйте натискати Далі, поки не дійдете до кроку 3 з 4 (виберіть файли для включення). Натисніть Додати і виберіть payload Beacon, який ви щойно згенерували. Потім натисніть Готово.
Виділіть проект AlwaysPrivesc у Solution Explorer і в Властивостях змініть TargetPlatform з x86 на x64.
Є й інші властивості, які ви можете змінити, такі як Автор та Виробник, що можуть зробити встановлений додаток більш легітимним.
Клацніть правою кнопкою миші на проекті та виберіть Перегляд > Користувацькі дії.
Клацніть правою кнопкою миші на Встановити та виберіть Додати користувацьку дію.
Двічі клацніть на Папка програми, виберіть ваш файл beacon.exe і натисніть ОК. Це забезпечить виконання payload beacon, як тільки інсталятор буде запущено.
У Властивостях користувацької дії змініть Run64Bit на True.
Нарешті, зберіть його.
Якщо з'явиться попередження
File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'
, переконайтеся, що ви встановили платформу на x64.
MSI Installation
Щоб виконати встановлення шкідливого файлу .msi
у фоновому режимі:
Щоб експлуатувати цю вразливість, ви можете використовувати: exploit/windows/local/always_install_elevated
Антивірус та детектори
Налаштування аудиту
Ці налаштування визначають, що реєструється, тому вам слід звернути увагу
WEF
Windows Event Forwarding, цікаво знати, куди надсилаються журнали
LAPS
LAPS призначений для управління паролями локальних адміністраторів, забезпечуючи, щоб кожен пароль був унікальним, випадковим і регулярно оновлювався на комп'ютерах, приєднаних до домену. Ці паролі безпечно зберігаються в Active Directory і можуть бути доступні лише користувачам, яким надано достатні дозволи через ACL, що дозволяє їм переглядати паролі локальних адміністраторів, якщо це дозволено.
LAPSWDigest
Якщо активний, паролі у відкритому тексті зберігаються в LSASS (Служба підсистеми локальної безпеки). Більше інформації про WDigest на цій сторінці.
Захист LSA
Починаючи з Windows 8.1, Microsoft впровадила покращений захист для Локального органу безпеки (LSA), щоб блокувати спроби ненадійних процесів читати його пам'ять або впроваджувати код, додатково захищаючи систему. Більше інформації про захист LSA тут.
Credentials Guard
Credential Guard був представлений у Windows 10. Його мета - захистити облікові дані, збережені на пристрої, від загроз, таких як атаки pass-the-hash. | Більше інформації про Credentials Guard тут.
Cached Credentials
Облікові дані домену автентифікуються Локальним органом безпеки (LSA) і використовуються компонентами операційної системи. Коли дані входу користувача автентифікуються зареєстрованим пакетом безпеки, облікові дані домену для користувача зазвичай встановлюються. Більше інформації про кешовані облікові дані тут.
Користувачі та Групи
Перерахунок Користувачів та Груп
Вам слід перевірити, чи є у будь-яких груп, до яких ви належите, цікаві дозволи.
Привілейовані групи
Якщо ви належите до якоїсь привілейованої групи, ви можете мати можливість ескалації привілеїв. Дізнайтеся про привілейовані групи та як їх зловживати для ескалації привілеїв тут:
Privileged GroupsМаніпуляція токенами
Дізнайтеся більше про те, що таке токен на цій сторінці: Windows Tokens. Перегляньте наступну сторінку, щоб дізнатися про цікаві токени та як їх зловживати:
Abusing TokensУвійшли користувачі / Сесії
Домашні папки
Політика паролів
Отримати вміст буфера обміну
Running Processes
File and Folder Permissions
По-перше, перерахування процесів перевіряє наявність паролів всередині командного рядка процесу. Перевірте, чи можете ви перезаписати деякий виконуваний файл, або чи маєте ви права на запис у папці з виконуваними файлами, щоб використати можливі DLL Hijacking attacks:
Завжди перевіряйте наявність можливих electron/cef/chromium дебагерів які працюють, ви можете зловживати цим для ескалації привілеїв.
Перевірка дозволів бінарних файлів процесів
Перевірка дозволів папок бінарних файлів процесів (DLL Hijacking)
Memory Password mining
Ви можете створити дамп пам'яті працюючого процесу, використовуючи procdump з sysinternals. Служби, такі як FTP, мають облікові дані у відкритому тексті в пам'яті, спробуйте зробити дамп пам'яті та прочитати облікові дані.
Небезпечні GUI додатки
Додатки, що працюють як SYSTEM, можуть дозволити користувачу запустити CMD або переглядати каталоги.
Приклад: "Довідка та підтримка Windows" (Windows + F1), шукайте "командний рядок", натисніть "Натисніть, щоб відкрити командний рядок"
Служби
Отримати список служб:
Permissions
Ви можете використовувати sc для отримання інформації про службу
Рекомендується мати бінарний accesschk від Sysinternals, щоб перевірити необхідний рівень привілеїв для кожної служби.
Рекомендується перевірити, чи можуть "Аутентифіковані користувачі" змінювати будь-яку службу:
Ви можете завантажити accesschk.exe для XP звідси
Увімкнути службу
Якщо ви отримуєте цю помилку (наприклад, з SSDPSRV):
Сталася системна помилка 1058. Службу не можна запустити, або тому, що вона вимкнена, або тому, що з нею не пов'язано жодних увімкнених пристроїв.
Ви можете увімкнути її, використовуючи
Врахуйте, що служба upnphost залежить від SSDPSRV для роботи (для XP SP1)
Ще один обхідний шлях цієї проблеми - виконати:
Змінити шлях до бінарного файлу служби
У сценарії, коли група "Аутентифіковані користувачі" має SERVICE_ALL_ACCESS на службу, можливе модифікування виконуваного бінарного файлу служби. Щоб змінити та виконати sc:
Перезапустити службу
Привілеї можуть бути підвищені через різні дозволи:
SERVICE_CHANGE_CONFIG: Дозволяє переналаштування бінарного файлу служби.
WRITE_DAC: Дозволяє переналаштування дозволів, що веде до можливості змінювати конфігурації служби.
WRITE_OWNER: Дозволяє отримання прав власності та переналаштування дозволів.
GENERIC_WRITE: Спадкує можливість змінювати конфігурації служби.
GENERIC_ALL: Також спадкує можливість змінювати конфігурації служби.
Для виявлення та експлуатації цієї вразливості можна використовувати exploit/windows/local/service_permissions.
Слабкі дозволи бінарних файлів служб
Перевірте, чи можете ви змінити бінарний файл, який виконується службою або чи маєте ви дозволи на запис у папці, де знаходиться бінарний файл (DLL Hijacking). Ви можете отримати кожен бінарний файл, який виконується службою, використовуючи wmic (не в system32) і перевірити свої дозволи, використовуючи icacls:
Ви також можете використовувати sc та icacls:
Послуги реєстру змінити дозволи
Вам слід перевірити, чи можете ви змінити будь-який реєстр служби. Ви можете перевірити свої дозволи над реєстром служби, виконавши:
Слід перевірити, чи Authenticated Users або NT AUTHORITY\INTERACTIVE мають права FullControl
. Якщо так, бінарний файл, виконуваний службою, може бути змінений.
Щоб змінити шлях до виконуваного бінарного файлу:
Послуги реєстру Дозволи AppendData/AddSubdirectory
Якщо у вас є цей дозвіл над реєстром, це означає, що ви можете створювати підреєстри з цього. У випадку з Windows службами це досить для виконання довільного коду:
AppendData/AddSubdirectory permission over service registryНепозначені шляхи до служб
Якщо шлях до виконуваного файлу не в лапках, Windows спробує виконати кожен закінчення перед пробілом.
Наприклад, для шляху C:\Program Files\Some Folder\Service.exe Windows спробує виконати:
Список всіх непозначених шляхів служб, за винятком тих, що належать вбудованим службам Windows:
Ви можете виявити та експлуатувати цю вразливість за допомогою metasploit: exploit/windows/local/trusted\_service\_path
Ви можете вручну створити бінарний файл служби за допомогою metasploit:
Recovery Actions
Windows дозволяє користувачам вказувати дії, які потрібно виконати, якщо служба зазнає збою. Цю функцію можна налаштувати на вказівку на бінарний файл. Якщо цей бінарний файл можна замінити, можлива ескалація привілеїв. Більше деталей можна знайти в офіційній документації.
Applications
Installed Applications
Перевірте дозволи бінарних файлів (можливо, ви зможете переписати один і ескалувати привілеї) та папок (DLL Hijacking).
Права на запис
Перевірте, чи можете ви змінити якийсь конфігураційний файл, щоб прочитати якийсь спеціальний файл, або чи можете ви змінити якийсь бінарний файл, який буде виконаний обліковим записом адміністратора (schedtasks).
Спосіб знайти слабкі права на папки/файли в системі - це зробити:
Запуск при старті
Перевірте, чи можете ви перезаписати деякі реєстраційні або бінарні файли, які будуть виконані іншим користувачем. Прочитайте наступну сторінку, щоб дізнатися більше про цікаві місця автозапуску для ескалації привілеїв:
Privilege Escalation with AutorunsДрайвери
Шукайте можливі драйвери третіх сторін, які є дивними/вразливими
PATH DLL Hijacking
Якщо у вас є права на запис у папці, що знаходиться в PATH, ви можете перехопити DLL, завантажену процесом, і підвищити привілеї.
Перевірте права доступу до всіх папок у PATH:
Для отримання додаткової інформації про те, як зловживати цим перевіркою:
Writable Sys Path +Dll Hijacking PrivescМережа
Спільні ресурси
hosts file
Перевірте наявність інших відомих комп'ютерів, закодованих у файлі hosts
Мережеві інтерфейси та DNS
Відкриті порти
Перевірте обмежені сервіси ззовні
Таблиця маршрутизації
ARP Таблиця
Правила брандмауера
Перевірте цю сторінку для команд, пов'язаних з брандмауером (перегляд правил, створення правил, вимкнення, вимкнення...)
Більше команд для мережевої енумерації тут
Підсистема Windows для Linux (wsl)
Бінарний bash.exe
також можна знайти в C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe
Якщо ви отримаєте права root, ви зможете прослуховувати будь-який порт (перший раз, коли ви використовуєте nc.exe
для прослуховування порту, він запитає через GUI, чи слід дозволити nc
через брандмауер).