Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

ВВЕДЕНИЕ

Корпорация Майкрософт выпустила бюллетень по безопасности MS14-025. Дополнительные сведения об этом бюллетене безопасности:

Справка и поддержка по этому обновлению для системы безопасности

Помощь в установке обновлений: поддержка Центра обновления Майкрософт

Помощь по вопросам безопасности для ИТ-специалистов: устранение неполадок и поддержка по вопросам безопасности на сайте TechNet

Защита компьютера под управлением Windows от вирусов и вредоносных программ: центр обеспечения безопасности и защиты от вирусов

Локальная поддержка в вашей стране: Международная поддержка

Дополнительная информация

Известные проблемы и дополнительные сведения, связанные с этим обновлением для системы безопасности

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

  • 2928120



    MS14-025: описание обновления для системы безопасности средств удаленного администрирования сервера для систем с установленным обновлением 2919355 от 13 мая 2014 г. (может быть на английском языке)

  • 2961899

    MS14-025: описание обновления для системы безопасности средств удаленного администрирования сервера для систем без обновления 2919355 от 13 мая 2014 г. (может быть на английском языке)

Настройки групповой политики

Обзор

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

Настройки групповой политики, в которых больше невозможно хранить имена и пароли пользователей:

  • Сопоставления дисков

  • Локальные пользователи и группы

  • Назначенные задачи

  • Службы

  • Источники данных

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

Для настроек "Сопоставление дисков", "Локальные пользователи и группы" и "Службы" эти задачи можно выполнить с помощью других, более защищенных возможностей Windows.

Для настроек "Назначенные задачи" и "Источники данных" невозможно выполнить задачи, которые ранее выполнялись с помощью незащищенной функции паролей настроек групповой политики.

Сценарии

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

Затронутая настройка

Применимо к пользователю

Применимо к компьютеру

Управление локальным пользователем

Да

Да

Сопоставленные диски

Да

Нет

Службы

Нет

Да

Назначенные задачи (верхнего уровня)

Да

Да

Назначенные задачи (нижнего уровня)

Да

Да

Немедленные задачи (верхнего уровня)

Да

Да

Немедленные задачи (нижнего уровня)

Да

Да

Источники данных

Да

Да

Сводка изменений

  • Поля паролей отключены во всех затронутых настройках. Администраторы не могут создавать настройки с помощью этих полей паролей.

  • Поле имени пользователя отключено в некоторых настройках.

  • Невозможно обновить существующие настройки, содержащие пароль. Их можно только удалить или отключить — это зависит от конкретной настройки.

  • Поведение действий "Удалить" и "Отключить" для этих настроек не изменено.

  • Когда администратор открывает какую-либо настройку, содержащую атрибут CPassword, появляется приведенное ниже диалоговое окно предупреждения, уведомляющее о том, что эту функцию использовать не рекомендуется. Попытка сохранить изменения в новые или существующие настройки, для которых необходимо использовать атрибут CPassword, приведет к появлению такого же окна. Диалоговые окна предупреждения не появляются только после выполнения действий "Удалить" и "Отключить".






Сценарий 1. Управление локальным пользователем

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

  • Конфигурация компьютера -> Параметры панели управления -> Локальные пользователи и группы -> Создать -> Локальный пользователь

  • Конфигурация пользователя -> Параметры панели управления -> Локальные пользователи и группы -> Создать-> Локальный пользователь

Важные изменения

Действие: "Создать" или "Заменить"

  • Поля Имя пользователя, Пароль и Подтвердить пароль отключены.

  • Когда администратор открывает существующие настройки, содержащие пароль, или пытается сохранить какие-либо их изменения, появляется диалоговое окно предупреждения.





Действие: "Обновить"

  • Поля Пароль и Подтвердить пароль отключены.

  • Когда администратор открывает существующие настройки, содержащие пароль, или пытается сохранить какие-либо их изменения, появляется диалоговое окно предупреждения.





Действие: "Удалить"

  • Поведение не изменено

Обходные пути

Тем, кто ранее использовал настройку групповой политики для настройки паролей локальных администраторов, предлагается приведенный ниже сценарий как альтернатива атрибуту CPassword. Скопируйте содержимое и сохраните его в новый файл Windows PowerShell, а затем запустите сценарий, как описано в его разделе .EXAMPLE.

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

function Invoke-PasswordRoll
{
<#
.SYNOPSIS

Этот сценарий можно использовать для установки случайных паролей для локальных учетных записей на удаленных машинах. Сочетание "имя пользователя/пароль/имя сервера" будет сохранено в CSV-файле. Пароли учетных записей, хранящиеся в CSV-файле, можно зашифровать с помощью пароля администратора, убедившись, что открытые пароли учетных записей не записаны на диск. Зашифрованные пароли можно расшифровать с помощью другой функции из этого файла: ConvertTo-CleartextPassword


Function: Invoke-PasswordRoll
Author: Microsoft
Version: 1.0

.DESCRIPTION

Этот сценарий можно использовать для установки случайных паролей для локальных учетных записей на удаленных машинах. Сочетание "имя пользователя/пароль/имя сервера" будет сохранено в CSV-файле. Пароли учетных записей, хранящиеся в CSV-файле, можно зашифровать с помощью пароля администратора, убедившись, что открытые пароли учетных записей не записаны на диск. Зашифрованные пароли можно расшифровать с помощью другой функции из этого файла: ConvertTo-CleartextPassword

.PARAMETER ComputerName

Массив компьютеров, на которых будет выполняться сценарий с помощью удаленного взаимодействия PowerShell.

.PARAMETER LocalAccounts

Массив локальных учетных записей, пароли которых необходимо изменить.

.PARAMETER TsvFileName

Файл, в который будут сохранены полученные сочетания "имя пользователя/пароль/имя сервера".

.PARAMETER EncryptionKey

Пароль, с помощью которого будет зашифрован TSV-файл. Используется шифрование AES. Будут зашифрованы только пароли, хранящиеся в TSV-файле; имена пользователя и сервера будут открытыми.

.PARAMETER PasswordLength

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

.PARAMETER NoEncryption

Не шифруйте пароли учетных записей, хранящиеся в TSV-файле. Это приведет к записи открытых паролей на диск.

.EXAMPLE

. .\Invoke-PasswordRoll.ps1 #Загружает функцию в этой файл сценария
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator","CustomLocalAdmin") -TsvFileName "LocalAdminCredentials.tsv" -EncryptionKey "Password1"

Подключается ко всем компьютерам, указанным в файле computerlist.txt. Если "администратор" локальной учетной записи и/или CustomLocalAdmin существуют в системе, пароль изменяется на случайно созданный 20-символьный (по умолчанию). Сочетания "имя пользователя/пароль/имя сервера" сохраняются в файле LocalAdminCredentials.tsv, а пароли учетных записей шифруются по протоколу AES с помощью пароля Password1.

.EXAMPLE

. .\Invoke-PasswordRoll.ps1 #Загружает функцию в этой файл сценария
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40

Подключается ко всем компьютерам, указанным в файле computerlist.txt. Если "администратор" локальной учетной записи существует в системе, его пароль изменяется на случайно созданный 40-символьный. Сочетания "имя пользователя/пароль/имя сервера" сохраняются в файле LocalAdminCredentials.tsv в незашифрованном виде.

.NOTES
Требования: –установленная оболочка PowerShell версии 2 или более поздней –удаленное взаимодействие PowerShell должно быть включено во всех системах, в которых будет запущен сценарий

Поведение сценария: –если локальная учетная запись существует в системе, но не указана в параметре LocalAccounts, сценарий вызовет окно предупреждения, чтобы уведомить о существовании локальной учетной записи. При этом выполнение сценария будет продолжено. –если локальная учетная запись указана в параметре LocalAccounts, но не существует на компьютере, ничего не произойдет (учетная запись НЕ будет создана). –функцию ConvertTo-CleartextPassword, содержащуюся в этом файле, можно использовать для шифрования паролей, которые хранятся в зашифрованном виде в TSV-файле. –если к серверу, указанному в параметре ComputerName, не удастся подключиться, PowerShell отобразит сообщение об ошибке. –корпорация Майкрософт рекомендует компаниям регулярно свертывать пароли всех локальных и доменных учетных записей.

#>
[CmdletBinding(DefaultParameterSetName="Encryption")]
Param(
[Parameter(Mandatory=$true)]
[String[]]
$ComputerName,

[Parameter(Mandatory=$true)]
[String[]]
$LocalAccounts,

[Parameter(Mandatory=$true)]
[String]
$TsvFileName,

[Parameter(ParameterSetName="Encryption", Mandatory=$true)]
[String]
$EncryptionKey,

[Parameter()]
[ValidateRange(20,120)]
[Int]
$PasswordLength = 20,

[Parameter(ParameterSetName="NoEncryption", Mandatory=$true)]
[Switch]
$NoEncryption
)


#Загружает все необходимые классы.net
Add-Type -AssemblyName "System.Web" -ErrorAction Stop


#Параметр ScriptBlock, который будет запущен на каждом компьютере, указанном в параметре ComputerName
$RemoteRollScript = {
Param(
[Parameter(Mandatory=$true, Position=1)]
[String[]]
$Passwords,

[Parameter(Mandatory=$true, Position=2)]
[String[]]
$LocalAccounts,

#Он существует, поэтому можно записать имя сервера, к которому был подключен сценарий. Это может быть полезно, так как иногда легко запутаться в записях DNS.
[Parameter(Mandatory=$true, Position=3)]
[String]
$TargettedServerName
)

$LocalUsers = Get-WmiObject Win32_UserAccount -Filter "LocalAccount=true" | Foreach {$_.Name}

#Проверьте, существуют ли на компьютере учетные записи локальных пользователей, пароли которых не будут свернуты с помощью этого сценария
foreach ($User in $LocalUsers)
{
if ($LocalAccounts -inotcontains $User)
{
Write-Warning "Server: '$($TargettedServerName)' has a local account '$($User)' whos password is NOT being changed by this script"
}
}

#Измените пароль для всех указанных локальных учетных записей, существующих на этом сервере
$PasswordIndex = 0
foreach ($LocalAdmin in $LocalAccounts)
{
$Password = $Passwords[$PasswordIndex]

if ($LocalUsers -icontains $LocalAdmin)
{
try
{
$objUser = [ADSI]"WinNT://localhost/$($LocalAdmin), user"
$objUser.psbase.Invoke("SetPassword", $Password)

$Properties = @{
TargettedServerName = $TargettedServerName
Username = $LocalAdmin
Password = $Password
RealServerName = $env:computername
}

$ReturnData = New-Object PSObject -Property $Properties
Write-Output $ReturnData
}
catch
{
Write-Error "Error changing password for user:$($LocalAdmin) on server:$($TargettedServerName)"
}
}

$PasswordIndex++
}
}


#Создавайте пароль на клиентском компьютере, на котором выполняется сценарий, а не на удаленной машине. Параметр System.Web.Security недоступен в профиле .NET Client. Совершение этого вызова # на клиентском компьютере, на котором выполняется сценарий, позволяет использовать полноценную установленную среду выполнения .NET только на одном компьютере (в отличие от систем со свернутыми паролями).
function Create-RandomPassword
{
Param(
[Parameter(Mandatory=$true)]
[ValidateRange(20,120)]
[Int]
$PasswordLength
)

$Password = [System.Web.Security.Membership]::GeneratePassword($PasswordLength, $PasswordLength / 4)

#Это не должно завершиться неудачей, но я всегда проверяю работоспособность на этом этапе
if ($Password.Length -ne $PasswordLength)
{
throw new Exception("Password returned by GeneratePassword is not the same length as required. Required length: $($PasswordLength). Generated length: $($Password.Length)")
}

return $Password
}


#Основная функция — создание пароля и передача его на машины для изменения паролей указанных локальных учетных записей
if ($PsCmdlet.ParameterSetName -ieq "Encryption")
{
try
{
$Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider
$SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey))
}
catch
{
Write-Error "Error creating TSV encryption key" -ErrorAction Stop
}
}

