User account control group policy and registry key settings

Отключение UAC для программы с помощью Application Compatibility Toolkit

Нам понадобится утилита Application Compatibility Toolkit, которая входит в состав Windows ADK. Скачать актуальную версию Windows ADK для Windows 10 можно здесь.

Запустите скачанный файл adksetup.exe и при установке (программе нужен доступ в Интернет) выберите только Application Compatibility Toolkit.

Примечание. Пакет Microsoft Application Compatibility Toolkit – бесплатный набор утилит, предназначенный для устранения проблем совместимости приложений при переходе на новые версии Windows.

В системе появится две версии Application Compatibility Administrator — 32-х и 64-х битная версия. Запустите версию Application Compatibility Administrator в зависимости от разрядности приложения, для которого вы хотите подавить запрос UAC.

Запустите утилиту Compatibility Administrator (32-bit) с правами администратора (!). В разделе Custom Databases, щелкните ПКМ по элементу New Database и выберите пункт Create New-> Application Fix.

В открывшемся окне нужно указать имя приложения (regedit), производителя (Microsoft) и путь к исполняемому файлу ().

Пропустите следующее окно мастера настройки (Compatibility Mode), нажав Next. В окне Compatibility Fixes отметьте опцию RunAsInvoker.

При желании можно убедиться, что приложение может работать без UAC, нажав на кнопку тестового запуска (Test Run).

В окне Matching Information вы можете указать какие параметры приложения нужно проверять (версию, чексумму, размер и т.д.). Я оставил включенными проверки COMPANY_NAME,PRODUCT_NAME и ORIGINAL_FILENAME, чтобы не пересоздавать файл исправления после очередного обновления Windows 10 и обновлении версии файла regedit.

Совет. Для защиты от подмены исполняемого файла злоумышленником желательно использовать проверку по checksum, file_version и size. Отметим, что дополнительные проверки будут несколько замедлять запуск приложения.

Нажмите Finish и укажите имя файла, в который нужно сохранить созданный пакет исправления совместимости, например regedit.sdb. В этом файле будут содержаться инструкции по запуску приложения с заданными опциями совместимости.

Осталось применить пакет с исправлением совместимости к вашему приложению. Сделать это можно непосредственно из консоли Compatibility Administrator (выбрав в меню пункт Install), либо из командной строки.

Для этого откройте командную строку с правами администратора и выполните команду:

Если все сделали правильно, появится сообщение об успешном применении пакета.

Installation of regedit complete.

После установки пакета, соответствующая запись появится в списке установленных программ Windows (Programs and Features).

Попробуйте теперь запустить приложение в сессии пользователя без прав локального администратора. Теперь оно должно запуститься без появления запроса UAC.

Теперь проверьте, с какими привилегиями запущено данное приложение. Для этого в Task Manager на вкладке процессов добавьте столбец “Elevated”. Убедитесь, что процесс regedit.exe запущен от пользователя в непривилегированном режиме ().

В таком процесс редактора реестра пользователь может редактировать только собственные ветки реестра, но при попытке отредактировать/создать что-то в системной HKLM, появляется ошибка “You don’t have the requisite permissions”.

В дальнейшем это исправление совместимости можно распространить на компьютеры пользователей с помощью групповых политик. Тем самым можно добиться отключения проверки системы контроля учетных записей (UAC) для определенных приложений на множестве компьютеров в домене Active Directory.

Чтобы удалить исправление совместимости, выполните команду

Немного ликбеза, или как законно получить права админа

Определить потребность системы и приложений в административных правах можно множеством способов. Один из них — команда контекстного меню и ярлык «Запуск от имени администратора» в пользовательском интерфейсе проводника. Эти элементы содержат цветной значок щита, который должен быть добавлен ко всем кнопкам или пунктам меню, выбор которых приводит к повышению прав.

При выборе элемента «Запуск от имени администратора» проводник вызывает API-функцию ShellExecute с командой «runas».

Подавляющее большинство программ установки требуют административных прав, поэтому загрузчик образов, который инициирует запуск исполняемого файла, содержит код обнаружения установщиков для выявления устаревших версий. Часть алгоритмов используемой загрузчиком эвристики довольно проста: он ищет слова «setup», «install» или «update» в имени файла образа или внутренней информации о версии. Более сложные алгоритмы включают просмотр в исполняемом файле последовательностей байтов, обычно применяемых сторонними разработчиками в служебных программах — установочных оболочках.

