Uac что такое

Содержание

Uac что такое

Увеличение льгот для определенного приложения:
* В свойствах ярлычка поставить галочку «Запускать от имени администратора».
* Эвристическим инсталлятором.
* Очевидным запросом юзера.
* В манифесте.

Обламываем UAC: Так ли страшна программисту система контроля пользователей?

Уж не знаю, сколько раз в тырнетах подымалась несчастная тема контроля за действиями юзера (UAC): нужна ли она, как эффективна… Но мы разглядим этот вопрос снова, сейчас с чисто прикладной, хакерской точки зрения. Плюсы и минусы системы, также самое главное — как ее можно обойти.

Итак, что все-таки такое UAC исходя из убеждений безопасности? Разработчики Windows (видимо, много озаботившись невеселыми сведениями из багтраков, регулярно пополняющимися все новыми и новыми уязвимостями в самой распространенной ОС в мире) решили, что если уж все или почти все юзеры сидят под правами администратора, то надо сделать некий программный компонент, который будет испрашивать у юзеров разрешения. Оставим в стороне холивар на тему «Нужны ли простому юзеру права администратора?», поскольку сей крайне философский вопрос спорен: с одной стороны, права админа простому пользователю, действительно, не нужны, а с другой — они нужны туевой хуче довольно повседневных программ.

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

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

И ведь надо признать, что введение UAC довольно сильно обломало начинающих и не очень кодеров, зарабатывающих себе на жизнь разработкой малвари, так что на специальных бордах заказчики теперь сначала спрашивают о возможности кода работать в Vista/7 и обходить UAC. Платили и до сего времени платят за это вполне адекватные деньги.

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

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

При выборе элемента «Запуск от имени администратора» проводник вызывает 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%.

Что такое Google UAC?

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

Лезем в обход UAC

Итак, теперь о том, зачем мы все здесь, собственно, собрались. Можно ли обойти UAC? Да, можно. Первое решение, так сказать, лобовое. И основано оно на том удивительном факте (или просчете разработчиков Windows?), что при изменении политики UAC системе глубоко фиолетово, как и кто именно это делает, человек с помощью указателя мыши или же все делается программным способом. Другими словами фактически система не различает, кто именно передвигает заветную стрелочку.

Этим мы и воспользуемся — что нам стоит программно отключить UAC? Ничего! Но пойдем мы нетрадиционным способом — забудем о существующих в языках высокого уровня вроде С++ или C# методах типа SendKeys, а возьмем на вооружение простой VBS-скрипт.

Set WshShell = WScript.CreateObject(«WScript.Shell»)
WshShell.SendKeys(«^»)
WScript.Sleep(500)
WshShell.SendKeys(«change uac»)
WScript.Sleep(2000)
WshShell.SendKeys(«»)
WshShell.SendKeys(«»)
WshShell.SendKeys(«»)
WScript.Sleep(2000)
WshShell.SendKeys(«»)
WshShell.SendKeys(«»)
WshShell.SendKeys(«»)
WshShell.SendKeys(«»)
WshShell.SendKeys(«»)
WshShell.SendKeys(«»)
‘// Тут есть одна заковыка — чтобы выбранные изменения
‘// вступили в силу, систему нужно перезагрузить
‘// WshShell.Run «shutdown /r /f»

Uac что такое

Да-да, всего-то и нужно, что воспользоваться благами Windows Script Host (WSH), где, кстати, сокрыто от глаз огромное разнообразие возможностей для управления системой, о которых частенько забывают. Но об этом пойдет речь в другой раз.

Второе решение обхода UAC — тоже программное, но не лобовое, а основанное на уязвимости самой системы.

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

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

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

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

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

Ключевой момент эксплойта

UINT codepage = GetACP();
TCHAR tmpstr[256];
_stprintf_s(tmpstr, TEXT(«EUDC\%d»), codepage);
HKEY hKey;
RegCreateKeyEx(HKEY_CURRENT_USER, tmpstr, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE | DELETE, NULL, &hKey, NULL);
RegDeleteValue(hKey, TEXT(«SystemDefaultEUDCFont»));
RegSetValueEx(hKey, TEXT(«SystemDefaultEUDCFont»), 0,
REG_BINARY, RegBuf, ExpSize);
__try
EnableEUDC(TRUE);
>
__except(1)
>
RegDeleteValue(hKey, TEXT(«SystemDefaultEUDCFont»));
RegCloseKey(hKey);

Заключение

Обойти UAC можно. Не скажу, что это легко, ведь разработчики Windows VIsta/W7 постарались на славу, надо отдать им должное. Но все таки лазейки остаются. Можно найти одну-две кроличьих дыры, которые способны свести на нет старания команды Windows. Успех в данном случае приходит к тем, кто может работать с отладчиками и дебаггерами типа IDA Pro или WinDBG.

Удачи тебе в твоих стараниях и да пребудет с тобой сила!

UAC или Контроль учетных записей. Стоит ли отключать? #itskills #сисадмин

Хочешь зарабатывать на поиске уязвимостей в различных программных продуктах? Go for zerodayinitiative.com и получи от $1000 до $10 000 за найденную уязвимость!

UAC немного деталей

Здравствуйте уважаемые! Хотелось бы рассказать немного про один из механизмов защиты ОС.
Наверняка многие не по наслышке знаю что же все-таки это такое, но надеюсь так же многие подчеркнут себе что то новое из этого топика, и так приступим!