foreach ($Computer in $ComputerName)
{
#Необходимо создать по одному паролю для каждой учетной записи, которая может быть изменена
$Passwords = @()
for ($i = 0; $i -lt $LocalAccounts.Length; $i++)
{
$Passwords += Create-RandomPassword -PasswordLength $PasswordLength
}

Write-Output "Connecting to server '$($Computer)' to roll specified local admin passwords"
$Result = Invoke-Command -ScriptBlock $RemoteRollScript -ArgumentList @($Passwords, $LocalAccounts, $Computer) -ComputerName $Computer
#Если используется шифрование, зашифруйте пароль с помощью ключа, предоставленного пользователем, прежде чем записывать его на диск
if ($Result -ne $null)
{
if ($PsCmdlet.ParameterSetName -ieq "NoEncryption")
{
$Result | Select-Object Username,Password,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation
}
else
{
#Отфильтровывает возвращенные записи $null
$Result = $Result | Select-Object Username,Password,TargettedServerName,RealServerName

foreach ($Record in $Result)
{
$PasswordSecureString = ConvertTo-SecureString -AsPlainText -Force -String ($Record.Password)
$Record | Add-Member -MemberType NoteProperty -Name EncryptedPassword -Value (ConvertFrom-SecureString -Key $SecureStringKey -SecureString $PasswordSecureString)
$Record.PSObject.Properties.Remove("Password")
$Record | Select-Object Username,EncryptedPassword,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation
}
}
}
}
}function ConvertTo-CleartextPassword
{
<#
.SYNOPSIS
Эту функцию можно использовать для расшифровки паролей, которые были сохранены в зашифрованном виде с помощью функции Invoke-PasswordRoll.

Function: ConvertTo-CleartextPassword
Author: Microsoft
Version: 1.0

.DESCRIPTION
Эту функцию можно использовать для расшифровки паролей, которые были сохранены в зашифрованном виде с помощью функции Invoke-PasswordRoll.


.PARAMETER EncryptedPassword

Зашифрованный пароль, сохраненный в TSV-файле.

.PARAMETER EncryptionKey

Пароль, используемый для шифрования.


.EXAMPLE. .\Invoke-PasswordRoll.ps1 #Загружает функцию в этой файл сценария
ConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAGIAMABiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"

Расшифровывает зашифрованный пароль, сохраненный в TSV-файле.

#>
Param(
[Parameter(Mandatory=$true)]
[String]
$EncryptedPassword,

[Parameter(Mandatory=$true)]
[String]
$EncryptionKey
)

$Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider
$SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey))