Чтобы определить, нуждается ли целевой исполняемый файл в правах администратора, загрузчик образов также вызывает библиотеку совместимости приложений (appcompat). Библиотека обращается к базе данных совместимости приложений, чтобы определить, связаны ли с исполняемым файлом флаги совместимости RequireAdministrator или RunAsInvoker.

Самый общий способ запросить для исполняемого файла административные права — добавить в его файл манифеста приложения тег requestedElevationLevel. Манифесты — это XML-файлы, содержащие дополнительные сведения об образе. Они были введены в Windows XP как способ определения зависимостей для параллельно используемых библиотек DLL и сборок Microsoft .NET Framework.

Наличие в манифесте элемента trustInfo (он показан ниже во фрагменте дампа Firewallsettings.exe) означает, что исполняемый файл был написан для Windows Vista и содержит элемент requestedElevationLevel.

Атрибут level этого элемента может иметь одно из трех значений: asInvoker, highestAvailable и requireAdministrator.

Исполняемые файлы, не требующие административных прав, (например Notepad.exe), имеют значение атрибута asInvoker. В некоторых исполняемых файлах заложено допущение, что администраторы всегда хотят получить максимальные права. Поэтому в них используется значение highestAvailable. Пользователю, запускающему исполняемый файл с этим значением, предлагается повысить права, только если он работает в режиме AAM или рассматривается как администратор согласно определенным ранее правилам, и в связи с этим должен повысить права для обращения к своим административным привилегиям.

Примерами приложений, для которых используется значение highestAvailable, могут служить программы Regedit.exe, Mmc.exe и Eventvwr.exe. Наконец, значение requireAdministrator всегда инициирует запрос повышения и используется всеми исполняемыми файлами, которым не удастся выполнить свои действия без административных прав.

В приложениях со специальными возможностями атрибуту uiAccess задается значение «true» для управления окном ввода в процессах с повышенными правами. Кроме того, для обеспечения этих возможностей они должны быть подписаны и находиться в одном из нескольких безопасных размещений, включая %SystemRoot% и %ProgramFiles%.

Значения, задаваемые исполняемым файлом, можно легко определить, просмотрев его манифест с помощью служебной программы Sigcheck от Sysinternals. Например: sigcheck –m <executable>. При запуске образа, который запрашивает административные права, службе сведений о приложении (известна также как AIS, находится в %SystemRoot%System32 Appinfo.dll), работающей в процессе Service Host (%SystemRoot% System32Svchost.exe), предписывается запустить программу Consent. exe (%SystemRoot%System32Consent.exe). Программа Consent создает снимок экрана, применяет к нему эффект затемнения, переключается на рабочий стол, доступный только системной учетной записи, устанавливает затемненный снимок в качестве фона и открывает диалоговое окно повышения прав, содержащее сведения об исполняемом файле. Вывод на отдельном рабочем столе предотвращает изменение этого диалогового окна любой вредоносной программой, работающей под учетной записью пользователя.

Conclusion

The only secure way to run Windows 7 is under a standard user account. Under such an account UAC can provide an easy and secure method for elevating to administrator if needed. Under the default account running in admin approval mode, UAC is not as useful. Disabling UAC has the followind undesiereble consequences:

  • Protected Mode in Internet Explorer is turned off.
  • File and registry virtualization is turned off.

It is recommended that UAC prompting not be turned off by changing the slider setting. Instead, consider configuring UAC to elevate without prompting using Local (or Group) Security Policy.

Как отключить UAC

Если вы какое-то время пользуетесь Windows, вы, вероятно, помните, как раздражал контроль учётных записей пользователей (UAC). Он впервые появился в Windows Vista. Его можно отключить в любой операционной системе, в том числе Windows 7, 8 и 10. Вот как это сделать.

Однако сначала одно предупреждение. На самом деле мы рекомендуем не отключать UAC. В итоге вы получите менее безопасный компьютер (и мы написали отличное руководство, объясняющее именно это — вы найдёте его ниже, после инструкции об отключении). Если вы всегда отключаете UAC при новой установке Windows, вы можете попробовать ещё раз. UAC в Windows 8 и 10 стал намного более рациональным и менее раздражающим, чем раньше. Тем не менее, мы здесь не для того, чтобы указывать вам, что делать.

В Windows 7, 8 или 10 нажмите «Пуск» или сразу в общесистемный поиск введите «изменение параметров контроля учетных записей» в поле поиска и нажмите результат «Изменить настройки контроля учетных записей». В Windows 8 вы будете использовать начальный экран (вместо меню «Пуск»), и вам придётся изменить поиск на «настройки», но он по-прежнему работает в основном так же.

В окне «Настройки контроля учетных записей пользователей» перетащите ползунок вниз до параметра «Никогда не уведомлять». По завершении нажмите «ОК».

Довольно просто.

Также обратите внимание, что вам не нужно полностью выключать UAC. Вот настройки, которые вы можете применить с помощью ползунка:

  • Всегда уведомлять: Windows просит вас проверять через UAC всякий раз, когда приложение пытается установить программное обеспечение или внести изменения в ваш компьютер. Он также запрашивает подтверждение, когда вы вносите изменения в настройки Windows.
  • Уведомлять только о приложениях: две средние настройки на ползунке работают аналогично, оба уведомляют вас только тогда, когда приложения пытаются внести изменения, но не когда вы меняете настройки Windows. Разница между этими двумя настройками заключается в том, что первый затемняет экран во время уведомления, а второй — нет. Вторая настройка предназначена для людей с компьютерами, которые (по какой-либо причине) долго затемняют экран.
  • Никогда не уведомлять: UAC не уведомляет вас об изменениях, которые вы вносите или вносите в приложения. Этот параметр по существу отключает UAC.

Как мы уже говорили, мы настоятельно рекомендуем вам не отключать UAC. Это то, что делает безопасным использование учётной записи администратора в качестве повседневной учётной записи пользователя. Но если вы настроены выключить его, по крайней мере, теперь вы знаете, насколько это просто.

Способ 2. Отключить или изменить контроль учётных записей с помощью с помощью .REG файла

  1. Выполните шаги ниже, в зависимости в какой режим хотите изменить Контроль учетных записей.
  2.  Режим «Всегда уведомлять».
    1. Нажмите «Скачать» ниже, чтобы загрузить REG-файл, и перейдите к шагу 6 ниже.
  3. Сохраните файл .reg на рабочий стол.
  4. Дважды нажмите по загруженному файла .reg, чтобы объединить его.
  5. При появлении запроса нажмите «Выполнить», « Да» (UAC), « Да» и « ОК», чтобы подтвердить слияние.
  6. По завершении вы можете удалить загруженный файл .reg.

Вот и все,

В этой таблице описаны все настройки UAC и их влияние на безопасность вашего ПК.

Настройка Описание Влияние на безопасность
  • Вы будете уведомлены до того, как приложения внесут изменения в ваш компьютер или в настройки Windows, для которых требуются права администратора.
  • Когда вы получите уведомление, ваш экран будет затемнен, и вы должны либо одобрить, либо отклонить запрос в диалоговом окне UAC, прежде чем делать что-либо еще на своем ПК.
  • Это самая безопасная настройка.
  • Когда вы получите уведомление, вы должны внимательно прочитать содержимое каждого диалогового окна, прежде чем вносить изменения в свой ПК.
  • Обычным пользователям будет предложено ввести пароль администратора для подтверждения.
Уведомлять меня только при попытке приложений внести изменения в компьютер (по умолчанию)
  • Вы будете уведомлены, прежде чем приложения внесут изменения в ваш ПК, требующие прав администратора.
  • Вы будете уведомлены, если приложение попытается внести изменения в настройки Windows.
  • Вы не будете уведомлены, если попытаетесь внести изменения в настройки Windows, требующие прав администратора.
  • Обычно можно безопасно вносить изменения в настройки Windows без вашего уведомления. Однако некоторые приложения, которые поставляются с Windows, могут иметь команды или данные, передаваемые им, и вредоносное программное обеспечение может воспользоваться этим, используя эти приложения для установки файлов или изменения настроек на вашем ПК. Вы всегда должны быть осторожны с тем, какие приложения вы разрешаете запускать на вашем ПК.
  • Обычным пользователям будет предложено ввести пароль администратора для подтверждения.
