MS14-025: Sicherheitsrisiko in Gruppenrichtlinien-Einstellungen können Rechteerweiterungen ermöglichen: 13. Mai 2014

Gilt für
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

EINFÜHRUNG

Microsoft hat das Sicherheitsbulletin MS14-025 veröffentlicht. Weitere Informationen zu diesem Sicherheitsbulletin:

Hilfe und Support zum Sicherheitsupdate

Hilfe beim Installieren von Updates:
Support für Microsoft Update

Sicherheitslösungen für IT-Profis:
TechNet Security – Problembehandlung und Support

Schützen Sie Ihren Windows-basierten Computer Windows vor Viren und Schadsoftware:
Safety and Security Center

Lokaler Support entsprechend Ihrem Land:
Internationaler Support

Weitere Informationen

Bekannte Probleme und weitere Informationen zu diesem Sicherheitsupdate

Die folgenden Artikel enthalten weitere Informationen zu diesem Sicherheitsupdate bezogen auf einzelne Produktversionen. Die Artikel können Informationen zu bekannten Problemen enthalten. Wenn dies der Fall ist, wird das bekannte Problem unter jedem Artikellink aufgeführt.

  • 2928120

    MS14-025: Hinweise zum Sicherheitsupdate für die Windows-Remoteserver-Verwaltungstools für Systeme, auf denen Update 2919355 installiert ist: 13. Mai 2014

  • 2961899

    MS14-025: Hinweise zum Sicherheitsupdate für die Windows-Remoteserver-Verwaltungstools für Systeme, auf denen das Update nicht 2919355 installiert ist: 13. Mai 2014

Einstellungen für Gruppenrichtlinien

Übersicht

In einigen Gruppenrichtlinien-Voreinstellungen kann ein Kennwort gespeichert werden. Diese Funktion wurde entfernt, da das Kennwort unsicher gespeichert wurde. In diesem Artikel werden die Änderungen an der Benutzeroberfläche und alle verfügbaren Problemumgehungen beschrieben.

Die folgenden Gruppenrichtlinien-Voreinstellungen lassen das Speichern von Benutzernamen und Kennwörtern nicht mehr zu:

  • Laufwerksübersichten
  • Lokale Benutzer und Gruppen
  • Geplante Aufgaben
  • Dienste
  • Data Sources

Dies wirkt sich auf das Verhalten aller vorhandenen Gruppenrichtlinienobjekte (Group Policy Objects, GPOs) in Ihrer Umgebung aus, die auf Kennwörter angewiesen sind, die in diesen Einstellungen enthalten sind. Außerdem wird verhindert, dass durch die Verwendung dieser Funktion neue Gruppenrichtlinien-Einstellungen erstellt werden.

Für Laufwerkübersichten, lokale Benutzer und Gruppen und Dienste können Sie möglicherweise ähnliche Ziele durch andere, sicherere Funktionen in Windows erreichen.

Für geplante Aufgaben und Datenquellen können Sie nicht dieselben Ziele erreichen, die durch die unsichere Funktionalität der Kennwörter für Gruppenrichtlinien-Einstellungen verfügbar waren.

Szenarien

Die folgenden Gruppenrichtlinien-Einstellungen sind von dieser Änderung betroffen. Jede Präferenz wird kurz und dann ausführlicher behandelt. Darüber hinaus werden Problemumgehungen bereitgestellt, mit denen Sie die gleichen Aufgaben ausführen können.

Betroffene Einstellung Gilt für Benutzer
Gilt für Computer
Lokale Benutzerverwaltung Ja Ja
Zugeordnete Laufwerke Ja Nein
Dienste Nein Ja
Geplante Aufgaben (höher) Ja Ja
Geplante Aufgaben (älter) Ja Ja
Sofortaufgaben (höher) Ja Ja
Sofortige Aufgaben (auf niedrigerer Ebene) Ja Ja
Datenquellen Ja Ja

Zusammenfassung der Änderungen

  • Kennwortfelder in allen betroffenen Einstellungen sind deaktiviert. Administratoren können mit diesen Kennwortfeldern keine neuen Einstellungen erstellen.
  • Das Feld "Benutzername" ist in einigen Einstellungen deaktiviert.
  • Vorhandene Einstellungen, die ein Kennwort enthalten, können nicht aktualisiert werden. Sie können nur je nach Einstellung gelöscht oder deaktiviert werden.
  • Das Verhalten für Lösch- und Deaktivierungsaktionen hat sich für die Einstellungen nicht geändert.
  • Wenn ein Administrator eine Einstellung öffnet, die das CPassword-Attribut enthält, erhält der Administrator das folgende Warndialogfeld, um ihn über die kürzlich erfolgte Einstellung zu informieren. Versuche, Änderungen an neuen oder vorhandenen Einstellungen zu speichern, die das CPassword-Attribut erfordern, lösen dasselbe Dialogfeld aus. Nur die Aktionen "Löschen" und "Deaktivieren" lösen keine Warndialogfelder aus.

             a0a4e39c-aa0a-936b-e086-593dfb035a8e
            
            
            
          

Szenario 1: Lokale Benutzerverwaltung

