Iniciar sesión con Microsoft
Iniciar sesión o crear una cuenta
Hola:
Seleccione una cuenta diferente.
Tiene varias cuentas
Elija la cuenta con la que desea iniciar sesión.

INTRODUCCIÓN

Microsoft ha publicado el boletín de seguridad MS14-025. Para obtener más información acerca de este boletín de seguridad:

Obtención de ayuda y asistencia para esta actualización de seguridad


Ayuda para la instalación de actualizaciones:
Soporte técnico de Microsoft Update

Soluciones de seguridad para profesionales de TI:
Soporte técnico y solución de problemas de TechNet Security

Ayuda para la protección de su equipo basado en Windows frente a virus y malware:
Centro de seguridad y soluciones para virus

Soporte local según el país:
Soporte internacional

Más información

Problemas conocidos e información adicional acerca de esta actualización de seguridad

En los siguientes artículos podrá encontrar más información sobre esta actualización de seguridad relacionada con las versiones de productos individuales. Los artículos pueden contener información sobre problemas conocidos. De ser así, el problema conocido aparece debajo del vínculo de cada artículo.

  • 2928120



    MS14-025: Descripción de la actualización de seguridad para herramientas de administración de servidor remoto de Windows para sistemas que tienen la actualización 2919355 instalada: 13-05-14

  • 2961899

    MS14-025: Descripción de la actualización de seguridad para herramientas de administración de servidor remoto de Windows para sistemas que no tienen la actualización 2919355 instalada: 13-05-14

Preferencias de directivas de grupo

Descripción general


Algunas de las preferencias de directivas de grupo pueden almacenar una contraseña. Esta función se está quitando porque la contraseña no se ha almacenado de forma segura. Este artículo describe los cambios de la interfaz de usuario y las soluciones alternativas disponibles.

Los nombres de usuario y las contraseñas que se guarden ya no permitirá las siguientes preferencias de directivas de grupo:

  • Asignaciones de unidades

  • Usuarios locales y grupos

  • Tareas programadas

  • Servicios

  • Orígenes de datos

Esto afectará al comportamiento de cualquier objeto de directivas de grupo (GPO) en su entorno que confíe en contraseñas contenidas en estas preferencias. También evitará la creación de nuevas preferencias de directivas de grupo con esta función.

Para Asignaciones de unidades, Usuarios locales y Grupos, y Servicios, puede conseguir objetivos similares a través de otras funciones más seguras en Windows.

Para Tareas programadas y Orígenes de datos, no podrá conseguir los mismos objetivos que estaban disponibles a través de la función no segura de las contraseñas de preferencias de directivas de grupo.

Escenarios

Las siguientes preferencias de directivas de grupo se ven afectadas por este cambio. Cada preferencia se trata brevemente y, a continuación, en más detalle. Además, las soluciones alternativas que se ofrecen siempre le permiten realizar las mismas tareas.

Preferencia afectada

Se aplica al usuario

Se aplica al equipo

Administración de usuarios locales

Unidades asignadas

No

Servicios

No

Tareas programadas (nivel superior)

Tareas programadas (nivel inferior)

Tareas inmediatas (nivel superior)

Tareas inmediatas (nivel inferior)

Orígenes de datos

Resumen de cambios

  • Los campos de contraseña en todas las preferencias afectadas están desactivados. Los administradores no pueden crear nuevas preferencias mediante el uso de estos campos de contraseña.

  • El campo nombre de usuario está deshabilitado en algunas preferencias.

  • No se pueden actualizar preferencias existentes que contengan una contraseña. Sólo pueden ser eliminadas o deshabilitadas, según la preferencia específica.

  • El comportamiento para desactivar y eliminar acciones no han cambiado para las preferencias.

  • Cuando un administrador abre cualquier preferencia que contenga el atributo CPassword, el administrador visualiza el siguiente cuadro de diálogo de advertencia para informarle de la degradación reciente. Los intentos de guardar los cambios en preferencias nuevas o existentes que necesiten el atributo CPassword activarán el mismo cuadro de diálogo. Solo eliminar y desactivar acciones no activará los cuadros de diálogo de advertencia.






