|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Компонент User Account Control (UAC) (управление учетными записями пользователей)В более ранних ОС семейства Windows при работе под учетной записью администратора, все приложения, которые запускал администратор, запускались с административными привилегиями. Таким образом, вредоносные программы, запущенные в системе, получали над ней полный контроль. При входе в систему UAC сокращает привилегии администратора до уровня обычного пользователя и делает возможным запуск приложений, требующих административных привилегий, только с его согласия. Упрощенно механизм работы UAC можно представить в виде схемы на рисунке 8.2. При входе в систему под учетной записью администратора создаются два маркера доступа — маркер доступа обычного пользователя, с которым запускается процесс explorer.exe (от него маркер доступа наследуют все процессы, запущенные пользователем) и административный. При входе в систему под учетной записью обычного пользователя, создается только один маркер доступа.
Рис 8.2. Вход администратора в систему. Операции, которые выполняет UAC при запуске приложения, представлены на рис 8.3. При запуске процесса ShellExecute() вызывает функцию CreateProcess(), которая обращается к базе данных совместимости приложений, манифесту, если он имеется и к компоненту InstallerDetection. Манифест исполняемого файла определяет, связаны ли с исполняемым файлом флаги совместимости RequireAdministrator или RunAsInvoker. База данных совместимости приложений хранит информацию о решении проблем с совместимостью приложений. InstallerDetection для 32-разрядных приложений с помощью следующих эвристик определяет, является ли исполняемый файл установщиком: · имя файла включает в себя такие ключевые слова как "install", "setup", "update" и др; · ключевые слова содержатся в таких полях как продавец, компания-изготовитель, имя продукта, описание файла, оригинальное имя файла, внутреннее имя и экспортное имя; · ключевые слова содержатся в манифесте файла; · ключевые слова в записях StringTable в исполняемом файле; · ключевые слова в ресурсах исполняемого файла; · определенная последовательность байт в исполняемом файле.
Рис 8.3. Операции, выполняемые UAC при запуске приложения.
Если для приложения было определено, что оно требует запуска с административными привилегиями, CreateProcess() возвращает ошибку ERROR_ELEVATION_REQUIRED, которую ожидает ShellExecute() и в случае ее появления обращается к Application Information service (AIS) с целью запуска приложения с повышенными полномочиями. AIS получает вызов от ShellExecute() и еще раз оценивает запрошенный уровень выполнения и требования групповых политик. Устанавливается, разрешено ли повышение прав и определяется их конфигурация. Если для запрошенного уровня выполнения требуется повышение полномочий, то служба выводит на экран пользователя предупреждение (определяется из групповой политики). Для этого используется дескриптор HWND, полученный от ShellExecute(). После того, как пользователь дал согласие на это действие или ввёл учётные данные, AIS затребует, если необходимо, соответствующий маркер доступа, связанный с соответствующим пользователем. AIS повторно выполняет вызов CreateProcessAsUser(), предоставляя маркер доступа администратора и указывая рабочий экран пользователя. Для совместимости с системой приложений, написанных без учета UAC и требующих административных привилегий, используется виртуализация реестра и файлов. Виртуализация реестра предоставляется ядром системы. Виртуализованные разделы реестра включают большую часть ветви HKEY_LOCAL_MACHINE\Software, но есть и исключения, например следующие: · HKLM\Software\Microsoft\Windows; · HKLM\Software\Microsoft\Windows NT; · HKLM\Software\Classes. Виртуализуются только разделы, которые часто изменяются приложениями. ОС Windows перенаправляет операции изменения виртуализуемых разделов приложением в виртуальный корневой раздел реестра пользователя в разделе HKEY_CURRENT_USER\Software\Classes\VirtualStore. Этот раздел расположен в файле %LocalAppData%\Microsoft\Windows\UsrClass.dat, в кусте Classes пользователя. Состояние виртуализации раздела хранится в виде флага REG_KEY_DONT_VIRTUALIZE в самом разделе. Виртуализация файлов предоставляется драйвером luafv.sys. Виртуализуются следующие области файловой системы — %ProgramFiles%, %ProgramData% и %SystemRoot%, за исключением некоторых подкаталогов. Из виртуализации исключаются файлы с некоторыми расширениями, в том числе EXE, BAT, SCR, VBS и другие. Дополнительные расширения добавляются в разделе реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Luafv\Parameters\ExcludedExtensionsAdd. Изменения, производимые в виртуализованных каталогах устаревшими процессами, перенаправляются в виртуальный корневой каталог пользователя, %LocalAppData%\VirtualStore. Виртуализация не предоставляется процессам, работающим на уровне ядра, 64-разрядным процессам и процессам, осуществляющим операцию имперсонации пользователя. Администрирование UAC осуществляется с помощью локальных политик безопасности.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |