Есть ли один двоичный файл UAC?

27

Есть ли бинарный файл (.exe) в папке System32, отвечающий за функциональные возможности Windows UAC? (например, uac.exe). Что произойдет, если этот файл был принудительно удален? Будет ли Windows ломаться или не загружаться?

Здесь нет проблем XY; Мне просто любопытно узнать, что произойдет, если UAC будет принудительно удален из ПК.

Кэти
источник
1
Вы можете легко отключить UAC. UAC - это функция ядра. То, что вы хотите, не возможно
Ramhound
Существует файл win32k.sys technize.net/… и, видимо, этот файл в предварительно пропатченных окнах можно манипулировать / изменять .. чтобы отключить UAC. В качестве альтернативы можно отключить UAC обычным способом, хотя это не файл EXE
barlop
Вы можете отключить UAC, используя различные методы, например superuser.com/questions/1013702/… . Я думаю, что если вы удалите его каким-либо другим способом, вы получите в основном тот же эффект, хотя и с ошибками в ответах ниже об отсутствующих двоичных файлах.
Ещё один случайный пользователь
@barlop, win32k.sys - это только сторона ядра подсистемы Windows. Другими словами, основной код используется всем. Я не рекомендовал бы пытаться изменить это. pasotech.altervista.org/windows_internals/Win32KSYS.pdf
Темный сокол
@DarkFalcon Возможно, в «стороне ядра подсистемы Windows» есть нечто большее. И я не советовал, чтобы кто-то "изменил это"! Как вы думаете, кто-то собирается делать? Открыть его в блокноте? Я никогда не предлагал такую ​​вещь! Открыть шестнадцатеричный редактор? лучше, но я и этого не предлагал! И никто бы этого не сделал и ничего не изменил, если бы у них не было идеи, что они хотели бы изменить, что потребовало бы определенного уровня мастерства!
Barlop

Ответы:

56

UAC - это многокомпонентная архитектура, реализованная несколькими двоичными файлами

Контроль учетных записей (UAC) относится к нескольким компонентам, которые вместе образуют архитектуру UAC . Я кратко рассмотрю некоторые из них, а также двоичные файлы, отвечающие за их реализацию, но сначала приведу обзор архитектуры UAC из статьи Microsoft Docs « Как работает контроль учетных записей» :

введите описание изображения здесь

Локальный орган безопасности (LSA) / фильтрованный токен

Концептуально «первый» компонент UAC реализуется подсистемой Local Security Authority, которая обрабатывает создание токена доступа пользователя в процессе входа в систему. Начиная с Windows Vista, процесс входа в систему был изменен так, что когда администратор входит в систему с включенным UAC, подсистема LSA создает два отдельных маркера доступа для пользователя:

  1. Один с полным доступом администратора и
  2. Второй «фильтрованный токен» со стандартным доступом пользователя

Как показано здесь, этот процесс отличается от обычного входа пользователя в систему:

введите описание изображения здесь

Сервис подсистемы LSA живет в lsass.exeпроцессе.

Виртуализация

Виртуализация файлов и реестра, добавленная в Windows 7, является компонентом UAC, который скрывает старые приложения, которые не совместимы с UAC, но требуют только административных прав для доступа к определенным защищенным областям файловой системы или реестра:

Когда административное приложение, которое не совместимо с UAC, пытается выполнить запись в защищенный каталог, такой как Program Files, UAC предоставляет приложению собственное виртуализированное представление ресурса, которое оно пытается изменить. Виртуализированная копия сохраняется в профиле пользователя.

Источник

Путем перенаправления этих попыток доступа в области, для которых не требуются разрешения администратора, эти приложения продолжают функционировать, несмотря на то, что в системе включено UAC.

Эта виртуализация реализована в ядре .

Информационная служба приложения

Информационная служба приложения (AIS) считывает манифест приложения и работает с запросом согласия UAC, чтобы определить, может ли приложение выполняться с повышенными правами (т. Е. Запускаться в контексте нефильтрованного токена доступа административного уровня, созданного при входе в систему) , Этот пост в блоге дает хороший обзор его роли в процессе UAC:

AIS Облегчает запуск интерактивных приложений с дополнительными административными привилегиями. Если эта служба остановлена, пользователи не смогут запускать приложения с дополнительными административными привилегиями, которые могут им потребоваться .... Оболочка проверяет эту службу при запуске приложения. AIS - это тот, который читает манифест и раздел «trustInfo» xml, который имеет требования для «требуемого исползования» ...

Вот рисунок, который следует за приведенной выше цитатой с подробным описанием роли AIS в процессе запроса согласия UAC:

введите описание изображения здесь

АИС реализована в DLL,appinfo.dll которая выполняется svchost.exe.

Согласие

