Sign in with Microsoft
New to Microsoft? Create an account.

INTRODUCTION

A Microsoft lançou o boletim de segurança MS14-025. Para saber mais sobre este boletim de segurança:

Como obter ajuda e suporte para esta atualização de segurança


Ajuda ao instalar atualizações:
Suporte para o Microsoft Update

Soluções de segurança para profissionais de TI:
Suporte e solução de problemas de segurança do TechNet

Ajude a proteger seu computador baseado em Windows contra vírus e malware:
Centro de Segurança e Solução de Vírus

Suporte local de acordo com seu país:
Suporte Internacional

Mais Informações

Problemas conhecidos e mais informações sobre esta atualização de segurança

Os artigos a seguir contêm mais informações sobre esta atualização de segurança pois se relaciona com versões de produto individuais. Os artigos podem conter informações sobre problemas conhecidos. Se esse for o caso, o problema conhecido estará listado abaixo de cada link de artigo.

  • 2928120



    MS14-025: Descrição da atualização de segurança das Ferramentas de Administração do Servidor Remoto do Windows para sistemas que têm a atualização 2919355 instalada: 13 de maio de 2014

  • 2961899

    MS14-025: Descrição da atualização de segurança das Ferramentas de Administração do Servidor Remoto do Windows para sistemas que não têm a atualização 2919355 instalada: 13 de maio de 2014

Preferências da Diretiva de Grupo

Visão Geral


Algumas preferências da Política de Grupo podem armazenar uma senha. Essa funcionalidade está sendo removida porque a senha foi armazenada sem proteção. Este artigo descreve as alterações na interface do usuário e as soluções alternativas disponíveis.

As seguintes preferências da Política de Grupo não permitirão mais que os nomes de usuário e senhas sejam salvos:

  • Mapas de unidade

  • Usuários e grupos locais

  • Tarefas agendadas

  • Serviços

  • Fontes de dados

Isto afetará o comportamento de qualquer Objetos de Política de Grupo (GPOs) em seu ambiente que dependa de senhas que estiverm contidas nestas preferências. Também impedirá a criação de novas preferências de Política de Grupo usando essa funcionalidade.

Para Mapas de unidade, Grupos de usuários locais e Serviços, você talvez possa alcançar objetivos semelhantes por meio de outra funcionalidade mais segura do Windows.

Para Tarefas agendadas e Fontes de dados, você não poderá alcançar os mesmos objetivos que estavam disponíveis por meio da funcionalidade não segura das senhas da preferências da Política de Grupo.

Cenários

As seguintes preferências de Política de Grupo são afetadas por essa alteração. Cada preferência é abordada rapidamente e, em seguida, em mais detalhes. Além disso, as soluções alternativas são fornecidas para permitir que você realize as mesmas tarefas.

Preferência afetada

Aplica-se ao usuário

Aplica-se ao computador

Gerenciamento de usuários locais

Sim

Sim

Unidades mapeadas

Sim

Não

Serviços

Não

Sim

Tarefas agendadas (nível superior)

Sim

Sim

Tarefas agendadas (nível inferior)

Sim

Sim

Tarefas imediatas (nível superior)

Sim

Sim

Tarefas imediatas (nível inferior)

Sim

Sim

Fontes de dados

Sim

Sim

Resumo das alterações

  • Campos de senha em todas as preferências afetadas estão desabilitados. Os administradores não podem criar novas preferências usando esses campos de senha.

  • O campo de nome de usuário está desabilitado em algumas preferências.

  • As preferências existentes que contenham uma senha não podem ser atualizadas. Elas só podem ser excluídas ou desabilitadas, conforme apropriado para a preferência específica.

  • O comportamento para ações Excluir e Desabilitar não mudaram para as preferências.

  • Quando um administrador abre qualquer preferência que contém o atributo CPassword, o administrador recebe a seguinte caixa de diálogo para informá-lo da substituição recente. As tentativas de salvar alterações às preferências novas ou existentes que necessitam de um atributo CPassword disparará a mesma caixa de diálogo. Apenas as ações Excluir e Desabilitar não dispararão caixas de diálogo de aviso.






Cenário 1: Gerenciamento de usuários locais


A preferência de Gerenciamento de usuários locais é usada com frequência para criar administradores locais que têm uma senha conhecida em um computador. Esse recurso não é seguro devido ao modo como as preferências de Política de Grupo armazena as senhas. Portanto, essa funcionalidade não está mais disponível. As seguintes preferência foram afetadas:

  • Configuração do Computador -> Configurações do Painel de Controle -> Grupos de usuários locais-> Novo-> Usuário local

  • Configuração do usuário -> Configurações do Painel de Controle -> Grupos de usuários locais-> Novo-> Usuário local

Alterações importantes

Ação: Criar ou Substituir

  • Os campos Nome de usuário, Senha e Confirmar senha estão desabilitados.

  • A caixa de diálogo de aviso aparece quando o administrador abre ou tenta salvar qualquer alteração para uma preferência existente que contém uma senha.





Ação: Atualizar

  • Os campos Senha e Confirmar senha estão desabilitados.

  • A caixa de diálogo de aviso aparece quando o administrador abre ou tenta salvar qualquer alteração para uma preferência existente que contém uma senha.





Ação: Excluir

  • Nenhuma alteração no comportamento

Soluções alternativas


Para aqueles que antes dependiam da preferência da Política de grupo para definir senhas de administrador local, o script a seguir é fornecido como uma alternativa segura ao CPassword. Copie e salve o conteúdo em um novo arquivo do Windows PowerShell e depois execute o script conforme indicado na seção .EXAMPLE.

A Microsoft fornece exemplos de programação apenas por questões ilustrativas, sem garantias expressas ou implícitas. Isso inclui (mas não está limitado a) garantias implícitas de comercialização ou adequação a um determinado propósito. Este artigo pressupõe que você conhece a linguagem de programação demonstrada e também as ferramentas usadas para criar e depurar procedimentos. Os engenheiros de suporte da Microsoft podem ajudá-lo, fornecendo a explicação da funcionalidade de um determinado procedimento. Entretanto, eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou criar procedimentos específicos para atender às suas necessidades específicas.


function Invoke-PasswordRoll
{
<#
.SYNOPSIS

Esse script pode ser usado para definir as senhas de conta local em máquinas remotas para senhas aleatórias. A combinação de nome de usuário/senha/servidor será salva em um arquivo CSV.
As senhas da conta armazenadas no arquivo CSV podem ser criptografadas usando uma senha de administradores que optaram por assegurar que as senhas de conta não criptografadas não sejam gravadas no disco.
As senhas criptografadas podem ser descriptografadas usando outra função neste arquivo: ConvertTo-CleartextPassword


Função: Invoke-PasswordRoll
Autor: Microsoft
Versão: 1.0

.DESCRIÇÃO

Esse script pode ser usado para definir as senhas de conta local em máquinas remotas para senhas aleatórias. A combinação de nome de usuário/senha/servidor será salva em um arquivo CSV.
As senhas da conta armazenadas no arquivo CSV podem ser criptografadas usando uma senha de administradores que optaram por assegurar que as senhas de conta não criptografadas não sejam gravadas no disco.
As senhas criptografadas podem ser descriptografadas usando outra função neste arquivo: ConvertTo-CleartextPassword

.PARÂMETRO ComputerName

Uma matriz de computadores para executar o script usando a comunicação remota do PowerShell.

.PARÂMETRO LocalAccounts

Uma matriz de contas locais cujas senhas devem ser alteradas.

.PARÂMETRO TsvFileName

O arquivo para inserir as combinações de senha/nome de usuário/servidor.

.PARÂMETRO EncryptionKey

Uma senha para criptografar o arquivo TSV. Usa a criptografia AES. Somente as senhas armazenadas no arquivo TSV serão criptografadas, o nome do usuário e o nome do servidor não serão criptografados.

.PARÂMETRO PasswordLength

O comprimento das senhas que serão geradas aleatoriamente para contas locais.

.PARÂMETRO NoEncryption

Não criptografe as senhas de conta armazenadas no arquivo TSV. Isso resultará em senhas de texto não criptografado sendo gravadas no disco.

.EXEMPLO

. .\Invoke-PasswordRoll.ps1 #Carrega as funções no arquivo de script
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator","CustomLocalAdmin") -TsvFileName "LocalAdminCredentials.tsv" -EncryptionKey "Password1"

Conecta-se a todos os computadores armazenados no arquivo "computerlist.txt". Se a conta local "administrador" e/ou "CustomLocalAdmin" estão presentes no sistema, a senha é alterada
para uma senha gerada aleatoriamente de comprimento 20 (o padrão). As combinações de nome de usuário/senha/servidor são armazenadas em LocalAdminCredentials.tsv e as senhas de conta são criptografadas usando o AES com a senha "Senha1".

.EXEMPLO

. .\Invoke-PasswordRoll.ps1 #Carrega as funções no arquivo de script
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40

Conecta-se a todos os computadores armazenados no arquivo "computerlist.txt". Se a conta local "administrador" está presente no sistema, a senha é alterada para uma gerada aleatoriamente,
de comprimento 40. As combinações de senha/nome de usuário/servidor são armazenadas em LocalAdminCredentials.tsv sem criptografia.

.OBSERVAÇÕES
Requisitos:
-PowerShellv2 ou superior deve ser instalado
-Conexão remota do PowerShell deve ser habilitada em todos os sistemas em que o script será executado

Comportamento de script:
-Se uma conta local está presente no sistema, mas não está especificada no parâmetro LocalAccounts, o script gravará um aviso na tela para alertar você da presença desta conta local. O script continuará executando quando isso acontece.
-Se uma conta local é especificada no parâmetro LocalAccounts, mas a conta não existe no computador, nada acontecerá (uma conta NÃO será criada).
-A função ConvertTo-CleartextPassword, contida neste arquivo, pode ser usada para descriptografar senhas que são armazenadas criptografadas no arquivo TSV.
-Se um servidor especificado no ComputerName não pode ser conectado, o PowerShell irá gerar uma mensagem de erro.
-A Microsoft aconselha as empresas para reverter regularmente todas as senhas de contas locais e de domínio.

#>
[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
)


#Carregar qualquer classe .net necessária
Add-Type -AssemblyName "System.Web" -ErrorAction Stop


#Este é o scriptblock que será executado em todos os computadores especificados em ComputerName
$RemoteRollScript = {
Param(
[Parameter(Mandatory=$true, Position=1)]
[String[]]
$Passwords,

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

#Isto está aqui para que eu possa registrar qual o nome do servidor que no qual o script estava conectado, às vezes os registros DNS causam problemas, pode ser bom ter isso.
[Parameter(Mandatory=$true, Position=3)]
[String]
$TargettedServerName
)

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

#Verifique se o computador tem qualquer conta de usuário local cujas senhas não serão revertidas por este script.
foreach ($User in $LocalUsers)
{
if ($LocalAccounts -inotcontains $User)
{
Write-Warning "Servidor: '$($TargettedServerName)' possui uma conta local '$($User)' cuja senha NÃO está sendo alterada por este script"
}
}

#For cada conta local especificada que existe no servidor, altere a senha
$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 "Erro ao alterar senha para o usuário:$($LocalAdmin) no servidor:$($TargettedServerName)"
}
}

$PasswordIndex++
}
}


#Gere a senha no cliente que está executando esse script, não no computador remoto. O System.Web.Security não está disponível no perfil de Cliente .NET. Fazer esta chamada
# no cliente que está executando o script garante que somente o computador 1 precisa de um tempo de execução .NET completo instalado (ao contrário de todos os sistemas que têm a senha revertida).
function Create-RandomPassword
{
Param(
[Parameter(Mandatory=$true)]
[ValidateRange(20,120)]
[Int]
$PasswordLength
)

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

#Isto não deveria falhar nunca, mas eu estou colocando uma verificação de integridade aqui mesmo assim
if ($Password.Length -ne $PasswordLength)
{
throw new Exception("Senha retornada por GeneratePassword não tem o comprimento exigido. Comprimento exigido: $($PasswordLength). Comprimento gerado: $($Password.Length)")
}

return $Password
}


#Funcionalidade principal - Gere uma senha e faça uma comunicação remota com as máquinas para alterar a senha de contas locais especificadas.
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 "Erro ao criar chave de criptografia TSV" -ErrorAction Stop
}
}

foreach ($Computer in $ComputerName)
{
#Necessidade de gerar 1 senha para cada conta que pode ser alterada
$Passwords = @()
for ($i = 0; $i -lt $LocalAccounts.Length; $i++)
{
$Passwords += Create-RandomPassword -PasswordLength $PasswordLength
}

Write-Output "Conectando-se ao servidor '$($Computer)' para reverter as senhas de administrador local especificado"
$Result = Invoke-Command -ScriptBlock $RemoteRollScript -ArgumentList @($Passwords, $LocalAccounts, $Computer) -ComputerName $Computer
#Se a criptografia estiver sendo usada, criptografar a senha com a chave antes de gravar no disco
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
{
<#
.SYNOPSIS
Esta função pode ser usada para descriptografar as senhas que foram armazenadas criptografadas pela função Invoke-PasswordRoll.

Função: ConvertTo-CleartextPassword
Autor: Microsoft
Versão: 1.0

.DESCRIÇÃO
Esta função pode ser usada para descriptografar as senhas que foram armazenadas criptografadas pela função Invoke-PasswordRoll.


.PARÂMETRO EncryptedPassword

A senha criptografada armazenada em um arquivo TSV.

.PARÂMETRO EncryptionKey

A senha usada para fazer a criptografia.


.EXEMPLO

. .\Invoke-PasswordRoll.ps1 #Carrega as funções no arquivo de script
ConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAGIAMABiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"

Descriptografa a senha criptografada que foi armazenada no arquivo 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)))
}
  Os administradores podem adicionar contas de administrador local aos computadores criando um grupo do Active Directory e adicionando-o ao grupo de administradores locais por meio das preferências da Política de Grupo -> Grupo local. Esta ação não armazena em cache as credenciais. A caixa de diálogo é semelhante a seguinte. Esta solução alternativa necessita de uma conexão dos Serviços de Domínio do Active Directory quando o usuário está conectado usando estas credenciais.





Cenário 2: Unidades mapeadas

Os administradores usam mapas de unidade para alocar locais de rede para os usuários. O recurso de proteção de senha é usado para certificar-se de acesso autorizado à unidade. As seguintes preferências foram afetadas:

  • Configuração do usuário -> Configurações do Windows -> Mapas de unidade -> Novo -> Unidade mapeada

Alterações importantes

Ação: Criar, Atualizar ou Substituir

  • Os campos Nome de usuário, Senha e Confirmar senha estão desabilitados.




Ação: Excluir

  • Nenhuma alteração no comportamento

Soluções alternativas


Em vez de usar o método de senha para a autenticação, você pode usar o Windows Explorer para gerenciar permissões de compartilhamento e alocar direitos aos usuários. Você pode usar os objetos do Active Directory para controlar as permissões para a pasta.


Cenário 3: Serviços

Você pode usar a preferência de Serviços para alterar as propriedades do serviço de tal maneira que sejam executadas em um outro contexto além do contexto de segurança original. As seguintes preferências foram afetadas:

  • Configurações do Computador -> Configurações do Painel de Controle -> Serviços -> Novo -> Serviço

Alterações importantes

Inicialização: Sem alteração, automático ou manual

  • Os campos Senha e Confirmar senha estão desabilitados.

  • O administrador pode usar contas internas.




Inicialização: Desabilitado

  • Nenhuma alteração no comportamento

Caixa de diálogo Novo

  • Os administradores que tentam usar usuários não internos para esta conta" recebem o seguinte aviso:





Soluções alternativas




Os Serviços ainda podem ser executados como uma conta de sistema local. As permissões de serviço podem ser alteradas conforme documentado no seguinte artigo da Base de Dados de Conhecimento da Microsoft:

256345 Como definir as configurações da Política de Grupo para definir segurança para serviços do sistema

Observação Se o serviço que deseja configurar não está presente, você deve definir as configurações em um computador que tem o serviço executando. 


Cenário 4: Tarefas agendadas e imediatas (nívelsuperior)

Estas são usadas para executar as tarefas agendadas em um contexto de segurança específico. A capacidade de armazenar credenciais para as tarefas agendadas serem executadas como usuário arbitrário quando aquele usuário não está conectado não está mais disponível. As seguintes preferências foram afetadas. (Lembre-se que em algumas plataformas, "Pelo menos Windows 7" é substituído por "Windows Vista e versões posteriores.")

  • Configuração do Computador -> Configurações do Painel de Controle -> Tarefas agendadas -> Novo -> Tarefa agendada (Pelo menos Windows 7)

  • Configuração do Computador -> Configurações do Painel de Controle -> Tarefas agendadas -> Novo -> Tarefa imediata (Pelo menos Windows 7)

  • Configuração do usuário -> Configurações do Painel de Controle -> Tarefas agendadas -> Novo -> Tarefa agendada (Pelo menos Windows 7)

  • Configuração do usuário -> Configurações do Painel de Controle -> Tarefas agendadas -> Novo -> Tarefa imediata (Pelo menos Windows 7)

Alterações importantes

Ação: Criar, Atualizar ou Substituir

  • Quando você seleciona a opção Executar estando o usuário conectado ou não, uma caixa de diálogo não solicita mais as credenciais para administrador.

  • A caixa de seleção Não armazenar senha está desabilitada. Por padrão, a caixa também está marcada.




Ação: Excluir

Nenhuma alteração no comportamento

Soluções alternativas


Para as tarefas "Tarefa agendada (pelo menos Windows 7)" e "Tarefa imediata (pelo menos Windows 7)", os administradores podem usar contas de usuário específicas quando determinado usuário está conectado. Ou, eles só podem ter acesso aos recursos locais que aquele usuário. Estas tarefas ainda podem ainda ser executadas no contexto do serviço local.



Cenário 5: Tarefas agendadas e imediatas (nível inferior) Esta é a versão de nível inferior das preferências usadas para executar as Tarefas agendadas em um modelo de segurança específico. A capacidade de armazenar credenciais para as tarefas agendadas serem executadas como usuário arbitrário quando aquele usuário não está conectado não está mais disponível. As seguintes preferências foram afetadas:

  • Configuração do Computador -> Configurações do Painel de Controle -> Tarefas agendadas -> Novo -> Tarefa agendada

  • Configuração do Computador -> Configurações do Painel de Controle -> Tarefas agendadas -> Novo -> Tarefa imediata (Windows XP)

  • Configuração do usuário -> Configurações do Painel de Controle -> Tarefas agendadas -> Novo -> Tarefa agendada

  • Configuração do usuário -> Configurações do Painel de Controle -> Tarefas agendadas -> Novo -> Tarefa imediata (Windows XP)

Alterações importantes

Ação: Criar, Atualizar ou Substituir

  • A caixa de seleção Executar como está desabilitada. No entanto, os campos Nome de usuário, Senha e Confirmar senha estão todos desabilitados.




Ação: Excluir

Nenhuma alteração no comportamento

Soluções alternativas


Para os itens "Tarefa agendada" e "Tarefa imediata (Windows XP)" , as tarefas agendadas são executadas usando as permissões que estão atualmente disponíveis para o serviço local.