Die Einstellung "Lokale Benutzerverwaltung" wird häufig verwendet, um lokale Administratoren zu erstellen, die ein bekanntes Kennwort für einen Computer haben. Dieses Feature ist aufgrund der Art und Weise, wie Kennwörter in den Gruppenrichtlinie-Voreinstellungen gespeichert werden, nicht sicher. Daher steht diese Funktionalität nicht mehr zur Verfügung. Die folgenden Einstellungen sind betroffen:

  • Computerkonfiguration –> Einstellungen der Systemsteuerung –> Lokale Benutzer und Gruppen –> Neu –> Lokaler Benutzer
  • Benutzerkonfiguration –> Einstellungen der Systemsteuerung –> Lokale Benutzer und Gruppen –> Neu –> Lokaler Benutzer

Wichtige Änderungen

Aktion: Erstellen oder Ersetzen

  • Die Felder Benutzername, Kennwort und Kennwort bestätigen sind deaktiviert.
  • Das Warndialogfeld wird angezeigt, wenn der Administrator Änderungen an einer vorhandenen Einstellung, die ein Kennwort enthält, öffnet oder zu speichern versucht.

                
                 41da12b9-527c-80ac-986c-82de889869ab
                
Aktion: Aktualisieren

  • Die Felder "Kennwort" und "Kennwort bestätigen " sind deaktiviert.
  • Das Warndialogfeld wird angezeigt, wenn der Administrator Änderungen an einer vorhandenen Einstellung, die ein Kennwort enthält, öffnet oder zu speichern versucht.

                
                 183f7c58-79e3-db1b-72e9-3144fcefc0e4
                
Aktion: Löschen

  • Keine Verhaltensänderung

Problemumgehungen

Für diejenigen, die sich zuvor zum Festlegen lokaler Administratorkennwörter auf die Gruppenrichtlinie-Einstellung verlassen haben, wird das folgende Skript als sichere Alternative zu CPassword bereitgestellt. Kopieren und speichern Sie den Inhalt in einer neuen Windows PowerShell-Datei, und führen Sie dann das Skript wie in der . EXAMPLE-Abschnitt.

Microsoft stellt Programmierbeispiele nur zur Veranschaulichung zur Verfügung, ohne ausdrückliche oder stillschweigende Garantie. Dies schließt die stillschweigende Gewährleistung der Marktgängigkeit oder der Eignung für einen bestimmten Zweck ein, ist aber nicht darauf beschränkt. In diesem Artikel wird davon ausgegangen, dass Sie mit der vorgestellten Programmiersprache und den Werkzeugen zum Erstellen und Debuggen von Prozeduren vertraut sind. Die Support-Techniker von Microsoft können Ihnen die Funktionalität eines bestimmten Verfahrens erklären. Sie werden diese Beispiele jedoch nicht ändern, um zusätzliche Funktionen bereitzustellen oder Verfahren zu konstruieren, die Ihren speziellen Anforderungen entsprechen.