Situación 1: Administración de usuarios locales


La preferencia de Administración de usuarios locales se utiliza con frecuencia para crear administradores locales que tienen una contraseña conocida en un equipo. Esta característica no es segura debido a la forma en que las preferencias de directivas de grupo almacena las contraseñas. Por lo tanto, esta función no está disponible. Esto afecta a las siguientes preferencias:

  • Configuración del equipo -> - Configuración del Panel de Control> Usuarios locales y grupos -> Nueva> Usuario local

  • Configuración de usuario -> - Configuración del Panel de Control> Usuarios locales y grupos -> Nueva> Usuario Local

Cambios importantes

Acción: Crear o Reemplazar

  • Los campos Nombre de usuario, Contraseña y Confirmar contraseña están deshabilitados.

  • El cuadro de diálogo de advertencia aparece cuando un administrador abre o intenta guardar los cambios en una preferencia existente que contiene una contraseña.





Acción: Actualizar

  • Los campos Contraseña y Confirmar contraseña están deshabilitados.

  • El cuadro de diálogo de advertencia aparece cuando un administrador abre o intenta guardar los cambios en una preferencia existente que contiene una contraseña.





Acción: Eliminar

  • Ningún cambio de comportamiento

Soluciones alternativas


Para aquellos que hayan confiado previamente en la Preferencia de las directivas de grupo para definir contraseñas locales de administrador, se proporciona el siguiente script como alternativa segura a CPassword. Copie y guarde el contenido en un nuevo archivo de Windows PowerShell y después ejecute el script como se indica en su sección .EXAMPLE.

Microsoft proporciona ejemplos de programación únicamente con fines ilustrativos, sin ninguna garantía expresa ni implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. En este artículo se da por supuesto que ya conoce el lenguaje de programación que se muestra, así como las herramientas empleadas para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden ayudar a explicar la función de un procedimiento en particular. Sin embargo, no modificarán estos ejemplos para proporcionar una función adicional o crear procedimientos que cumplan sus requisitos específicos.


