Комментарии 7
Это связано с тем, что любой, у кого есть доступ к файлу, может использовать его для аутентификации, не зная фактического пароля. Кстати, по похожему принципу построена атака pass the hash, когда злоумышленник вместо пароля использует его хэш, и этого бывает достаточно для аутентификации в системе.
$pwd = read-host "password:" -AsSecureString
$Encrypted = ConvertFrom-SecureString -SecureString $pwd
Для шифрования используется API защиты данных Windows (DPAPI), расшифровать можно только из профиля пользователя(сеанса). Если просто получить доступ к строке, то без доступа к учетке пользователя не получится расшифровать.
С тем же успехом можно утверждать, что пароль можно дернуть из кред менеджера через
$Cred = Get-StoredCredential -Target PowerShell
$pass = [Net.NetworkCredential]::new('', $cred.Password).Password
+1
К тому же эту шифрованную строку можно расшифровать только на той же машинке, где её создали. Запустите на двух разных машинах под одной и той же доменной учетной записью и сравните выдачу $SecureString:
$PlainPassword = "P@ssw0rd!"
$SecurePassword = ConvertTo-SecureString $PlainPassword -AsPlainText -Force
$SecurePassword
$SecureString = ConvertFrom-SecureString -SecureString $SecurePassword
$SecureString
$secString2 = ConvertTo-SecureString -String $SecureString
$PlainPasswordRecovered = [Net.NetworkCredential]::new('', $SecString2).Password
$PlainPasswordRecovered
Как вариант, можно запускать скрипт из планировщика под сервисной учетной записью, сохраняя её пароль, а креды этой учетки для использования в явном виде в скрипте получать командой:
$cred = [System.Net.CredentialCache]::DefaultNetworkCredentials
Может быть в 2024 году лучше использовать https://github.com/powershell/SecretManagement ?
У нас выключили в АД повершел совсем для безопасности.
Странное решение. У вас плоская сеть, нет PKI, безопасники ещё учатся?
Для скриптов есть линукс..
PowerShell скрипты, оперирующие объектами, а не строками с адским выводом и парсингом, на порядок удобнее для административных и регламентных задач Windows инфраструктуры, чем бардачный bash-инг / питонинг.
Использование Windows Credential Manager для безопасности PowerShell