UAC (User Account Control) — это средство контроля пользовательских учетных записей, впервые появившийся в Windows Vista.
Главная задача UAC была — заставить всех работать как обычный стандартный системный пользователь, т.к. работа с правами администратора очень не безопасна. Все мы прекрасно знаем, что многие приложения с которыми мы работаем могут содержать «уязвимости» и их же часто используют злоумышленники. Соответственно работая это приложение с правами администратора (хотя за частую приложениям не требуются права такого уровня), может писать в системные папки абсолютно прозрачно для пользователя, чего нам собственно и не надо. Для воизбежания подобных ситуаций собственно и был призван на помощь UAC.
Он не только лишь защищает вас от злонамеренного кода, а так же в какой то мере оказывает совместимость со «старыми» приложениями. Он позволяет писать «старым» приложения в системные папки, а если быть точнее эти приложения просто так думают что пишут в системные папки, но по сути пишут в виртуализированные папки, в следствии чего приложения работают вполне корректно.

Как работает UAC ?

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

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

Хочу напомнить, что отключая user account control вы подвергаете всю систему опасности и превращаете вашу ОС в windows XP, а не просто отключаете надоедливые окошки.
При всем этом отключая UAC вы выключаете windows resource protection, который собирает все необходимые для «жизни» файлы в хранилище, что бы после критического сбоя восстановить поврежденные файлы.
Виртуализация осуществятся в режиме ядра.
* Файловая система: драйвером luafv.sys.
* Реестр: встроенными средствами.
Перенаправляемые каталоги системы:
\Program Files, \Windows, \Windows\System32.
Исключения: Системные *.exe и *.dll.
Перенаправляемые разделы реестра:
HKLM\Software
Исключения: Некоторые ключе подраздела Microsoft.
Приложение работающее с обычными правами, перенаправляет в:
* Запись:
\Users\\AppData\Local\Virtual Store
HKCU\Software\Classes\VirtualStore
Что совершенно прозрачно происходит для самого приложения, т.е. приложение продолжает думать что оно пишет например в \Program Files.
* Чтение:
Сначала используется зона пользователя, затем глобальное расположение.

Повышение привилегий для определенного приложения:
* В свойствах ярлыка поставить галочку «Запускать от имени администратора».
* Эвристическим инсталлятором.
* Явным запросом пользователя.
* В манифесте.

Ну и в довершение неполный список действий, вызывающих сообщение User Account Control:
Uac что такое

* Изменения в каталогах %SystemRoot% и %ProgramFiles% — а именно, инсталляция/деинсталляция ПО, драйверов и компонентов ActiveX; изменение меню «Пуск» для всех пользователей.
* Установка обновлений Windows, конфигурирование Windows Update.
* Перенастройка брандмауэра Windows.
* Перенастройка UAC.
* Добавление/удаление учётных записей.
* Перенастройка родительских запретов.
* Настройка планировщика задач.
* Восстановление системных файлов Windows из резервной копии.
* Любые действия в каталогах других пользователей.
* Изменение текущего времени (впрочем, изменение часового пояса UAC не вызывает).

Sysadminium

В этой статье разберём настройки связанные с контролем учетных записей (UAC). Также узнаем про особенности работы этой системы.

Оглавление скрыть

Предназначение UAC

Эта система создана для того, чтобы позволить пользователям, работающим с правами администратора, получать привилегии администратора только по просьбе. При всем этом на дисплее появляется такое предупреждение:

Uac что такое

Если вы ответите положительно, то процесс запущенный этой программой получит административные привилегии. Обычные же процессы, работающие в сеансе администратора, не имеют таких привилегий, если система UAC не отключена.

Запрос о повышении привилегий может происходить при:

  • установке программы;
  • запуске программы у которой в манифесте указано запускаться только с правами администратора, например редактора реестра (regedit.exe);
  • принудительном запуске программы от имени администратора;
  • настройке операционной системы, например брандмауэра.

Если обычный пользователь пытается выполнить административное действие, то помимо согласия потребуется ввести логин и пароль администратора:

Uac что такое

Настройки

Изменить поведение UAC можно из «Панели управления», в какой нужно найти «uac» или «Изменения параметров контроля учетных записей».

Uac что такое

Откроется вот такое диалоговое окно:

Uac что такое

Параметры управления учетными записями:

  • Верхняя позиция. UAC всегда уведомляет администратора о повышении привилегий, у не администраторов при всем этом запрашивается пароль. Приглашение выводится на защищенном десктопе.
  • Вторая позиция. Повышение привилегий происходит автоматически, без запроса, при различных настройках системы. Но при установке программы, или при запуске от имени администратора, приглашение появляется на защищенном десктопе.
  • Третья позиция. Такая-же как вторая, но приглашение появляется на обычном десктопе. Такое приглашение затрачивает меньше ресурсов, но может быть перехвачено вирусами работающими в сеансе пользователя.
  • Нижняя позиция. Уведомления отключены, повышение привилегий происходит автоматически. При всем этом для не администраторов, запросы на запуск от имени администратора все равно будут приходить.

Uac что такое

Имя статьи
Система UAC

В этой статье разберём настройки связанные с контролем учетных записей (UAC). Также узнаем про особенности работы этой системы

Похожие статьи

  • Windows 10 администратор заблокировал

    Содержание Это приложение заблокировано в целях защиты Windows 10 Администратор заблокировал выполнение этого приложения Windows 10 Администратор…

Оставить комментарий

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

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

Мы в социальных сетях