[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет

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

В общем случае, учетная запись из которой производится удаление пользователя, должна иметь права администратора на компьютере (особенно если удаляется существующий аккаунт администратора). Если в настоящий момент она имеет права простого пользователя, то для начала зайдите под имеющимся пользователем с правами администратора и дайте нужному пользователю (тому, под которым в дальнейшем планируете работать) права администратора, о том, как это сделать разными способами написано в руководстве «Как создать пользователя Windows 10».

Время на прочтение

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

Зачем это вообще нужно? Бывают ситуации, когда пользователю с ограниченными правами требуется выполнить программу, которой для выполнения специфической работы требуются повышенные права. Например, программисту нужно предоставить возможность завершать определённые процессы бухгалтерской программы, некоторым пользователям из бухгалтерии требуется возможность переключать ключи безопасности в интерактивном режиме и так далее. Часть этих задач можно выполнять неинтерактивно, при этом несколько страдает удобство, поскольку пользователь не видит интерфейс программы и может разве что получить системное сообщение о завершении работы программы, об этом способе подробно рассказал мой коллега Вадим Стеркин в своём блоге: Как выполнять задачи с полными правами обычным пользователем без ввода пароля администратора. Способ отличный для своих задач, в моей же статье речь пойдёт о рисках и безопасности выполнения интерактивных программ от имени других пользователей, где полной автоматизации достичь нельзя и есть необходимость взаимодействия с интерфейсом.

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

Ну ладно, держи права

Казалось бы, самым очевидным решением для запуска нашего странного ПО выглядит использование встроенной утилиты Runas. Документация доступна на сайте Microsoft.

Ну, посмотрим, что из этого выйдет.

runas /savecred /user:Администратор "C:\Program Files\7-Zip\7zFM.exe" 

Действительно, RunAs запустит 7zip с правами учетной записи «Администратор», спросит пароль и запомнит его. Потом ярлык с такой строкой запуска будет запускать 7zip под Администратором без вопросов.

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

Зато runas может быть полезен, когда сотрудник знает пароль администратора, но работает под ограниченной учетной записью (по идее так должен делать каждый системный администратор).

Если мы начали с консольных команд, то перейдем к более высокоуровневым скриптам. Интересное решение было предложено в статье «Планктонная Windows», где упомянутый выше Runas обвязывался js-скриптом и пропускался через обфускатор. У решения есть и очевидный минус — скрипт можно раскодировать.

Чуть более интересным методом в 2к20 являются возможности PowerShell и его работа с паролями. Подробнее можно почитать в материале «Защита и шифрование паролей в скриптах PowerShell».

Если вкратце: в PS работа с паролями производится через специальный тип данных SecureString и объект PSCredential. Например, можно ввести пароль интерактивно:

$Cred = Get-Credential

Затем сохранить пароль в зашифрованном виде в файл:

$Cred.Password | ConvertFrom-SecureString | Set-Content c:\pass.txt

И теперь использовать этот файл для неинтерактивной работы:

$username = "Domain\Администратор"

$pass = Get-Content C:\pass.txt | ConvertTo-SecureString

$creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $pass

К сожалению, файл этот можно использовать только на том ПК, на котором его создали. Чтобы этого избежать, можно сделать отдельный ключ шифрования. Например так:

$AESKey = New-Object Byte[] 32

[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($AESKey)

$AESKey | out-file C:\password_aes.key

Теперь при помощи этого ключа пароль можно зашифровать:

$Cred.Password| ConvertFrom-SecureString -Key (get-content C:\password_aes.key

)| Set-Content C:\pass.txt

$pass = Get-Content C:\pass.txt | ConvertTo-SecureString -Key (get-content C:\password_aes.key)

К сожалению, с безопасностью дела обстоят так же печально: утащить пароль не составляет трудностей, если есть доступ к файлу с ключом шифрования и зашифрованным паролем. Да, можно добавить обфускации и скомпилировать скрипт в .exe вместе с нужными файлами. Но нужно понимать, что это — полумеры.

В свое время я использовал для решения подобных задач свой любимый AutoIt, где компилировал скрипт с командой RunAs и радовался… До тех пор, пока не узнал, что AutoIt (особенно старых версий) декомпилируется на раз-два.

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

Читать также:  Услуги для пожилых людей и программы помощи престарелым

На свете существует несколько сторонних решений, призванных решить задачу. Остановлюсь на парочке из них.

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

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

[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет

Основное окно программы.

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

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

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

Третий модуль — AdmiLaunch — отвечает за запуск окон в разных режимах, и он используется для запуска AdmiRun, если создавать ярлык через AdmiLink.

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

RunAsRob — довольно интересное ПО за авторством немецкого разработчика Оливера Хессинга (Oliver Hessing). В отличие от AdmiLink, ПО устанавливается как служба, запускаемая под привилегированной учетной записью (администратора или системы). Как следствие, подготовленный ярлык обращается к службе, которая уже в свою очередь запускает заданное ПО.

Особенность программы в том, что есть возможность авторизовать не только программы, но и папки (включая сетевые). А хранение настроек в реестре позволило добавить шаблоны групповых политик, примерно как мы писали в статье «Погружение в шаблоны и приручение GPO Windows». Благодаря этому при необходимости настройки можно применять прямо из Active Directory.

[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет

Основное окно программы.

Программа богато документирована на официальном сайте.

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

Мне остается только добавить, что это ПО бесплатно только для личного использования.

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

[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет

Запускаем cmd.exe прямо из редактора реестра.

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

А вам приходилось городить странные костыли? Предлагаю делиться историями в комментариях.

Как работает RunAs и аналоги

Получение учётных данных администратора происходит по следующей цепочке:

  1. Пользователь с ограниченными правами запускает ярлык, в котором хорошо зашифрованы данные для запуска программы.

  2. RunAs или его аналоги проверяют корректность шифра и целостность программы, затем извлекают данные и в открытом виде передают их функции CreateProcessWithLogonW.

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

RunAs из коробки

В системе есть родная утилита runas, позволяющая выполнять задачу запуска от другого имени, однако пользоваться ей нужно осторожно и в целях безопасности её нельзя применять для запуска программ с повышенными привилегиями, но можно наоборот — администратору запускать программы с правами обычного пользователя, хотя технически возможны оба варианта. Почему так? Параметр /savecred позволяет сохранить пароль для пользователя, от имени которого запускается программа, в профиле пользователя, который запускает программу. Однако этот же сохранённый пароль RunAs использует и для запуска любых других программ, запуск которых может инициировать пользователь, у которого сохранён пароль.

Вывод — использовать родной runas в составе системы для повышения прав на постоянной основе (с сохранением пароля) категорически нельзя, эта уязвимость должна быть очевидна каждому сисадмину. Да и без сохранения пароля вводить пароль администратора под ограниченным пользовательским сеансом не рекомендуется, если там заранее не были предприняты меры предосторожности, которые не позволяют запускать произвольные программы (SRP, AppLocker), иначе пользователь может запросто перехватить пароль. А мы переходим к неочевидным уязвимостям.

Есть ли альтернативы?

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

Простое удаление пользователя в параметрах Windows 10

Если вам требуется удалить «простого» пользователя, т.е. созданного лично вами или заранее присутствовавшего в системе при покупке компьютера или ноутбука с Windows 10 и более не нужного, сделать это можно, используя параметры системы.

  1. Зайдите в Параметры (клавиши Win+I, или Пуск — значок шестеренки) — Учетные записи — Семья и другие люди.
  2. В разделе «Другие люди» кликните по пользователю, которого нужно удалить и нажмите соответствующую кнопку — «Удалить». Если нужный пользователь отсутствует в списке, о том, почему это может быть — далее в инструкции. 
  3. Вы увидите предупреждение о том, что вместе с учетной записью будут удалены файлы этого пользователя, хранящиеся в его папках рабочего стола, документов и прочего. Если важных данных у этого пользователя нет, нажмите «Удалить учетную запись и данные». 
Читать также:  Как разрешить приложениям использовать мой iPhone?

Если все прошло успешно, то ненужный вам пользователь будет удален с компьютера.

Ну, и зачем тебе права?

Программа может запрашивать права администратора условно в двух случаях:

  1. Когда хочет получить доступ туда, куда «простым смертным» нельзя: например, создавать файлы в системных каталогах.
  2. Когда программу скомпилировали со специальным флагом «Требовать права администратора».

С первым случаем все понятно: берем в руки замечательную программу Марка Руссиновича Process Monitor, смотрим, что происходит, и куда программа пытается залезть:

[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет

Куда это лезет этот 7Zip?

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

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

Если сильно упростить, то в специальном манифесте программы (к слову, установщики — это тоже программы) могут быть три варианта запуска:

  • asInvoker. Программа запускается с теми же правами, что и породивший ее процесс (как правило, это explorer.exe c правами пользователя);
  • highestAvailable. Программа попросит максимально доступные пользователю права (у администратора появится окно с запросом повышения UAC, у пользователя — нет);
  • requireAdministrator. Программа будет требовать права администратора в любом случае.

Если разработчик твердо решил требовать права администратора, даже если они не нужны, то обойти это можно малой кровью.

Всё пропало?

Какие меры нужно принять, если на вашем сервере использовался такой способ запуска программ для пользователей? В первую очередь нужно поменять пароли администраторов и провести аудит системы, не было ли взлома с использованием этой уязвимости. Если у вас был запрещён запуск всех посторонних программ, это слегка снижает градус проблемы, но только слегка — нужно убедиться, что пользователям не были доступны для записи те папки, из которых им был разрешён запуск программ, а добраться до них можно разными способами: кроме проводника, где доступ к ФС можно ограничить твиками, как минимум в систему встроены командная строка и PowerShell, запретить их запуск ограниченным пользователям тоже нужно было заранее. Имея же учётные данные администратора на руках, пользователь уже не ограничен ничем и все данные на таком сервере следует считать скомпрометированными. Помните, что безопасность сервера это комплексная мера, и она достигается суммой правильно настроенных параметров, многие из которых здесь не упомянуты.

AdmiLink и его армия

Попыток преодолеть небезопасность стандартного runas предпринято множество, тысячи их. Самые известные — AdmiLink, CPAU, Encrypted RunAs и другие. Всех их объединяет конечный способ запуска, который мы разберём далее. В целом алгоритм работы этих программ такой: берём имя и пароль пользователя, от имени которого будет выполняться запуск целевой программы (как правило с правами администратора), добавляем к нему путь и контрольную сумму исполняемого файла (чтобы его нельзя было подменить на произвольный), и всю эту информацию дико шифруем, чтобы расшифровать могла только авторская программа, и желательно только на том же компьютере. Проблема в том, что вся эта защита не имеет никакого смысла, поскольку имя и пароль администратора можно перехватить тогда, когда он уже будет расшифрован. Дополнительная проблема в том, что авторы этих программ об этом не подозревают и убеждают системных администраторов в безопасности своих разработок:

Так вот, AdmiLink — это очень неплохой «кирпич» в системе защиты, задачей которого является БЕЗОПАСНЫЙ ЗАПУСК программ. Безопасный запуск означает, что:

Пользователь не сможет узнать пароль Администратора через ярлык запуска.

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

Как удалить пользователя с помощью командной строки

Следующий вариант: использовать командную строку, которую следует запустить от имени администратора (в Windows 10 это можно сделать через меню правого клика по кнопке «Пуск»), а затем использовать команды (нажимая Enter после каждой):

  1. net users (выдаст список имен пользователей, активных и нет. Вводим для проверки того, что правильно помним имя пользователя, которого нужно удалить). Внимание: не удаляйте таким образом встроенные учетные записи Администратор, Гость, DefaultAccount и defaultuser.
  2. net user Имя_пользователя /delete (команда удалит пользователя с указанным именем. Если имя содержит проблемы, используйте кавычки, как на скриншоте). 

Если команда была выполнена успешно, пользователь будет удален из системы.

Два одинаковых пользователя Windows 10

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

Обычно это происходит после каких-либо манипуляций с профилями, например, после такого: Как переименовать папку пользователя, при условии, что до этого вы отключили пароль при входе в Windows 10.

Чаще всего срабатывающее решение, позволяющее убрать дубликат пользователя, выглядит так:

  1. Нажать клавиши Win+R и ввести control userpasswords2
  2. Выбрать пользователя и включить запрос пароля для него, применить настройки.
  3. Перезагрузить компьютер.

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

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

Читать также:  I. ХАРАКТЕРИСТИКА ПРОБЛЕМЫ, НА РЕШЕНИЕ КОТОРОЙ НАПРАВЛЕНА ПРОГРАММА

Удаление профиля пользователя в Windows 10

Посмотрело: 6 624

Удалить профиль пользователя в Windows 10 вручную

Категория: Полезная информация

Windows 10 IT Pro

  • Вопрос

  • 7 января 2017 г. 18:13 Ответить Цитировать

Ответы

    • Помечено в качестве ответа7 января 2017 г. 19:13

Все ответы

    • Помечено в качестве ответа7 января 2017 г. 19:13
  • А пароль какой надо вводить?

    Ошибка: Ошибка программы RUNAS: Не удалось получить пароль пользователя

  • я ввел пароль локального администратор, учетку соответственно написал Администратор.

    тоже столкнулся с проблемой, что после ввода ПК в домен и входа с рабочей учетки и если что-то пошло не так (перенаправление папок не сработало например), то все последующие входы в эту учетку уже ничего не меняет, нужное правило не работает, даже если все исправлено и другие учетки нормально отрабатываются. Удаление учетки тоже ничего не дает, создается временный профиль TEMP и все. Зачем так майкрософт извратил это — непонятно. Теперь тесты при вводе ПК в домен провожу на левых учетках, которые создаю в АД — их уже не жалко.

  •  Удаление учетки тоже ничего не дает, создается временный профиль TEMP и все.

    вы не сделали то, что написано выше:

    Не игнорируйте встроенную справку, читайте ее и большинство вопросов будет решено гораздо быстрее.

  • И теперь сколько бы я раз не удалял учётку по вышеописанному совету, заходя в учётку нет не одного Metro приложения. Подскажите как полностью удалить доменную учётку с клиентского компьютера?

    собственно, вы полностью удаляете учётку пользователя по описанному вами алгоритму (перегрузка необязательна)

    любые приложения метро и сам магазин легко удаляется и ставится обратно скриптом. Ищите » как удалить встроенные приложения Windows 10″

    найдёте, например тут https://remontka.pro/delete-apps-windows-10/

    Не игнорируйте встроенную справку, читайте ее и большинство вопросов будет решено гораздо быстрее.

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

    • 6 ноября 2018 г. 6:47
  • https://remontka.pro/delete-user-windows-10/
  • https://windowspro.ru/146-udalenie-profilya-polzovatelya-v-windows-10.html
  • https://social.technet.microsoft.com/forums/ru-ru/50fccadd-2a4f-4988-bc51-a35c118a8a47/105010721082-1091107610721083108010901100

Как удалить встроенные учетные записи Администратор, Гость или другие

Если вам требуется убрать лишних пользователей Администратор, Гость, а возможно и какие-то другие, сделать этого так, как описывалось выше, не получится. Дело в том, что это встроенные системные учетные записи (см., например: Встроенная учетная запись Администратор в Windows 10) и их нельзя удалить, но можно отключить.

Для того, чтобы сделать это, выполните два простых шага:

  1. Запустите командную строку от имени администратора (клавиши Win+X, затем выбрать нужный пункт меню) и введите следующую команду
  2. net user Имя_пользователя /active:no disable-system-account-windows-10.png

После выполнения команды, указанный пользователь будет отключен и исчезнет в окне входа в Windows 10 и из списка учетных записей.

[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет

Время на прочтение

[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет

(с) Вася Ложкин.

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

Попробуем разобрать решения, которые позволят и программу запустить, и безопасника с финансистом не обозлить.

Нет, не будет тебе прав

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

Простейшим вариантом работы с этим механизмом будет использование переменных среды.

Рассмотрим пример с редактором реестра. Действительно, запуская regedit.exe под администратором, мы получаем запрос на повышение прав:

[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет

Запрос повышение прав.

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

set __COMPAT_LAYER=RUNASINVOKER

То запроса UAC не будет, как и административных прав у приложения:

[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет

Бесправный редактор реестра.

С конкретным примером такой неприятной программы можно столкнуться при загрузке классификаторов банков из 1С с сайта РБК по ссылке http://cbrates.rbc.ru/bnk/bnk.exe. Если обновление классификаторов отдается на откуп самим пользователям и нет возможности поменять загрузку на bnk.zip (а современные 1С это поддерживают), то приходится придумывать костыли. Ведь bnk.exe — самораспаковывающийся архив, в котором зачем-то прописано «Требовать права администратора».

Поскольку ярлычками тут обойтись не выйдет, ведь 1С сама скачивает файл и запускает его, то придется применять тяжелую артиллерию — Microsoft Application Compatibility Toolkit.

Документация к ПО, как обычно, доступна на официальном сайте, загрузить можно как часть Windows Assessment and Deployment Kit. Сам процесс решения проблемы несложен.

[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет

Создаем исправление приложения.

Имя и издатель значения не имеют. Имеет значение только расположение файла — тут нужно указать реальный проблемный bnk.exe (где он будет лежать на самом деле — не важно).

Далее необходимо в списке исправлений выбрать RunAsInvoker.

Выбираем нужный фикс.

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

[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет

Созданный фикс для bnk.exe.

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

Все становится хуже, если приложению действительно нужны права админа. Тогда добавление прав на системные объекты и исправления не помогают.

Удаление в управлении учетными записями пользователей

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

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

Добавить комментарий

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