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

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

Эта статья на английском языке: 2962486
ВВЕДЕНИЕ
Корпорация Майкрософт выпустила бюллетень по безопасности MS14-025. Для получения дополнительных сведений о данном бюллетене безопасности:

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

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

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

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

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

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

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

Следующие статьи содержат дополнительные сведения об этом обновлении для системы безопасности по отношению к версии конкретного продукта. В них могут быть сведения об известных проблемах. Если это так, известная проблема будет помещен в каждой статье ссылки.
  • 2928120 MS14-025: Описание обновления для системы безопасности Windows средства удаленного администрирования сервера для систем, имеющих 2919355 установки обновления: 13 мая 2014 г.
  • 2961899 MS14-025: Описание обновления для системы безопасности Windows средства удаленного администрирования сервера для систем, не имеющих 2919355 установки обновления: 13 мая 2014 г.
Предпочтения групповой политики

Обзор

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

Следующие настройки групповой политики больше не разрешает имена пользователей и пароли для сохранения:
  • Сопоставления дисков
  • Локальные пользователи и группы
  • Запланированные задания
  • Службы
  • Источники данных
Это повлияет на поведение объектов любой существующий групповой политики (GPO) в вашей среде, использующие пароли, содержащиеся в этих установках. Она также запрещает создание новых предпочтениях групповой политики с помощью этой функции.

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

Назначенные задания и источники данных будет невозможно добиться одинаковых целей, которые были доступны через небезопасные функции настройки групповой политики паролей.
Сценарии
Следующие настройки групповой политики влияет это изменение. Кратко рассматриваются каждой настройки и затем более подробно. Кроме того методы обхода, которые позволяют выполнять те же задачи.
Затронутые предпочтенияПрименяется для пользователяПрименяется к компьютеру
Управление локального пользователяДаДа
Подключенные сетевые дискиДа
Нет
Службы
Нет
Да
Назначенные задания (уровня)ДаДа
Назначенные задания (нижнего уровня)ДаДа
Неотложных задач (уровня)ДаДа
Неотложных задач (нижнего уровня)ДаДа
Источники данныхДаДа

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

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

Предупреждение системы безопасности CPassword



Сценарий 1: Управление локального пользователя

Предпочтения локального пользователя управления часто используется для создания локальных администраторов, у которых есть известные пароль на компьютере. Эта функция является небезопасным из-за того, что настройки групповой политики для хранения паролей. Таким образом эта функция больше не доступен. Затрагиваются следующие настройки:
  • Конфигурация компьютера,-> параметры панели управления-> локальные пользователи и группы-> новые-> локального пользователя
  • Конфигурация пользователя-> параметры панели управления-> локальные пользователи и группы-> новые-> локального пользователя

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

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


Создать или заменить локальный пользователь-

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


Локальный пользователь - обновление

Действие: удаление
  • Поведение не меняется

Методы обхода