Cenário 6: Fontes de dados

A preferência Fonte de dados é usada para associar uma fonte de dado a um computador ou usuário. Esse recurso não armazena credenciais para permitir o acesso a fontes de dados que são protegidas por uma senha. As seguintes preferências foram afetadas:

  • Configuração do Computer -> Configurações do Painel de Controle -> Fontes de dados

  • Configuração do usuário -> Configurações do Painel de Controle -> Fontes de dados

Alterações importantes


Ação: Criar, Atualizar ou Substituir

  • Os campos Nome de usuário, Senha e Confirmar senha estão desabilitados:




Ação: Excluir

  • Nenhuma alteração no comportamento

Soluções alternativas


Nenhuma solução alternativa está disponível. Esta preferência não armazena mais credenciais para permitir o acesso a fontes de dados que são protegidas por uma senha.


Substituição do CPassword

Removendo o CPassword

O script do Windows PowerShell que está incluído neste artigo da Base de Dados de Conhecimento da Microsoft detecta se um domínio contém qualquer preferência da Política de Grupo que pode usar o CPassword. Se o CPassword XML for detectado em uma dada preferência, ele será exibido na lista.


Detectando preferências do CPassword


Este script deve ser executado a partir de um diretório local do controlador de domínio que você deseja limpar. Copie e salve o conteúdo em um novo arquivo do Windows PowerShell, determine sua unidade do sistema e depois execute o script conforme indicado no seguinte uso.

<#
.SYNOPSIS
Os objetos da Política de Grupo em seu domínio podem ter preferências que armazenam senhas para diferentes tarefas, como a seguinte:
1. Fontes de dados
2. Mapas de unidade
3. Usuários locais
4. Tarefas agendadas (XP e nível superior)
5. Serviços
Estas senhas são armazenadas no SYSVOL como parte das preferências da Política de Grupo e não estão seguras devido a criptografia fraca (AES de 32 bytes).
No entanto, recomendamos que você não implante tais preferências em seu ambiente de domínio e remova qualquer
preferência existente. Esse script é para ajudar o administrador a encontrar as preferências de Política de Grupo no SYSVOL do domínio que contém senhas.

.DESCRIÇÃO
Este script deve ser executado em um DC ou um computador cliente que é instalado com o RSAT para imprimir todas as preferências que contêm
senha com informações como GPO, Nome de preferência, caminho GPEdit sob as quais essa preferência é definida.
Depois de você ter uma lista das preferências afetadas, estas preferências podem ser removidas usando o editor no Console de Gerenciamento da Política de Grupo.

.SINTAXE
Get-SettingsWithCPassword.ps1 [-Path <String>]
.EXEMPLO
Get-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domain
Get-SettingsWithCPassword.ps1 -Path <Caminho da pasta de Backup de GPO>

.OBSERVAÇÕES
Se o módulo do PS da Política de Grupo não encontrou a saída que conterá os GUIDs do GPO em vez de nomes do GPO. Você pode executar
este script em um controlador de domínio ou executar novamente o script no cliente após instalar o RSAT e
ativar o módulo de Política de Grupo.
Ou, você pode usar os GUIDs do GPO para obter os nomes do GPO usando o cmdlet Get-GPO.

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