Invoke-PasswordRoll
{
<#
. ZUSAMMENFASSUNG

Dieses Skript kann verwendet werden, um die Kennwörter für lokale Konten auf Remotecomputern auf zufällige Kennwörter festzulegen. Die Kombination aus Benutzername, Kennwort und Server wird in einer CSV-Datei gespeichert.
Die in der CSV-Datei gespeicherten Kontokennwörter können mit einem Kennwort der Administratoren verschlüsselt werden, wobei sichergestellt werden soll, dass Kontokennwörter in Klartext nicht auf den Datenträger geschrieben werden.
Die verschlüsselten Passwörter können mit einer anderen Funktion in dieser Datei entschlüsselt werden: ConvertTo-CleartextPassword

Funktion: Invoke-PasswordRoll
Autor: Microsoft
Version: 1.0

. BESCHREIBUNG

Dieses Skript kann verwendet werden, um die Kennwörter für lokale Konten auf Remotecomputern auf zufällige Kennwörter festzulegen. Die Kombination aus Benutzername, Kennwort und Server wird in einer CSV-Datei gespeichert.
Die in der CSV-Datei gespeicherten Kontokennwörter können mit einem Kennwort der Administratoren verschlüsselt werden, wobei sichergestellt werden soll, dass Kontokennwörter in Klartext nicht auf den Datenträger geschrieben werden.
Die verschlüsselten Passwörter können mit einer anderen Funktion in dieser Datei entschlüsselt werden: ConvertTo-CleartextPassword

. PARAMETER ComputerName

Ein Array von Computern, für das das Skript mithilfe von PowerShell-Remoting ausgeführt werden soll.

. PARAMETER LocalAccounts

Ein Array lokaler Konten, deren Kennwort geändert werden soll.

. PARAMETER TsvFileName

Die Datei, in die die Kombinationen aus Benutzername, Kennwort und Server ausgegeben werden sollen.

. PARAMETER EncryptionKey

Ein Kennwort zum Verschlüsseln der TSV-Datei. Verwendet AES-Verschlüsselung. Nur die in der TSV-Datei gespeicherten Kennwörter werden verschlüsselt, der Benutzername und der Servername sind Klartext.

. PARAMETER PasswordLength

Die Länge der Kennwörter, die für lokale Konten nach dem Zufallsprinzip generiert werden.

. PARAMETER NoEncryption

Verschlüsseln Sie die in der TSV-Datei gespeicherten Kontokennwörter nicht. Dies führt dazu, dass Klartextkennwörter auf den Datenträger geschrieben werden.

. BEISPIEL

. .\Invoke-PasswordRoll.ps1 #Loads die Funktionen in dieser Skriptdatei
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator","CustomLocalAdmin") -TsvFileName "LocalAdminCredentials.tsv" -EncryptionKey "Password1"

Stellt eine Verbindung zu allen Computern her, die in der Datei "computerlist.txt" gespeichert sind. Wenn das lokale Konto "Administrator" und/oder "CustomLocalAdmin" auf dem System vorhanden sind, wird ihr Kennwort geändert
auf ein zufällig generiertes Kennwort der Länge 20 (Standard). Die Kombinationen aus Benutzername, Kennwort und Server werden in "LocalAdminCredentials.tsv" gespeichert, und die Kontokennwörter werden mit dem Kennwort "Password1" AES-verschlüsselt.

. BEISPIEL

. .\Invoke-PasswordRoll.ps1 #Loads die Funktionen in dieser Skriptdatei
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40

Stellt eine Verbindung zu allen Computern her, die in der Datei "computerlist.txt" gespeichert sind. Wenn das lokale Konto "Administrator" auf dem System vorhanden ist, wird sein Kennwort in ein zufällig generiertes Kennwort geändert
Kennwort mit Länge 40. Die Kombinationen aus Benutzername, Kennwort und Server werden unverschlüsselt in "LocalAdminCredentials.tsv" gespeichert.

. ANMERKUNGEN
Anforderungen:
-PowerShellv2 oder höher muss installiert sein
-PowerShell-Remoting muss auf allen Systemen aktiviert sein, für die das Skript ausgeführt wird

Skriptverhalten:
-Wenn ein lokales Konto auf dem System vorhanden ist, aber nicht im Parameter LocalAccounts angegeben ist, schreibt das Skript eine Warnung auf den Bildschirm, um Sie auf das Vorhandensein dieses lokalen Kontos aufmerksam zu machen. Das Skript wird in diesem Fall weiter ausgeführt.
-Wenn im Parameter LocalAccounts ein lokales Konto angegeben ist, das Konto jedoch nicht auf dem Computer vorhanden ist, geschieht nichts (es wird KEIN Konto erstellt).
-Die Funktion ConvertTo-CleartextPassword, die in dieser Datei enthalten ist, kann verwendet werden, um Passwörter zu entschlüsseln, die verschlüsselt in der TSV-Datei gespeichert sind.
-Wenn mit einem in ComputerName angegebenen Server keine Verbindung hergestellt werden kann, gibt PowerShell eine Fehlermeldung aus.
-Microsoft empfiehlt Unternehmen, regelmäßig ein Rollout aller Kennwörter für lokale und Domänenkonten durchzuführen.

#>
    [CmdletBinding(DefaultParameterSetName="Encryption")]
    Parameter (
        [Parameter(Mandatory=$true)]
        [Zeichenfolge[]]
        $ComputerName,

        [Parameter(Mandatory=$true)]
        [Zeichenfolge[]]
        $LocalAccounts,

        [Parameter(Mandatory=$true)]
        [Zeichenfolge]
        $TsvFileName,

        [Parameter(ParameterSetName="Encryption", Mandatory=$true)]
        [Zeichenfolge]
        $EncryptionKey,

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

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

    #Load alle benötigten .NET-Klassen
    Add-Type -AssemblyName "System.Web" -ErrorAction Stop

    #This ist der Skriptblock, der auf jedem Computer ausgeführt wird, der in ComputerName angegeben wird
    $RemoteRollScript = {
        Parameter (
            [Parameter(Mandatory=$true, Position=1)]
            [Zeichenfolge[]]
            $Passwords,

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

            #This ist hier, damit ich den Servernamen aufzeichnen kann, mit dem das Skript eine Verbindung hergestellt hat, manchmal werden die DNS-Einträge durcheinandergebracht, es kann schön sein, das zu haben.
            [Parameter(Mandatory=$true, Position=3)]
            [Zeichenfolge]
            $TargettedServerName
        )

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

        #Check, ob der Computer über lokale Benutzerkonten verfügt, deren Kennwörter nicht von diesem Skript übernommen werden.
        foreach ($User in $LocalUsers)
        {
            if ($LocalAccounts -inotcontains $User)
            {
                Write-Warning "Server: '$($TargettedServerName)' hat ein lokales Konto '$($User)', dessen Kennwort von diesem Skript NICHT geändert wird"
            }
        }

        Ändern Sie #For jedes angegebene lokale Konto, das auf diesem Server vorhanden ist, das Kennwort.
        $PasswordIndex = 0
        foreach ($LocalAdmin in $LocalAccounts)
        {
            $Password = $Passwords[$PasswordIndex]

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

                    $Properties = @{
                        TargettedServerName = $TargettedServerName
                        Benutzername = $LocalAdmin
                        Kennwort = $Password
                        RealServerName = $env:Computername
                    }

                    $ReturnData = New-Object PSObject -Property $Properties
                    Write-Output $ReturnData
                }
                fangen
                {
                    Write-Error "Fehler beim Ändern des Kennworts für Benutzer:$($LocalAdmin) auf dem Server:$($TargettedServerName)"
                }
            }

            $PasswordIndex++
        }
    }

    #Generate das Kennwort auf dem Client, auf dem dieses Skript ausgeführt wird, nicht auf dem Remotecomputer. System.Web.Security ist im .NET-Clientprofil nicht verfügbar. Diesen Anruf tätigen
    # Auf dem Client, auf dem das Skript ausgeführt wird, wird sichergestellt, dass nur auf einem Computer die vollständige .NET-Laufzeitumgebung installiert wird (im Gegensatz zu jedem System, auf dem das Kennwort verwendet wird).
    Create-RandomPassword
    {
        Parameter (
            [Parameter(Mandatory=$true)]
            [ValidateRange(20,120)]
            [int]
            $PasswordLength
        )

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

        #This sollte nie scheitern, aber ich mache hier trotzdem einen Plausibilitätscheck
        if ($Password.Length -ne $PasswordLength)
        {
            throw new Exception("Von GeneratePassword zurückgegebenes Passwort hat nicht die gleiche Länge wie erforderlich. Erforderliche Länge: $($PasswordLength). Generierte Länge: $($Password.Length)")
        }

        return $Password
    }

    #Main Funktionalität - Generieren Sie ein Kennwort und verwenden Sie Remoteverbindungen zu Computern, um das Kennwort der angegebenen lokalen Konten zu ändern.
    if ($PsCmdlet.ParameterSetName -ieq "Encryption")
    {
        Versuch
        {
            $Sha 256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider
            $SecureStringKey = $Sha 256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey))
        }
        fangen
        {
            Write-Error "Fehler beim Erstellen des TSV-Verschlüsselungsschlüssels" -ErrorAction Stop
        }
    }

    foreach ($Computer in $ComputerName)
    {
        #Need, um 1 Kennwort für jedes Konto zu generieren, das geändert werden kann
        $Passwords = @()
        for ($i = 0; $i -lt $LocalAccounts.Length; $i++)
        {
            $Passwords += Create-RandomPassword -PasswordLength $PasswordLength
        }

        Write-Output "Verbindung mit dem Server '$($Computer)' zum Rollieren bestimmter lokaler Administratorkennwörter"
        $Result = Invoke-Command -ScriptBlock $RemoteRollScript -ArgumentList @($Passwords, $LocalAccounts, $Computer) -ComputerName $Computer
        #If Verschlüsselung verwendet wird, verschlüsseln Sie das Kennwort mit dem vom Benutzer bereitgestellten Schlüssel, bevor Sie es auf den Datenträger schreiben
        if ($Result -ne $null)
        {
            if ($PsCmdlet.ParameterSetName -ieq "NoEncryption")
            {
                $Result | Select-Object Benutzername,Kennwort,ZielServername,RealServerName | Export-Csv -append -path $TsvFileName -NoTypeInformation
            }
            else
            {
                #Filters $null zurückgegebenen Einträge
                $Result = $Result | Select-Object Benutzername,Kennwort,ZielServername,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 Benutzername,Verschlüsseltes Kennwort,ZielServername,RealServerName | Export-Csv -append -path $TsvFileName -NoTypeInformation
                }
            }
        }
    }
}

ConvertTo-CleartextPassword
{
<#
. ZUSAMMENFASSUNG
Diese Funktion kann verwendet werden, um Kennwörter zu entschlüsseln, die von der Funktion Invoke-PasswordRoll verschlüsselt gespeichert wurden.

Funktion: ConvertTo-CleartextPassword
Autor: Microsoft
Version: 1.0

. BESCHREIBUNG
Diese Funktion kann verwendet werden, um Kennwörter zu entschlüsseln, die von der Funktion Invoke-PasswordRoll verschlüsselt gespeichert wurden.

. PARAMETER: EncryptedPassword

Das verschlüsselte Kennwort, das in einer TSV-Datei gespeichert wurde.

. PARAMETER EncryptionKey

Das für die Verschlüsselung verwendete Passwort.

. BEISPIEL

. .\Invoke-PasswordRoll.ps1 #Loads die Funktionen in dieser Skriptdatei
ConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAG iamabiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"

Entschlüsselt das verschlüsselte Kennwort, das in der TSV-Datei gespeichert wurde.

#>
    Parameter (
        [Parameter(Mandatory=$true)]
        [Zeichenfolge]
        $EncryptedPassword,

        [Parameter(Mandatory=$true)]
        [Zeichenfolge]
        $EncryptionKey
    )

    $Sha 256 = new-object 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)))
}
   Administratoren können lokale Administratorkonten zu Computern hinzufügen, indem sie eine Active Directory-Gruppe erstellen und diese über die Gruppenrichtlinie Einstellungen> – Lokale Gruppe zur lokalen Gruppe "Administratoren" hinzufügen. Diese Aktion speichert keine Anmeldeinformationen zwischen. Das Dialogfeld sieht etwa wie folgt aus. Diese Problemumgehung erfordert eine Verbindung mit Active Directory Domain Services, wenn der Benutzer mit diesen Anmeldeinformationen angemeldet ist.

6d3013b5-df8c-898a-0a22-33a829d3755f

