Как сделать исключение для uac
FUCK UAC! 10 способов обхода системы User Account Control в Windows
Содержание статьи
В каждой версии Windows (начиная с Vista) есть стандартный компонент UAC (User Account Control). Он включен по умолчанию и не дает пользователю «выстрелить себе в ногу», запустив какую-нибудь малварь с правами админа. В этой статье мы расскажем, как использовать «контроль учетных записей» в своих целях — например, запустить любой код с правами администратора или даже как системный процесс.
WARNING
UAC как огромный баг
В хакерской философии многое заимствовано из боевых искусств. Например, мастер айкидо практически не атакует сам. Он лишь подмечает ошибки соперника и обращает его усилия против него самого. Так же и просчеты в защитных системах позволяют превратить их в хакерский инструмент. Сейчас мы разберем несколько способов обхода UAC и даже его использования для запуска своего кода с повышенными привилегиями. Многие из этих методов уже реализованы в троянах и позволяют им скрытно внедряться в систему.
Белый список для черных шляп
Во всех версиях Windows для UAC существует так называемый белый список — набор системных компонентов, для которых не применяются ограничивающие правила. Поэтому один из самых распространенных методов атаки сводится к попытке найти любые приложения из белого списка и попытаться внедрить в них свою *.dll.
Провести атаку типа DLL hijack сравнительно просто, хотя и здесь не обходится без подводных камней. Они свои в каждой версии ОС, а также зависят от настроек, учетной записи, разрядности ОС, установленных компонентов и патчей.
Доступ в \system32\ запрещен
У пользователя нет прав доступа на запись в системный каталог, а администратор должен подтвердить это действие через UAC. Чтобы наш код получил необходимые права без лишних вопросов, используем другой трюк — с автономным установщиком обновлений Windows.
Архив с нашей библиотекой
Скормим этот архив автономному установщику обновлений (Windows Update Standalone Installer).
Утилита sysprep как встроенный бэкдор
Это происходит потому, что wusa и sysprep находятся в белом списке, а все приложения из этого списка могут поднимать себе права без участия UAC. Наш же код из подгружаемой установщиком библиотеки унаследует права родительского процесса sysprep.exe и также будет считаться доверенным.
Использование sysprep для обхода UAC
Рассмотренный выше трюк совместного использования wusa и sysprep представляет собой модифицированный метод Лео Дэвидсона (Leo Davidson). Исходный вариант был применим только к непропатченной Windows 7 и был описан еще в 2009 году в рассылке компьютерного сообщества Оксфордского университета. Копия приводится на его сайте, который из-за обилия подобного кода внесен в списки потенциально опасных.
Автоматическое повышение привилегий
Вот пример использования объекта IFileOperation для копирования файла в системный каталог.
Метод внедрения своей библиотеки в процесс explorer.exe рассматривается в этом примере.
Создаем список программ из белого списка UAC
В зависимости от используемой программы из белого списка и версии Windows можно подменить ту или иную библиотеку (см. таблицу).
Стандартные компоненты и подменяемые библиотеки
Методы перебора этих вариантов собраны в одну PowerShell-утилиту.
ISecurityEditor
Удивительно, что большинство методов обхода «контроля учетных записей» были умышленно заложены самими разработчиками Windows. Провал «Висты» маркетологи связали с неудобным поведением нового компонента, и в «семерке» UAC постарались сделать менее назойливым. Для этого пришлось делать костыли из белого списка и метода автоматического повышения привилегий (без подтверждения пользователем) у сорока с лишним системных программ. К функции autoElevate были написаны COM-интерфейсы: документированный IFileOperation (который разбирался выше) и недокументированный ISecurityEditor, об использовании которого мы поговорим сейчас.
Непропатченные системы встречаются до сих пор. Пример обхода UAC с использованием уязвимой версии ISecurityEditor приводится здесь.
Метод системных заплаток
Следующий способ обхода UAC был взят на вооружение хакерской группой Dridex. В нем используется метод системных заплаток (Shims), позволяющий запускать программы в режиме совместимости. В версиях Windows 7/8/8.1 этот встроенный компонент был реализован с ошибками. Одна из них заключалась в том, что можно создать собственную базу Shim DataBase, а в ней указать ссылку на свой файл как на «исправленную» версию системного файла из белого списка. Таким образом можно запускать произвольный код, и UAC будет молчать.
Поэтапно схема от Dridex выглядела так:
sdbinst.exe –q %temp%*.sdb
Схожий метод обхода UAC использует и BackDoor.Gootkit. Сначала с помощью библиотеки apphelp.dll он создает в заражаемой системе свою базу данных Shim. В ней через функцию RedirectEXE он указывает, что для программы сетевого клиента SQL Server ( cliconfg.exe ) есть «исправленная» версия. В качестве «исправленного» файла записывается ссылка на компонент трояна. Поскольку в манифесте cliconfg.exe мы также можем увидеть знакомые строки AutoElevate=true, UAC позволяет ему загрузиться без лишних вопросов в Windows 7–8.1.
Для работы с Shim DataBase есть готовый набор функций WinAPI в стандартной библиотеке apphelp.dll. Исходный код одной из реализаций метода Shim для обхода UAC приводится здесь.
Методы использования Shim DataBase для обхода UAC подробно разбирались на конференции Black Hat 2015.
Сборка бок о бок
Обход UAC во время тихой очистки диска
Начиная с Windows 8.1, Microsoft стала активно фиксить накопившиеся баги в реализации UAC. Поэтому одни механизмы обхода «контроля учетных записей» пришлось модифицировать, а другие — попросту забыть. Windows 10 лишена многих недостатков, и старые трюки с ней обычно не прокатывают, но есть и новые!
В июле этого года Мэтт Грэбер (Matthew Graeber aka @mattifestation) и Мэтт Нельсон (Matt Nelson aka @enigma0x3) реализовали этот прием обхода UAC как PowerShell-скрипт.
Сами авторы пишут, что метод работает со множеством ограничений. Он оказывается жизнеспособным только при запуске под админом в 32-разрядной ОС с настройками безопасности по умолчанию. Несмотря на великий соблазн, под юзером метод не работает, так как при таком запуске cleanmgr.exe не выполняет распаковку во временный каталог и в нем нечего подменять.
Еще несколько лазеек в Windows
Интерфейс принтера позволяет сохранить любой код как файл в системном каталоге
При помощи ключа реестра в этой ветке можно задать запуск любой программы с правами администратора:
Запуск чего угодно от админа без подтверждения в UAC
В домене UAC не реагирует на действия удаленного пользователя, если тот является локальным админом. Утилита PsExec Tool от Марка Руссиновича при старте с опцией –h скрыто запускает указанный экзешник на удаленной системе. Для повышения его привилегий на чужом компьютере может использоваться локально хранимый токен. Готовый эксплоит для этого также есть в Metasploit, а сам метод подробно разбирается здесь.
Иногда удобен быстрый способ внедрения своего кода через RunDll. В общем случае для этого достаточно отправить команду
Поэтому, если выполнить команду
Запускаем калькулятор как системный процесс
Как отключить UAC для определенной программы в Windows 10?
В этой статье мы покажем, как выборочно отключить UAC для определенного приложения, не отключая полностью эту службу User Account Control. Рассмотрим несколько способов отключения контроля учетных записей для приложениия с помощью флага совместимости RunAsInvoker.
Флаг RunAsInvoker позволяет запустить приложение с маркером, унаследованным от родительского процесса. При этом отменяется обработка манифеста приложения, и обнаружение процессов установщика. Данный параметр не предоставляет права администратора, а только блокирует появление окна UAC.
В качестве примера мы отключим появление запроса User Account Control для редактора реестра (regedit.exe). Несмотря на то, что у моей учетной записи есть права администратора, при запуске утилиты все равно появляется запрос UAC на подтверждение запуска.
Отключение UAC для программы с помощью Application Compatibility Toolkit
Нам понадобится утилита Application Compatibility Toolkit, которая входит в состав Windows ADK. Скачать актуальную версию Windows ADK для Windows 10 можно здесь.
Запустите скачанный файл adksetup.exe и при установке (программе нужен доступ в Интернет) выберите только Application Compatibility Toolkit.
В системе появится две версии Application Compatibility Administrator — 32-х и 64-х битная версия. Запустите версию Application Compatibility Administrator в зависимости от разрядности приложения, для которого вы хотите подавить запрос UAC.
Запустите утилиту Compatibility Administrator (32-bit) с правами администратора (!). В разделе Custom Databases, щелкните ПКМ по элементу New Database и выберите пункт Create New-> Application Fix.
В открывшемся окне нужно указать имя приложения (regedit), производителя (Microsoft) и путь к исполняемому файлу ( C:\Windows\regedit.exe ).
Пропустите следующее окно мастера настройки (Compatibility Mode), нажав Next. В окне Compatibility Fixes отметьте опцию RunAsInvoker.
При желании можно убедиться, что приложение может работать без UAC, нажав на кнопку тестового запуска (Test Run).
В окне Matching Information вы можете указать какие параметры приложения нужно проверять (версию, чексумму, размер и т.д.). Я оставил включенными проверки COMPANY_NAME,PRODUCT_NAME и ORIGINAL_FILENAME, чтобы не пересоздавать файл исправления после очередного обновления Windows 10 и обновлении версии файла regedit.
Нажмите Finish и укажите имя файла, в который нужно сохранить созданный пакет исправления совместимости, например regedit.sdb. В этом файле будут содержаться инструкции по запуску приложения с заданными опциями совместимости.
Осталось применить пакет с исправлением совместимости к вашему приложению. Сделать это можно непосредственно из консоли Compatibility Administrator (выбрав в меню пункт Install), либо из командной строки.
Если все сделали правильно, появится сообщение об успешном применении пакета.
После установки пакета, соответствующая запись появится в списке установленных программ Windows (Programs and Features).
Попробуйте теперь запустить приложение в сессии пользователя без прав локального администратора. Теперь оно должно запуститься без появления запроса UAC.
Теперь проверьте, с какими привилегиями запущено данное приложение. Для этого в Task Manager на вкладке процессов добавьте столбец “Elevated”. Убедитесь, что процесс regedit.exe запущен от пользователя в непривилегированном режиме ( Elevated=No ).
В таком процесс редактора реестра пользователь может редактировать только собственные ветки реестра, но при попытке отредактировать/создать что-то в системной HKLM, появляется ошибка “You don’t have the requisite permissions”.
В дальнейшем это исправление совместимости можно распространить на компьютеры пользователей с помощью групповых политик. Тем самым можно добиться отключения проверки системы контроля учетных записей (UAC) для определенных приложений на множестве компьютеров в домене Active Directory.
Чтобы удалить исправление совместимости, выполните команду
sdbinst –u c:\ps\regedit.sdb
Включить флаг RUNASINVOKER для программы через реестр
В Windows 10/8.1/7 вы можете включить флаг совместимости RUNASINVOKER через реестр. Флаг совместимости приложения можно выставить для одного пользователя или для всех пользователей компьютера:
Например, для regedit нужно в ветке реестра HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers создать новый строковый параметр (REG_SZ) вида:
Если нужно включить режим совместимости приложения для всех пользователей компьютера, этот параметр нужно создать в ветке реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers.
Bat файл для запуска приложения в режиме RunAsInvoker
Есть еще вариант для запуск приложения без прав администратора и подавлением запроса UAC (см. статью).
Просто создайте bat файл со следующим кодом:
Set ApplicationPath=»C:\windows\regedit.exe»
cmd /min /C «set __COMPAT_LAYER=RUNASINVOKER && start «» %ApplicationPath%»
При запуске этого bat файла под пользователем, указанное приложение запустится без появления запроса UAC.
Итак, мы рассмотрели, как отключить UAC для конкретной программы без полного отключения контроля учетных записей. Это позволит вам запускать программы Windows под обычным пользователем без появления запроса UAC и без пароля администратора.
Как в Windows 7 отключить UAC для конкретного приложения
Н аверное, всем пользователям Windows при работе с операционной системой приходилось сталкиваться с UAC, также известным как контроль учетных записей. Впервые этот инструмент появился в Windows Vista. Система UAC срабатывает, когда вы пытаетесь запустить приложение, требующее прав администратора. При этом появляется окошко с запросом на подтверждение выполняемого действия. Такая забота со стороны Microsoft похвальна, но, тем не менее, многим пользователям она представляется несколько навязчивой, поэтому они попросту отключают UAC.
На самом деле в полном его отключении нет никакой необходимости, так как сделать это можно для каждой конкретной программы. Возьмем, к примеру, редактор реестра. Если вам приходиться часто работать с этой системной утилитой, почему бы не добавить её в список исключений UAC? Для этого вам потребуется специальный пакет Microsoft Application Compatibility Toolkit 5.6. Предназначается этот инструмент для устранения проблем совместимости приложений при переходе на новые версии Windows.
Повышение же привилегий определенных программ, позволяющее им запускаться в обход User Account Control является лишь одной из особенностей Application Compatibility Toolkit. Скачать пакет можно бесплатно с официального сайта компании Microsoft. Если вы используете 64-битную Windows, после установки у вас появятся две версии утилиты — 32 и 64-бит. При инсталляции на 32-битную систему соответственно будет доступна только 32-битная версия утилиты.
Далее в открывшемся окне прописываем название программы и компании разработчика, а также полный путь к исполняемому файлу.
Следующее окно мастера Compatibility Modes пропускам и переходим к окну Compatibility Fixes.
Здесь ставим галочку напротив пункта RunAsInvoker.
Теперь нужно сохранить инструкцию в файл SDB.
Жмем кнопку «Save», вводим подходящее имя и сохраняем файл на жесткий диск.
Осталось только применить настройку. Тут же в окне Compatibility Administrator идём в меню «File» и выбираем опцию Install.
На всякий случай перезагружаемся.
По идее это должно отключить запрос для выбранного приложения. К сожалению, нет никаких гарантий, что «обработанное» приложение будет работать правильно. В некоторых случаях всё срабатывает только тогда, когда пользователь заходит в систему под ограниченной учёткой, можете попробовать и такой вариант. Если способ по-прежнему будет выдавать ошибку, зайдите в раздел «Программы и компоненты», отыщите в списке приложений установленную базу и удалите её.