Керівництво по контролю облікових записів користувачів (UAC)

Служба захисту користувачів (User Account Control), ймовірно, є найбільш недооціненою і, можливо, навіть самої ненависної багатьма функцією, яка дебютувала в Вісті і стала частиною всіх наступних версій Windows. Здебільшого потік ненависті, який користувачі вихлюпують на User Account Control, я вважаю несправедливим, оскільки функція несе реальну користь. Я повністю згоден, що іноді контроль облікових записів (далі по тексту просто UAC) може бути дуже дратівливим, але він був впроваджений в Windows з певною метою. Ні, не для того щоб заважати користувачам, а щоб сприяти плавному переходу від стандартного (обмеженого) аккаунта до облікового запису адміністратора.

У цій статті я розповім, що таке UAC, як він працює, чому він необхідний і як його налаштувати. Я не маю жодного наміру давати вам настанови, чому ви повинні використовувати UAC, а лише проінформую про те, чого ви втрачаєте, відключаючи цю функцію.

Трохи передісторії та інформація про облікові записи

Як ви повинні знати, Windows працює з так званими обліковими записами. Вони бувають двох видів: адміністраторські і стандартні (обмежені).

Обліковий запис адміністратора дає користувачеві повний доступ до всіх функцій операційної системи, тобто користувач може робити все, що він хоче. Користувач стандартної облікового запису в своєму розпорядженні зниженими правами, а тому йому дозволені лише деякі речі. Це, як правило, все те, що впливає тільки на поточного користувача. Наприклад: зміна шпалер на робочому столі, настройки миші, зміна звукової схеми і т.д. Загалом, все, що стосується конкретного користувача і не застосовується до всієї системи, є в стандартній облікового запису. Для всього, що може вплинути на систему в цілому, необхідний адміністраторський доступ.

Одне із завдань, покладених на ці облікові записи, полягає в захисті від шкідливого коду. Загальна ідея тут виражена в тому, щоб звичайну роботу користувач виконував під обмеженою обліковим записом і переключався на аккаунт адміністратора, тільки коли цього вимагає дію. Як це не парадоксально, але шкідливі програми отримують той же рівень прав, з яким користувач зробив вхід в систему.

У Windows 2000 і Windows XP виконання дій від імені адміністратора реалізовано мало гнучко, а тому працювати під обмеженою обліковим записом було не дуже зручно. Один із способів виконати вже перевірений адміністратором сайту дію в цих версіях системи виглядає так: вихід з обмеженою облікового запису (або швидке переключення, якщо використовувалася Windows XP) -> вхід в акаунт адміністратора -> виконання дії -> вихід з учеткі адміністратора (або швидке переключення, якщо використовувалася Windows XP) -> повернення в обмежену обліковий запис.

Інший варіант полягає у використанні контекстного меню і опції "Запустити від імені іншого користувача", яка відкриває вікно, в якому необхідно вказати відповідний адміністраторський аккаунт і пароль, щоб запустити файл від імені адміністратора. Це досить швидкий спосіб перемикання з однієї учеткі на іншу, але він не застосуємо до будь-якої ситуації, що вимагає адміністративних привілеїв. Ще одна проблема цього методу полягає в тому, що обліковий запис адміністратора повинна мати пароль, інакше виконання завершиться невдачею.

Ось чому в Windows Vista була впроваджена функція User Account Control, а в Windows 7 була доведена майже до досконалості.

Що таке UAC

UAC - це функція в Windows Vista, 7, 8, 8.1 і 10, яка має на меті зробити перехід з обмеженою середовища в адміністраторську максимально гладким і безпроблемним, усуваючи необхідність запускати файли з правами адміністратора вручну або перемикатися між обліковими записами. Крім того, UAC - це додатковий захисний шар, який не вимагає майже ніяких зусиль з боку користувача, але здатний запобігти серйозної шкоди.

Як працює UAC

При вході користувача в свій обліковий запис Windows створює так званий user access token, який містить певні відомості про цього облікового запису і головним чином різні ідентифікатори безпеки, які операційна система використовує для управління можливостями доступу цього аккаунта. Іншими словами, цей token є свого роду особистим документом (як паспорт, наприклад). Це відноситься до всіх версій Windows на основі ядра NT: NT, 2000, XP, Vista, 7, 8 і 10.

Коли користувач входить в стандартну обліковий запис (обмежену), створюється standard user token з обмеженими правами. Коли користувач входить в адміністраторський аккаунт, створюється т.зв. administrator token з повним доступом. логічно.