Уведомлять только при попытках приложений внести изменения в компьютер (не затемнять рабочий стол)
  • Вы будете уведомлены, прежде чем приложения внесут изменения в ваш ПК, требующие прав администратора.
  • Вы будете уведомлены, если приложение попытается внести изменения в настройки Windows.
  • Вы не будете уведомлены, если попытаетесь внести изменения в настройки Windows, требующие прав администратора.
  • Этот параметр аналогичен «Уведомлять меня только тогда, когда приложения пытаются внести изменения в мой компьютер», но ваш рабочий стол не будет затемнен.
  • Если вы выберете эту опцию, другие приложения могут мешать визуальному отображению диалогового окна UAC. Это угроза безопасности, особенно если на вашем компьютере есть вредоносное ПО.
  • Обычным пользователям будет предложено ввести пароль администратора для подтверждения.
  • Вы не будете уведомлены, прежде чем какие-либо изменения будут внесены в ваш компьютер.
  • Если вы вошли в систему как администратор, приложения могут вносить изменения в ваш компьютер без вашего ведома.
  • Если вы вошли в систему как обычный пользователь, любые изменения, требующие прав администратора, будут автоматически отклонены или по-прежнему будут запрашиваться UAC.
  • Это наименее безопасный параметр. Когда вы устанавливаете UAC, чтобы никогда не уведомлять, вы открываете свой компьютер для потенциальных угроз безопасности.
  • Если вы устанавливаете UAC, чтобы никогда не уведомлять, вы должны быть осторожны с тем, какие приложения вы запускаете, потому что они будут иметь такой же доступ к ПК, как и вы. Это включает чтение и внесение изменений в защищенные системные области, ваши личные данные, сохраненные файлы и все остальное, хранящееся на ПК. Приложения также смогут обмениваться информацией и передавать информацию с любого компьютера, к которому подключен компьютер, включая Интернет.

Май 5th, 2017 Руги Деме

Надоедливые всплывающие сообщения от контроля учётных записей часто преследуют обычных пользователей Windows. UAC старается повысить безопасность, чтобы вашему компьютеру ничего не грозило, но получается так, что своими постоянными оповещениями он только отталкивает от себя. Как бы операционная система ни хотела обезопасить компьютер пользователей, иногда чрезмерная защита становится очень надоедливой, и появляется необходимость её отключить.

Переполнение буфера

Казалось бы, какая связь между переполнением буфера и UAC? Оказывается, таящиеся в Windows баги позволяют обойти ограничения UAC и повысить свои права. Сегодня я покажу на конкретном примере, как при помощи тривиального переполнения буфера можно обойти UAC и добиться администраторских прав.

Есть такая WinAPI — RtlQueryRegistryValues (msdn.microsoft.com), она используется для того, чтобы запрашивать множественные значения из реестра одним своим вызовом, что делается с использованием специальной таблицы RTL_QUERY_REGISTRY_TABLE, которая передается в качестве __in__out параметра.

Самое интересное (и постыдное для разработчиков Microsoft) в этой API то, что существует определенный ключ реестра, который можно изменить при помощи ограниченных пользовательских прав: HKCU EUDCSystemDefaultEUDCFont. Если сменить тип этого ключа на REG_BINARY, то вызов RtlQueryRegistryValues приведет к переполнению буфера.

Когда ядерная API-функция Win32k.sys!NtGdiEnableEudc запрашивает ключ реестра HKCUEUDCSystemDefaultEUDCFont, она честно предполагает, что этот ключ реестра имеет тип REG_SZ, так что в буфер передается структура UNICODE_STRING, у которой первое поле является типом ULONG (где представлена длина строки). Но так как мы можем изменить тип этого параметра на REG_BINARY, то систему это ставит в глубокий тупик и она неправильно интерпретирует длину передаваемого буфера, что приводит к переполнению стека.

Requesting elevation

A program can request elevation in a number of different ways. One way for program developers is to add a requestedPrivileges section to an XML document, known as the manifest, that is then embedded into the application. A manifest can specify dependencies, visual styles, and now the appropriate security context:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3">
   <v3:security>
     <v3:requestedPrivileges>
       <v3:requestedExecutionLevel level="highestAvailable" />
     </v3:requestedPrivileges>
   </v3:security>
 </v3:trustInfo>

</assembly>

Setting the level attribute for requestedExecutionLevel to «asInvoker» will make the application run with the token that started it, «highestAvailable» will present a UAC prompt for administrators and run with the usual reduced privileges for standard users, and «requireAdministrator» will require elevation. In both highestAvailiable and requireAdministrator modes, failure to provide confirmation results in the program not being launched.

A new process with elevated privileges can be spawned from within a .NET application using the "runas" verb. An example using C++/CLI:


System::Diagnostics::Process^ proc = gcnew System::Diagnostics::Process();
proc->StartInfo->FileName = "C:\\Windows\\system32\\notepad.exe";
proc->StartInfo->Verb = "runas"; // Elevate the application
proc->Start();