[SecureString]$SecureStringPassword = ConvertTo-SecureString -String $EncryptedPassword -Key $SecureStringKey
Write-Output ([System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($SecureStringPassword)))
}   Администраторы могут добавлять учетные записи локального администратора на компьютеры путем создания группы Active Directory и добавления ее в группу локальных администраторов в разделе "Настройки групповой политики" -> "Локальная группа". Это действие не кеширует учетные данные. Соответствующее диалоговое окно приведено ниже. Этот обходной путь требует подключения к доменным службам Active Directory, если пользователь входит в систему с помощью этих учетных данных.





Сценарий 2. Сопоставленные диски

Администраторы используют сопоставленные диски для выделения пользователям расположений в сети. Функция защиты паролем используется для обеспечения санкционированного доступа к диску. Это касается следующих настроек:

  • Конфигурация пользователя -> Параметры Windows -> Сопоставления дисков -> Создать -> Сопоставленный диск

Важные изменения

Действие: "Создать", "Обновить" или "Заменить"

  • Поля Имя пользователя, Пароль и Подтвердить пароль отключены.




Действие: "Удалить"

  • Поведение не изменено

Обходные пути

Вместо парольной проверки подлинности можно использовать проводник для управления разрешениями для общих ресурсов и назначения прав пользователям. С помощью объектов Active Directory можно контролировать разрешения для папки.