@ Бенн ответ объясняет ключевую роль (в) известном UAC Согласии Prompt. Это реализовано consent.exeи отвечает за получение согласия пользователя или учетных данных пользователя с правами администратора для запуска приложения, требующего прав администратора.

Безопасный рабочий стол

Безопасный рабочий стол - это то место, где по умолчанию отображается запрос согласия UAC. UACBlog от Microsoft рассказывает нам, что уникально в этом рабочем столе по сравнению с рабочим столом пользователя:

Вы чаще всего взаимодействуете с [защищенным рабочим столом] при входе в Windows, поскольку пользовательский интерфейс входа в систему работает на защищенном рабочем столе. Основное отличие Secure Desktop от User Desktop состоит в том, что здесь разрешено запускать только доверенные процессы, работающие в качестве SYSTEM (то есть ничего, работающего не как уровень привилегий пользователя), а путь к Secure Desktop с рабочего стола пользователя также должен быть доверенным через вся цепочка.

Идея, лежащая в основе его использования при запросе согласия пользователя на запуск приложения с повышенными разрешениями, заключается в том, что вредоносное ПО не может имитировать Secure Desktop, если у него уже нет административных прав, и в этом случае обман пользователя в их предоставлении является спорным.


Вывод: UAC - это не просто двоичный файл. Это ткань переплетенных подсистем.

Есть и другие аспекты архитектуры UAC, которые здесь не рассматриваются, но это должно предоставить достаточно доказательств того, что:

  1. UAC не реализован в одном двоичном файле.
  2. Если включено, это неотъемлемая часть выполнения административных задач.

С момента своего появления в Windows Vista он был глубоко интегрирован в ключевые части операционной системы, что делает невозможным удаление всего кода, отвечающего за UAC, без ущерба для других вещей (например, вашей возможности входа в систему!)

Я думаю, можно с уверенностью сказать, что если вы «принудительно удалили» UAC, вы сломаете Windows.

Я говорю Восстановить Монику
источник
1
FWIW technize.net/…, основываясь на этой ссылке, похоже, что файл win32k.sys играет роль. Я заметил, что file.exe определяет его как «PE32 + исполняемый (родной) x86-64 для MS Windows»
barlop
win32k.sys - это, по сути, большой кусок ядра. Конечно, это играет роль в UAC. Это является для Windows.
Роджер Липскомб
25

Как прекрасно объяснил Твисти , существует множество компонентов, которые помогают реализовать UAC. Часть UAC, с которой люди больше всего знакомы, это диалог повышения / согласия:

Это обеспечивается consent.exe"Согласным пользовательским интерфейсом для административных приложений". Я попытался переименовать его в ВМ и посмотреть, что произойдет. Как и ожидалось, при использовании «Запуск от имени администратора» не отображаются подсказки повышения прав - вместо этого вы получаете сообщение об ошибке «файл не найден», в котором обвиняется то, что вы пытаетесь поднять:

не найдено

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

приложение не связано

В зависимости от ACL, установленного при выполнении переименования, которое нарушает все, это может быть невозможно исправить изнутри ОС, поскольку файловые операции могут требовать повышения прав (даже если они обычно не приводят к диалогу согласия). Обычные пользовательские действия, похоже, не ухудшаются.

Бен Н
источник
3
@muru, я полагаю, что accept.exe не просто возвращает true или false, а вместо этого токен для выполнения. Это означает, что вы не можете получить от обычного пользователя токена администратора без фактической аутентификации в качестве администратора.
Джои
6
@muru Windows проверяет и заменяет многие системные файлы, не уверенный, включен этот файл или нет. Тем не менее, с точки зрения безопасности, вопрос спорный - для того, что бы заменить согласие.exe, вам, во-первых, нужны привилегии администратора, поэтому повышения привилегий не будет, даже если бы можно было заменить способ, который вы себе представляете.
Луаан
3
Просто чтобы включить его, так как мысль пришла мне в голову. Вы все еще можете загрузить машину в Linux или что-то, чтобы заменить файл. Но для этого требуется физический доступ к машине, который также является административным. Таким образом, это все еще не проблема безопасности
DeadChex
1
@EricTowers Да, но, поскольку для изменения требуются административные привилегии consent.exe, злоумышленник, который может это сделать, уже находится на другой стороне герметичного люка и имеет более простые способы совершения плохих действий.
Ben N
1
@TwistyImpersonator Интересный вопрос! Повышение уровня шума, по-видимому, также запускает запуск согласия (для мониторинга запуска процесса ), когда выполняется под обычной учетной записью администратора. Встроенная учетная запись администратора не подлежит контролю учетных записей, поэтому все ее программы уже повышены, и Consent не участвует. Вы можете изменить это поведение, используя эту политику безопасности .
Ben N