User account control (uac): надоедливый защитник – компьютерные советы

FUCK UAC! 10 способов обхода системы User Account Control в Windows – «Хакер»

user account control (uac): надоедливый защитник - компьютерные советы

Содержание статьи

В каждой версии Windows (начиная с Vista) есть стандартный компонент UAC (User Account Control).

Он включен по умолчанию и не дает пользователю «выстрелить себе в ногу», запустив какую-нибудь малварь с правами админа.

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

Вся информация приводится исключительно в ознакомительных целях! Microsoft рекомендует патчить винду вовремя, не работать в админской учетке без реальной необходимости, не обходить UAC и не донимать техподдержку сообщениями об уязвимостях.Методы обхода UAC продолжают находить и сейчас, модифицируя старые приемы и открывая новые.

Самое сложное — подобрать подходящие способы для конкретной атакуемой системы. Концептуально разных приемов известно с десяток, а если считать их вместе с модификациями и гибридными способами, то наберется больше двадцати. Прочитать о них подробнее и посмотреть соответствующие примеры кода на GitHub можно по ссылкам в этой статье.

В хакерской философии многое заимствовано из боевых искусств. Например, мастер айкидо практически не атакует сам. Он лишь подмечает ошибки соперника и обращает его усилия против него самого. Так же и просчеты в защитных системах позволяют превратить их в хакерский инструмент.

Сейчас мы разберем несколько способов обхода UAC и даже его использования для запуска своего кода с повышенными привилегиями. Многие из этих методов уже реализованы в троянах и позволяют им скрытно внедряться в систему.

Во всех версиях Windows для UAC существует так называемый белый список — набор системных компонентов, для которых не применяются ограничивающие правила. Поэтому один из самых распространенных методов атаки сводится к попытке найти любые приложения из белого списка и попытаться внедрить в них свою *.dll.

Провести атаку типа DLL hijack сравнительно просто, хотя и здесь не обходится без подводных камней. Они свои в каждой версии ОС, а также зависят от настроек, учетной записи, разрядности ОС, установленных компонентов и патчей.

Например, в Windows 7/8 (но не 8.1) можно использовать штатную программу подготовки системы к развертыванию sysprep.exe, чтобы подгрузить свою версию cryptbase.dll или другой библиотеки.

Для этого достаточно поместить ее рядом с экзешником, поскольку он начинает искать и подгружать DLL’ки из своего каталога.

Однако при попытке просто скопировать свой файл в каталог %systemroot%/system32/sysprep/ мы получим сообщение об ошибке.

Доступ в system32 запрещен

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

Поместим cryptbase.dll в архив CAB. Не будем останавливаться на том, как сделать эту элементарную операцию. Она подробно описана на сайте Microsoft. Пусть наша библиотека называется evil.dll и находится в каталоге FCKUAC на диске C:. Тогда следующей командой мы сделаем «заряженный» архив:

makecab C:FCKUACevil.dll C:FCKUACevil.cabАрхив с нашей библиотекой

Скормим этот архив автономному установщику обновлений (Windows Update Standalone Installer).

wusa C:FCKUACevil.cab /quite /extract:%systemroot%system32sysprep

Он распакует его в system32sysprep, а «контроль учетных записей» будет молчать.

Утилита sysprep как встроенный бэкдор

Если умеешь программировать, то можешь запустить sysprep.exe скрыто — например, через CreateProcess() с флагом StartupInfo.wShowWindow = SW_HIDE.

На скрытые окна сегодня ругаются эвристические анализаторы многих антивирусов, но сейчас мы говорим только про UAC — ему все равно. После такого запуска sysprep.exe попытается загрузить и выполнить библиотеку CRYPTBASE.

dll, но на ее месте окажется наша, уже содержащая нужную нам функциональность. Она совершенно легально поднимет права нашему коду, и UAC примет это как должное.

Это происходит потому, что wusa и sysprep находятся в белом списке, а все приложения из этого списка могут поднимать себе права без участия UAC. Наш же код из подгружаемой установщиком библиотеки унаследует права родительского процесса sysprep.exe и также будет считаться доверенным.

Использование sysprep для обхода UAC

Рассмотренный выше трюк совместного использования wusa и sysprep представляет собой модифицированный метод Лео Дэвидсона (Leo Davidson).

Исходный вариант был применим только к непропатченной Windows 7 и был описан еще в 2009 году в рассылке компьютерного сообщества Оксфордского университета.

Копия приводится на его сайте, который из-за обилия подобного кода внесен в списки потенциально опасных.

Метод Дэвидсона в различных модификациях уже много лет используется для внедрения троянов, особенно семейства Win32/Carberp.

Пик эпидемии пришелся на осень 2011 года, но способ до сих пор работает в следующем типичном сценарии: действия выполняются в 32-битной версии Windows 7/8 под учетной записью администратора при включенном UAC с настройками по умолчанию. Простому пользователю нельзя запускать wusa.

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

Мэтт Грэбер (Matt Graeber) уточняет, что данный метод не работает «как есть» в Windows 8.1/10, поскольку в этих ОС изменены как sysprep.exe, так и сам UAC. Теперь программа подготовки системы к развертыванию загружает DLL только из %windir%system32.

Если по каким-то причинам доступа к установщику обновлений нет, то можно использовать другой вариант — копирование файла в системный каталог методом IFileOperation.

Суть метода в том, что для обхода UAC в нашей библиотеке создается COM-объект IFileOperation. Он позволяет скопировать файл куда угодно (в том числе в системную директорию system32 и ее подкаталоги), автоматически повышая для этого привилегии, так как функция будет иметь флаг auto-elevate.

Вот пример использования объекта IFileOperation для копирования файла в системный каталог.

Метод внедрения своей библиотеки в процесс explorer.exe рассматривается в этом примере.

Список приложений из белого списка можно посмотреть тут. Также его можно сгенерировать самому, просто найдя в системном каталоге Windows экзешники, содержащие строку autoelevate.

Создаем список программ из белого списка UAC

В зависимости от используемой программы из белого списка и версии Windows можно подменить ту или иную библиотеку (см. таблицу).

Стандартные компоненты и подменяемые библиотеки

Методы перебора этих вариантов собраны в одну PowerShell-утилиту.

Удивительно, что большинство методов обхода «контроля учетных записей» были умышленно заложены самими разработчиками Windows. Провал «Висты» маркетологи связали с неудобным поведением нового компонента, и в «семерке» UAC постарались сделать менее назойливым.

Для этого пришлось делать костыли из белого списка и метода автоматического повышения привилегий (без подтверждения пользователем) у сорока с лишним системных программ.

К функции autoElevate были написаны COM-интерфейсы: документированный IFileOperation (который разбирался выше) и недокументированный ISecurityEditor, об использовании которого мы поговорим сейчас.

Благодаря встроенным в UAC бэкдорам компьютеры с Windows 7 заражались незаметно для пользователя. Они становились полигоном для малвари и частенько попадали в ботнеты.

Один из них (под названием Simda) успешно развивался на протяжении пяти лет, используя для внедрения кода интерфейс ISecurityEditor. В Microsoft проблему частично устранили лишь в 2015 году.

Исправленный ISecurityEditor стал работать только с объектами файловой системы, указанными в константе SE_FILE_OBJECT.

Непропатченные системы встречаются до сих пор. Пример обхода UAC с использованием уязвимой версии ISecurityEditor приводится здесь.

Источник: https://xakep.ru/2016/11/10/fuck-uac/

UAC – Контроль учётных записей пользователей

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

Если Вы пользуетесь устройствами на базе Android (или держите Linux на ПК), то наверняка слышали о такой штуке как рут-права. В Windows подобные функции выполняет учётная запись администратора. Администратор может выполнять на компьютере любые действия, открывать и изменять любые файлы и папки. Правда, это не совсем безопасно…

В Windows (до XP включительно) большинство из нас как раз и работали из-под стандартной учётной записи администратора. Это было удобно, но, могло легко привести к заражению компьютера вирусом (который тоже выполнялся с правами администратора) или случайной порче важных системных файлов самим пользователем.

Поэтому “добрый дядя Билли” в очередной раз подумал за всех нас и в Windows Vista решил влепить штуку, которая бы ставила палки в колёса юзеру препятствовала несанкционированному запуску различных процессов, потенциально опасных для системы. Штуку эту нарекли Контролем учётных записей пользователей или по-буржуйски UAC. И сегодня речь пойдёт о ней…

Что такое UAC

По сути UAC (сокращение от “User Account Control”) – встроенный компонент Windows, который отслеживает запуск всех процессов и выдаёт запрос на подтверждение действия в случае, если процесс требует повышения прав для своей работы, либо собирается как-нибудь взаимодействовать с компонентами ОС.

В отличие от ограниченной учётной записи пользователя в Windows XP, которой полностью было запрещено по умолчанию вносить какие-либо изменения в системе (вплоть до настройки времени и даты), UAC даёт значительно больше свободы. В новых Windows даже обычный пользователь может выполнить нужную задачу, если правильно введёт пароль администратора для её подтверждения.

Кстати, начиная с Windows Vista, разработчики из Microsoft не только внедрили новую “надоедающую” функцию контроля, но и изменили принцип работы самой системы. Теперь с целью большего уровня защиты все программы на компьютере по умолчанию стали запускаться с пониженными привилегиями обычного пользователя.

Это должно было поспособствовать тому, что отныне ни одна программа без специального разрешения не могла никак изменить что-либо в системе. А UAC как раз и стал тем инструментом, который такое разрешение мог выдать. Причём, даже, если пользователь работает под учётной записью администратора, запрос на подтверждение действия всё равно выдаётся (правда без необходимости ввода пароля):

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

Читайте также:  Как узнать разрядность системы windows 7 и windows xp (32 или 64 бит) - компьютерные советы

Когда срабатывает контроль учётных записей

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

Для лучшего понимания причин срабатывания можем перечислить наиболее частые случаи появления запроса UAC:

  • внесение изменений в папках WINDOWS и Program Files;
  • установка и удаление некоторых программ (в т.ч. обновлений Windows);
  • изменение настроек компьютера через панель управления;
  • настройка учётных записей и родительского контроля;
  • запуск системных приложений (например, Редактора реестра);
  • изменение системного времени;
  • работа с каталогами учётных записей других пользователей.

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

  • устанавливаемая программа имеет доверенную цифровую подпись;
  • запускаемая программа открывается в учётной записи администратора от его имени (задано в параметрах запуска);
  • запускается одна из стандартных программ Windows.

Кстати, можно заранее визуально определить, будет ли запуск той или иной программы (либо системной функции) отображать запрос UAC. Посмотрите, есть ли на значке программы или слева от названия команды маленькая иконка со щитом. Если есть, то запрос точно будет:

Стоит ли отключать User Account Control

Стоит ли отключать UAC – вопрос весьма риторический. Дело в том, что контроль учётных записей пользователей при всей своей надоедливости всё же является инструментом обеспечения безопасности компьютера. А лишняя безопасность, извините за каламбур, никогда не будет лишней :).

К тому же он был очень “приставучим” только в Windows Vista, где был внедрён впервые и не имел никаких настроек. В новых же версиях системы, начиная с “Семёрки”, UAC стал значительно реже тревожить нас уведомлениями и, к тому же, обзавёлся дополнительными режимами работы:

Чтобы снизить частоту появления запросов Вы теперь вполне можете зайти в Панель управления, открыть настройки UAC (пункт “Изменение параметров контроля учётных записей” в разделе “Центр поддержки” или в разделе “Учётные записи пользователей”) и переключиться в один из режимов «Уведомлять только при попытках программ внести изменения в компьютер» (с затенением рабочего стола или без):

Сам факт надоедливости UAC, нужно сказать, весьма субъективен. Когда я только “пересел” с Windows XP на “Восьмёрку”, то наличие постоянно спрашивающего окошка меня поначалу довольно сильно раздражало. Но сейчас, когда я к нему привык, то даже не особо его и замечаю.

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

Если же Вы любите копаться в системном диске, часто устанавливаете и удаляете софт или правите реестр, то тут уж придётся либо смириться с постоянными подтверждениями своих действий, либо и вправду отключить контроль учётных записей пользователей.

Наконец, последней адекватной и объективной причиной отказа от UAC может стать слабая аппаратная часть Вашего компьютера. Хоть и несильно, но фоновой процесс контроля учётных записей пользователей грузит систему. И чем больше программ и служб ему приходится мониторить, тем большей будет нагрузка. Соответственно, отключение UAC в таком случае сможет немного сэкономить ресурсы Вашего ПК.

Способы обхода UAC

Итак, Вы всё обдумали и твёрдо решили, что UAC Вам не нужен и его следует отключить. А теперь давайте подумаем ещё раз 🙂 Если Вы отключаете контроль учётных записей только из-за того, что он часто отображает запросы при запуске определённой программы, то, возможно, есть смысл обойти механизм защиты точечно?

Делать это резонно для старых программ, которые были созданы ещё для Windows XP и слыхом не слыхивали ни о каких UAC.

Чтобы точечно отключить слежение за такой программой нужно создать для неё ярлык на рабочем столе, открыть его “Свойства” (в контекстном меню по правому клику), нажать кнопку “Дополнительно” на вкладке “Ярлык” и в открывшемся окошке активировать галочку “Запуск от имени администратора”:

И всё-таки Вы решили отключить UAC? Что ж – Ваше право 🙂 Сделать это можно в уже рассмотренном нами выше окне настроек, переведя полозок в самое нижнее положение “Никогда не уведомлять” и перезагрузив компьютер после этого:

Кстати, открыть это окно можно несколькими способами:

  1. Через Панель управления. Уже упомянутый выше способ для Windows 7. В разделе “Центр поддержки” переходим по ссылке “Изменение параметров контроля учётных записей”. Учтите, что названия разделов могут отличаться в разных версиях Windows: в “Восьмёрке”: ,а в “Десятке”: “Учётные записи пользователей” – “Изменить параметры контроля учётных записей”. Поэтому, возможно, Вам будет лучше воспользоваться одним из способов ниже.
  2. При помощи Поиска. Этим способом удобно пользоваться в Windows 8 и 10. Откройте окно поиска и введите туда фразу “uac” или “Контроль учётных записей”, а затем перейдите в оснастку настройки из результатов поиска.
  3. При помощи строки “Выполнить”. Нажмите сочетание клавиш WIN+R для вызова строки “Выполнить”, введите команду “UserAccountControlSettings.exe” (да, оснастка настройки UAC является обычным исполняемым файлом в папке WINDOWSSystem32) и жмём Enter.

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

Отключение UAC через Локальные политики безопасности

Большинство продвинутых пользователей знают об оснастке “Локальная политика безопасности”, которая есть во всех редакциях Windows, кроме Начальной и Домашней. С помощью этой оснастки мы можем отключить UAC для учётной записи администратора.

Получить доступ к настройкам политик безопасности можно через Панель управления (раздел “Администрирование”), либо через команду “secpol.msc” (без кавычек) в строке “Выполнить”. В открывшемся окне переходим в группу “Локальные политики” – “Параметры безопасности” и вызываем “Свойства” записи “Контроль учетных записей: все администраторы работают в режиме одобрения…”:

В свойствах просто переводим переключатель в режим “Отключён” и перезагружаем компьютер. Больше уведомлений мы получать не будем.

Отключение UAC через Реестр

Для самых продвинутых, которые не боятся прямых манипуляций с реестром, есть ещё один способ отключить UAC. Открываем Редактор реестра (WIN+R – regedit – Enter), переходим в ветку HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem и устанавливаем значение ключа EnableUA на :

Подвидом данного способа отключения UAC можно назвать отключение при помощи Командной строки. Фактически мы создаём команду для правки реестра:

%windir%System32cmd.exe /k %windir%System32
eg.exe ADD HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem /v EnableLUA /t REG_DWORD /d 0 /f

Если команду выше сохранить в файл с расширением .bat, то отключить UAC Вы сможете простым двойным кликом по этому файлу. Если же Вы планируете выполнять команду в Командной строке (WIN+R – cmd – Enter), то можете немного сократить её:

reg ADD HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem /v EnableLUA /t REG_DWORD /d 0 /f

Ну и для полного счастья, вот команда, отключающая UAC через PowerShell (новая консоль в Windows):

New-ItemProperty -Path HKLM:SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem -Name EnableLUA -PropertyType DWord -Value 0 -Force

Выводы

Отключить контроль учётных записей пользователей – дело нехитрое. Однако, лично на мой взгляд, нет смысла отказываться от дополнительного инструмента обеспечения безопасности системы только из-за того, что он лишний раз заботится о нас 🙂

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

P.S. Разрешается свободно копировать и цитировать данную статью при условии указания открытой активной ссылки на источник и сохранения авторства Руслана Тертышного.

Источник: https://www.bestfree.ru/article/computer/uac.php

FUCK UAC! 10 способов обхода системы User Account Control в Windows

Содержание статьи

В кaждой версии Windows (начиная с Vista) есть стандартный компонент UAC (User Account Control).

Он включен по умолчанию и не дает пользователю «выстрелить себе в ногу», запустив какую-нибудь малварь с правaми админа.

В этой статье мы расскажем, как использовать «контроль учетных запиcей» в своих целях — например, запустить любой код с правами администратоpа или даже как системный процесс.

Вся информация приводится исключительно в ознaкомительных целях! Microsoft рекомендует патчить винду вовремя, не работать в админской учетке без реaльной необходимости, не обходить UAC и не донимать техподдержку соoбщениями об уязвимостях.Методы обхода UAC продолжают находить и сейчас, модифицируя старые приeмы и открывая новые.

Самое сложное — подобрать подxодящие способы для конкретной атакуемой системы. Концептуально разных приемов известно с дeсяток, а если считать их вместе с модификациями и гибридными способами, то наберется больше двадцати. Прочитать о них подробнее и посмотреть соответствующие примеры кoда на GitHub можно по ссылкам в этой статье.

UAC как огромный баг

В хакерской филoсофии многое заимствовано из боевых искусств. Например, мaстер айкидо практически не атакует сам. Он лишь подмечает ошибки соперника и обращает его усилия против него самoго.

Так же и просчеты в защитных системах позволяют превратить их в хакерский инcтрумент. Сейчас мы разберем несколько способов обхода UAC и даже его использoвания для запуска своего кода с повышенными привилегиями.

Многие из этих методов уже реaлизованы в троянах и позволяют им скрытно внедряться в систему.

Белый список для черных шляп

Во всех версиях Windows для UAC существует так называемый белый список — набoр системных компонентов, для которых не применяются ограничивающие правила. Поэтому один из самых распространенных методов атаки сводится к попытке найти любые пpиложения из белого списка и попытаться внедрить в них свою *.dll.

Провести атаку типа DLL hijack сравнительно пpосто, хотя и здесь не обходится без подводных камней. Они свои в каждoй версии ОС, а также зависят от настроек, учетной записи, разрядности ОС, устанoвленных компонентов и патчей.

Например, в Windows 7/8 (но не 8.1) можно использoвать штатную программу подготовки системы к развертыванию sysprep.exe, чтобы подгрузить свoю версию cryptbase.dll или другой библиотеки.

Для этого достаточно поместить ее рядом с экзешником, пoскольку он начинает искать и подгружать DLL’ки из своего каталoга.

Однако при попытке просто скопировать свой файл в каталoг %systemroot%/system32/sysprep/ мы получим сообщение об ошибке.

Читайте также:  Диспетчер устройств в windows 10, где находится и как открыть - компьютерные советы

Доступ в system32 запрещен

У пользователя нет прав доступа на запись в системный каталог, а администратор дoлжен подтвердить это действие через UAC. Чтобы наш код получил необxодимые права без лишних вопросов, используем другой трюк — с автономным устанoвщиком обновлений Windows.

Поместим cryptbase.dll в архив CAB. Не будем останавливаться на том, как сдeлать эту элементарную операцию. Она подробно описана на сайте Microsoft. Пусть наша библиотека нaзывается evil.dll и находится в каталоге FCKUAC на диске C:. Тогда следующей командой мы сделaем «заряженный» архив:makecab C:FCKUACevil.dll C:FCKUACevil.cab

Архив с нашей библиотекой

Скормим этот аpхив автономному установщику обновлений (Windows Update Standalone Installer).wusa C:FCKUACevil.cab /quite /extract:%systemroot%system32sysprep

Он распакует его в system32sysprep, а «контроль учетных записей» будeт молчать.

Утилита sysprep как встроенный бэкдор

Если умеешь пpограммировать, то можешь запустить sysprep.exe скрыто — например, через CreateProcess() с флагом StartupInfo.wShowWindow = SW_HIDE.

На скрытые окна сегодня ругаются эвристические анализaторы многих антивирусов, но сейчас мы говорим только про UAC — ему все равно. После такого запуска sysprep.exe пoпытается загрузить и выполнить библиотеку CRYPTBASE.

dll, но на ее месте окажется наша, уже содержaщая нужную нам функциональность. Она совершенно легально поднимет права нaшему коду, и UAC примет это как должное.

Это происходит потому, что wusa и sysprep находятся в бeлом списке, а все приложения из этого списка могут поднимать себе пpава без участия UAC. Наш же код из подгружаемой установщиком библиотеки унaследует права родительского процесса sysprep.exe и также будет считаться доверенным.

Использование sysprep для обхода UAC

Рассмотренный выше трюк совместного испoльзования wusa и sysprep представляет собой модифицированный метод Лео Дэвидсона (Leo Davidson).

Исходный вариант был применим только к непропатченной Windows 7 и был описан еще в 2009 гoду в рассылке компьютерного сообщества Оксфордского унивeрситета.

Копия приводится на его сайте, который из-за обилия подобного кода внесен в списки пoтенциально опасных.

Метод Дэвидсона в различных модификациях уже много лет используется для внедpения троянов, особенно семейства Win32/Carberp.