function Invoke-PasswordRoll
{
<#
.SYNOPSIS

Este script puede utilizarse para establecer las contraseñas aleatorias de cuentas locales en equipos remotos. La combinación de nombre de usuario/contraseña/servidor se guardarán en un archivo CSV.
Las contraseñas de la cuenta almacenadas en el archivo CSV pueden cifrarse utilizando una contraseña de los administradores eligiendo garantizar que las contraseñas de la cuenta en texto sin cifrar no se escriban en el disco.
Las contraseñas cifradas se pueden descifrar mediante otra función de este archivo: ConvertTo-CleartextPassword


Función: Invoke-PasswordRoll
Autor: Microsoft
Versión: 1.0

.DESCRIPTION

Este script puede utilizarse para establecer las contraseñas aleatorias de cuentas locales en equipos remotos. La combinación de nombre de usuario/contraseña/servidor se guardará en un archivo CSV.
Las contraseñas de la cuenta almacenadas en el archivo CSV pueden cifrarse utilizando una contraseña de los administradores eligiendo garantizar que las contraseñas de la cuenta en texto sin cifrar no se escriban en el disco.
Las contraseñas cifradas se pueden descifrar mediante otra función de este archivo: ConvertTo-CleartextPassword

.PARAMETER ComputerName

Una matriz de equipos para ejecutar el script utilizando comunicación remota de PowerShell.

.PARAMETER LocalAccounts

Matriz de cuentas locales cuya contraseña se deba cambiar.

.PARAMETER TsvFileName

El archivo de salida para las combinaciones de nombre de usuario/contraseña/servidor.

.PARAMETER EncryptionKey

Para cifrar el archivo TSV con una contraseña. Utiliza el cifrado AES. Sólo se cifrarán las contraseñas almacenadas en el archivo TSV, el nombre de usuario y nombre de servidor es texto sin cifrar.

.PARAMETER PasswordLength

La longitud de las contraseñas que se generará aleatoriamente para las cuentas locales.

.PARAMETER NoEncryption

No cifrar las contraseñas de la cuenta almacenadas en el archivo TSV. Esto hará que las contraseñas de texto sin cifrar se escriban en el disco.

.EXAMPLE

. .\Invoke-PasswordRoll.ps1 Carga las funciones de este archivo de script
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator","CustomLocalAdmin") -TsvFileName "LocalAdminCredentials.tsv" -EncryptionKey "Password1"

Se conecta a todos los equipos almacenados en el archivo "computerlist.txt". Si la cuenta local "administrador" y/o "CustomLocalAdmin" están presentes en el sistema, su contraseña se cambia
a una contraseña aleatoria generada de longitud 20 (predeterminada). Las combinaciones de nombre de usuario/contraseña/servidor se almacenan en LocalAdminCredentials.tsv, y las contraseñas de cuenta son cifradas AES con la contraseña "Password1".

.EXAMPLE

. .\Invoke-PasswordRoll.ps1 Carga las funciones de este archivo de script
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40

Se conecta a todos los equipos almacenados en el archivo "computerlist.txt". Si la cuenta local "administrador" está presente en el sistema, su contraseña se cambia a una contraseña aleatoria generada
de longitud 40. Las combinaciones de nombre de usuario/contraseña/servidor se almacenan en LocalAdminCredentials.tsv sin cifrar.

.NOTES
Requisitos:
- Debe instalarse PowerShellv2 o superior
- Debe activarse la función remota de PowerShell en todos los sistemas en los que se ejecutará el script

Comportamiento del script:
-Si existe una cuenta local en el sistema, pero no está especificada en el parámetro LocalAccounts, el script escribirá una advertencia en la pantalla para alertarle de la presencia de esta cuenta local. El script se seguirá ejecutando cuando esto ocurra.
-Si se especifica una cuenta local en el parámetro LocalAccounts, pero la cuenta no existe en el PC, no ocurrirá nada (NO se creará ninguna cuenta).
-La función ConvertTo-CleartextPassword, contenida en este archivo, puede usarse para descifrar contraseñas que se almacenan cifradas en el archivo TSV.
-Si no puede conectarse un servidor especificado en ComputerName, PowerShell generará un mensaje de error.
-Microsoft aconseja a las empresas a cambiar periódicamente todas las contraseñas de cuentas locales y de dominio.

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


Cargar las clases .net necesarias
Add-Type -AssemblyName "System.Web" -ErrorAction Stop


Este es el bloque de script que se ejecutará en todos los equipos especificados en ComputerName
$RemoteRollScript = {
Param(
[Parameter(Mandatory=$true, Position=1)]
[String[]]
$Passwords,

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

Me permite registrar el nombre del servidor al que estaba conectado el script, algunas veces los registros DNS se mezclan y esta característica resulta útil.
[Parameter(Mandatory=$true, Position=3)]
[String]
$TargettedServerName
)

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

Compruebe si el PC tiene cuentas locales de usuario cuyas contraseñas no vayan a ser desplegadas por este script
foreach ($User in $LocalUsers)
{
if ($LocalAccounts -inotcontains $User)
{
Write-Warning "Servidor: '$($TargettedServerName)"tiene una cuenta local"$($User)' cuya cuenta NO se cambiará por este script"
}
}

Para cada cuenta local especificada que existe en este servidor, cambiar la contraseña
$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 al cambiar la contraseña para el usuario:$($LocalAdmin) en el servidor:$($TargettedServerName)"
}
}

$PasswordIndex++
}
}


Generar la contraseña en el cliente que ejecuta este script, no en el equipo remoto. System.Web.Security no está disponible en el perfil del cliente de. NET. La realización de esta llamada
# en el cliente que ejecuta el script garantiza que solo un equipo necesite tener el tiempo de ejecución de .NET completo instalado (a diferencia de los sistemas que despliegan la contraseña).
function Create-RandomPassword
{
Param(
[Parameter(Mandatory=$true)]
[ValidateRange(20,120)]
[Int]
$PasswordLength
)

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

No debe fallar, pero voy a poner una comprobación aquí de todos modos
if ($Password.Length -ne $PasswordLength)
{
throw new Exception("La contraseña devuelta por GeneratePassword no tiene la longitud requerida. Longitud requerida: $($PasswordLength). Longitud generada: $($Password.Length)")
}

return $Password
}