Для тех, кто ранее применяли предпочтений групповых политик для настройки локального администратора паролей безопасной альтернативой CPassword предоставляется следующий сценарий. Скопировать и сохранить содержимое в новый файл Windows PowerShell и затем запустить сценарий, как указано в его. Раздел с ПРИМЕРОМ.

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

 function Invoke-PasswordRoll{<#.SYNOPSISThis script can be used to set the local account passwords on remote machines to random passwords. The username/password/server combination will be saved in a CSV file.The account passwords stored in the CSV file can be encrypted using a password of the administrators choosing to ensure clear-text account passwords aren't written to disk.The encrypted passwords can be decrypted using another function in this file: ConvertTo-CleartextPasswordFunction: Invoke-PasswordRollAuthor: MicrosoftVersion: 1.0.DESCRIPTIONThis script can be used to set the local account passwords on remote machines to random passwords. The username/password/server combination will be saved in a CSV file.The account passwords stored in the CSV file can be encrypted using a password of the administrators choosing to ensure clear-text account passwords aren't written to disk.The encrypted passwords can be decrypted using another function in this file: ConvertTo-CleartextPassword.PARAMETER ComputerNameAn array of computers to run the script against using PowerShell remoting..PARAMETER LocalAccountsAn array of local accounts whose password should be changed..PARAMETER TsvFileNameThe file to output the username/password/server combinations to..PARAMETER EncryptionKeyA password to encrypt the TSV file with. Uses AES encryption. Only the passwords stored in the TSV file will be encrypted, the username and servername will be clear-text..PARAMETER PasswordLengthThe length of the passwords which will be randomly generated for local accounts..PARAMETER NoEncryptionDo not encrypt the account passwords stored in the TSV file. This will result in clear-text passwords being written to disk.	.EXAMPLE. .\Invoke-PasswordRoll.ps1    #Loads the functions in this script fileInvoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator","CustomLocalAdmin") -TsvFileName "LocalAdminCredentials.tsv" -EncryptionKey "Password1"Connects to all the computers stored in the file "computerlist.txt". If the local account "administrator" and/or "CustomLocalAdmin" are present on the system, their password is changedto a randomly generated password of length 20 (the default). The username/password/server combinations are stored in LocalAdminCredentials.tsv, and the account passwords are AES encrypted using the password "Password1"..EXAMPLE. .\Invoke-PasswordRoll.ps1    #Loads the functions in this script fileInvoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40Connects to all the computers stored in the file "computerlist.txt". If the local account "administrator" is present on the system, its password is changed to a random generatedpassword of length 40. The username/password/server combinations are stored in LocalAdminCredentials.tsv unencrypted..NOTESRequirements: -PowerShellv2 or above must be installed-PowerShell remoting must be enabled on all systems the script will be run againstScript behavior:-If a local account is present on the system, but not specified in the LocalAccounts parameter, the script will write a warning to the screen to alert you to the presence of this local account. The script will continue running when this happens.-If a local account is specified in the LocalAccounts parameter, but the account does not exist on the computer, nothing will happen (an account will NOT be created).-The function ConvertTo-CleartextPassword, contained in this file, can be used to decrypt passwords that are stored encrypted in the TSV file.-If a server specified in ComputerName cannot be connected to, PowerShell will output an error message.-Microsoft advises companies to regularly roll all local and domain account passwords.#>    [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    )    #Load any needed .net classes    Add-Type -AssemblyName "System.Web" -ErrorAction Stop    #This is the scriptblock that will be executed on every computer specified in ComputerName    $RemoteRollScript = {        Param(            [Parameter(Mandatory=$true, Position=1)]            [String[]]            $Passwords,            [Parameter(Mandatory=$true, Position=2)]            [String[]]            $LocalAccounts,            #This is here so I can record what the server name that the script connected to was, sometimes the DNS records get messed up, it can be nice to have this.            [Parameter(Mandatory=$true, Position=3)]            [String]            $TargettedServerName        )        $LocalUsers = Get-WmiObject Win32_UserAccount -Filter "LocalAccount=true" | Foreach {$_.Name}        #Check if the computer has any local user accounts whose passwords are not going to be rolled by this script        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"            }        }        #For every local account specified that exists on this server, change the password        $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++        }    }    #Generate the password on the client running this script, not on the remote machine. System.Web.Security isn't available in the .NET Client profile. Making this call    #    on the client running the script ensures only 1 computer needs the full .NET runtime installed (as opposed to every system having the password rolled).    function Create-RandomPassword    {        Param(            [Parameter(Mandatory=$true)]            [ValidateRange(20,120)]            [Int]            $PasswordLength        )        $Password = [System.Web.Security.Membership]::GeneratePassword($PasswordLength, $PasswordLength / 4)        #This should never fail, but I'm putting a sanity check here anyways        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    }    #Main functionality - Generate a password and remote in to machines to change the password of local accounts specified    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)    {        #Need to generate 1 password for each account that could be changed        $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 encryption is being used, encrypt the password with the user supplied key prior to writing to disk        if ($Result -ne $null)        {            if ($PsCmdlet.ParameterSetName -ieq "NoEncryption")            {                $Result | Select-Object Username,Password,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation            }            else            {                #Filters out $null entries returned                $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{<#.SYNOPSISThis function can be used to decrypt passwords that were stored encrypted by the function Invoke-PasswordRoll.Function: ConvertTo-CleartextPasswordAuthor: MicrosoftVersion: 1.0.DESCRIPTIONThis function can be used to decrypt passwords that were stored encrypted by the function Invoke-PasswordRoll..PARAMETER EncryptedPasswordThe encrypted password that was stored in a TSV file..PARAMETER EncryptionKeyThe password used to do the encryption..EXAMPLE. .\Invoke-PasswordRoll.ps1    #Loads the functions in this script fileConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAGIAMABiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"Decrypts the encrypted password which was stored in the TSV file.#>    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, если пользователь находится вход onby с использованием этих учетных данных.


Локальная группа - решение


Сценарий 2: Подключенные диски

Администраторы используют сопоставления дисков для распределения мест сети для пользователей. Средство защиты паролем используется для убедитесь, что авторизованный доступ к диску. Затрагиваются следующие настройки:
  • Конфигурация пользователя-> параметры Windows-> сопоставления дисков->-> создать подключенный диск

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

Действие: Создание, обновление или замена
  • Поля имя пользователя, парольи Подтверждение пароля отключаются.

Подключенный диск - Создание/обновление/заменить

Действие: удаление
  • Поведение не меняется

Методы обхода

Вместо использования метода пароль для проверки подлинности, можно использовать проводник Windows для управления разрешениями для общего ресурса и выделить права пользователей. Можно использовать объекты Active Directory для управления разрешениями в папку.


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

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

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

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

Служба - без изменений и автоматически или вручную

Запуск: отключить
  • Поведение не меняется
Новое диалоговое окно
  • Администраторы, попробуйте использовать для этой учетной записи не построен-пользователи» появляется следующее предупреждение:

Предупреждение от пользователей, не являющихся builtin


Методы обхода

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

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


Сценарий 4: Запланированных и немедленной задачи (уровня)

Они используются для запуска назначенных заданий в определенном контексте безопасности. Возможность сохранять учетные данные для запланированных заданий для выполнения в качестве произвольного пользователя, когда пользователь не вошел в систему больше не доступен. Затрагиваются следующие настройки. (Имейте в виду, на некоторых платформах "по крайней мере Windows 7" заменяется "Windows Vista и более поздних версий.»)
  • Конфигурация компьютера,-> параметры панели управления-> назначенные задания-> новый-> задание (по крайней мере Windows 7)
  • Конфигурация компьютера,-> параметры панели управления-> назначенные задания-> новый-> Немедленная задача (по крайней мере Windows 7)
  • Конфигурация пользователя-> параметры панели управления-> назначенные задания-> новый-> задание (по крайней мере Windows 7)
  • Конфигурация пользователя-> параметры панели управления-> назначенные задания-> новый-> Немедленная задача (по крайней мере Windows 7)

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

Действие: создание, обновление или замена
  • При выборе параметра запуска ли пользователь вошел в систему или нет , выводит диалоговое окно больше не ввести учетные данные администратора.
  • Флажок « не сохранять пароль » отключен. По умолчанию флажок установлен также.

Новые интерпретации или запланированные задачи (уровня)

Действие: удалите

Поведение не меняется

Методы обхода

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



Сценарий 5: Запланированных и немедленной задачи (нижнего уровня)

Это версия нижнего уровня предпочтения для выполнения запланированных задач в определенном контексте безопасности. Возможность сохранять учетные данные для запланированных заданий для выполнения в качестве произвольного пользователя, когда пользователь не вошел в систему больше не доступен. Затрагиваются следующие настройки:
  • Конфигурация компьютера,-> параметры панели управления-> запланированные задания новых->-> запланированной задачи
  • Конфигурация компьютера,-> параметры панели управления-> запланированные задания новых->-> Немедленная задача (Windows XP)
  • Конфигурация пользователя-> параметры панели управления-> запланированные задания новых->-> запланированной задачи
  • Конфигурация пользователя-> параметры панели управления-> запланированные задания новых->-> Немедленная задача (Windows XP)

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

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

Новая задача - Создание/обновление/заменить (нижнего уровня)

Действие: удалите

Поведение не меняется

Методы обхода

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


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

Настройки источников данных используется для связывания источника данных с компьютера или пользователя. Эта функция больше не сохраняет учетные данные для доступа к источникам данных, которые защищены паролем. Затрагиваются следующие настройки:
  • Конфигурация компьютера,-> параметры панели управления-> источников данных
  • Конфигурация пользователя-> параметры панели управления-> источников данных

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

Действие: создание, обновление или замена
  • Для них недоступны поля Имя пользователя, парольи Подтверждение пароля :

Источники данных - создание/обновление/заменить

Действие: удаление
  • Поведение не меняется

Методы обхода

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


Об использовании CPassword

Удаление CPassword

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


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

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

 <#.SYNOPSISGroup Policy objects in your domain can have preferences that store passwords for different tasks, such as the following:    1. Data Sources    2. Drive Maps    3. Local Users    4. Scheduled Tasks (both XP and up-level)    5. ServicesThese passwords are stored in SYSVOL as part of GP preferences and are not secure because of weak encryption (32-byte AES). Therefore, we recommend that you not deploy such preferences in your domain environment and remove any such existing preferences. This script is to help administrator find GP Preferences in their domain's SYSVOL that contains passwords. .DESCRIPTIONThis script should be run on a DC or a client computer that is installed with RSAT to print all the preferences that contain password with information such as GPO, Preference Name, GPEdit path under which this preference is defined.After you have a list of affected preferences, these preferences can be removed by using the editor in the Group Policy Management Console. .SYNTAXGet-SettingsWithCPassword.ps1 [-Path  <String>] .EXAMPLEGet-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domainGet-SettingsWithCPassword.ps1 -Path  <GPO Backup Folder Path> .NOTESIf Group Policy PS module is not found the output will contain GPO GUIDs instead of GPO names. You can either run this script on a domain controller or rerun the script on the client after you have installed RSAT and enabled the Group Policy module.Or, you can use GPO GUIDs to obtain GPO names by using the Get-GPO cmdlet. .LINKhttp://go.microsoft.com/fwlink/?LinkID=390507 #>#----------------------------------------------------------------------------------------------------------------# Input parameters#--------------------------------------------------------------------------------------------------------------param(    [string]$Path = $(throw "-Path is required.") # Directory path where GPPs are located. )#---------------------------------------------------------------------------------------------------------------$isGPModuleAvailable = $false$impactedPrefs = { "Groups.xml", "ScheduledTasks.xml","Services.xml", "DataSources.xml", "Drives.xml" }#----------------------------------------------------------------------------------------------------------------# import Group olicy module if available#----------------------------------------------------------------------------------------------------------------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 tree paths    $commonPath = " -> Preferences -> Control Panel Settings -> "    $driveMapPath = " -> Preferences -> Windows Settings -> "        # Recursively obtain all the xml files within the SYVOL location    $impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" | Where-Object { $impactedPrefs -cmatch $_.Name }            # Each xml file contains multiple preferences. Iterate through each preference to check whether it    # contains cpassword attribute and display it.    foreach ( $file in $impactedXmls )    {        $fileFullPath = $file.FullName                # Set GPP category. If file is located under Machine folder in SYSVOL        # the setting is defined under computer configuration otherwise the         # setting is a to user configuration          if ( $fileFullPath.Contains("Machine") )        {            $category = "Computer Configuration"        }        elseif ( $fileFullPath.Contains("User") )        {            $category = "User Configuration"        }        else        {            $category = "Unknown"        }        # Obtain file content as 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 { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Local Users"            }            ScheduledTasks            {                $gppWithCpassword  = $xmlFile.SelectNodes("ScheduledTasks/*") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Scheduled Tasks"            }            DataSources            {                $gppWithCpassword = $xmlFile.SelectNodes("DataSources/DataSource") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Data sources"            }            Drives            {                $gppWithCpassword = $xmlFile.SelectNodes("Drives/Drive") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Drive Maps"            }            Services            {                $gppWithCpassword = $xmlFile.SelectNodes("NTServices/NTService") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Services"            }            default            {   # clear gppWithCpassword and preferenceType for next item.                try                {                    Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue                    Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue                }                catch [Exception]{}            }        }        if ($gppWithCpassword -ne $null)        {            # Build GPO name from GUID extracted from 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                }            }            # display prefrences that contain cpassword            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#-----------------------------------------------------------------------------------# Check whether Path is valid. Enumerate all settings that contain 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, рекомендуется использовать консоль управления групповой политикой (GPMC) на контроллере домена или от клиента, имеющего средства удаленного администрирования сервера установлен. Можно удалить все настройки в пять шагов на этих консолей. Чтобы сделать это, выполните следующие действия.
  1. Откройте в консоли управления групповыми Политиками, предпочтения, содержащий данные CPassword.
  2. Измените действие для удаления или отключения, как применимое предпочтения.
  3. Нажмите кнопку ОК , чтобы сохранить изменения.
  4. Подождите, для одного или двух циклов обновления групповой политики Разрешить изменения распространяются на клиентов.
  5. После изменения применяются на всех клиентах, удалите предпочтения.
  6. Повторите шаги с 1 по 5 для очистки всей среды. Если сценарий возвращает нулевой результат, не требуется.

Сведения о хэше файлов

Имя файлаХэш SHA1Хэш SHA256
Веб KB2928120-ia64.msuB2A74305CB56191774BFCF9FCDEAA983B26DC9A6DCE8C0F9CEB97DBF1F7B9BAF76458B3770EF01C0EDC581621BC8C3B2C7FD14E7
Веб KB2928120-x64.msu386457497682A2FB80BC93346D85A9C1BC38FBF71AF67EB12614F37F4AC327E7B5767AFA085FE676F6E81F0CED95D20393A1D38D
Веб KB2928120-x86.msu42FF283781CEC9CE34EBF459CA1EFE011D5132C3016D7E9DBBC5E487E397BE0147B590CFBBB5E83795B997894870EC10171E16D4
Windows6.1-KB2928120-ia64.msu5C2196832EC94B99AAF9B074D3938525B72196909958FA58134F55487521243AD9740BEE0AC210AC290D45C8322E424B3E5EBF16
Windows6.1-KB2928120-x64.msuEA5332F4E289DC799611EAB8E3EE2E86B7880A4B417A2BA34F8FD367556812197E2395ED40D8B394F9224CDCBE8AB3939795EC2A
Windows6.1-KB2928120-x86.msu7B7B6EE24CD8BE1AB3479F9E1CF9C98982C8BAB1603206D44815EF2DC262016ED13D6569BE13D06E2C6029FB22621027788B8095
Windows8-RT-KB2928120-x64.msuE18FC05B4CCA0E195E62FF0AE534BA39511A8593FCAED97BF1D61F60802D397350380FADED71AED64435D3E9EAA4C0468D80141E
Windows8-RT-KB2928120-x86.msuA5DFB34F3B9EAD9FA78C67DFC7ACACFA2FBEAC0B7F00A72D8A15EB2CA70F7146A8014E39A71CFF5E39596F379ACD883239DABD41
Windows8.1-KB2928120-x64.msuA07FF14EED24F3241D508C50E869540915134BB46641B1A9C95A7E4F0D5A247B9F488887AC94550B7F1D7B1198D5BCBA92F7A753
Windows8.1-KB2928120-x86.msuDE84667EC79CBA2006892452660EB99580D27306468EE4FA3A22DDE61D85FD3A9D0583F504105DF2F8256539051BC0B1EB713E9C
Windows8.1-KB2961899-x64.msu10BAE807DB158978BCD5D8A7862BC6B3EF20038BEC26618E23D9278FC1F02CA1F13BB289E1C6C4E0C8DA5D22E1D9CDA0DA8AFF51
Windows8.1-KB2961899-x86.msu230C64447CC6E4AB3AD7B4D4655B8D8CEFBFBE98E3FAD567AB6CA616E42873D3623A777185BE061232B952938A8846A974FFA7AF
обновление исправление_безопасности обновление_для_системы_безопасности безопасность ошибка брешь уязвимость вредоносный злоумышленник воспользоваться реестр непроверенный буфер переполнение специально сформированный область отказ в обслуживании DoS TSE

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 2962486 — последний просмотр: 10/02/2015 00:07:00 — редакция: 5.0

Windows RT 8.1, Windows 8.1, Windows 8.1 Enterprise, Windows 8.1 Pro, Windows Server 2012 R2 Datacenter, Windows Server 2012 R2 Essentials, Windows Server 2012 R2 Foundation, Windows Server 2012 R2 Standard, Windows 8, Windows 8 Enterprise, Windows 8 Pro, Windows Server 2012 Datacenter, Windows Server 2012 Essentials, Windows Server 2012 Foundation, Windows Server 2012 Standard, Windows 7 Service Pack 1, Windows Server 2008 R2 Service Pack 1, Windows Server 2008 Service Pack 2, Service Pack 2 для Windows Vista

  • atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability kbmt KB2962486 KbMtru
Отзывы и предложения