MS14-025 : une vulnérabilité dans les préférences de la stratégie de groupe pourrait permettre une élévation de privilèges datée du 13 mai 2014

S’applique à
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 Datacenter Windows Server 2012 Essentials Windows Server 2012 Foundation Windows Server 2012 Foundation Windows Server 2012 Standard Windows Server 2012 Standard Windows 7 Service Pack 1 Windows 7 Enterprise Windows 7 Professional Windows 7 Ultimate Windows 7 Home Premium Windows 7 Home Basic Windows Server 2008 R2 Service Pack 1 Windows Server 2008 R2 Standard Windows Server 2008 R2 Enterprise Windows Server 2008 R2 Datacenter Windows Server 2008 Service Pack 2 Windows Server 2008 for Itanium-Based Systems Windows Server 2008 Datacenter Windows Server 2008 Enterprise Windows Server 2008 Standard Windows Server 2008 Web Edition Windows Vista Service Pack 2 Windows Vista Business Windows Vista Enterprise Windows Vista Home Basic Windows Vista Home Premium Windows Vista Starter Windows Vista Ultimate Windows Vista Enterprise 64-bit Edition Windows Vista Home Basic 64-bit Edition Windows Vista Home Premium 64-bit Edition Windows Vista Ultimate 64-bit Edition Windows Vista Business 64-bit Edition

INTRODUCTION

Microsoft a publié le Bulletin de sécurité MS14-025. Pour en savoir plus sur ce bulletin de sécurité :

Procédure pour obtenir de l’aide et un support pour cette mise à jour de sécurité

Aide à l'installation des mises à jour :
Support pour Microsoft Update

Solutions de sécurité pour professionnels de l’informatique :
Résolution des problèmes de sécurité et support TechNet

Protégez votre ordinateur Windows contre les virus et les logiciels malveillants :
Aide et Support pour les problèmes de virus et de sécurité

Support local selon votre pays/région :
International Support

Informations supplémentaires

Problèmes connus et informations supplémentaires relatives à cette mise à jour de sécurité

Les articles suivants contiennent plus d’informations sur cette mise à jour de sécurité, car elle concerne des versions de produit individuelles. Les articles peuvent contenir des informations sur les problèmes connus. Si c’est le cas, le problème connu est répertorié sous chaque lien d’article.

  • 2928120

    MS14-025 : Description de la mise à jour de sécurité des outils d’administration de serveur distant Windows pour les systèmes sur lesquels des 2919355 de mise à jour sont installées en date du 13 mai 2014

  • 2961899

    MS14-025 : Description de la mise à jour de sécurité des outils d’administration de serveur distant Windows pour les systèmes sur lesquels aucune 2919355 de mise à jour n’est installée datée du 13 mai 2014

Préférences en matière de stratégie de groupe

Présentation

Certaines préférences de stratégie de groupe peuvent stocker un mot de passe. Cette fonctionnalité est supprimée, car le mot de passe a été stocké de manière non sécurisée. Cet article décrit les modifications apportées à l’interface utilisateur et les solutions de contournement disponibles.

La stratégie de groupe Préférences suivante n’autorise plus l’enregistrement des noms d’utilisateur et des mots de passe :

  • Cartes de lecteur
  • Utilisateurs et groupes locaux
  • Tâches planifiées
  • Services
  • Sources de données

Cela affectera le comportement de tous les objets de stratégie de groupe (GPO) existants dans votre environnement qui s’appuient sur des mots de passe contenus dans ces préférences. Elle empêche également la création de préférences de stratégie de groupe à l’aide de cette fonctionnalité.

Pour les cartes de lecteurs, les utilisateurs et groupes locaux, ainsi que les services, vous pourrez peut-être atteindre des objectifs similaires avec d’autres fonctionnalités plus sécurisées dans Windows.

Pour les tâches planifiées et les sources de données, vous ne pourrez pas atteindre les mêmes objectifs que ceux qui étaient disponibles avec la fonctionnalité non sécurisée des mots de passe de préférences de stratégie de groupe.

Scénarios

Les préférences de la stratégie de groupe suivantes sont affectées par cette modification. Chaque préférence est traitée brièvement, puis plus en détail. De plus, des solutions de contournement vous sont fournies pour vous permettre d’effectuer les mêmes tâches.

Préférence affectée S’applique à l’utilisateur
S’applique à l’ordinateur
Gestion des utilisateurs locaux Oui Oui
Lecteurs mappés Oui Non
Services Non Oui
Tâches planifiées (niveau supérieur) Oui Oui
Tâches planifiées (niveau inférieur) Oui Oui
Tâches immédiates (niveau supérieur) Oui Oui
Tâches immédiates (niveau inférieur) Oui Oui
Sources de données Oui Oui