Однак в Windows Vista, 7, 8 і 10, якщо UAC включений і користувач входить в обліковий запис адміністратора, Windows створює два token'а. Адміністраторський залишається на задньому плані, а стандартний використовується для запуску Explorer.exe. Тобто Explorer.exe запускається з обмеженими правами. При цьому всі запущені після цього процеси стають субпроцеси Explorer.exe з успадкованими обмеженими привілеями основного процесу. Якщо процесу потрібні права адміністратора, він запитує адміністраторський token, а Windows в свою чергу запитує дозволу користувача надати процесу цей token у вигляді спеціального діалогового вікна.

Це діалогове вікно містить так званий безпечний робочий стіл (secure desktop), доступ до якого має тільки операційна система. Він виглядає як затемнений знімок реального робочого столу і містить тільки вікно підтвердження адміністраторських прав і, можливо, мовну панель (якщо активовано більше однієї мови).

Якщо користувач не погодиться і натисне "Ні", Windows відмовить процесу в адміністраторському token'е. А якщо погодиться і вибере "Так", операційна система надасть процесу необхідні йому привілеї, а саме, адміністраторський token.

Якщо процес уже запущений зі зниженими правами, він буде перезапущений з такими підвищеними (адміністраторськими). Процес не може бути "знижений" або "підвищений" безпосередньо. Після того як процес був запущений з одним token'ном, він не зможе отримати інших прав до тих пір, поки знову не буде запущений з новими правами. Як приклад можна привести Диспетчер завдань, який завжди запускається з обмеженими правами. Якщо ви натиснете кнопку "Відображати процеси всіх користувачів", Task Manager буде закритий і знову запущений, але вже з правами адміністратора.

При використанні стандартної облікового запису UAC просить вказати конкретний адміністраторський аккаунт і ввести пароль:

Як UAC захищає користувача

Сам по собі UAC не забезпечує особливий захист. Він всього лише полегшує перехід з обмеженою середовища в таку адміністраторську. Так що більш правильна постановка питання, отже, така: як обмежена обліковий запис перешкоджає користувачеві. Під обмеженим профілем користувача процеси не можуть отримати доступ до певних системних зонам:

  • основний розділ диска;
  • папки користувача інших користувачів в папці \ Users \;
  • папка Program Files;
  • папка Windows і всі її підпапки;
  • розділи інших облікових записів в системному реєстрі
  • розділ HKEY_LOCAL_MACHINE в системному реєстрі.

Будь-який процес (або шкідливий код) без прав адміністратора не може влізти глибоко в систему, не маючи доступу до необхідних папок і ключів реєстру, а тому не може завдати серйозної шкоди системі.

Чи може UAC перешкодити роботі старих програм, які офіційно не сумісні з Vista / 7/8/10

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

Деякі програми намагаються зберегти свої файли в Program Files і / або Windows. Якщо програма запускається з правами адміністратора, це не буде проблемою. Однак якщо програма виконується з обмеженими дозволами - вона не зможе внести зміни в файли / папки в Program Files і / або Windows. Операційна система просто не дозволить їй цього.

Щоб запобігти проблемам з такими програмами, Windows пропонує віртуалізацію папок і ключів реєстру, до яких програми з обмеженими правами не мають доступу в принципі. Коли подібна програма намагається створити файл в захищеній папці, то операційна система перенаправляє її в спеціальну папку VirtualStore, яка знаходиться в X: \ Users \\ AppData \ Local \ (Де X: це системний розділ, зазвичай - C :). Тобто очима самої програми все в порядку. Вона не стикається з перешкодами і вважає, що створює файли / папки точно там, де хоче. VirtualStore зазвичай містить вкладені папки Program Files і Windows. Ось скріншот Program Files в моїй папці VirtualStore:

А ось, що знаходиться в папці SopCast, наприклад:

Тобто якби UAC був зупинений, або програма завжди запускалася з правами адміністратора, ці файли / папки були б створені в C: \ Program Files \ SopCast. У Windows XP ці файли і папки були б створені без проблем, тому що в ній всі програми мають права адміністратора за замовчуванням.

Це, звичайно, не повинно розглядатися розробниками в якості постійного рішення. Обов'язок кожного автора полягає в створенні повністю сумісного з актуальними операційними системами софта.

Діалогові вікна UAC

Ви могли помітити, що існує всього три різних діалогових вікна UAC. Тут ми розглянемо їх у Windows 7, 8.x і 10. У Vista діалоги дещо відрізняються, але ми не будемо на них зупинятися.

Перший тип вікна має темно-синю смужку у верхній частині і іконку у вигляді щита в лівому верхньому кутку, яка розділена на 2 сині і 2 жовті секції. Це вікно з'являється, коли потрібне підтвердження для процесу з цифровим підписом, який належить операційній системі - т.зв. Windows binaries. Про них поговоримо нижче.

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

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

