Windows Credential Manager (диспетчер учетных данных) позволяет сохранять учетные записи и пароли для доступа к сетевым ресурсам, сайтам и приложениям. Благодаря диспетчеру учётных записей Windows вы можете подключаться к удаленным ресурсам автоматически, без ввода пароля. Приложения могут самостоятельно обращаться в Credential Manager и использовать сохраненный пароль.
Используем диспетчер учетных данных Windows для хранения паролей
Впервые Credential Manager появился в Windows 7 и позиционируется как достаточное безопасное место для хранения ваших паролей.
В диспетчере учетных данных могут хранится следующие типы аккаунтов:
- Учетные данные Windows (Windows Credentials)– данные для входа в Windows, для доступа на удаленные компьютеры, сохраненные пароли для RDP подключений, пароли к сайтам, поддерживающих встроенную аутентификацию Windows и т.д;В Windows Credential не хранятся данные для автоматического входа в Windows или доменные Cached Credentials.
- Учетные данные на основе сертификатов (Certificate-Based Credentials) – для аутентификации с помощью смарт-карт;
- Общие учетные данные (Generic Credentials) – используются сторонними приложениями, совместимые с Credential Manager;
- Учетные данные для интернета (Web Credentials) – сохранённые пароли в браузерах Edge и IE, приложениях Microsoft (MS Office, Teams, Outlook, Skype и т.д).
Например, если при доступе к сетевой папке вы включите опцию “Сохранить пароль”, то введенный вами пароли будет сохранен в Credential Manager.
Аналогично пароль для подключения к удаленному RDP/RDS серверу сохраняется в клиенте Remote Desktop Connection (mstsc.exe).
Вы можете получить доступ к диспетчеру учетных данных в Windows 10 из классической панели управления (Control Panel\User Accounts\Credential Manager, Панель управления -> Учетные записи пользователей -> Диспетчер учетных данных).
Как вы видите, в Credential Manager теперь хранятся два пароля, которые мы сохранили ранее.
TERMSRV\hostname
.Здесь вы можете добавить сохранённый пароль, отредактировать (просмотреть сохраненный пароль из графического интерфейса нельзя) или удалить любую из записей.
Также для работы с сохраненными паролями можно использовать классический диалоговый интерфейс Windows – Stored User Names and Password. Для его вызова, выполните:
rundll32.exe keymgr.dll,KRShowKeyMgr
Здесь вы также можете управлять сохраненными учетными данными, а также есть функции резервного копирования и восстановления данных в Credential Manager (можно использовать для переноса базы Credential Manager на другой компьютер).
Для управления Credential Manager из командной строки используется утилита
vaultcmd
. Например, чтобы вывести список сохраненных учетных данных типа Windows Credentials выполните команду:
vaultcmd /listcreds:"Windows Credentials"
Credential schema: Windows Domain Password Credential Resource: Domain:target=msk-dc00 Identity: RESOURCE\anovak Hidden: No Roaming: No Property (schema element id,value): (100,3) Property (schema element id,value): (101,SspiPfc)
Следующая команда удалит из Credential Manager все сохраненные пароли для RDP доступа:
For /F "tokens=1,2 delims= " %G in ('cmdkey /list ^| findstr "target=TERMSRV"') do cmdkey /delete %H
Все сохраненные пароли хранятся в хранилище Windows Vault. Windows Vault это защищенное хранилище секретов, паролей и другой информации пользователя. Данные в Windows Vault структурированы и представляют собой набор записей, принадлежащих определенной схеме Vault. Набор ключей шифрования для записей Windows Vault хранится в файле Policy.vpol.
Для доменных он хранится в каталоге
%userprofile%\AppData\Roaming\Microsoft\Vault
. Для локальных пользователей в
%userprofile%\AppData\Local\Microsoft\Vault
.
Для работы Credential Manager должна быть запущена служба VaultSvc:
get-service VaultSvc
Если служба отключена, при попытке получить доступ к Credential Manager появится ошибка
Credential Manager Error The Credential Manager Service is not running. You can start the service manually using the Services snap-in or restart your computer to start the service. Error code: 0x800706B5 Error Message: The interface is unknown.
Если вы хотите заблокировать пользователям возможность сохранения сетевых паролей в Credential Manager, нужно включить политику Network access: Do not allow storage of passwords and credentials for network authentication в разделе GPO Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options.
Теперь, если пользователь попытается сохранить пароль в хранилище, появится ошибка:
Credential Manager Error Unable to save credentials. To save credentials in this vault, check your computer configuration. Error code: 0x80070520 Error Message: A specified logon session does not exist. It may already have been terminated.
Доступ к менеджеру учетных данных Windows из PowerShell
В Windows нет встроенных командлетов для обращения к хранилищу PasswordVault из PowerShell. Но вы можете использовать модуль CredentialManager из галереи PowerShell.
Установите модуль:
Install-Module CredentialManager
Список командлетов в модуле можно вывести так:
get-command -module CredentialManager
В модуле всего 4 командлета:
- Get-StoredCredential – получить учетные данные из хранилища Windows Vault;
- Get-StrongPassword – сгенерировать случайный пароль;
- New-StoredCredential – добавить ученые записи;
- Remove-StoredCredential – удалить учетные записи.
Чтобы добавить новые данные в хранилище CredentialManager, выполните команду:
New-StoredCredential -Target 'contoso' -Type Generic -UserName '[email protected]' -Password '123qwe' -Persist 'LocalMachine'
Проверить, есть в хранилище сохраненные данные для пользователя:
Get-StoredCredential -Target contoso
Сохраненные пароли из Credential Manager можно использовать в ваших скриптах PowerShell. Например, в следующем примере я получаю сохраненные имя и пароль в виде объекта PSCredential и подключаюсь с ними к Exchange Online из PowerShell:
$psCred = Get-StoredCredential -Target "Contoso"
Connect-MSolService -Credential $psCred
Чтобы удалить определенную учетные данные из Windows Vault, выполните:
Remove-StoredCredential -Target Contoso
Отобразить пароли в открытом виде с помощью встроенных средств нельзя. Но вы можете использовать утилиты типа Mimikatz для получения сохраненных паролей из credman в открытом виде (смотри пример).
С помощью Powershell у далить кеш паролей в Windows 10 так
$Credentials = (cmdkey /list | Where-Object {$_ -like "*Target=*"})
Foreach ($Target in $Credentials) {
$Target = ($Target -split (":", 2) | Select-Object -Skip 1).substring(1)
$Argument = "/delete:" + $Target
Start-Process Cmdkey -ArgumentList $Argument -NoNewWindow -RedirectStandardOutput $False
}
Это просто невыносимо-невозможно из-за рекламы ничего в Диспетчере паролей посмотреть.Ввожу запрос уже с десяток раз,а вижу одну рекламу.
Можно удалять пароли из диспетчере с помощьб cmdkey. Например вот так очищаются сохраненные rdp пароли
For /F "tokens=1,2 delims= " %G in ('cmdkey /list ^| findstr "target=TERMSRV"') do cmdkey /delete %H
А есть ли возможность прописывать учетные данные на локальном компьютере так, чтобы они были доступны под сеансом другого пользователя? Или чтобы они были доступны для всех пользователей системы, а не только для того, под каким пользователем мы их добавляем?
Windows Credential хранит учетные данные в профиле каждого пользователя. Поэтому его использовать не получится.
как вариант использовать внешнее хранлище секретов (например https://winitpro.ru/index.php/2021/05/11/modul-powershell-secret-management-hranenie-paroley/).
Или добавлять сораненные пароли для каждого пользователя (например, при входе логон скриптом):
cmdkey /add:TERMSRV/Server123 /user:winitpro\username /pass:Pa$$w0rd!
Спасибо за наводку по поводу выполнения скрипта при логоне.
vaultcmd /listcreds:»Windows Credentials» выдает «Недопустимое хранилище: элемент не найден»