In a native Win32 application the same «runas» verb can be added to a ShellExecute() call.

ShellExecute(0, "runas", "C:\\Windows\\Notepad.exe", 0, 0, SW_SHOWNORMAL);

In the absence of a specific directive stating what privileges the application requests, UAC will apply heuristics to determine whether or not the application needs administrator privileges. For example, if UAC detects that the application is a setup program, in the absence of a manifest it will assume that the application needs administrator privileges.

UAC elevation prompts

UAC prompts provide contextual information such as the name of the program that triggered the notification along with its publisher name and (if applicable) a link to the digital certificate. Further more, they are color coded as a quick way to determine the trust level of the application that triggered the prompt. This should help users decide when to click “Yes” on a UAC prompt, but before moving on, we need to discuss two aspects.

The UAC shield icon appears next to buttons, links or icons to inform you that clicking those items will trigger a UAC prompt. Again, (as mentioned in a previous note) when running with default UAC settings in Admin Approval Mode the prompt might not be displayed when you try to modify certain system settings (like changing the date and time on your operating system).

A digital signature added to a file demonstrates its authenticity. I’ll take for example CCleaner setup package. You can view the digital certificate used to sign the file by right clicking on the file, choosing Properties, Digital signatures, clicking Details after selecting the signature from the list and finally clicking View Certificate. You can see that the setup package was created by Piriform Ltd (the owner of the certificate).

Digital certificate issued to Piriform LTD

Note: Unfortunately, it is not impossible for malicious software to be digitally signed. If you are not familiar with the author of the file, do a little research before clicking Yes. The Stuxnet malware (currently, proofs indicate that this was a government supported malware) contained files digitally signed with stolen certificates belonging to trusted companies. This is a rare event and the stolen certificates will be promptly revoked (invalidated).

Now we can proceed to describing the various UAC color-coded prompts.

Blue UAC prompt with shield icon

Blue with UAC shield icon: A Windows component (application that is a part of the Windows operating system) digitally signed by Microsoft needs administrative privileges to continue. You can click yes if you are certain that you’ve triggered this prompt (the UAC shield icon was present next to an object you’ve clicked).

Blue UAC prompt with question-mark icon

Blue with question mark icon: An executable that is digitally signed by a third-party developer needs administrative privileges to continue. If you’ve triggered this prompt and you fully trust the author of the file, you can click Yes. You can view the digital certificate used to sign this file by clicking Show Details and Show information about this publisher’s certificate.

An important thing to remember is that the digital signature tells you who the author of the file is, but it doesn’t tell you if the author can be trusted. You may click Yes only if you are familiar to the company that created the file.

Yellow UAC prompt

Yellow with exclamation mark: An executable that that is not digitally signed is accessed. There is no digital signature that can confirm the authenticity of this file. You can click yes if you are absolutely sure that the file can be trusted.

Luckily, most popular applications are digitally signed and you should not see this prompt too often.

Although receiving a certificate costs software authors money and some good free-ware applications are not digitally signed, most malicious files are not digitally signed as well. You should be suspicious when you encounter this prompt and, as a method of precaution, I would recommend uploading the file to an on-line scanning service as VirusTotal.

Red UAC prompt

Red: You attempt to run an executable file that has been specifically blocked by an administrator. You don’t have the option to click yes.

UAC controversy

When UAC was first introduced under Windows Vista people considered it to bee an annoying feature displaying too many prompts and making trivial tasks harder to achieve. To address this issues Microsoft altered the behavior of UAC under Windows 7 and lowered the number of prompts it displays considerably. Unfortunately Microsoft might have gone too far. Under the early beta stages of Windows 7 Long Zeng published an exploit on his blog that could silently turn off UAC. The exploit passed keystrokes to an Explorer window, navigating to the UAC Control Panel, and setting the slider to disabled. Because Explorer is a trusted executable, the user behind the screen received no warning. Microsoft fixed this issue but an interesting problem upraised from this incident: Windows 7’s default UAC configuration on the admin approval account (the default account created during the install) is not completely secure and it can be bypassed.

Microsoft’s Jon DeVaan has posted a response on the official Windows 7 blog stating that the default behavior for UAC is a result of Microsoft’s “goal to create a useful, usable, and secure Windows for all types of people” and that “one important thing to know is that UAC is not a security boundary. UAC helps people be more secure, but it is not a cure all.”

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector