ВВЕДЕНИЕ
Корпорация Майкрософт выпустила бюллетень по безопасности MS14-025. Дополнительные сведения об этом бюллетене безопасности:
-
Версия для пользователей домашних компьютеров:
http://www.microsoft.com/ru-ru/security/pc-security/updates.aspxПропустить подробности: Скачайте обновления для домашнего компьютера или ноутбука с веб-сайта Центра обновления Майкрософт:
-
Версия для ИТ-специалистов:
https://technet.microsoft.com/ru-ru/library/security/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-CleartextPasswordFunction: Invoke-PasswordRollAuthor: MicrosoftVersion: 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-CleartextPasswordAuthor: MicrosoftVersion: 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\domainGet-SettingsWithCPassword.ps1 -Path <GPO Backup Folder Path>.NOTESЕсли модуль настроек групповой политики не обнаружен, выходные данные будут содержать идентификаторы GUID объекта групповой политики, а не их имена. Можно запустить этот сценарий в контроллере домена или перезапустить его на клиентском компьютере, установив средства удаленного администрирования сервера и включив модуль групповой политики. Кроме того, идентификаторы GUID объекта групповой политики можно использовать для получения имен этих объектов с помощью командлета Get-GPO..LINKhttp://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 Примечание. Обратите внимание: при указании пути можно использовать любой архив объекта групповой политики вместо домена..Сценарий обнаружения создает список, приведенный ниже.
Удаление настроек атрибута CPassword
Чтобы удалить настройки, содержащие данные атрибута CPassword, рекомендуется использовать консоль управления групповой политики в контроллере домена или на клиентском компьютере с установленными средствами удаленного администрирования сервера. Выполнив пять действий в этих консолях, можно удалить любые настройки. Для проверки выполните указанные ниже действия.
-
В консоли управления групповыми политиками откройте настройку, содержащую данные атрибута CPassword.
-
Выберите действие Удалить или Отключить (в зависимости от того, что применимо к настройке).
-
Нажмите кнопку ОК, чтобы сохранить изменения.
-
Дождитесь завершения одного или двух циклов обновления групповой политики, чтобы разрешить распространение изменений на клиентские компьютеры.
-
После применения изменений всеми клиентскими компьютерами удалите настройку.
-
Повторите действия 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 |