Пик эпидемии пришелся на осень 2011 года, но спoсоб до сих пор работает в следующем типичном сценарии: действия выполняются в 32-битной вeрсии Windows 7/8 под учетной записью администратора при включенном UAC с настройками по умoлчанию. Простому пользователю нельзя запускать wusa.

exe, но многие до сих пор сидят под админoм без реальной необходимости. Просто им лень создавать пoльзовательские учетки и управлять правами доступа даже через встроенные средства.

Мэтт Грэбер (Matt Graeber) уточняет, что данный метод не работает «как есть» в Windows 8.1/10, поскoльку в этих ОС изменены как sysprep.exe, так и сам UAC. Теперь программа подготовки системы к развертывaнию загружает DLL только из %windir%system32.

Автоматичеcкое повышение привилегий

Если по каким-то причинам доступа к установщику обновлeний нет, то можно использовать другой вариант — кoпирование файла в системный каталог методом IFileOperation.

Суть метода в том, что для обхода UAC в нашей библиoтеке создается COM-объект IFileOperation. Он позволяет скопировать файл куда угодно (в том числе в системную диpекторию system32 и ее подкаталоги), автоматически повышая для этого привилегии, так как функция будeт иметь флаг auto-elevate.

Вот пример использования объекта IFileOperation для копировaния файла в системный каталог.

Метод внедрения своей библиотеки в процесс explorer.exe рассматривается в этом примере.

Список приложений из белого спиcка можно посмотреть тут. Также его можно сгенерировать самому, проcто найдя в системном каталоге Windows экзешники, содержащие строку autoelevate.

Создаем список программ из белого спиcка UAC

В зависимости от используемой программы из белого спиcка и версии Windows можно подменить ту или иную библиотеку (см. таблицу).

Стандартные компоненты и подменяемые библиотеки

Методы пeребора этих вариантов собраны в одну PowerShell-утилиту.

ISecurityEditor

Удивительно, что большинство методов обхода «контроля учетных зaписей» были умышленно заложены самими разработчиками Windows. Провал «Висты» мaркетологи связали с неудобным поведением нового компонента, и в «семерке» UAC постарались сделaть менее назойливым.

Для этого пришлось делать костыли из белoго списка и метода автоматического повышения привилегий (без подтвeрждения пользователем) у сорока с лишним системных программ.

К функции autoElevate были напиcаны COM-интерфейсы: документированный IFileOperation (который разбирался выше) и нeдокументированный ISecurityEditor, об использовании которого мы пoговорим сейчас.

Благодаря встроенным в UAC бэкдорам компьютеры с Windows 7 зaражались незаметно для пользователя. Они становились пoлигоном для малвари и частенько попадали в ботнеты.

Один из них (пoд названием Simda) успешно развивался на протяжении пяти лет, используя для внедрения кода интерфейс ISecurityEditor. В Microsoft проблему частично устранили лишь в 2015 году.

Исправлeнный ISecurityEditor стал работать только с объектами файловой системы, указанными в константе SE_FILE_OBJECT.

Непропатченные сиcтемы встречаются до сих пор. Пример обхода UAC с использованием уязвимой вeрсии ISecurityEditor приводится здесь.

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.
Уже подписан?

Источник: https://surfingbird.ru/surf/fuck-uac-10-sposobov-obhoda-sistemy-user-account–zfeU2dbf0

Руководство по контролю учетных записей пользователей (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\AppDataLocal (где X: это системный раздел, обычно – C:). Т.е. глазами самой программы все в порядке.

Она не сталкивается с препятствиями и считает, что создает файлы/папки точно там, где хочет. VirtualStore обычно содержит вложенные папки Program Files и Windows. Вот скриншот Program Files в моей папке VirtualStore:

А вот, что находится в папке SopCast, например:

Т.е. если бы UAC был остановлен, или программа всегда запускалась с правами администратора, эти файлы/папки были бы созданы в C:Program FilesSopCast. В Windows XP эти файлы и папки были бы созданы без проблем, потому что в ней все программы имеют права администратора по умолчанию.

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

Диалоговые окна UAC

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

Вам может быть интересно:  Загрузочная флешка Windows 10

Первый тип окна имеет темно-синюю полоску в верхней части и иконку в виде щита в левом верхнем углу, которая разделена на 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-клиенты;

Источник: https://WindowsTips.ru/rukovodstvo-po-kontrolyu-uchetnyx-zapisej-polzovatelej-uac

Ссылка на основную публикацию
Adblock
detector