Función principal - Generar una contraseña y establecer comunicación remota con los equipos para cambiar la contraseña de cuentas locales 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 "Error al crear la clave de cifrado de TSV" -ErrorAction Stop
}
}

foreach ($Computer in $ComputerName)
{
Necesidad de generar 1 contraseña para cada cuenta que se podía cambiar
$Passwords = @()
for ($i = 0; $i -lt $LocalAccounts.Length; $i++)
{
$Passwords += Create-RandomPassword -PasswordLength $PasswordLength
}

Write-Output "Conectando con el servidor "$($Computer)" para desplegar las contraseñas de administrador local especificadas"
$Result = Invoke-Command -ScriptBlock $RemoteRollScript -ArgumentList @($Passwords, $LocalAccounts, $Computer) -ComputerName $Computer
Si se utiliza el cifrado, cifrar la contraseña con la clave proporcionada por el usuario antes de escribir en el 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 función puede utilizarse para descifrar contraseñas que se almacenan cifradas por la función PasswordRoll de Invoke.

Función: ConvertTo-CleartextPassword
Autor: Microsoft
Versión: 1.0

.DESCRIPTION
Esta función puede utilizarse para descifrar contraseñas que se almacenan cifradas por la función Invoke-PasswordRoll.


.PARAMETER EncryptedPassword

La contraseña cifrada que se ha almacenado en un archivo TSV.

.PARAMETER EncryptionKey

La contraseña que utiliza para realizar el cifrado.


.EXAMPLE

. .\Invoke-PasswordRoll.ps1 #Carga las funciones de este archivo de script
ConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAGIAMABiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"

Descifra la contraseña cifrada que se ha almacenado en el archivo 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)))
}
Los administradores pueden agregar cuentas locales de administrador a los PC creando un grupo de Active Directory y añadiéndolo al grupo de administradores locales por medio de las Preferencias de directivas de grupo -> Grupo local. Esta acción no almacena las credenciales en caché. El cuadro de diálogo es similar al siguiente. Esta solución alternativa no requiere una conexión a los servicios de dominio de Active Directory cuando el usuario inicia sesión utilizando estas credenciales.





Escenario 2: Unidades asignadas

Los administradores utilizan asignaciones de unidades para asignar ubicaciones de red a los usuarios. La característica de protección de la contraseña se utiliza para asegurar el acceso autorizado a la unidad. Esto afecta a las siguientes preferencias:

  • Configuración de usuario -> Configuración de Windows -> Asignaciones de unidades -> Nueva -> Unidad asignada

Cambios importantes

Acción: Crear, Actualizar o Reemplazar

  • Los campos Nombre de usuario, Contraseña y Confirmar contraseña están deshabilitados.




Acción: Eliminar

  • Ningún cambio de comportamiento

Soluciones alternativas


En lugar de utilizar el método de contraseña para la autenticación, puede utilizar el Explorador de Windows para administrar los permisos compartidos y asignar derechos a los usuarios. Puede utilizar los objetos de Active Directory para controlar los permisos de la carpeta.


Escenario 3: Servicios

Puede usar la preferencia de Servicios para cambiar las propiedades de los servicios de forma que se ejecuten en un contexto, en lugar de en su contexto de seguridad original. Esto afecta a las siguientes preferencias:

  • Configuración del equipo -> Configuración del Panel de Control> Servicios -> Nuevo -> Servicio

Cambios importantes

Inicio: Ningún cambio, Automático o Manual

  • Los campos Contraseña y Confirmar contraseña están deshabilitados.

  • El administrador puede utilizar solo cuentas integradas.




Inicio: Deshabilitar

  • Ningún cambio de comportamiento

Cuadro de diálogo nuevo

  • Los administradores que intenten utilizar usuarios no integrados para esta cuenta recibirán la siguiente advertencia:





Soluciones alternativas




Pueden ejecutar servicios como cuenta de sistema local. Los permisos de servicio pueden modificarse como se indica en el siguiente artículo en Microsoft Knowledge Base:

256345 Cómo configurar directivas de grupo para establecer la seguridad para servicios del sistema

Nota Si el servicio que quiere configurar no existe, debe configurar los ajustes en un PC que tenga este servicio en ejecución.


Escenario 4: Tareas programadas e inmediatas (nivel superior)

Se utilizan para ejecutar las tareas programadas en un contexto de seguridad específico. La posibilidad de almacenar credenciales para tareas programadas para ejecutarlas como un usuario arbitrario cuando el usuario no ha iniciado sesión, ya no está disponible. Esto afecta a las siguientes preferencias: (Tenga en cuenta que en algunas plataformas, "al menos Windows 7" se sustituyen por "Windows Vista y versiones posteriores").

  • Configuración del equipo -> Configuración del Panel de Control -> Tareas programadas -> Nueva-> Tarea programada (al menos Windows 7)

  • Configuración del equipo -> Configuración del Panel de Control -> Tareas programadas -> Nueva-> Tarea inmediata (al menos Windows 7)

  • Configuración del usuario -> Configuración del Panel de Control -> Tareas programadas -> Nueva-> Tarea programada (al menos Windows 7)

  • Configuración del usuario -> Configuración del Panel de Control -> Tareas programadas -> Nueva-> Tarea inmediata (al menos Windows 7)

Cambios importantes

Acción: Crear, Actualizar o Reemplazar

  • Al seleccionar la opción Ejecutar, con independencia de si el usuario ha iniciado sesión, el cuadro de diálogo deja de aparecer para pedir las credenciales al administrador.

  • La casilla de verificación No almacenar contraseña está desactivada. De manera predeterminada, la casilla también está activada.




Acción: Eliminar

Ningún cambio de comportamiento

Soluciones alternativas


Para las tareas "Tarea programada (al menos Windows 7)" y "Tarea inmediata (al menos Windows 7)", los administradores pueden utilizar las cuentas de usuario cuando el usuario ha iniciado sesión. O bien, solo pueden tener acceso a los recursos locales como ese usuario. Estas tareas se pueden ejecutar en el contexto del servicio local.



Situación 5: Tareas programadas y de forma inmediatas (nivel inferior) Se trata de la versión de nivel inferior de las preferencias utilizadas para ejecutar las tareas programadas en un contexto de seguridad específico. La posibilidad de almacenar credenciales para tareas programadas para ejecutarlas como un usuario arbitrario cuando el usuario no ha iniciado sesión, ya no está disponible. Esto afecta a las siguientes preferencias:

  • Configuración del equipo -> Configuración del Panel de Control -> Tareas programadas -> Nueva -> Tarea programada

  • Configuración del equipo -> Configuración del Panel de Control -> Tareas programadas - > Nueva -> Tarea inmediata (Windows XP)

  • Configuración del usuario -> Configuración del Panel de Control -> Tareas programadas -> Nueva -> Tarea programada

  • Configuración del usuario -> Configuración del Panel de Control -> Tareas programadas -> Nueva -> Tarea inmediata (Windows XP)

Cambios importantes

Acción: Crear, Actualizar o Reemplazar

  • La casilla de verificación Ejecutar como está desactivada. Por lo tanto, los campos Nombre de usuario, Contraseña y Confirmar contraseña están deshabilitados.




Acción: Eliminar

Ningún cambio de comportamiento

Soluciones alternativas


Para los elementos "Tarea programada" y "Tarea inmediata (Windows XP)", las tareas programadas se ejecutan con los permisos que están disponibles actualmente para el servicio local.


Escenario 6: Orígenes de datos