Szenario 2: Zugeordnete Laufwerke

Administratoren verwenden Laufwerkzuordnungen, um Benutzern Netzwerkadressen zuzuweisen. Die Kennwortschutzfunktion wird verwendet, um den autorisierten Zugriff auf das Laufwerk sicherzustellen. Die folgenden Einstellungen sind betroffen:

  • Benutzerkonfiguration –> Windows-Einstellungen –> Laufwerksübersichten –> Neu –> Zugeordnetes Laufwerk

Wichtige Änderungen

Aktion: Erstellen, Aktualisieren oder Ersetzen

  • Die Felder Benutzername, Kennwort und Kennwort bestätigen sind deaktiviert.

                 78e7a904-5d9c-8655-e4b6-2d7c8dc3c3f9
                
Aktion: Löschen

  • Keine Verhaltensänderung

Problemumgehungen

Anstatt die Kennwortmethode für die Authentifizierung zu verwenden, können Sie Windows Explorer verwenden, um Freigabeberechtigungen zu verwalten und Benutzern Rechte zuzuweisen. Sie können Active Directory-Objekte verwenden, um die Berechtigungen für den Ordner zu steuern.

Szenario 3: Dienste

Mit der Einstellung Dienste können Sie die Diensteigenschaften so ändern, dass sie in einem anderen Kontext als ihrem ursprünglichen Sicherheitskontext ausgeführt werden. Die folgenden Einstellungen sind betroffen:

  • Computerkonfiguration -> Einstellungen der Systemsteuerung -> Dienste -> Neu -> Dienst

Wichtige Änderungen

Start: Keine Änderung, automatisch oder manuell

  • Die Felder "Kennwort" und "Kennwort bestätigen " sind deaktiviert.
  • Der Administrator kann nur integrierte Konten verwenden.

                 bd4e263c-d8e6-e20f-b57a-9c1c5caca355
                
Start: Deaktivieren

  • Keine Verhaltensänderung

Neues Dialogfeld

  • Administratoren, die versuchen, nicht integrierte Benutzer für dieses Konto zu verwenden", erhalten die folgende Warnung:

                 975f73f7-e950-ad09-d46b-b68ac9a5e4cb
                
                
              

Problemumgehungen

                
                
Dienste können weiterhin als lokales Systemkonto ausgeführt werden. Dienstberechtigungen können wie im folgenden Artikel der Microsoft Knowledge Base beschrieben geändert werden:

256345 So konfigurieren Sie Gruppenrichtlinie Einstellungen zur Einstellung der Sicherheit für Systemdienste

Hinweis Wenn der Dienst, den Sie konfigurieren möchten, nicht vorhanden ist, müssen Sie die Einstellungen auf einem Computer konfigurieren, auf dem der Dienst ausgeführt wird. 

Szenario 4: Geplante und sofortige Aufgaben (höher)

Diese werden verwendet, um geplante Aufgaben in einem bestimmten Sicherheitskontext auszuführen. Die Möglichkeit zum Speichern von Anmeldeinformationen für geplante Aufgaben, die als beliebiger Benutzer ausgeführt werden können, wenn dieser Benutzer nicht angemeldet ist, ist nicht mehr verfügbar. Die folgenden Einstellungen sind betroffen. (Beachten Sie, dass auf einigen Plattformen "Mindestens Windows 7" durch "Windows Vista und höher" ersetzt wird.)

  • Computerkonfiguration -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Geplante Aufgabe (mindestens Windows 7)
  • Computerkonfiguration -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Sofortaufgabe (mindestens Windows 7)
  • Benutzerkonfiguration -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Geplante Aufgabe (mindestens Windows 7)
  • Benutzerkonfiguration -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Sofortaufgabe (mindestens Windows 7)

Wichtige Änderungen

Aktion: Erstellen, Aktualisieren oder Ersetzen

  • Wenn Sie die Option "Ausführen, unabhängig davon, ob der Benutzer angemeldet ist oder nicht " auswählen, wird der Administrator nicht mehr in einem Dialogfeld zur Eingabe von Anmeldeinformationen aufgefordert.
  • Das Kontrollkästchen "Kennwort nicht speichern " ist deaktiviert. Standardmäßig ist das Kontrollkästchen ebenfalls aktiviert.

                 60ff2409-1c24-a2aa-466d-89afaadaf0a0
                
Aktion: Löschen

Keine Verhaltensänderung

Problemumgehungen

Für die Aufgaben "Geplante Aufgabe (mindestens Windows 7)" und "Sofortige Aufgabe (mindestens Windows 7)" können Administratoren bestimmte Benutzerkonten verwenden, wenn der jeweilige Benutzer angemeldet ist. Oder sie können als dieser Benutzer nur auf lokale Ressourcen zugreifen. Diese Aufgaben können weiterhin im Kontext des lokalen Diensts ausgeführt werden.

            
Szenario 5: Geplante und sofortige Aufgaben (niedrigere Ebene) Dies ist die niedrigere Version der Einstellungen, die zum Ausführen geplanter Aufgaben in einem bestimmten Sicherheitskontext verwendet werden. Die Möglichkeit zum Speichern von Anmeldeinformationen für geplante Aufgaben, die als beliebiger Benutzer ausgeführt werden können, wenn dieser Benutzer nicht angemeldet ist, ist nicht mehr verfügbar. Die folgenden Einstellungen sind betroffen:

  • Computerkonfiguration –> Einstellungen der Systemsteuerung –> Geplante Tasks –> Neu –> Geplante Aufgabe
  • Computerkonfiguration -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Sofortaufgabe (Windows XP)
  • Benutzerkonfiguration -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Geplante Aufgabe
  • Benutzerkonfiguration -> Einstellungen der Systemsteuerung -> Geplante Aufgaben -> Neu -> Sofortaufgabe (Windows XP)