#>
#----------------------------------------------------------------------------------------------------------------
# Parâmetros de entrada
#--------------------------------------------------------------------------------------------------------------
param(
[string]$Path = $(throw "-Path is required.") # Caminho do diretório onde estão localizadas as GPPs.
)
#---------------------------------------------------------------------------------------------------------------
$isGPModuleAvailable = $false
$impactedPrefs = { "Groups.xml", "ScheduledTasks.xml","Services.xml", "DataSources.xml", "Drives.xml" }
#----------------------------------------------------------------------------------------------------------------
# importar o módulo da política de grupo, se disponível
#----------------------------------------------------------------------------------------------------------------
if (-not (Get-Module -name "GroupPolicy"))
{
if (Get-Module -ListAvailable |
Where-Object { $_.Name -ieq "GroupPolicy" })
{
$isGPModuleAvailable = $true
Import-Module "GroupPolicy"
}
else
{
Write-Warning "Não é possível importar o módulo da política de grupo para o PowerShell. Portanto, os guids do GPO serão relatados.
Execute este script no DC para obter os nomes do GPO, ou use o cmdlet Get-GPO (no DC) para obter o nome do GPO do guid do GPO."
}
}
else
{
$isGPModuleAvailable = $true
}
Function Enum-SettingsWithCpassword ( [string]$sysvolLocation )
{
# GPMC tree paths
$commonPath = " -> Preferences -> Control Panel Settings -> "
$driveMapPath = " -> Preferences -> Windows Settings -> "

# Obter recursivamente todos os arquivos xml no local SYVOL
$impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" | Where-Object { $impactedPrefs -cmatch $_.Name }


# Cada arquivo xml contém várias preferências. Percorrer cada preferência para verificar se ela
# contém o atributo cpassword e exiba-o.
foreach ( $file in $impactedXmls )
{
$fileFullPath = $file.FullName

# Definir a categoria GPP. Se o arquivo está localizado na pasta da máquina em SYSVOL
# a configuração está definida em configuração do computador, caso contrário a
# configuração é uma configuração de usuário
if ( $fileFullPath.Contains("Machine") )
{
$category = "Computer Configuration"
}
elseif ( $fileFullPath.Contains("User") )
{
$category = "User Configuration"
}
else
{
$category = "Unknown"
}
# Obter o conteúdo do arquivo como 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
{ # limpar gppWithCpassword e preferenceType para o próximo item.
try
{
Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue
Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue
}
catch [Exception]{}
}
}
if ($gppWithCpassword -ne $null)
{
# Criar o nome do GPO do GUID extraído do Caminho do arquivo
$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
}
}
# exibir preferências que contém o 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
}
} # finalizar se $gppWithCpassword
} # finalizar foreach $file
} # finalizar funções Enum-PoliciesWithCpassword
#-----------------------------------------------------------------------------------
# Verifique se o caminho é válido. Enumere todas as configurações que contêm o cpassword.
#-----------------------------------------------------------------------------------
if (Test-Path $Path )
{
Enum-SettingsWithCpassword $Path
}
else
{
Write-Warning "Diretório inexistente: $Path"
}


Exemplo de uso (supõe-se que a unidade do sistema é C)

.\Get-SettingsWithCPassword.ps1 –path “C:\Windows\SYSVOL\domain” | Format-List
Observação Esteja ciente de que você também pode direcionar qualquer GPO de backup para o caminho ao invés do domínio.

O script de detecção gera uma lista semelhante à seguinte:



Para as listas maiores, considere a possibilidade de salvar a saída em um arquivo:

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

Removendo as preferências do CPassword

Para remover as preferências que contém os dados do CPassword, sugerimos que você use o Console de Gerenciamento da Política de Grupo (GPMC) no controlador de domínio ou de um cliente que tem as Ferramentas de Administração do Servidor Remoto instaladas. Você pode remover qualquer preferência em cinco etapas nestes consoles. Para fazer isso, execute as seguintes etapas:

  1. No GPMC, abra a preferência que contém dados do CPassword.

  2. Alterar a ação para Excluir ou Desabilitar, conforme aplicável, para a preferência.

  3. Clique em OK para salvar as alterações.

  4. Aguarde um ou dois ciclos de atualização da Política de Grupo para permitir que as alterações sejam propagadas para os clientes.

  5. Depois que as alterações são aplicadas em todos os clientes, exclua a preferência.

  6. Repita as etapas 1 a 5 conforme necessário para limpar o ambiente inteiro. Quando o script de detecção não retorna resultados, você terá concluído.

Nome do arquivo

Hash SHA1

Hash SHA256

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


Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?

Obrigado pelos seus comentários!

×