Windows Local Privilege Escalation
Кращий інструмент для пошуку векторів локального підвищення привілеїв в Windows: WinPEAS
Початкова теорія Windows
Токени доступу
Якщо ви не знаєте, що таке токени доступу Windows, прочитайте наступну сторінку перед продовженням:
pageAccess TokensACLs - DACLs/SACLs/ACEs
Перевірте наступну сторінку для отримання додаткової інформації про ACLs - DACLs/SACLs/ACEs:
pageACLs - DACLs/SACLs/ACEsРівні цілісності
Якщо ви не знаєте, що таке рівні цілісності в Windows, вам слід прочитати наступну сторінку перед продовженням:
pageIntegrity LevelsКонтроль за безпекою Windows
Є різні речі в Windows, які можуть запобігти вам переліку системи, запуску виконуваних файлів або навіть виявленню ваших дій. Вам слід прочитати наступну сторінку та перелічити всі ці захисні механізми перед початком переліку підвищення привілеїв:
pageWindows Security ControlsІнформація про систему
Перелік інформації про версію
Перевірте, чи є відомі вразливості в версії Windows (також перевірте застосовані патчі).
Версія Використання Уразливостей
Цей сайт корисний для пошуку детальної інформації про уразливості безпеки Microsoft. Ця база даних містить понад 4 700 уразливостей безпеки, показуючи велику поверхню атаки, яку представляє середовище Windows.
На системі
post/windows/gather/enum_patches
post/multi/recon/local_exploit_suggester
winpeas (Winpeas має вбудований watson)
Локально з інформацією про систему
Репозиторії Github з експлойтами:
Середовище
Чи є які-небудь облікові дані/соковита інформація, збережена в змінних середовища?
Історія PowerShell
Файли транскрипції PowerShell
Ви можете дізнатися, як увімкнути це за посиланням https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/
Логування модуля PowerShell
Деталі виконання конвеєра PowerShell записуються, охоплюючи виконані команди, виклики команд та частини сценаріїв. Однак повні деталі виконання та результати виводу можуть не бути зафіксовані.
Щоб це увімкнути, слідувати інструкціям у розділі "Файли транскрипції" документації, обираючи "Логування модуля" замість "Транскрипція PowerShell".
Для перегляду останніх 15 подій з журналів PowersShell ви можете виконати:
PowerShell Логування блоків сценаріїв
Записується повний запис активності та вмісту виконання сценарію, що гарантує документування кожного блоку коду під час його виконання. Цей процес зберігає повний аудиторський слід кожної активності, що є цінним для форензики та аналізу зловмисної поведінки. Шляхом документування всієї активності на момент виконання надаються детальні відомості про процес.
Журнали подій для блоку сценаріїв можна знайти в Події Windows за шляхом: Журнали програм та служб > Microsoft > Windows > PowerShell > Робочі. Для перегляду останніх 20 подій можна використовувати:
Налаштування Інтернету
Диски
WSUS
Ви можете скомпрометувати систему, якщо оновлення не запитуються за допомогою httpS, а лише http.
Ви починаєте з перевірки, чи мережа використовує оновлення WSUS без SSL, запустивши наступне:
Якщо ви отримуєте відповідь у вигляді:
І якщо HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer
дорівнює 1
.
Тоді, це можна використати. Якщо останній реєстр дорівнює 0, то запис WSUS буде проігноровано.
Для використання цих вразливостей можна використовувати такі інструменти, як: Wsuxploit, pyWSUS - Це скрипти збройованого вибуху серед людей посередників для впровадження "фальшивих" оновлень в незахищений трафік WSUS.
Прочитайте дослідження тут:
WSUS CVE-2020-1013
Прочитайте повний звіт тут. За сутністю, це недолік, який використовує ця помилка:
Якщо у нас є можливість змінювати наш локальний проксі, і оновлення Windows використовує проксі, налаштований у налаштуваннях 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
Прочитайте цей посібник, щоб дізнатися, як створити обгортку MSI за допомогою цих інструментів. Зверніть увагу, що ви можете обгорнути файл ".bat", якщо ви просто хочете виконати командні рядки
pageMSI WrapperСтворення MSI за допомогою WIX
pageCreate MSI with WIXСтворення MSI за допомогою Visual Studio
Створіть з Cobalt Strike або Metasploit новий Windows EXE TCP payload в
C:\privesc\beacon.exe
Відкрийте Visual Studio, виберіть Створити новий проект та введіть "installer" у поле пошуку. Виберіть проект Майстер налаштування та натисніть Далі.
Дайте проекту назву, наприклад AlwaysPrivesc, використовуйте
C:\privesc
для розташування, виберіть розмістити рішення та проект в одній теки, та натисніть Створити.Продовжуйте натискати Далі, поки не дійдете до кроку 3 з 4 (вибір файлів для включення). Натисніть Додати та виберіть створений вами файл Beacon payload. Потім натисніть Готово.
Виділіть проект AlwaysPrivesc в Дереві рішень та в Властивостях змініть TargetPlatform з x86 на x64.
Є інші властивості, які можна змінити, такі як Author та Manufacturer, які можуть зробити встановлену програму більш правдоподібною.
Клацніть правою кнопкою миші на проекті та виберіть Вид > Власні дії.
Клацніть правою кнопкою миші на Install та виберіть Додати власну дію.
Двічі клацніть на Папка програми, виберіть ваш файл beacon.exe та клацніть OK. Це забезпечить виконання пейлоаду beacon, як тільки виконується встановлювач.
У властивостях Власної дії змініть Run64Bit на True.
Нарешті, зіберіть це.
Якщо відображається попередження
File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'
, переконайтеся, що ви встановили платформу на x64.
Встановлення MSI
Для виконання встановлення зловмисного файлу .msi
в фоновому режимі:
Для експлуатації цієї вразливості ви можете використовувати: exploit/windows/local/always_install_elevated
Антивірус та детектори
Налаштування аудиту
Ці налаштування визначають, що записується у журнал, тому вам слід звернути увагу
WEF
Windows Event Forwarding, цікаво знати, куди відправляються журнали
LAPS
LAPS призначений для управління паролями локального адміністратора, забезпечуючи унікальність, випадковість та регулярне оновлення кожного пароля на комп'ютерах, приєднаних до домену. Ці паролі безпечно зберігаються в Active Directory та можуть бути доступні лише користувачам, які мають достатні дозволи через ACL, що дозволяє їм переглядати локальні адміністраторські паролі у разі авторизації.
pageLAPSWDigest
Якщо активовано, паролі у відкритому вигляді зберігаються в LSASS (Local Security Authority Subsystem Service). Додаткова інформація про WDigest на цій сторінці.
Захист LSA
Починаючи з Windows 8.1, Microsoft впровадила покращений захист для місцевої служби безпеки (LSA), щоб блокувати спроби ненадійних процесів читати її пам'ять або впроваджувати код, додатково забезпечуючи систему. Додаткова інформація про захист LSA тут.
Захист віджалювання облікових даних
Захист облікових даних був впроваджений в Windows 10. Його ціль - захист облікових даних, збережених на пристрої, від загроз, таких як атаки типу pass-the-hash.| Додаткова інформація про захист облікових даних тут.
Кешовані облікові дані
Облікові дані домену аутентифікуються Місцевим органом безпеки (LSA) та використовуються компонентами операційної системи. Коли дані входу користувача аутентифікуються зареєстрованим пакетом безпеки, зазвичай встановлюються облікові дані домену для користувача. Додаткова інформація про кешовані облікові дані тут.
Користувачі та Групи
Перелік Користувачів та Груп
Вам слід перевірити, чи мають які-небудь з груп, до яких ви належите, цікаві дозволи
Привілейовані групи
Якщо ви належите до деякої привілейованої групи, ви можете підняти привілеї. Дізнайтеся про привілейовані групи та як їх використовувати для підвищення привілеїв тут:
pagePrivileged GroupsМаніпулювання токенами
Дізнайтеся більше про те, що таке токен на цій сторінці: Windows Tokens. Перевірте наступну сторінку, щоб дізнатися про цікаві токени та як їх зловживати:
pageAbusing TokensЗалоговані користувачі / Сесії
Домашні теки
Політика паролів
Отримати вміст буфера обміну
Запущені процеси
Дозволи на файли та теки
По-перше, перелік процесів перевірте наявність паролів у командному рядку процесу. Перевірте, чи можете ви перезаписати деякий виконуваний файл або чи маєте права на запис у теку виконуваного файлу для використання можливих атак DLL Hijacking:
Завжди перевіряйте можливі відлагоджувачі electron/cef/chromium, які працюють, ви можете скористатися цим для підвищення привілеїв.
Перевірка дозволів виконуваних файлів процесів
Перевірка дозволів на теки виконуваних файлів процесів (DLL Hijacking)
Видобуток паролів з пам'яті
Ви можете створити дамп пам'яті запущеного процесу, використовуючи procdump від sysinternals. Служби, такі як FTP, мають паролі у відкритому вигляді в пам'яті, спробуйте витягти дамп пам'яті та прочитати паролі.
Небезпечні GUI додатки
Додатки, які працюють як SYSTEM, можуть дозволити користувачеві створити CMD або переглянути каталоги.
Приклад: "Довідка та підтримка Windows" (Windows + F1), пошук "командний рядок", клацніть "Клацніть, щоб відкрити командний рядок"
Служби
Отримати список служб:
Дозволи
Ви можете використовувати sc, щоб отримати інформацію про сервіс.
Рекомендується мати бінарний файл accesschk від Sysinternals, щоб перевірити необхідний рівень привілеїв для кожної служби.
Рекомендується перевірити, чи може "Authenticated Users" змінювати будь-яку службу:
Ви можете завантажити 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
. Якщо так, то можна змінити шлях до виконуваного бінарного файлу.
Для зміни шляху виконуваного бінарного файлу:
Дозволи на додавання даних/створення підкаталогів у реєстрі служб
Якщо у вас є цей дозвіл у реєстрі, це означає, що ви можете створювати підкаталоги з цього. У випадку служб Windows цього достатньо для виконання довільного коду:
pageAppendData/AddSubdirectory permission over service registryШляхи до служб без кавичок
Якщо шлях до виконуваного файлу не знаходиться в кавичках, Windows спробує виконати кожен кінець перед пробілом.
Наприклад, для шляху C:\Program Files\Some Folder\Service.exe Windows спробує виконати:
Перелік усіх шляхів служб без кавичок, за винятком тих, що належать вбудованим службам Windows:
Ви можете виявити і використати цю вразливість за допомогою metasploit: exploit/windows/local/trusted\_service\_path
Ви можете вручну створити бінарний файл служби за допомогою metasploit:
Відновлювальні дії
Windows дозволяє користувачам вказати дії, які слід виконати у разі невдачі служби. Цю функцію можна налаштувати так, щоб вказувала на бінарний файл. Якщо цей бінарний файл можна замінити, можливий підвищення привілеїв. Докладнішу інформацію можна знайти в офіційній документації.
Застосунки
Встановлені застосунки
Перевірте дозволи на бінарні файли (можливо, ви зможете їх перезаписати та підвищити привілеї) та папки (DLL Hijacking).
Права на запис
Перевірте, чи можете ви змінювати деякий конфігураційний файл для читання деякого спеціального файлу або чи можете змінювати деякий виконуваний файл, який буде виконуватися обліковим записом адміністратора (schedtasks).
Один зі способів знайти слабкі дозволи на теки/файли в системі - це:
Запуск при старті
Перевірте, чи можете ви перезаписати деякі реєстри або виконуваний файл, який буде запущений іншим користувачем. Прочитайте наступну сторінку, щоб дізнатися більше про цікаві місця автозапуску для підвищення привілеїв:
pagePrivilege Escalation with AutorunsДрайвери
Шукайте можливі сторонні дивні/вразливі драйвери
ВИКОРИСТАННЯ DLL У ПРОЦЕСІ PATH
Якщо у вас є права на запис у папці, яка є в PATH, ви можете використати DLL для завантаження процесу та підвищення привілеїв.
Перевірте дозволи для всіх папок у PATH:
Для отримання додаткової інформації про те, як зловживати цією перевіркою:
pageWritable Sys Path +Dll Hijacking PrivescМережа
Ресурси
файл hosts
Перевірте наявність інших відомих комп'ютерів, які зафіксовані у файлі hosts
Мережеві інтерфейси та DNS
Відкриті порти
Перевірте обмежені сервіси ззовні
Таблиця маршрутизації
Таблиця ARP
Правила брандмауера
Перевірте цю сторінку для команд, пов'язаних з брандмауером (список правил, створення правил, вимкнення, вимкнення...)
Більше команд для мережевого переліку тут
Підсистема Windows для Linux (wsl)
Бінарний файл bash.exe
також можна знайти в C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe
Якщо ви отримаєте користувача root, ви зможете слухати будь-який порт (перший раз ви використовуєте nc.exe
для прослуховування порту, він запитає через GUI, чи слід дозволити nc
через брандмауер).
Для легкого запуску bash в режимі root ви можете спробувати --default-user root
Ви можете досліджувати файлову систему WSL
у папці C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\
Облікові дані Windows
Облікові дані Winlogon
Менеджер облікових даних / Сховище Windows
З https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault Сховище Windows зберігає облікові дані користувачів для серверів, веб-сайтів та інших програм, які Windows може автоматично увійти в систему для користувачів. На перший погляд, це може виглядати так, що користувачі можуть зберігати свої облікові дані Facebook, облікові дані Twitter, облікові дані Gmail тощо, щоб автоматично увійти через браузери. Але це не так.
Сховище Windows зберігає облікові дані, які Windows може автоматично увійти для користувачів, що означає, що будь-яка програма Windows, яка потребує облікових даних для доступу до ресурсу (сервера або веб-сайту) може використовувати цей Менеджер облікових даних та Сховище Windows і використовувати надані облікові дані замість того, щоб користувачі постійно вводили ім'я користувача та пароль.
Якщо програми не взаємодіють з Менеджером облікових даних, я не думаю, що вони можуть використовувати облікові дані для певного ресурсу. Тому, якщо ваша програма хоче скористатися сховищем, вона повинна якимось чином спілкуватися з менеджером облікових даних та запитувати облікові дані для цього ресурсу зі сховища за замовчуванням.
Використовуйте cmdkey
, щоб переглянути збережені облікові дані на машині.
Потім ви можете використовувати runas
з параметрами /savecred
, щоб використовувати збережені облікові дані. Наведений нижче приклад викликає віддалений бінарний файл через SMB-ресурс.
Використання runas
з наданим набором облікових даних.
Зверніть увагу, що mimikatz, lazagne, credentialfileview, VaultPasswordView, або з модуля Empire Powershells.
DPAPI
API захисту даних (DPAPI) надає метод симетричного шифрування даних, переважно використовується в операційній системі Windows для симетричного шифрування асиметричних приватних ключів. Це шифрування використовує користувацький або системний секрет для значного внеску в ентропію.
DPAPI дозволяє шифрування ключів за допомогою симетричного ключа, який походить від секретів входу користувача. У сценаріях, що включають системне шифрування, воно використовує секрети аутентифікації домену системи.
Зашифровані користувацькі ключі RSA, використовуючи DPAPI, зберігаються в каталозі %APPDATA%\Microsoft\Protect\{SID}
, де {SID}
представляє ідентифікатор безпеки користувача. Ключ DPAPI, розташований поруч з головним ключем, який захищає приватні ключі користувача в одному файлі, зазвичай складається з 64 байтів випадкових даних. (Важливо зауважити, що доступ до цього каталогу обмежений, що запобігає переліку його вмісту через команду dir
в CMD, хоча його можна переглянути через PowerShell).
Ви можете використовувати модуль mimikatz dpapi::masterkey
з відповідними аргументами (/pvk
або /rpc
) для розшифрування його.
Файли облікових даних, захищені майстер-паролем, зазвичай розташовані в:
Ви можете використовувати модуль mimikatz dpapi::cred
з відповідним /masterkey
для розшифрування.
Ви можете витягти багато DPAPI masterkeys з пам'яті за допомогою модуля sekurlsa::dpapi
(якщо ви користувач з правами root).
Облікові дані PowerShell
Облікові дані PowerShell часто використовуються для скриптів та завдань автоматизації як зручний спосіб зберігання зашифрованих облікових даних. Ці облікові дані захищені за допомогою DPAPI, що зазвичай означає, що їх можна розшифрувати лише тим самим користувачем на тому ж комп'ютері, на якому вони були створені.
Для розшифрування облікових даних PS з файлу, що їх містить, ви можете виконати:
Wifi
Wifi
Збережені підключення RDP
Ви можете знайти їх за шляхом HKEY_USERS\<SID>\Software\Microsoft\Terminal Server Client\Servers\
та в HKCU\Software\Microsoft\Terminal Server Client\Servers\
Недавно виконані команди
Менеджер облікових даних віддаленого робочого столу
Використовуйте модуль Mimikatz dpapi::rdg
з відповідним /masterkey
, щоб розшифрувати будь-які файли .rdg
Ви можете витягти багато головних ключів DPAPI з пам'яті за допомогою модуля Mimikatz sekurlsa::dpapi
Прикріплені нотатки
Люди часто використовують додаток StickyNotes на робочих станціях з Windows, щоб зберігати паролі та іншу інформацію, не усвідомлюючи, що це файл бази даних. Цей файл розташований за адресою C:\Users\<user>\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite
і завжди варто його шукати та вивчати.
AppCmd.exe
Зверніть увагу, що для відновлення паролів з AppCmd.exe вам потрібно бути адміністратором та запускати під рівнем високої цілісності.
AppCmd.exe розташований у каталозі %systemroot%\system32\inetsrv\
.
Якщо цей файл існує, то можливо, що деякі підказки були налаштовані та можуть бути відновлені.
Цей код був витягнутий з PowerUP:
SCClient / SCCM
Перевірте, чи існує C:\Windows\CCM\SCClient.exe
.
Інсталятори запускаються з привілеями SYSTEM, багато з них вразливі до DLL Sideloading (Інформація з https://github.com/enjoiz/Privesc).
Файли та Реєстр (Облікові дані)
Облікові дані Putty
Ключі хоста SSH Putty
SSH ключі в реєстрі
SSH приватні ключі можуть бути збережені в середині ключа реєстру HKCU\Software\OpenSSH\Agent\Keys
, тому вам слід перевірити, чи є там щось цікаве:
Якщо ви знайдете будь-який запис у цьому шляху, це, ймовірно, буде збережений ключ SSH. Він зберігається зашифрованим, але може бути легко розшифрований за допомогою https://github.com/ropnop/windows_sshagent_extract. Додаткова інформація про цю техніку тут: https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/
Якщо служба ssh-agent
не запущена і ви хочете, щоб вона автоматично запускалася при завантаженні, виконайте:
Схоже, що ця техніка більше не є дійсною. Я спробував створити деякі ssh-ключі, додати їх за допомогою ssh-add
та увійти через ssh на машину. Реєстр HKCU\Software\OpenSSH\Agent\Keys не існує, і procmon не виявив використання dpapi.dll
під час аутентифікації асиметричним ключем.
Неочікувані файли
Ви також можете шукати ці файли за допомогою metasploit: post/windows/gather/enum_unattend
Приклад вмісту:
Резервні копії SAM та SYSTEM
Хмарні облікові дані
McAfee SiteList.xml
Шукайте файл під назвою SiteList.xml
Кешований пароль GPP
Раніше була доступна функція, яка дозволяла розгортання користувацьких облікових записів локальних адміністраторів на групу машин через Групову політику (GPP). Однак цей метод мав значні недоліки з точки зору безпеки. По-перше, об'єкти групової політики (GPO), збережені у вигляді файлів XML в SYSVOL, можуть бути доступні будь-якому користувачеві домену. По-друге, паролі в цих GPP, зашифровані за допомогою AES256 з використанням публічно документованого ключа за замовчуванням, можуть бути розшифровані будь-яким аутентифікованим користувачем. Це становить серйозний ризик, оскільки це може дозволити користувачам отримати підвищені привілеї.
Для зменшення цього ризику була розроблена функція для пошуку локально кешованих файлів GPP, що містять поле "cpassword", яке не є порожнім. Після знаходження такого файлу функція розшифровує пароль і повертає спеціальний об'єкт PowerShell. Цей об'єкт містить відомості про GPP та місцезнаходження файлу, що допомагає в ідентифікації та усуненні цієї уразливості безпеки.
Шукайте ці файли в C:\ProgramData\Microsoft\Group Policy\history
або в C:\Documents and Settings\All Users\Application Data\Microsoft\Group Policy\history (до W Vista):
Groups.xml
Services.xml
Scheduledtasks.xml
DataSources.xml
Printers.xml
Drives.xml
Для розшифрування cPassword:
Використання crackmapexec для отримання паролів:
Конфігурація веб-сайту IIS
Приклад web.config з обліковими даними:
Облікові дані OpenVPN
Логи
Запитайте про облікові дані
Ви завжди можете запитати користувача ввести свої облікові дані або навіть облікові дані іншого користувача, якщо ви вважаєте, що він може їх знати (зверніть увагу, що пряме запитання клієнта про облікові дані є дуже ризикованим):
Можливі імена файлів, що містять облікові дані
Відомі файли, які колись містили паролі у чистому тексті або у Base64
Пошук усіх запропонованих файлів:
Облікові дані в кошику
Вам також слід перевірити кошик, щоб знайти облікові дані всередині нього.
Для відновлення паролів, збережених декількома програмами, ви можете використовувати: http://www.nirsoft.net/password_recovery_tools.html
У реєстрі
Інші можливі ключі реєстру з обліковими даними
Видобуття ключів openssh з реєстру.
Історія браузерів
Вам слід перевірити бази даних, де зберігаються паролі з Chrome або Firefox. Також перевірте історію, закладки та улюблені веб-сторінки браузерів, можливо, там зберігаються деякі паролі.
Інструменти для видобутку паролів з браузерів:
Mimikatz:
dpapi::chrome
Перезапис COM DLL
Component Object Model (COM) - це технологія, вбудована в операційну систему Windows, яка дозволяє взаємодіяти між компонентами програмного забезпечення різних мов. Кожен компонент COM ідентифікується за допомогою ідентифікатора класу (CLSID), а кожен компонент використовує функціональність через один або кілька інтерфейсів, ідентифікованих за допомогою ідентифікаторів інтерфейсів (IIDs).
Класи та інтерфейси COM визначаються в реєстрі під HKEY_CLASSES_ROOT\CLSID та HKEY_CLASSES_ROOT\Interface відповідно. Цей реєстр створюється шляхом об'єднання HKEY_LOCAL_MACHINE\Software\Classes + HKEY_CURRENT_USER\Software\Classes = HKEY_CLASSES_ROOT.
У CLSIDs цього реєстру ви можете знайти дочірній реєстр InProcServer32, який містить значення за замовчуванням, що вказує на DLL та значення з назвою ThreadingModel, яке може бути Apartment (однопотоковий), Free (багатопотоковий), Both (одно або багато) або Neutral (потік нейтральний).
Зазвичай, якщо ви можете перезаписати будь-які з DLL, які будуть виконані, ви можете підвищити привілеї, якщо цю DLL буде виконано іншим користувачем.
Щоб дізнатися, як злочинці використовують COM Hijacking як механізм постійності, перегляньте:
pageCOM HijackingЗагальний пошук паролів у файлах та реєстрі
Пошук вмісту файлів
Пошук файлу за певною назвою файлу
Пошук у реєстрі назв ключів та паролів
Інструменти, які шукають паролі
MSF-Credentials Plugin є плагіном msf, який я створив для автоматичного виконання кожного модуля metasploit POST, який шукає облікові дані всередині жертви. Winpeas автоматично шукає всі файли, що містять паролі, згадані на цій сторінці. Lazagne - ще один чудовий інструмент для вилучення паролів з системи.
Інструмент SessionGopher шукає сесії, імена користувачів та паролі з декількох інструментів, які зберігають ці дані у відкритому вигляді (PuTTY, WinSCP, FileZilla, SuperPuTTY та RDP)
Витік обробників
Уявіть, що процес, який працює як SYSTEM, відкриває новий процес (OpenProcess()
) з повним доступом. Той самий процес також створює новий процес (CreateProcess()
) з низькими привілеями, але успадковує всі відкриті обробники основного процесу.
Отже, якщо у вас є повний доступ до процесу з низькими привілеями, ви можете отримати відкритий обробник привілейованого процесу, створеного за допомогою OpenProcess()
та впровадити shellcode.
Прочитайте цей приклад для отримання більш детальної інформації про те, як виявити та використати цю уразливість.
Прочитайте цей інший пост для більш повного пояснення того, як тестувати та зловживати більшою кількістю відкритих обробників процесів та потоків, успадкованих з різними рівнями дозволів (не тільки повний доступ).
Імітація клієнта з іменованими каналами
Спільні сегменти пам'яті, відомі як канали, дозволяють взаємодію процесів та передачу даних.
Windows надає функцію під назвою Іменовані канали, що дозволяє неспорідненим процесам обмінюватися даними, навіть через різні мережі. Це нагадує архітектуру клієнт-сервер, з ролями, визначеними як іменований канал сервера та іменований канал клієнта.
Коли дані надсилаються через канал клієнтом, сервер, який налаштував канал, може прийняти ідентичність клієнта, якщо він має необхідні права SeImpersonate. Виявлення привілейованого процесу, який спілкується через канал, який ви можете імітувати, надає можливість отримати вищі привілеї, приймаючи ідентичність цього процесу, коли він взаємодіє з каналом, який ви створили. Інструкції щодо виконання такого нападу можна знайти тут та тут.
Також наступний інструмент дозволяє перехоплювати комунікацію через іменований канал за допомогою інструменту, такого як burp: https://github.com/gabriel-sztejnworcel/pipe-intercept і цей інструмент дозволяє переглядати та переглядати всі канали для пошуку підвищення привілеїв https://github.com/cyberark/PipeViewer
Різне
Моніторинг командних рядків для паролів
Отримавши оболонку як користувач, можуть виконуватися заплановані завдання або інші процеси, які передають облікові дані через командний рядок. Сценарій нижче захоплює командні рядки процесів кожні дві секунди та порівнює поточний стан з попереднім, виводячи будь-які відмінності.
Викрадення паролів з процесів
Від низькопривілейованого користувача до NT\AUTHORITY SYSTEM (CVE-2019-1388) / Ухилення від UAC
Якщо у вас є доступ до графічного інтерфейсу (через консоль або RDP) і UAC увімкнено, у деяких версіях Microsoft Windows можливо запустити термінал або будь-який інший процес, такий як "NT\AUTHORITY SYSTEM" від непривілейованого користувача.
Це дозволяє підвищити привілеї та ухилитися від UAC одночасно за допомогою однієї й тієї ж вразливості. Крім того, немає потреби встановлювати що-небудь, а використаний під час процесу бінарний файл підписаний і виданий Microsoft.
Деякі з постраждалих систем наступні:
Для використання цієї вразливості необхідно виконати наступні кроки:
У вас є всі необхідні файли та інформація у наступному репозиторії GitHub:
https://github.com/jas502n/CVE-2019-1388
Від середнього до високого рівня цілісності адміністратора / Ухилення UAC
Прочитайте це, щоб дізнатися про рівні цілісності:
pageIntegrity LevelsПотім прочитайте це, щоб дізнатися про UAC та ухилення UAC:
pageUAC - User Account ControlВід високого рівня до системи
Новий сервіс
Якщо ви вже працюєте у процесі високого рівня цілісності, перехід до SYSTEM може бути легким, просто створивши та виконавши новий сервіс:
AlwaysInstallElevated
З високопріоритетного процесу ви можете спробувати увімкнути записи реєстру AlwaysInstallElevated та встановити зворотний шел, використовуючи обгортку .msi. Додаткова інформація про відповідні ключі реєстру та як встановити пакет .msi тут.
High + привілей SeImpersonate до System
Ви можете знайти код тут.
Від SeDebug + SeImpersonate до повних привілеїв токена
Якщо у вас є ці привілеї токена (імовірно, ви знайдете це вже в процесі високого пріоритету), ви зможете відкрити майже будь-який процес (не захищені процеси) з привілеєм SeDebug, скопіювати токен процесу та створити довільний процес з цим токеном. Використовуючи цю техніку, зазвичай вибирається будь-який процес, що працює як SYSTEM з усіма привілеями токена (так, ви можете знайти процеси SYSTEM без усіх привілеїв токена). Ви можете знайти приклад коду, що виконує запропоновану техніку тут.
Іменовані канали
Ця техніка використовується meterpreter для ескалації в getsystem
. Техніка полягає в створенні каналу, а потім створенні/зловживанні сервісу для запису в цей канал. Потім сервер, який створив канал, використовуючи привілей SeImpersonate
, зможе імітувати токен клієнта каналу (сервісу), отримуючи привілеї SYSTEM.
Якщо ви хочете дізнатися більше про іменовані канали, вам слід прочитати це.
Якщо ви хочете прочитати приклад як перейти від високого пріоритету до System, використовуючи іменовані канали, вам слід прочитати це.
Dll Hijacking
Якщо ви зможете підманіти dll, яку завантажує процес, що працює як SYSTEM, ви зможете виконати довільний код з цими дозволами. Тому Dll Hijacking також корисний для цього виду підвищення привілеїв, і, більше того, якщо це набагато простіше досягти з високопріоритетного процесу, оскільки він матиме права на запис у папках, які використовуються для завантаження dlls. Ви можете дізнатися більше про Dll hijacking тут.
Від адміністратора або служби мережі до System
Від LOCAL SERVICE або NETWORK SERVICE до повних привілеїв
Читайте: https://github.com/itm4n/FullPowers
Додаткова допомога
Статичні бінарні файли impacket
Корисні інструменти
Найкращий інструмент для пошуку векторів підвищення привілеїв на локальному комп'ютері з Windows: WinPEAS
PS
PrivescCheck
PowerSploit-Privesc(PowerUP) -- Перевірка на помилки конфігурації та чутливі файли (перевірте тут). Виявлено.
JAWS -- Перевірка можливих помилок конфігурації та збір інформації (перевірте тут).
privesc -- Перевірка на помилки конфігурації
SessionGopher -- Витягує інформацію про збережені сесії PuTTY, WinSCP, SuperPuTTY, FileZilla та RDP. Використовуйте -Thorough локально.
Invoke-WCMDump -- Витягує облікові дані з диспетчера облікових записів. Виявлено.
DomainPasswordSpray -- Розпилює зібрані паролі по домену
Inveigh -- Inveigh - це інструмент для підманування ADIDNS/LLMNR/mDNS/NBNS та man-in-the-middle на PowerShell.
WindowsEnum -- Основна перевірка привілеїв Windows
Sherlock ~~~~ -- Пошук відомих уразливостей привілеїв (ЗАСТАРІЛО для Watson)
WINspect -- Локальні перевірки (Потрібні права адміністратора)
Exe
Watson -- Пошук відомих уразливостей привілеїв (потрібно скомпілювати за допомогою VisualStudio) (перекомпільовано)
SeatBelt -- Перелічує хост, шукаючи помилки конфігурації (більше інструмент для збору інформації, ніж підвищення привілеїв) (потрібно скомпілювати) (перекомпільовано)
LaZagne -- Витягує облікові дані з багатьох програм (перекомпільований exe на github)
SharpUP -- Порт PowerUp на C#
Beroot ~~~~ -- Перевірка на помилки конфігурації (виконуваний файл перекомпільований на github). Не рекомендовано. Не працює добре в Win10.
Windows-Privesc-Check -- Перевірка можливих помилок конфігурації (exe з python). Не рекомендовано. Не працює добре в Win10.
Bat
winPEASbat -- Інструмент, створений на основі цього посту (для правильної роботи не потрібно accesschk, але він може використовуватися).
Локально
Windows-Exploit-Suggester -- Читає вивід systeminfo та рекомендує робочі експлойти (локальний python) Windows Exploit Suggester наступного покоління -- Читає вивід systeminfo та рекомендує робочі експлойти (локальний python)
Meterpreter
multi/recon/local_exploit_suggestor
Вам потрібно скомпілювати проект, використовуючи правильну версію .NET (див. це). Щоб побачити встановлену версію .NET на хості жертви, ви можете зробити:
Бібліографія
Last updated