Wichtige Änderungen

Aktion: Erstellen, Aktualisieren oder Ersetzen

  • Das Kontrollkästchen Ausführen als ist deaktiviert. Daher sind die Felder Benutzername, Kennwort und Kennwort bestätigen deaktiviert.

                 2baacb70-2e5a-e72d-7fd6-3e358608d76c
                
Aktion: Löschen

 Keine Verhaltensänderung

Problemumgehungen

Für die Elemente "Geplante Aufgabe" und "Sofortige Aufgabe (Windows XP)" werden geplante Aufgaben mit den Berechtigungen ausgeführt, die derzeit für den lokalen Dienst verfügbar sind. 

Szenario 6: Datenquellen

Die Datenquellen-Einstellung wird verwendet, um eine Datenquelle einem Computer oder Benutzer zuzuordnen. Dieses Feature speichert keine Anmeldeinformationen mehr, um den Zugriff auf Datenquellen zu ermöglichen, die durch ein Kennwort geschützt sind. Die folgenden Einstellungen sind betroffen:

  • Computerkonfiguration –> Einstellungen der Systemsteuerung –> Datenquellen
  • Benutzerkonfiguration –> Einstellungen der Systemsteuerung –> Datenquellen

Wichtige Änderungen

Aktion: Erstellen, Aktualisieren oder Ersetzen

  • Die Felder "Benutzername", "Kennwort" und "Kennwort bestätigen " sind deaktiviert:

                 92BEB16C-1B15-8903-A694-F471212D4A45
                
Aktion: Löschen

  • Keine Verhaltensänderung

Problemumgehungen

Es sind keine Problemumgehungen verfügbar. Diese Einstellung speichert keine Anmeldeinformationen mehr, um den Zugriff auf Datenquellen zu ermöglichen, die durch ein Kennwort geschützt sind. 

Einstellung von CPassword

Entfernen von CPassword

Das in diesem Microsoft Knowledge Base-Artikel enthaltene Windows PowerShell-Skript erkennt, ob eine Domäne Gruppenrichtlinien-Einstellungen enthält, die möglicherweise CPassword verwenden. Wenn CPassword-XML in einer bestimmten Einstellung erkannt wird, wird es in dieser Liste angezeigt. 

Detecting CPassword preferences

Dieses Skript muss in einem lokalen Verzeichnis auf dem Domänencontroller ausgeführt werden, den Sie sauber machen möchten. Kopieren und speichern Sie den Inhalt in einer neuen Windows PowerShell Datei, ermitteln Sie Ihr Systemlaufwerk, und führen Sie dann das Skript wie in der folgenden Verwendung angegeben aus.

  <#
. ZUSAMMENFASSUNG
Gruppenrichtlinien-Objekte in Ihrer Domäne können Einstellungen haben, in denen Kennwörter für verschiedene Aufgaben gespeichert werden, z. B.:
1. Urheberrecht Data Sources
2. Urheberrecht Laufwerksübersichten
3. Urheberrecht Lokale Benutzer
4. Urheberrecht Geplante Aufgaben (sowohl XP als auch höher)
5. Personenbezogene Daten Dienste
Diese Kennwörter werden in SYSVOL als Teil der GP-Einstellungen gespeichert und sind aufgrund einer schwachen Verschlüsselung (32-Byte-AES) nicht sicher.
Daher wird empfohlen, solche Einstellungen nicht in Ihrer Domänenumgebung bereitzustellen und solche vorhandenen
Einstellungen. Dieses Skript soll Administratoren helfen, GP-Einstellungen im SYSVOL ihrer Domäne zu finden, das Kennwörter enthält.

. BESCHREIBUNG
Dieses Skript sollte auf einem Domänencontroller oder einem Clientcomputer ausgeführt werden, der mit RSAT installiert ist, um alle Einstellungen zu drucken, die Folgendes enthalten
Kennwort mit Informationen wie GPO, Einstellungsname, GPEdit-Pfad, unter dem diese Einstellung definiert ist.
Nachdem Sie eine Liste der betroffenen Einstellungen erstellt haben, können Sie diese Einstellungen mithilfe des Editors in der Gruppenrichtlinie-Verwaltungskonsole entfernen.

. SYNTAX
Get-SettingsWithCPassword.ps1 [-path <string>]
. BEISPIEL
Get-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domain
Get-SettingsWithCPassword.ps1 -Path <GPO Sicherungsordner Pfad>