налаштування UAC

Налаштування (режими роботи) контролю облікових записів знаходяться в Панель управління -> Система і безпека -> Зміна параметрів контролю облікових записів. Їх всього 4:

Завжди повідомляти - найвищий рівень. Цей режим еквівалентний способу роботи UAC в Windows Vista. В цьому режимі система завжди вимагає підтвердження прав адміністратора, незалежно від процесу і що він вимагає.

Другий рівень використовується за умовчанням в Windows 7, 8.x і 10. У цей режимі Windows не виводить вікно UAC, коли справа доходить до так званих Windows binaries. Тобто якщо файл / процес, який вимагає прав адміністратора, відповідає наступним 3 умовам, операційна система наділить його ними автоматично, без підтвердження з боку користувача:

  • файл має вбудований або у вигляді окремого файлу маніфестом (manifest), який вказує на автоматичне підвищення прав;
  • файл знаходиться в папці Windows (або в будь-який з її підпапок);
  • файл підписаний дійсної цифровим підписом Windows.

Третій режим такий же, як другий (попередній), але з тією різницею, що при ньому не використовується безпечний робочий стіл. Тобто екран не затемнюється, а діалогове вікно UAC з'являється як і будь-яка інша. Майкрософт не рекомендує використовувати цей варіант, а чому - я поясню пізніше.

Чи не повідомляти мене - четвертий і останній рівень. Фактично це означає повне відключення UAC.

Тут доречно зробити два зауваження:

  • цифровий підпис Windows відноситься конкретно до операційної системи. Я говорю це, тому що існують і файли, які були підписані цифровим підписом Microsoft. Це дві окремі підписи, при цьому UAC визнає тільки цифровий підпис Windows, оскільки вона виступає в якості доказу, що файл не тільки від Microsoft, але і є частиною операційної системи.
  • не всі файли Windows розташовують маніфестом для автоматичного підвищення прав. Є файли, які навмисно позбавлені цього. Наприклад, regedit.exe і cmd.exe. Зрозуміло, що другий позбавлений автоматичного підвищення, тому що дуже часто використовується для запуску інших процесів, а як вже згадувалося - кожен новий процес успадковує права процесу, який його запустив. Це означає, що кожен міг би використовувати командний рядок для безпроблемного запуску будь-яких процесів з правами адміністратора. На щастя, в Microsoft не дурні сидять.

Чому важливо використовувати безпечний робочий стіл

Безпечний робочий стіл запобігає будь-які можливі перешкоди і впливу інших процесів. Як уже згадувалося вище, доступ до нього є тільки у операційної системи і з ним вона приймає тільки базові команди з боку користувача, тобто натискання кнопки "Так" або "Ні".

Якщо ви не використовуєте безпечний робочий стіл, зловмисник може зімітувати вікно UAC, щоб ввести вас в оману і запустити свій шкідливий файл з правами адміністратора.

Коли потрібні права адміністратора? Коли з'являється вікно UAC?

Взагалі є три випадки, при яких UAC звертається до користувача:

  • при зміні системних (НЕ призначених для користувача) налаштувань, хоча насправді це відноситься тільки до максимального рівня UAC;
  • зі встановленням або видаленням програми / драйвери;
  • коли додаток / процес вимагає привілеї адміністратора, щоб внести зміни в системні файли / папки або розділи системного реєстру.

Чому важливо не відключати UAC  

Служба захисту користувачів забезпечує високий рівень захисту, а натомість не вимагає практично нічого. Тобто коефіцієнт корисної дії UAC дуже високий. Я не розумію, чому він так дратує людей. У повсякденній роботі середньостатистичний користувач бачить вікно UAC 1-2 рази на день. Може бути, навіть 0. Це так багато?

Середньостатистичний користувач рідко змінює параметри системи, а коли змінює, UAC не турбує своїми питаннями, якщо працює з настройками за замовчуванням.

Середньостатистичний користувач не встановлює драйвери і програми кожен день. Всі драйвери і більшість необхідних програм встановлюються один раз - після установки Windows. Тобто це основний відсоток запитів UAC. Після цього UAC втручається тільки при оновленні, проте нові версії програм виходять далеко не кожен день, не кажучи вже про драйвери. Більш того, багато хто взагалі не оновлюють ні програми, ні драйвери, що додатково знижує питання UAC.