La preferencia Orígenes de datos se utiliza para asociar un origen de datos con un PC o un usuario. Esta característica ya no almacena credenciales para habilitar el acceso a orígenes de datos que están protegidas por una contraseña. Esto afecta a las siguientes preferencias:

  • Configuración del equipo -> Configuración del Panel de Control -> Orígenes de datos

  • Configuración de usuario -> Configuración del Panel de Control -> Orígenes de datos

Cambios importantes


Acción: crear, actualizar o reemplazar

  • Los campos Nombre de usuario, Contraseña y Confirmar contraseña están deshabilitados:




Acción: Eliminar

  • Ningún cambio de comportamiento

Soluciones alternativas


No hay soluciones alternativas disponibles. Esta preferencia ya no almacena credenciales para permitir el acceso a orígenes de datos que estén protegidos por una contraseña.


Degradación de CPassword

Eliminación de CPassword

El script de Windows PowerShell que está incluido en este artículo de Microsoft Knowledge Base detecta si un dominio contiene alguna preferencia de directivas de grupo que pueda usar CPassword. Si se detecta CPassword XML en una preferencia determinada, se muestra en esta lista.


Detección de preferencias CPassword


Este script debe ejecutarse desde un directorio local en el controlador de dominio que desee limpiar. Copie y guarde el contenido en un nuevo archivo de Windows PowerShell, determine la unidad del sistema y después ejecute el script como se indica en la utilización siguiente.

<#
.SYNOPSIS
Los objetos de directivas de grupo en su dominio pueden tener preferencias que almacenan contraseñas para las distintas tareas, como las siguientes:
1. Orígenes de datos
2. Asignaciones de unidades
3. Usuarios locales
4. Tareas programadas (tanto en XP como en nivel superior)
5. Servicios
Estas contraseñas se almacenan en SYSVOL como parte de las preferencias GP y no son seguras porque tienen un cifrado débil (AES de 32 bits).
Por lo tanto, recomendamos que no implemente estas preferencias en su entorno de dominio y que elimine estas preferencias
existentes. Este script ayuda al administrador a encontrar preferencias GP en su SYSVOL de dominio que contiene las contraseñas.

.DESCRIPTION
Este script debe ejecutarse en un controlador de dominio o un equipo de cliente que esté instalado con RSAT para imprimir todas las preferencias que contienen
contraseñas con información como el GPO, Nombre de preferencia y la ruta GPEdit bajo la cual se define la preferencia.
Después de tener la lista de preferencias afectadas, estas preferencias pueden eliminarse utilizando el editor en la Consola de administración de directivas de grupo.

.SYNTAX
Get-SettingsWithCPassword.ps1 [-Path <String>]
.EXAMPLE
Get-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domain
Get-SettingsWithCPassword.ps1 -Path <Ruta de la carpeta para copia de seguridad de GPO>

.NOTES
Si el módulo PS de directivas de grupo no se encuentra, el resultado contendrá los GUID de GPO en lugar de los nombres de GPO. Puede ejecutar
este script en un controlador de dominio o volver a ejecutar el script en el cliente después de instalar RSAT y
activar el módulo de directivas de grupo.
O bien, puede utilizar los GUID de GPO para obtener los nombres de GPO mediante el cmdlet Get-GPO.

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