Сценарий 3. Службы

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

  • Конфигурация компьютера -> Параметры панели управления -> Службы -> Создать -> Служба

Важные изменения

Запуск: "Без изменений", "Автоматически" или "Вручную"

  • Поля Пароль и Подтвердить пароль отключены.

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




Запуск: "Отключить"

  • Поведение не изменено

Новое диалоговое окно

  • При попытке использовать для этой учетной записи пользователей, отличных от встроенных, появляется следующее предупреждение:





Обходные пути




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

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

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


Сценарий 4. Назначенные и немедленные задачи (верхнего уровня)

Используется для запуска назначенных задач в определенном контексте безопасности. Возможность хранения учетных данных для назначенных задач, которые будут запущены от имени произвольного пользователя, если этот пользователь не вошел в систему, больше не доступна. Это касается перечисленных ниже настроек. (Обратите внимание: для некоторых платформ вместо надписи "Windows 7 и выше" отображается "Windows Vista и выше".)

  • Конфигурация компьютера -> Параметры панели управления -> Назначенные задачи -> Создать -> Назначенная задача (Windows 7 и выше)

  • Конфигурация компьютера -> Параметры панели управления -> Назначенные задачи -> Создать -> Немедленная задача (Windows 7 и выше)

  • Конфигурация пользователя -> Параметры панели управления -> Назначенные задачи -> Создать -> Назначенная задача (Windows 7 и выше)

  • Конфигурация пользователя -> Параметры панели управления -> Назначенные задачи -> Создать -> Немедленная задача (Windows 7 и выше)

Важные изменения

Действие: "Создать", "Обновить" или "Заменить"

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

  • Флажок Не сохранять пароль отключен. По умолчанию он установлен.




Действие: "Удалить"

Поведение не изменено

Обходные пути

Для задач "Назначенная задача (Windows 7 и выше)" и "Немедленная задача (Windows 7 и выше)" администраторы могут использовать определенные учетные записи пользователей, которые вошли в систему. Кроме того, они могут получать доступ к локальным ресурсам пользователя только от его имени. Эти задачи все равно можно выполнять в контексте локальной службы.



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

  • Конфигурация компьютера -> Параметры панели управления -> Назначенные задачи -> Создать -> Назначенная задача

  • Конфигурация компьютера -> Параметры панели управления -> Назначенные задачи -> Создать -> Немедленная задача (Windows XP)

  • Конфигурация пользователя -> Параметры панели управления -> Назначенные задачи -> Создать -> Назначенная задача

  • Конфигурация пользователя -> Параметры панели управления -> Назначенные задачи -> Создать -> Немедленная задача (Windows XP)

Важные изменения

Действие: "Создать", "Обновить" или "Заменить"

  • Флажок Запуск от имени отключен. Следовательно, отключены поля Имя пользователя, Пароль и Подтвердить пароль.




Действие: "Удалить"

Поведение не изменено

Обходные пути

Для элементов "Назначенная задача" и "Немедленная задача (Windows XP)" назначенные задачи выполняются с помощью разрешений, доступных в настоящее время в локальной службе. 


Сценарий 6. Источники данных

Предпочтение "Источники данных" используется для сопоставления источника данных с компьютером или пользователем. Это функция больше не хранит учетные данные для обеспечения доступа к источникам данным, которые защищены паролем. Это касается следующих настроек:

  • Конфигурация компьютера -> Параметры панели управления -> Источники данных

  • Конфигурация пользователя -> Параметры панели управления -> Источники данных

Важные изменения

Действие: "Создать", "Обновить" или "Заменить"

  • Поля Имя пользователя, Пароль и Подтвердить пароль отключены.