Récapitulatif des changements

  • Les champs de mot de passe de toutes les préférences concernées sont désactivés. Les administrateurs ne peuvent pas créer de préférences à l’aide de ces champs de mot de passe.
  • Le champ du nom d’utilisateur est désactivé dans certaines préférences.
  • Les préférences existantes qui contiennent un mot de passe ne peuvent pas être mises à jour. Ils ne peuvent être supprimés ou désactivés qu’en fonction des préférences spécifiques.
  • Le comportement des actions de suppression et de désactivation n’a pas changé pour les préférences.
  • Lorsqu’un administrateur ouvre une préférence qui contient l’attribut CPassword, la boîte de dialogue d’avertissement suivante s’affiche pour l’informer de la récente obsolescence. Les tentatives d’enregistrement des modifications apportées aux préférences nouvelles ou existantes qui nécessitent l’attribut CPassword déclencheront la même boîte de dialogue. Seules les actions Supprimer et Désactiver ne déclencheront pas de boîtes de dialogue d’avertissement.

             Avertissement de sécurité indiquant que l’attribut CPassword nécessite une fonctionnalité de sécurité non disponible
            
            
            
          

Scénario 1 : Gestion des utilisateurs locaux

La préférence Gestion des utilisateurs locaux est souvent utilisée pour créer des administrateurs locaux qui ont un mot de passe connu sur un ordinateur. Cette fonctionnalité n’est pas sécurisée en raison de la manière dont les préférences de stratégie de groupe stockent les mots de passe. Par conséquent, cette fonctionnalité n’est plus disponible. Les préférences suivantes sont concernées :

  • Configuration ordinateur -> Paramètres du panneau de configuration -> Utilisateurs et groupes locaux -> Nouveau -> Utilisateur local
  • Configuration utilisateur -> Paramètres du panneau de configuration -> Utilisateurs et groupes locaux -> Nouveau -> Utilisateur local

Modifications importantes

Action : Créer ou remplacer

  • Les champs Nom d’utilisateur, Mot de passe et Confirmer le mot de passe sont désactivés.
  • La boîte de dialogue d’avertissement s’affiche lorsque l’administrateur ouvre ou essaie d’enregistrer les modifications apportées à une préférence existante contenant un mot de passe.

                
                 Nouvelle boîte de dialogue Propriétés de l’utilisateur local avec les champs de nom d’utilisateur et de mot de passe vides mis en évidence
                
Action : mettre à jour

  • Les champs Mot de passe et Confirmer le mot de passe sont désactivés.
  • La boîte de dialogue d’avertissement s’affiche lorsque l’administrateur ouvre ou essaie d’enregistrer les modifications apportées à une préférence existante contenant un mot de passe.

                
                 Nouvelle boîte de dialogue Propriétés de l’utilisateur local avec le champ Action défini sur Mettre à jour
                
Action : Supprimer

  • Aucun changement de comportement

Solutions de contournement

Pour ceux qui se sont précédemment appuyés sur la préférence de stratégie de groupe pour définir des mots de passe d’administrateur local, le script suivant est fourni en tant qu’alternative sécurisée à CPassword. Copiez et enregistrez le contenu dans un nouveau fichier Windows PowerShell, puis exécutez le script comme indiqué dans son . EXEMPLE de section.

Microsoft fournit des exemples de programmation à des fins d’illustration uniquement, sans garantie exprimée ou implicite. Cela inclut, sans s’y limiter, les garanties implicites de qualité commerciale ou d’adéquation à un usage particulier. Cet article part du principe que vous êtes familiarisé avec le langage de programmation présenté et avec les outils utilisés pour créer et déboguer des procédures. Les ingénieurs du support Microsoft peuvent vous aider à expliquer les fonctionnalités d’une procédure particulière. Toutefois, ils ne modifient pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures pour répondre à vos besoins spécifiques.

fonction Invoke-PasswordRoll
{
<#
. SYNOPSIS

Ce script peut être utilisé pour définir les mots de passe des comptes locaux sur les ordinateurs distants sur des mots de passe aléatoires. La combinaison nom d’utilisateur/mot de passe/serveur sera enregistrée dans un fichier CSV.
Les mots de passe de compte stockés dans le fichier CSV peuvent être chiffrés à l’aide d’un mot de passe des administrateurs qui choisissent de s’assurer que les mots de passe de compte en texte clair ne sont pas écrits sur le disque.
Les mots de passe chiffrés peuvent être déchiffrés à l’aide d’une autre fonction dans ce fichier : ConvertTo-CleartextPassword

Fonction : Invoke-PasswordRoll
Auteur : Microsoft
Version : 1.0

. DESCRIPTIF

Ce script peut être utilisé pour définir les mots de passe des comptes locaux sur les ordinateurs distants sur des mots de passe aléatoires. La combinaison nom d’utilisateur/mot de passe/serveur sera enregistrée dans un fichier CSV.
Les mots de passe de compte stockés dans le fichier CSV peuvent être chiffrés à l’aide d’un mot de passe des administrateurs qui choisissent de s’assurer que les mots de passe de compte en texte clair ne sont pas écrits sur le disque.
Les mots de passe chiffrés peuvent être déchiffrés à l’aide d’une autre fonction dans ce fichier : ConvertTo-CleartextPassword

. PARAMETER ComputerName

Tableau d’ordinateurs sur lesquels exécuter le script à l’aide de la communication à distance PowerShell.

. PARAMETER LocalAccounts

Tableau de comptes locaux dont le mot de passe doit être modifié.

. PARAMETER TsvFileName

Fichier vers lequel envoyer les combinaisons nom d’utilisateur/mot de passe/serveur.

. PARAMETER EncryptionKey

Mot de passe pour chiffrer le fichier TSV. Utilise le chiffrement AES. Seuls les mots de passe stockés dans le fichier TSV seront chiffrés, le nom d’utilisateur et le nom du serveur seront en texte clair.

. PARAMETER PasswordLength

Longueur des mots de passe qui seront générés de façon aléatoire pour les comptes locaux.

. PARAMETER NoEncryption

Ne chiffrez pas les mots de passe des comptes stockés dans le fichier TSV. Cela entraîne l’écriture des mots de passe en texte clair sur le disque.

. EXEMPLE

. .\Invoke-PasswordRoll.ps1 #Loads les fonctions dans ce fichier de script
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @(« administrator »,"CustomLocalAdmin ») -TsvFileName « LocalAdminCredentials.tsv » -EncryptionKey « Password1 »

Se connecte à tous les ordinateurs stockés dans le fichier « computerlist.txt ». Si le compte local « administrateur » et/ou « CustomLocalAdmin » sont présents sur le système, leur mot de passe est modifié
à un mot de passe généré de façon aléatoire de longueur 20 (valeur par défaut). Les combinaisons nom d’utilisateur/mot de passe/serveur sont stockées dans LocalAdminCredentials.tsv, et les mots de passe des comptes sont chiffrés AES à l’aide du mot de passe « Password1 ».

. EXEMPLE

. .\Invoke-PasswordRoll.ps1 #Loads les fonctions dans ce fichier de script
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @(« administrator ») -TsvFileName « LocalAdminCredentials.tsv » -NoEncryption -PasswordLength 40

Se connecte à tous les ordinateurs stockés dans le fichier « computerlist.txt ». Si le compte local « administrateur » est présent sur le système, son mot de passe est remplacé par un mot de passe généré de façon aléatoire
mot de passe de longueur 40. Les combinaisons nom d’utilisateur/mot de passe/serveur sont stockées dans LocalAdminCredentials.tsv non chiffrées.

. REMARQUES
Configuration requise :
- PowerShellv2 ou version ultérieure doit être installé
- La communication à distance PowerShell doit être activée sur tous les systèmes sur lesquels le script sera exécuté

Comportement du script :
-Si un compte local est présent sur le système, mais non spécifié dans le paramètre LocalAccounts, le script écrit un avertissement à l’écran pour vous avertir de la présence de ce compte local. Dans ce cas, le script continue de s’exécuter.
-Si un compte local est spécifié dans le paramètre LocalAccounts, mais que le compte n’existe pas sur l’ordinateur, rien ne se passera (aucun compte ne sera PAS créé).
- La fonction ConvertTo-CleartextPassword, contenue dans ce fichier, peut être utilisée pour déchiffrer les mots de passe stockés chiffrés dans le fichier TSV.
- Si un serveur spécifié dans ComputerName ne peut pas être connecté, PowerShell affiche un message d’erreur.
-Microsoft conseille aux entreprises de renouveler régulièrement tous les mots de passe des comptes locaux et de domaine.

#>
    [CmdletBinding(DefaultParameterSetName="Encryption »)]
    param(
        [Parameter(Mandatory=$true)]
        [chaîne[]]
        $ComputerName,

        [Parameter(Mandatory=$true)]
        [chaîne[]]
        $LocalAccounts,

        [Parameter(Mandatory=$true)]
        [chaîne]
        $TsvFileName,

        [Parameter(ParameterSetName="Encryption », Mandatory=$true)]
        [chaîne]
        $EncryptionKey,

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

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

    #Load toutes les classes .NET nécessaires
    Add-Type -AssemblyName « System.Web » -ErrorAction Stop

    #This est le bloc de script qui sera exécuté sur chaque ordinateur spécifié dans ComputerName
    $RemoteRollScript = {
        param(
            [Parameter(Mandatory=$true, Position=1)]
            [chaîne[]]
            $Passwords,

            [Parameter(Mandatory=$true, Position=2)]
            [chaîne[]]
            $LocalAccounts,

            #This est ici pour que je puisse enregistrer le nom du serveur auquel le script s’est connecté, parfois les enregistrements DNS sont foirés, cela peut être agréable d’avoir ça.
            [Parameter(Mandatory=$true, Position=3)]
            [chaîne]
            $TargettedServerName
        )

        $LocalUsers = Get-WmiObject Win32_UserAccount -filtre « LocalAccount=true » | Foreach {$_. Nom}

        #Check si l’ordinateur comporte des comptes d’utilisateurs locaux dont les mots de passe ne seront pas roulés par ce script
        foreach ($User dans $LocalUsers)
        {
            if ($LocalAccounts -inotcontains $User)
            {
                Write-Warning « Le serveur : '$($TargettedServerName)' a un compte local '$($User)' dont le mot de passe n’est PAS modifié par ce script »
            }
        }

        #For chaque compte local spécifié qui existe sur ce serveur, modifiez le mot de passe
        $PasswordIndex = 0
        foreach ($LocalAdmin dans $LocalAccounts)
        {
            $Password = $Passwords[$PasswordIndex]

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

                    $Properties = @{
                        TargettedServerName = $TargettedServerName
                        Nom d’utilisateur = $LocalAdmin
                        Mot de passe = $Password
                        RealServerName = $env :computername
                    }

                    $ReturnData = New-Object PSObject -Property $Properties
                    Write-Output $ReturnData
                }
                piège
                {
                    Write-Error « Erreur lors de la modification du mot de passe de l’utilisateur :$($LocalAdmin) sur le serveur :$($TargettedServerName) »
                }
            }

            $PasswordIndex++
        }
    }

    #Generate le mot de passe sur le client exécutant ce script, et non sur l’ordinateur distant. System.Web.Security n’est pas disponible dans le profil client .NET. Effectuer cet appel
    # sur le client, l’exécution du script garantit qu’un seul ordinateur a besoin de l’intégralité du runtime .NET (par opposition à chaque système ayant le mot de passe déployé).
    fonction Create-RandomPassword
    {
        param(
            [Parameter(Mandatory=$true)]
            [ValidateRange(20,120)]
            [Int]
            $PasswordLength
        )

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

        #This ne devrait jamais échouer, mais je mets un case activée de bon sens ici quand même
        if ($Password.Length -ne $PasswordLength)
        {
            throw new Exception("Le mot de passe renvoyé par GeneratePassword n’est pas de la même longueur que celle requise. Longueur requise : ($PasswordLength $). Generated length : $($Password.Length)")
        }

        Retour $Password
    }

    #Main fonctionnalité : générez un mot de passe et connectez-vous à distance aux machines pour modifier le mot de passe des comptes locaux spécifiés
    if ($PsCmdlet.ParameterSetName -ieq « Encryption »)
    {
        essai
        {
            $Sha 256 = nouvel objet System.Security.Cryptography.SHA256CryptoServiceProvider
            $SecureStringKey = $Sha 256.ComputeHash([System.Text.UnicodeEncoding] ::Unicode.GetBytes($EncryptionKey))
        }
        piège
        {
            Write-Error « Erreur lors de la création de la clé de chiffrement TSV » -ErrorAction Stop
        }
    }

    foreach ($Computer dans $ComputerName)
    {
        #Need générer 1 mot de passe pour chaque compte qui peut être modifié
        $Passwords = @()
        for ($i = 0 ; $i -lt $LocalAccounts.Length ; $i++)
        {
            $Passwords += Create-RandomPassword -PasswordLength $PasswordLength
        }

        Write-Output « Connexion au serveur '$($Computer)' pour cumuler les mots de passe d’administrateur locaux spécifiés »
        $Result = Invoke-Command -ScriptBlock $RemoteRollScript -ArgumentList @($Passwords, $LocalAccounts, $Computer) -ComputerName $Computer
        #If le chiffrement est utilisé, chiffrez le mot de passe à l’aide de la clé fournie par l’utilisateur avant d’écrire sur le disque
        if ($Result -ne $null)
        {
            if ($PsCmdlet.ParameterSetName -ieq « NoEncryption »)
            {
                $Result | Select-Object nom d’utilisateur,mot de passe,nom_serveurcible ;nom de serveur réel | Export-Csv -append -path $TsvFileName -NoTypeInformation
            }
            else
            {
                #Filters les entrées $null renvoyées
                $Result = $Result | Select-Object Username,Password,TargettedServerName,RealServerName

                foreach ($Record dans $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 nom d’utilisateur,mot de passecrypté,nom_serveurcible ;nom de serveur réel | Export-Csv -append -path $TsvFileName -NoTypeInformation
                }
            }
        }
    }
}

fonction ConvertTo-CleartextPassword
{
<#
. SYNOPSIS
Cette fonction peut être utilisée pour déchiffrer les mots de passe qui ont été stockés chiffrés par la fonction Invoke-PasswordRoll.

Fonction : ConvertTo-CleartextPassword
Auteur : Microsoft
Version : 1.0

. DESCRIPTIF
Cette fonction peut être utilisée pour déchiffrer les mots de passe qui ont été stockés chiffrés par la fonction Invoke-PasswordRoll.

. PARAMETER EncryptedPassword

Mot de passe chiffré stocké dans un fichier TSV.

. PARAMETER EncryptionKey

Mot de passe utilisé pour effectuer le chiffrement.

. EXEMPLE

. .\Invoke-PasswordRoll.ps1 #Loads les fonctions dans ce fichier de script
ConvertTo-CleartextPassword -EncryptionKey « Password1 » -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAGI amabiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA »

Déchiffre le mot de passe chiffré qui a été stocké dans le fichier TSV.

#>
    param(
        [Parameter(Mandatory=$true)]
        [chaîne]
        $EncryptedPassword,

        [Parameter(Mandatory=$true)]
        [chaîne]
        $EncryptionKey
    )

    $Sha 256 = nouvel objet System.Security.Cryptography.SHA256CryptoServiceProvider
    $SecureStringKey = $Sha 256.ComputeHash([System.Text.UnicodeEncoding] ::Unicode.GetBytes($EncryptionKey))

    [SecureString]$SecureStringPassword = ConvertTo-SecureString -string $EncryptedPassword -key $SecureStringKey
    Write-Output ([System.Runtime.InteropServices.Marshal] ::P trToStringAuto([System.Runtime.InteropServices.Marshal] ::SecureStringToCoTaskMemUnicode($SecureStringPassword)))
}
   Les administrateurs peuvent ajouter des comptes d’administrateur locaux aux ordinateurs en créant un groupe Active Directory et en l’ajoutant au groupe Administrateurs local via la fonctionnalité Préférences de stratégie de groupe -> Groupe local. Cette action ne met pas en cache les informations d’identification. La boîte de dialogue ressemble à ce qui suit. Cette solution de contournement nécessite une connexion aux services de domaine Active Directory lorsque l’utilisateur est connecté à l’aide de ces informations d’identification.

Boîte de dialogue Propriétés du groupe intégré des administrateurs avec l’option Ajouter un utilisateur actuel

Scénario 2 : Lecteurs mappés

Les administrateurs utilisent des cartes de lecteurs pour allouer des emplacements réseau aux utilisateurs. La fonction de protection par mot de passe est utilisée pour garantir l’accès autorisé au lecteur. Les préférences suivantes sont concernées :

  • Configuration utilisateur -> Paramètres Windows -> Cartes de lecteur -> Nouveau -> Lecteur mappé

Modifications importantes

Action : créer, mettre à jour ou remplacer

  • Les champs Nom d’utilisateur, Mot de passe et Confirmer le mot de passe sont désactivés.

                 Configuration système cible : organigramme de décision pour le fractionnement et la fusion de partitions
                
Action : Supprimer

  • Aucun changement de comportement

Solutions de contournement

Au lieu d’utiliser la méthode par mot de passe pour l’authentification, vous pouvez utiliser l’Explorateur Windows pour gérer les autorisations de partage et attribuer les droits aux utilisateurs. Vous pouvez utiliser des objets Active Directory pour contrôler les autorisations sur le dossier.

Scénario 3 : Services

Vous pouvez utiliser la préférence Services pour modifier les propriétés du service de sorte qu’elles s’exécutent dans un contexte autre que leur contexte de sécurité d’origine. Les préférences suivantes sont concernées :

  • Configuration ordinateur -> Paramètres du Panneau de configuration -> Services -> Nouveau -> Service

Modifications importantes

Démarrage : Aucun changement, automatique ou manuel

  • Les champs Mot de passe et Confirmer le mot de passe sont désactivés.
  • L’administrateur ne peut utiliser que des comptes intégrés.

                 Topologie site à site IPsec avec les passerelles R1 et R2 connectées par un tunnel
                
Démarrage : désactiver

  • Aucun changement de comportement

Nouvelle boîte de dialogue

  • Les administrateurs qui essaient d’utiliser des utilisateurs non intégrés pour ce compte » reçoivent l’avertissement suivant :

                 Boîte de dialogue d’avertissement indiquant que l’attribut CPassword est obsolète
                
                
              

Solutions de contournement

                
                
Les services peuvent toujours s’exécuter en tant que compte système local. Les autorisations de service peuvent être modifiées comme indiqué dans l’article suivant de la Base de connaissances Microsoft :

256345 Procédure pour configurer les paramètres stratégie de groupe de sécurité des services système

Remarque Si le service que vous souhaitez configurer n’est pas présent, vous devez configurer les paramètres sur un ordinateur sur lequel le service est en cours d’exécution. 

Scénario 4 : Tâches planifiées et immédiates (niveau supérieur)

Ils sont utilisés pour exécuter des tâches planifiées dans un contexte de sécurité spécifique. La possibilité de stocker les informations d’identification pour des tâches planifiées à exécuter en tant qu’utilisateur arbitraire lorsque cet utilisateur n’est pas connecté n’est plus disponible. Les préférences suivantes sont affectées. (Veuillez noter que sur certaines plateformes, « Au moins Windows 7 » est remplacé par « Windows Vista et versions ultérieures ».)

  • Configuration ordinateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouveau -> Tâche planifiée (Windows 7 au minimum)
  • Configuration ordinateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouveau -> Tâche immédiate (Windows 7 au minimum)
  • Configuration utilisateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouveau -> Tâche planifiée (Windows 7 au minimum)
  • Configuration utilisateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouveau -> Tâche immédiate (Windows 7 au minimum)

Modifications importantes

Action : créer, mettre à jour ou remplacer

  • Lorsque vous sélectionnez l’option Exécuter, que l’utilisateur soit connecté ou non , une boîte de dialogue ne demande plus à l’administrateur d’entrer des informations d’identification.
  • La case à cocher Ne pas stocker le mot de case activée est désactivée. Par défaut, la case est également cochée.

                 Nouvelle boîte de dialogue Propriétés du lecteur avec champs d’informations d’identification facultatifs
                
Action : Supprimer

Aucun changement de comportement

Solutions de contournement

Pour les tâches « Tâche planifiée (Windows 7 au moins) » et « Tâche immédiate (Windows 7 au moins) », les administrateurs peuvent utiliser des comptes d’utilisateur spécifiques lorsque l’utilisateur concerné est connecté. Ou bien, il peut uniquement avoir accès aux ressources locales en tant qu’utilisateur. Ces tâches peuvent toujours s’exécuter dans le contexte du service local.

            
Scénario 5 : Tâches planifiées et immédiates (niveau inférieur) Il s’agit de la version de niveau inférieur des préférences utilisées pour exécuter des tâches planifiées dans un contexte de sécurité spécifique. La possibilité de stocker les informations d’identification pour des tâches planifiées à exécuter en tant qu’utilisateur arbitraire lorsque cet utilisateur n’est pas connecté n’est plus disponible. Les préférences suivantes sont concernées :

  • Configuration ordinateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouveau -> Tâche planifiée
  • Configuration ordinateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouveau -> Tâche immédiate (Windows XP)
  • Configuration utilisateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouveau -> Tâche planifiée
  • Configuration utilisateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouveau -> Tâche immédiate (Windows XP)

Modifications importantes

Action : créer, mettre à jour ou remplacer

  • La case à cocher Exécuter en tant que case activée est désactivée. Par conséquent, les champs Nom d’utilisateur, Mot de passe et Confirmer le mot de passe sont tous désactivés.

                 Boîte de dialogue Nouvelles propriétés de tâche avec l’option Exécuter en tant que mise en évidence
                
Action : Supprimer

 Aucun changement de comportement

Solutions de contournement

Pour les éléments « Tâche planifiée » et « Tâche immédiate (Windows XP) », les tâches planifiées s’exécutent en utilisant les autorisations actuellement disponibles pour le service local. 

Scénario 6 : Sources de données

La préférence Sources de données est utilisée pour associer une source de données à un ordinateur ou à un utilisateur. Cette fonctionnalité ne stocke plus les informations d’identification pour permettre l’accès aux sources de données protégées par un mot de passe. Les préférences suivantes sont concernées :

  • Configuration ordinateur -> Paramètres du panneau de configuration -> Sources de données
  • Configuration utilisateur -> Paramètres du panneau de configuration -> Sources de données

Changements importants

Action : créer, mettre à jour ou remplacer

  • Les champs Nom d’utilisateur, Mot de passe et Confirmer le mot de passe sont désactivés :

                 Boîte de dialogue des nouvelles propriétés de source de données avec les champs nom d’utilisateur et mot de passe mis en évidence
                
Action : Supprimer

  • Aucun changement de comportement

Solutions de contournement

Aucune solution de contournement n’est disponible. Cette préférence ne stocke plus les informations d’identification pour permettre l’accès aux sources de données protégées par un mot de passe. 

Dépréciation de CPassword

Suppression de CPassword

Le script Windows PowerShell inclus dans cet article de la Base de connaissances Microsoft détecte si un domaine contient des préférences de stratégie de groupe susceptibles d’utiliser CPassword. Si le XML CPassword est détecté dans une préférence donnée, il est affiché dans cette liste. 

Détection des préférences de CPassword

Ce script doit être exécuté à partir d’un répertoire local sur le contrôleur de domaine que vous souhaitez propre. Copiez et enregistrez le contenu dans un nouveau fichier Windows PowerShell, déterminez votre lecteur système, puis exécutez le script comme indiqué dans l’utilisation suivante.

  <#
. SYNOPSIS
Les objets de stratégie de groupe de votre domaine peuvent avoir des préférences qui stockent les mots de passe pour différentes tâches, par exemple :
1. Sources de données
2. Cartes de lecteur
3. Utilisateurs locaux
4. Tâches planifiées (XP et niveau supérieur)
5. Services
Ces mots de passe sont stockés dans SYSVOL dans le cadre des préférences de la stratégie de groupe et ne sont pas sécurisés en raison de la faiblesse du chiffrement (AES 32 octets).
Par conséquent, nous vous recommandons de ne pas déployer de telles préférences dans votre environnement de domaine et de supprimer les préférences existantes
préférences. Ce script permet aux administrateurs de trouver les préférences de la stratégie de groupe dans le SYSVOL de leur domaine qui contient les mots de passe.

. DESCRIPTIF
Ce script doit être exécuté sur un contrôleur de domaine ou un ordinateur client installé avec les outils RSAT pour imprimer toutes les préférences qui contiennent
mot de passe avec des informations telles que GPO, nom de préférence, chemin GPEdit sous lequel cette préférence est définie.
Une fois que vous disposez d’une liste de préférences affectées, ces préférences peuvent être supprimées à l’aide de l’éditeur dans la console de gestion de la stratégie de groupe.

. SYNTAXE
Get-SettingsWithCPassword.ps1 [-path <string>]
. EXEMPLE
Get-SettingsWithCPassword.ps1 -Path %WinDir %\SYSVOL\domain
Get-SettingsWithCPassword.ps1 -Path <Chemin d’accès du dossier de sauvegarde de l’objet de stratégie de groupe>

. REMARQUES
Si le module PS de la stratégie de groupe est introuvable, la sortie contiendra les GUID des objets de stratégie de groupe au lieu des noms des objets de stratégie de groupe. Vous pouvez exécuter
ce script sur un contrôleur de domaine ou réexécutez le script sur le client après avoir installé RSAT et
activation du module de stratégie de groupe.
Vous pouvez également utiliser les GUID d’objet de stratégie de groupe pour obtenir des noms d’objet de stratégie de groupe à l’aide de l’applet de commande Get-GPO.

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

#>
#----------------------------------------------------------------------------------------------------------------
# Paramètres d’entrée #--------------------------------------------------------------------------------------------------------------
param(
    [string]$Path = $(throw « -Path is required. ») # Chemin d’accès du répertoire où se trouvent les GPP.
 )
#---------------------------------------------------------------------------------------------------------------
$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 « Impossible d’importer stratégie de groupe module pour PowerShell. Par conséquent, les GUID GPO seront signalés.
                       Exécutez ce script sur le contrôleur de domaine pour obtenir les noms des objets de stratégie de groupe, ou utilisez l’applet de commande Get-GPO (sur le contrôleur de domaine) pour obtenir le nom de l’objet GPO à partir du GUID de l’objet GPO. »
    }
}
else
{
    $isGPModuleAvailable = $true
}
Function Enum-SettingsWithCpassword ( [string]$sysvolLocation )
{
    # Chemins d’arborescence GPMC
    $commonPath = " -> Préférences -> Paramètres Panneau de configuration -> »
    $driveMapPath = " -> Préférences -> Paramètres Windows -> »

    # Obtenir récursivement tous les fichiers xml dans l’emplacement SYVOL
    $impactedXmls = Get-ChildItem $sysvolLocation -récurse -filtre « *.xml » | Where-Object { $impactedPrefs -cmatch $_. Nom }

    # Chaque fichier XML contient plusieurs préférences. Itérez sur chaque préférence pour vérifier si sa case activée
    # contient l’attribut cpassword et l’affiche.
    foreach ( $file in $impactedXmls )
    {
        $fileFullPath = $file. Nom complet

        # Définissez la catégorie GPP. Si le fichier se trouve sous le dossier Machine dans SYSVOL
        # le paramètre est défini sous configuration de l’ordinateur, sinon
        # Le paramètre est destiné à la configuration utilisateur
        if ( $fileFullPath.Contains(« Machine ») )
        {
            $category = « Configuration de l’ordinateur »
        }
        elseif ( $fileFullPath.Contains(« User ») )
        {
            $category = « Configuration Utilisateur »
        }
        else
        {
            $category = « Inconnu »
        }
        # Obtenir le contenu du fichier au format XML
        essai
        {
            [xml]$xmlFile = get-content $fileFullPath -ErrorAction Continue
        }
        catch [Exception]{
            Write-Host $_. Exception.Message
        }
        if ($xmlFile -eq $null)
        {
            continuer
        }
        switch ( $file. BaseName )
        {
            Groupes
            {
                $gppWithCpassword = $xmlFile.SelectNodes(« Groups/User ») | where-Object { [String] ::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
                $preferenceType = « Utilisateurs locaux »
            }
            ScheduledTasks
            {
                $gppWithCpassword = $xmlFile.SelectNodes(« ScheduledTasks/* ») | where-Object { [String] ::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
                $preferenceType = « Tâches planifiées »
            }
            DataSources
            {
                $gppWithCpassword = $xmlFile.SelectNodes(« DataSources/DataSource ») | where-Object { [String] ::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
                $preferenceType = « Sources de données »
            }
            Lecteurs
            {
                $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 »
            }
            par défaut
            { # effacez gppWithCpassword et preferenceType pour l’élément suivant.
                essai
                {
                    Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue
                    Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue
                }
                catch [Exception]{}
            }
        }
        if ($gppWithCpassword -ne $null)
        {
            # Générer le nom GPO à partir du GUID extrait de filePath
            $guidRegex = [regex]"\{(.*)\} »
            $match = $guidRegex.match($fileFullPath)
            if ($match. Opération réussie)
            {
               $gpoGuid = $match.groups[1].value
               $gpoName = $gpoGuid
            }
            else
            {
               $gpoName = « Inconnu »
            }
            if($isGPModuleAvailable -eq $true)
            {
                essai
                {
                    $gpoInfo = Get-GPO -Guid $gpoGuid -ErrorAction Continue
                    $gpoName = $gpoInfo.DisplayName
                }
                catch [Exception] {
                    Write-Host $_. Exception.Message
                }
            }
            # Afficher les préférences qui contiennent 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 for each $file
} # Fonctions END Enum-PoliciesWithCpassword
#-----------------------------------------------------------------------------------
# Vérifiez si le chemin d’accès est valide. Énumérez tous les paramètres qui contiennent cpassword. #-----------------------------------------------------------------------------------
if (Test-Path $Path )
{
    Enum-SettingsWithCpassword $Path
}
else
{
    Write-Warning « Répertoire non $Path »
}

Exemple d’utilisation (suppose que le lecteur système est C)

.\Get-SettingsWithCPassword.ps1 –path « C :\Windows\SYSVOL\domain » | Format-List
Remarque : vous pouvez également cibler n’importe quel GPO de sauvegarde pour le chemin d’accès au lieu du domaine.

Le script de détection génère une liste semblable à ce qui suit :

Liste des sorties de ligne de commande Emplacements des préférences de stratégie de groupe

Pour les listes plus longues, envisagez d’enregistrer la sortie dans un fichier :

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

Suppression des préférences de CPassword

Pour supprimer les préférences qui contiennent des données CPassword, nous vous recommandons d’utiliser la console de gestion de la stratégie de groupe (GPMC) sur le contrôleur de domaine ou à partir d’un client sur lequel les outils d’administration de serveur distant sont installés. Vous pouvez supprimer une préférence en cinq étapes sur ces consoles. Pour ce faire, procédez comme suit :

  1. Dans GPMC, ouvrez la préférence qui contient des données CPassword.
  2. Modifiez l’action sur Supprimer ou Désactiver, selon la préférence.
  3. Cliquez sur OK pour enregistrer vos modifications.
  4. Attendez un ou deux cycles d’actualisation de la stratégie de groupe pour permettre aux modifications de se propager aux clients.
  5. Une fois les modifications appliquées sur tous les clients, supprimez la préférence.
  6. Répétez les étapes 1 à 5 autant de fois que nécessaire pour propre l’ensemble de votre environnement. Lorsque le script de détection ne renvoie aucun résultat, vous avez terminé.
Informations sur le hachage de fichier
Nom de fichier Hachage SHA-1 Hachage SHA-256
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