Далеко не всім програмам потрібні права адміністратора для виконання своєї роботи. Це в основному дефрагментатори, інструменти для очищення і оптимізації, деякі програми для діагностики (AIDA64, HWMonitor, SpeedFan і ін.) І налаштування системи (Process Explorer і Autoruns, наприклад, але тільки якщо потрібно виконати щось специфічне - скажімо, відключити драйвер / службу або стартує з Windows програму). І все це програми, які або можна не використовувати взагалі, або в окремих випадках. Всі часто використовувані додатки працюють з UAC абсолютно нормально і не задають жодних запитань:

  • мультимедійні плеєри (аудіо та / або відео);
  • конвертери відео / аудіо;
  • програми для обробки зображень / відео / аудіо;
  • програми для захоплення скріншотів робочого столу або відеозапису на ньому;
  • програми для перегляду зображень;
  • веб-браузери;
  • завантажувачі файлів (download-менеджери і клієнти P2P-мереж);
  • FTP-клієнти;
  • месенджери або програми для голосового / відео зв'язку;
  • програми для запису дисків;
  • архіватори;
  • текстові редактори;
  • PDF-рідери;
  • віртуальні машини;
  • та ін.

Навіть установка оновлень система Windows не задіє вікно UAC.

Є люди, які готові пожертвувати 1-2 і більше хвилин в день, щоб "оптимізувати" систему деякими криво написаними програмами, які не роблять нічого корисного, але не готові витратити кілька секунд в день, щоб відповісти на запити UAC.

Різних заяв на кшталт "Я досвідчений користувач і знаю, як захиститися" мало, тому що ніхто не застрахований і результат певних ситуацій не завжди залежить від користувача. Більш того, людям властиво помилятися, це трапляється з кожним.

Дозвольте мені навести один приклад: припустимо, ви використовуєте програму, яка має уразливості, і в один прекрасний день ви опинилися на сайті, який використовує ці уразливості. Якщо контроль облікових записів включений і програма працює з обмеженими правами, зловмисник не зможе наробити чимало лиха. В іншому випадку збиток системі може бути колосальним.

І це лише один з багатьох прикладів.

Запуск додатків разом з Windows з правами адміністратора

Я допускаю, що можливо є користувачі, які вимикають UAC просто для того, щоб мати можливість запускати програми разом з Windows і з правами адміністратора. Звичайним способом це неможливо, тому що UAC давно б відправив запит користувачеві доти, поки не буде завантажений робочий стіл. Тим не менш, є спосіб, завдяки якому ви можете залишити UAC включеним. Ось він:

  • відкрийте Планувальник завдань;
  • натисніть створити завдання;
  • в полі ім'я введіть що-небудь на свій розсуд, а в нижній частині вікна включите параметр Виконувати з найвищими правами;
  • перейдіть на вкладку тригери та натисніть створити;
  • в випадаючому меню зверху виберіть При вході в систему; якщо ви хочете створити завдання для конкретного користувача, виберіть варіант Користувач, а потім натисніть Змінити користувача; введіть ім'я користувача і підтвердіть натисканням кнопки OK;
  • перейдіть на вкладку дії та натисніть створити;
  • натисніть огляд, вкажіть відповідну програму і підтвердіть свій вибір;
  • перейдіть на вкладку умови і відключіть параметр Запускати тільки при харчуванні від електромережі;
  • на вкладці параметри вимкніть параметр Зупиняти завдання, що виконується довше;
  • підтвердіть, натиснувши OK.

Готово. Завдання додана, так що тепер додаток буде завантажуватися автоматично з правами адміністратора. Тут, однак, є одна невелика заковика: всі подібні завдання виконуються з пріоритетом нижче, ніж нормальний - below normal (нижче норми). Якщо вас це влаштовує, то все в порядку. Якщо немає, тоді вам доведеться потрудитися трохи більше:

  • запустіть Планувальник завдань, якщо ви вже закрили його;
  • Виберіть Бібліотека планувальника завдань;
  • відзначте вашу задачу, натисніть експорт і збережіть її в форматі .xml;
  • відкрийте .xml файл в текстовому редакторі;
  • знайдіть розділ 7, який повинен бути в кінці файлу і змініть сімку (7) між відкриває і закриває тегами на п'ятірку (5);
  • збережіть файл;
  • в Планувальнику завдань знову виділіть свою задачу, натисніть вилучити і підтвердіть видалення;
  • тепер натисніть імпортувати завдання, вкажіть тільки що збережений файл і натисніть кнопку OK.

На цьому все. Використовувати UAC чи ні, вирішувати тільки вам, але дуже важливо знати, що ви втрачаєте, коли відключаєте цю функцію, як і бути обізнаним про ризики. Дякуємо за увагу!

Відмінного Вам дня!