Действие: "Удалить"

  • Поведение не изменено

Обходные пути

Обходные пути недоступны. Это предпочтение больше не хранит учетные данные для доступа к источникам данным, которые защищены паролем. 


Недопустимость атрибута CPassword

Удаление атрибута CPassword

Сценарий Windows PowerShell, описанный в этой статье базы знаний Майкрософт, позволяет определить, содержит ли домен настройки групповой политики, которые могут использовать атрибут CPassword. Если элемент CPassword XML будет найден в определенном предпочтении, он отобразится в приведенном ниже списке.


Обнаружение настроек CPassword

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

<#
.SYNOPSIS

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

1. Источники данных 2. Сопоставление дисков 3. Локальные пользователи 4. Назначенные задачи (Windows XP и выше) 5. Службы

Эти пароли хранятся в томе SYSVOL как часть настроек групповой политики. Их безопасность не может быть гарантирована из-за слабого шифрования (32-битное шифрование AES). Таким образом, рекомендуется не развертывать такие настройки в своей среде домена и удалить какие-либо существующие настройки. Этот сценарий призван помочь администраторам в поиске настроек групповой политики в томе SYSVOL их доменов, содержащих пароли.

.DESCRIPTION
Этот сценарий необходимо запускать в контроллере домена или на клиентском компьютере с установленными средствами удаленного администрирования сервера для печати всех настроек, содержащих пароль с такими сведениями, как "Объект групповой политики", "Имя настройки", а также "Путь GPEdit", по которому определяется это предпочтение.

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

.SYNTAXGet-SettingsWithCPassword.ps1 [-Path <String>] .EXAMPLEGet-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domain

Get-SettingsWithCPassword.ps1 -Path <GPO Backup Folder Path>

.NOTES
Если модуль настроек групповой политики не обнаружен, выходные данные будут содержать идентификаторы GUID объекта групповой политики, а не их имена. Можно запустить этот сценарий в контроллере домена или перезапустить его на клиентском компьютере, установив средства удаленного администрирования сервера и включив модуль групповой политики. Кроме того, идентификаторы GUID объекта групповой политики можно использовать для получения имен этих объектов с помощью командлета Get-GPO.

.LINK
http://go.microsoft.com/fwlink/?LinkID=390507

#>

#---------------------------------------------------------------------------------------------------------------- # Параметры ввода #--------------------------------------------------------------------------------------------------------------
param(
[string]$Path = $(throw "-Path is required.") # Путь к каталогу с протоколами GPP.
)

#---------------------------------------------------------------------------------------------------------------

$isGPModuleAvailable = $false
$impactedPrefs = { "Groups.xml", "ScheduledTasks.xml","Services.xml", "DataSources.xml", "Drives.xml" }

#---------------------------------------------------------------------------------------------------------------- # импортировать модуль групповой политики (если доступен) #----------------------------------------------------------------------------------------------------------------
if (-not (Get-Module -name "GroupPolicy"))
{
if (Get-Module -ListAvailable |
Where-Object { $_.Name -ieq "GroupPolicy" })
{
$isGPModuleAvailable = $true
Import-Module "GroupPolicy"
}
else
{
Write-Warning "Unable to import Group Policy module for PowerShell. Therefore, GPO guids will be reported.
Run this script on DC to obtain the GPO names, or use the Get-GPO cmdlet (on DC) to obtain the GPO name from GPO guid."
}
}
else
{
$isGPModuleAvailable = $true
}