#>
#----------------------------------------------------------------------------------------------------------------
# Parámetros de entrada
#--------------------------------------------------------------------------------------------------------------
param(
[string]$Path = $(throw "-Path is required.") # Ruta del directorio en el que se ubican las categorías GPP.
)
#---------------------------------------------------------------------------------------------------------------
$isGPModuleAvailable = $false
$impactedPrefs = { "Groups.xml", "ScheduledTasks.xml","Services.xml", "DataSources.xml", "Drives.xml" }
#----------------------------------------------------------------------------------------------------------------
# Importar módulo de directivas de grupo si está disponible
#----------------------------------------------------------------------------------------------------------------
if (-not (Get-Module -name "GroupPolicy"))
{
if (Get-Module -ListAvailable |
Where-Object { $_.Name -ieq "GroupPolicy" })
{
$isGPModuleAvailable = $true
Import-Module "GroupPolicy"
}
else
{
Write-Warning "No es posible importar módulo de directivas de grupo para PowerShell. Por lo tanto, se notificarán los GUID de GPO.
Ejecute este script en el controlador de dominio para obtener los nombres de GPO, o utilice el cmdlet Get-GPO (en el controlador de dominio) para obtener el nombre del GPO a partir del GUID de GPO."
}
}
else
{
$isGPModuleAvailable = $true
}
Function Enum-SettingsWithCpassword ( [string]$sysvolLocation )
{
# GPMC tree paths
$commonPath = " -> Preferences -> Control Panel Settings -> "
$driveMapPath = " -> Preferences -> Windows Settings -> "

Obtener de forma recursiva todos los archivos xml dentro de la ubicación de SYVOL
$impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" | Where-Object { $impactedPrefs -cmatch $_.Name }


Cada archivo xml contiene varias preferencias. Iterar a través de cada preferencia para comprobar si
# contiene el atributo cpassword y lo muestra.
foreach ( $file in $impactedXmls )
{
$fileFullPath = $file.FullName

Establecer la categoría GPP. Si el archivo se encuentra en la carpeta Machine en SYSVOL
# el ajuste se define en la configuración del equipo; de lo contrario, el
# ajuste es una configuración del usuario
if ( $fileFullPath.Contains("Machine") )
{
$category = "Computer Configuration"
}
elseif ( $fileFullPath.Contains("User") )
{
$category = "User Configuration"
}
else
{
$category = "Unknown"
}
Obtener el contenido del archivo 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
{ # borrar gppWithCpassword y preferenceType para el siguiente elemento.
try
{
Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue
Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue
}
catch [Exception]{}
}
}
if ($gppWithCpassword -ne $null)
{
Crear nombre de GPO del GUID extraído de la ruta del archivo
$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
}
}
mostrar preferencias que contienen 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 si $gppWithCpassword
} # finalizar para cada $file
} # finalizar funciones Enum-PoliciesWithCpassword
#-----------------------------------------------------------------------------------
# Comprobar si Path es una ruta válida. Enumerar todas las configuraciones que contienen cpassword.
#-----------------------------------------------------------------------------------
if (Test-Path $Path )
{
Enum-SettingsWithCpassword $Path
}
else
{
Write-Warning "No es tal directorio: $Path"
}


Ejemplo de uso (se supone que la unidad del sistema es C)

.\Get-SettingsWithCPassword.ps1 –path “C:\Windows\SYSVOL\domain” | Format-List
Nota Tenga en cuenta que también puede dirigir cualquier copia de seguridad de GPO para la ruta en lugar del dominio.

El script de detección genera una lista similar a la siguiente:



Para listas más largas, considere la posibilidad de guardar el resultado en un archivo:

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

Eliminación de preferencias de CPassword

Para poder eliminar las preferencias que contienen datos CPassword, le sugerimos que utilice la Consola de administración de directivas de grupo (GPMC) en el controlador de dominio o desde un cliente que tenga las Herramientas de administración del servidor remoto instaladas. Puede quitar cualquier preferencia en cinco pasos en estas consolas. Para ello, realice los siguientes pasos:

  1. En GPMC, abra la preferencia que contiene datos de CPassword.

  2. Cambiar la acción a Eliminar o Deshabilitar, según corresponda a la preferencia.

  3. Haga clic en Aceptar para guardar los cambios.

  4. Espere uno o dos ciclos de actualización de directivas de grupo para permitir que los cambios se propaguen a los clientes.

  5. Después de que los cambios se apliquen a todos los clientes, elimine la preferencia.

  6. Repita los pasos 1 a 5 según sea necesario para limpiar todo su entorno. Cuando el script de detección devuelva cero resultados, habrá finalizado.

Nombre de archivo

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


¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a su experiencia?
Si presiona Enviar, sus comentarios se usarán para mejorar los productos y servicios de Microsoft. El administrador de TI podrá recopilar estos datos. Declaración de privacidad.

¡Gracias por sus comentarios!

×