. ANMERKUNGEN
Wenn das PS-Modul der Gruppenrichtlinie nicht gefunden wird, enthält die Ausgabe GPO-GUIDs anstelle von GPO-Namen. Sie können entweder
Skript auf einem Domänencontroller ausführen, oder führen Sie das Skript auf dem Client erneut aus, nachdem Sie RSAT und
das Modul "Gruppenrichtlinie" wurde aktiviert.
Sie können GPO-GUIDs auch verwenden, um GPO-Namen mithilfe des Cmdlets Get-GPO abzurufen.

. VERKNÜPFUNG
http://go.microsoft.com/fwlink/?LinkID=390507

#>
#----------------------------------------------------------------------------------------------------------------

Eingabeparameter

#--------------------------------------------------------------------------------------------------------------
param(
    [string]$Path = $(throw "-Path is required.") # Verzeichnispfad, in dem sich die GPPs befinden.
 )
#---------------------------------------------------------------------------------------------------------------
$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 "Modul für PowerShell kann Gruppenrichtlinie nicht importiert werden. Daher werden GPO-GUIDs gemeldet.
                       Führen Sie dieses Skript auf dem Domänencontroller aus, um die Gruppenrichtlinienobjektnamen abzurufen, oder verwenden Sie das Cmdlet Get-GPO (auf dem Domänencontroller), um den Gruppenrichtlinienobjektnamen aus der GPO-GUID abzurufen."
    }
}
else
{
    $isGPModuleAvailable = $true
}
Funktion Enum-SettingsWithCpassword ( [string]$sysvolLocation )
{
    # GPMC-Baumpfade
    $commonPath = " -> Voreinstellungen -> Systemsteuerung Einstellungen -> "
    $driveMapPath = " -> Einstellungen -> Windows-Einstellungen -> "

    # Rekursiv alle XML-Dateien am Speicherort SYVOL abrufen
    $impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" | Where-Object { $impactedPrefs -cmatch $_. Name }

    # Jede XML-Datei enthält mehrere Einstellungen. durchlaufen Sie jede Einstellung, um zu überprüfen, ob
    # Enthält das cpassword-Attribut und zeigt es an.
    foreach ( $file in $impactedXmls )
    {
        $fileFullPath = $file. FullName

        # Festlegen der GPP-Kategorie. Wenn sich die Datei unter dem Ordner "Computer" in SYSVOL befindet
        # Die Einstellung wird unter Computerkonfiguration definiert, andernfalls
        #-Einstellung ist eine für Benutzerkonfiguration
        if ( $fileFullPath.Contains("Machine") )
        {
            $category = "Computerkonfiguration"
        }
        elseif ( $fileFullPath.Contains("User") )
        {
            $category = "Benutzerkonfiguration"
        }
        else
        {
            $category = "Unbekannt"
        }
        # Dateiinhalt als XML abrufen
        Versuch
        {
            [xml]$xmlFile = get-content $fileFullPath -ErrorAction Continue
        }
        catch [Exception]{
            Write-Host $_. Exception.Message
        }
        if ($xmlFile -eq $null)
        {
            weiter
        }
        switch ( $file. BaseName )
        {
            Gruppen
            {
                $gppWithCpassword = $xmlFile.SelectNodes("groups/user") | where-Object { [String]::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
                $preferenceType = "Lokale Benutzer"
            }
            ScheduledTasks
            {
                $gppWithCpassword = $xmlFile.SelectNodes("ScheduledTasks/*") | where-Object { [String]::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
                $preferenceType = "Geplante Aufgaben"
            }
            DataSources
            {
                $gppWithCpassword = $xmlFile.SelectNodes("DataSources/DataSource") | where-Object { [String]::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
                $preferenceType = "Datenquellen"
            }
            Laufwerke
            {
                $gppWithCpassword = $xmlFile.SelectNodes("Drives/Drive") | where-Object { [String]::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
                $preferenceType = "Laufwerkskarten"
            }
            Dienste
            {
                $gppWithCpassword = $xmlFile.SelectNodes("NTServices/NTService") | where-Object { [String]::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
                $preferenceType = "Services"
            }
            Standard
            { # clear gppWithCpassword and preferenceType for next item.
                Versuch
                {
                    Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue
                    Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue
                }
                catch [Exception]{}
            }
        }
        if ($gppWithCpassword -ne $null)
        {
            # GPO-Namen aus GUID erstellen, die aus filePath extrahiert wurde
            $guidRegex = [Regex]"\{(.*)\}"
            $match = $guidRegex.Vergleich($fileFullPath)
            if ($match. Erfolgreich)
            {
               $gpoGuid = $match.groups[1].value
               $gpoName = $gpoGuid
            }
            else
            {
               $gpoName = "Unbekannt"
            }
            if($isGPModuleAvailable -eq $true)
            {
                Versuch
                {
                    $gpoInfo = Get-GPO -Guid $gpoGuid -ErrorAction Continue
                    $gpoName = $gpoInfo.DisplayName
                }
                catch [Exception] {
                    Write-Host $_. Exception.Message
                }
            }
            # Präzenzen anzeigen, die cpassword enthalten
            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) –passhru |
                       Add-Member -MemberType NoteProperty -name Preference -value ($gpp. Name) -passhru |
                       Add-Member -MemberType NoteProperty -name Path -value ($prefLocation)
                Write-Output $obj
            }
        } # end if $gppWithCpassword
    } # end foreach $file
} # end functions Enum-PoliciesWithCpassword
#-----------------------------------------------------------------------------------

Überprüfen Sie, ob der Pfad gültig ist. Zählen Sie alle Einstellungen auf, die cpassword enthalten.

#-----------------------------------------------------------------------------------
if (Testpfad $Path )
{
    Enum-SettingsWithCpassword $Path
}
else
{
    Write-Warning "No such directory: $Path"
}

Beispiel für Verwendung (setzt voraus, dass das Systemlaufwerk C ist)

.\Get-SettingsWithCPassword.ps1 –path "C:\Windows\SYSVOL\domain" | Format-List
Hinweis: Beachten Sie, dass Sie auch ein beliebiges Sicherungs-GPO für den Pfad anstelle der Domäne als Ziel verwenden können.

Das Erkennungsskript generiert eine Liste, die der folgenden ähnelt:

f9c1582e-a8d3-6f33-ffdd-7c143530043d

Bei längeren Listen sollten Sie die Ausgabe in einer Datei speichern:

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

Entfernen von CPassword-Einstellungen

Um die Einstellungen zu entfernen, die CPassword-Daten enthalten, empfehlen wir, die Gruppenrichtlinie-Verwaltungskonsole (Group Policy Management Console, GPMC) auf dem Domänencontroller oder auf einem Client zu verwenden, auf dem die Remoteserver-Verwaltungstools installiert sind. Auf diesen Konsolen können Sie jede Einstellung in fünf Schritten entfernen. Führen Sie hierzu die folgenden Schritte aus:

  1. Öffnen Sie in der Gruppenrichtlinien-Verwaltungskonsole die Einstellung, die CPassword-Daten enthält.
  2. Ändern Sie die Aktion je nach Einstellung in "Löschen " oder " Deaktivieren".
  3. Klicken Sie auf OK, um die Änderungen zu speichern.
  4. Warten Sie einen oder zwei Aktualisierungszyklen der Gruppenrichtlinie, damit Änderungen an die Clients weitergegeben werden können.
  5. Nachdem die Änderungen auf alle Clients angewendet wurden, löschen Sie die Einstellung.
  6. Wiederholen Sie die Schritte 1 bis 5 nach Bedarf, um Ihre gesamte Umgebung zu sauber. Wenn das Erkennungsskript keine Ergebnisse zurückgibt, sind Sie fertig.
Dateihashinformationen
Dateiname SHA1-Hash SHA256-Hash
Windows6.0-KB2928120-ia64.msu B2A74305CB56191774BFCF9FCDEAA983B26DC9A6 DCE8C0F9CEB97DBF1F7B9BAF76458B3770EF01C0EDC581621BC8C3B2C7FD14E7
Windows6.0-KB2928120-x64.msu 386457497682A2FB80BC93346D85A9C1BC38FBF7 1AF67EB12614F37F4AC327E7B5767AFA085FE676F6E81F0CED95D20393A1D38D
Windows6.0-KB2928120-x86.msu 42FF283781CEC9CE34EBF459CA1EFE011D5132C3 016D7E9DBBC5E487E397BE0147B590CFBBB5E83795B997894870EC10171E16D4
Windows6.1-KB2928120-ia64.msu 5C2196832EC94B99AAF9B074D3938525B7219690 9958FA58134F55487521243AD9740BEE0AC210AC290D45C8322E424B3E5EBF16
Windows6.1-KB2928120-x64.msu EA5332F4E289DC799611EAB8E3EE2E86B7880A4B 417A2BA34F8FD367556812197E2395ED40D8B394F9224CDCBE8AB3939795EC2A
Windows6.1-KB2928120-x86.msu 7B7B6EE24CD8BE1AB3479F9E1CF9C98982C8BAB1 603206D44815EF2DC262016ED13D6569BE13D06E2C6029FB22621027788B8095
Windows8-RT-KB2928120-x64.msu E18FC05B4CCA0E195E62FF0AE534BA39511A8593 FCAED97BF1D61F60802D397350380FADED71AED64435D3E9EAA4C0468D80141E
Windows8-RT-KB2928120-x86.msu A5DFB34F3B9EAD9FA78C67DFC7ACACFA2FBEAC0B 7F00A72D8A15EB2CA70F7146A8014E39A71CFF5E39596F379ACD883239DABD41
Windows8.1-KB2928120-x64.msu A07FF14EED24F3241D508C50E869540915134BB4 6641B1A9C95A7E4F0D5A247B9F488887AC94550B7F1D7B1198D5BCBA92F7A753
Windows8.1-KB2928120-x86.msu DE84667EC79CBA2006892452660EB99580D27306 468EE4FA3A22DDE61D85FD3A9D0583F504105DF2F8256539051BC0B1EB713E9C
Windows8.1-KB2961899-x64.msu 10BAE807DB158978BCD5D8A7862BC6B3EF20038B EC26618E23D9278FC1F02CA1F13BB289E1C6C4E0C8DA5D22E1D9CDA0DA8AFF51
Windows8.1-KB2961899-x86.msu 230C64447CC6E4AB3AD7B4D4655B8D8CEFBFBE98 E3FAD567AB6CA616E42873D3623A777185BE061232B952938A8846A974FFA7AF