Function Enum-SettingsWithCpassword ( [string]$sysvolLocation )
{
# Пути дерева GPMC
$commonPath = " -> Preferences -> Control Panel Settings -> "
$driveMapPath = " -> Preferences -> Windows Settings -> "

# Рекурсивно извлекать все XML-файлы в расположении SYVOL
$impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" | Where-Object { $impactedPrefs -cmatch $_.Name }


# Каждый XML-файл содержит несколько настроек. Проверить, #содержат ли все настройки атрибут cpassword, и отобразить его.

foreach ( $file in $impactedXmls )
{
$fileFullPath = $file.FullName

# Установить категорию GPP. Если файл расположен в папке Machine тома SYSVOL, # параметр определяется конфигурацией компьютера. В противном случае # параметр определяется настройками пользователя

if ( $fileFullPath.Contains("Machine") )
{
$category = "Computer Configuration"
}
elseif ( $fileFullPath.Contains("User") )
{
$category = "User Configuration"
}
else
{
$category = "Unknown"
}

# Получить содержимое файла в формате XML
try
{
[xml]$xmlFile = get-content $fileFullPath -ErrorAction Continue
}
catch [Exception]{
Write-Host $_.Exception.Message
}

if ($xmlFile -eq $null)
{
continue
}

switch ( $file.BaseName )
{

Groups
{
$gppWithCpassword = $xmlFile.SelectNodes("Groups/User") | where-Object { $_.Properties.cpassword -ne $null}
$preferenceType = "Local Users"
}

ScheduledTasks
{
$gppWithCpassword = $xmlFile.SelectNodes("ScheduledTasks/*") | where-Object { $_.Properties.cpassword -ne $null}
$preferenceType = "Scheduled Tasks"
}

DataSources
{
$gppWithCpassword = $xmlFile.SelectNodes("DataSources/DataSource") | where-Object { $_.Properties.cpassword -ne $null}
$preferenceType = "Data sources"
}

Drives
{
$gppWithCpassword = $xmlFile.SelectNodes("Drives/Drive") | where-Object { $_.Properties.cpassword -ne $null}
$preferenceType = "Drive Maps"
}

Services
{
$gppWithCpassword = $xmlFile.SelectNodes("NTServices/NTService") | where-Object { $_.Properties.cpassword -ne $null}
$preferenceType = "Services"
}

default
{ # очистить gppWithCpassword и preferenceType для следующего элемента.
try
{
Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue
Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue
}
catch [Exception]{}
}
}if ($gppWithCpassword -ne $null)
{
# Создать имя объекта групповой политики с идентификатора GUID, извлеченного с элемента filePath
$guidRegex = [regex]"\{(.*)\}"
$match = $guidRegex.match($fileFullPath)

if ($match.Success)
{
$gpoGuid = $match.groups[1].value
$gpoName = $gpoGuid
}
else
{
$gpoName = "Unknown"
}

if($isGPModuleAvailable -eq $true)
{
try
{
$gpoInfo = Get-GPO -Guid $gpoGuid -ErrorAction Continue
$gpoName = $gpoInfo.DisplayName
}
catch [Exception] {
Write-Host $_.Exception.Message
}
}

# отобразить настройки, содержащие пароль
foreach ( $gpp in $gppWithCpassword )
{
if ( $preferenceType -eq "Drive Maps" )
{
$prefLocation = $category + $driveMapPath + $preferenceType
}
else
{
$prefLocation = $category + $commonPath + $preferenceType
}

$obj = New-Object -typeName PSObject
$obj | Add-Member –membertype NoteProperty –name GPOName –value ($gpoName) –passthru |
Add-Member -MemberType NoteProperty -name Preference -value ($gpp.Name) -passthru |
Add-Member -MemberType NoteProperty -name Path -value ($prefLocation)

Write-Output $obj

}
} # end if $gppWithCpassword } # end foreach $file } # end functions Enum-PoliciesWithCpassword

#----------------------------------------------------------------------------------- # Проверить правильность элемента Path. Пронумеровать все настройки, содержащие атрибут cpassword. #-----------------------------------------------------------------------------------
if (Test-Path $Path )
{
Enum-SettingsWithCpassword $Path
}
else
{
Write-Warning "No such directory: $Path"
}

Использование примера (предполагает, что системным является диск C)

.\Get-SettingsWithCPassword.ps1 –path “C:\Windows\SYSVOL\domain” | Format-List
Примечание. Обратите внимание: при указании пути можно использовать любой архив объекта групповой политики вместо домена..

Сценарий обнаружения создает список, приведенный ниже.



Для более длинных списков рекомендуется сохранить выходные данные в файл:

.\Get-SettingsWithCPassword.ps1 –path “C:\Windows\SYSVOL\domain” | ConvertTo-Html > gpps.html

Удаление настроек атрибута CPassword

Чтобы удалить настройки, содержащие данные атрибута CPassword, рекомендуется использовать консоль управления групповой политики в контроллере домена или на клиентском компьютере с установленными средствами удаленного администрирования сервера. Выполнив пять действий в этих консолях, можно удалить любые настройки. Для проверки выполните указанные ниже действия.

  1. В консоли управления групповыми политиками откройте настройку, содержащую данные атрибута CPassword.

  2. Выберите действие Удалить или Отключить (в зависимости от того, что применимо к настройке).

  3. Нажмите кнопку ОК, чтобы сохранить изменения.

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

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

  6. Повторите действия 1–5, чтобы очистить всю свою среду. Если сценарий обнаружения возвращает нулевые результаты, все готово.

File name

SHA1 hash

SHA256 hash

Windows6.0-KB2928120-ia64.msu

B2A74305CB56191774BFCF9FCDEAA983B26DC9A6

DCE8C0F9CEB97DBF1F7B9BAF76458B3770EF01C0EDC581621BC8C3B2C7FD14E7

Windows6.0-KB2928120-x64.msu

386457497682A2FB80BC93346D85A9C1BC38FBF7

1AF67EB12614F37F4AC327E7B5767AFA085FE676F6E81F0CED95D20393A1D38D

Windows6.0-KB2928120-x86.msu

42FF283781CEC9CE34EBF459CA1EFE011D5132C3

016D7E9DBBC5E487E397BE0147B590CFBBB5E83795B997894870EC10171E16D4

Windows6.1-KB2928120-ia64.msu

5C2196832EC94B99AAF9B074D3938525B7219690

9958FA58134F55487521243AD9740BEE0AC210AC290D45C8322E424B3E5EBF16

Windows6.1-KB2928120-x64.msu

EA5332F4E289DC799611EAB8E3EE2E86B7880A4B

417A2BA34F8FD367556812197E2395ED40D8B394F9224CDCBE8AB3939795EC2A

Windows6.1-KB2928120-x86.msu

7B7B6EE24CD8BE1AB3479F9E1CF9C98982C8BAB1

603206D44815EF2DC262016ED13D6569BE13D06E2C6029FB22621027788B8095

Windows8-RT-KB2928120-x64.msu

E18FC05B4CCA0E195E62FF0AE534BA39511A8593

FCAED97BF1D61F60802D397350380FADED71AED64435D3E9EAA4C0468D80141E

Windows8-RT-KB2928120-x86.msu

A5DFB34F3B9EAD9FA78C67DFC7ACACFA2FBEAC0B

7F00A72D8A15EB2CA70F7146A8014E39A71CFF5E39596F379ACD883239DABD41

Windows8.1-KB2928120-x64.msu

A07FF14EED24F3241D508C50E869540915134BB4

6641B1A9C95A7E4F0D5A247B9F488887AC94550B7F1D7B1198D5BCBA92F7A753

Windows8.1-KB2928120-x86.msu

DE84667EC79CBA2006892452660EB99580D27306

468EE4FA3A22DDE61D85FD3A9D0583F504105DF2F8256539051BC0B1EB713E9C

Windows8.1-KB2961899-x64.msu

10BAE807DB158978BCD5D8A7862BC6B3EF20038B

EC26618E23D9278FC1F02CA1F13BB289E1C6C4E0C8DA5D22E1D9CDA0DA8AFF51

Windows8.1-KB2961899-x86.msu

230C64447CC6E4AB3AD7B4D4655B8D8CEFBFBE98

E3FAD567AB6CA616E42873D3623A777185BE061232B952938A8846A974FFA7AF


Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

Спасибо за ваш отзыв!

×