MS14-025: Sicherheitsrisiko in Gruppenrichtlinie Einstellungen kann 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 in Bezug 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: Beschreibung des Sicherheitsupdates für Windows-Remoteserver-Verwaltungstools für Systeme, auf denen update 2919355 installiert ist: 13. Mai 2014

  • 2961899

    MS14-025: Beschreibung des Sicherheitsupdates für windows-Remoteserver-Verwaltungstools für Systeme, auf denen kein Update installiert 2919355 installiert ist: 13. Mai 2014

Gruppenrichtlinie Einstellungen

Übersicht

Einige Gruppenrichtlinie Einstellungen können ein Kennwort speichern. Diese Funktionalität wird 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 Gruppenrichtlinie Einstellungen lassen das Speichern von Benutzernamen und Kennwörtern nicht mehr zu:

  • Laufwerkszuordnungen
  • Lokale Benutzer und Gruppen
  • Geplante Aufgaben
  • Dienste
  • Data Sources

Dies wirkt sich auf das Verhalten aller vorhandenen Gruppenrichtlinie Objects (GPOs) in Ihrer Umgebung aus, die auf Kennwörtern basieren, die in diesen Einstellungen enthalten sind. Außerdem wird verhindert, dass mithilfe dieser Funktion neue Gruppenrichtlinie Einstellungen erstellt werden.

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

Für geplante Aufgaben und Datenquellen können Sie nicht die gleichen Ziele erreichen, die durch die unsichere Funktionalität von Gruppenrichtlinie Einstellungen-Kennwörtern verfügbar waren.

Szenarien

Die folgenden Gruppenrichtlinie Einstellungen sind von dieser Änderung betroffen. Jede Einstellung wird kurz und dann ausführlicher behandelt. Darüber hinaus werden Problemumgehungen bereitgestellt, mit denen Sie dieselben 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 Vorgänge (up-level) Ja Ja
Geplante Vorgänge (down-level) Ja Ja
Sofortige Aufgaben (auf höherer Ebene) Ja Ja
Sofortige Aufgaben (down-level) Ja Ja
Datenquellen Ja Ja

Zusammenfassung der Änderungen

  • Kennwortfelder in allen betroffenen Einstellungen sind deaktiviert. Administratoren können mithilfe dieser Kennwortfelder 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 entsprechend der jeweiligen Einstellung gelöscht oder deaktiviert werden.
  • Das Verhalten für die Aktionen Löschen und Deaktivieren 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 Warnungsdialogfeld, um ihn über die aktuelle 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 Warnungsdialogfelder aus.

             a0a4e39c-aa0a-936b-e086-593dfb035a8e
            
            
            
          

Szenario 1: Lokale Benutzerverwaltung

Die Einstellung Lokale Benutzerverwaltung wird häufig verwendet, um lokale Administratoren zu erstellen, die über ein bekanntes Kennwort auf einem Computer verfügen. Dieses Feature ist aufgrund der Art und Weise, wie Gruppenrichtlinie Preferences Kennwörter speichert, nicht sicher. Daher ist diese Funktionalität nicht mehr verfügbar. Die folgenden Einstellungen sind betroffen:

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

Wichtige Änderungen

Aktion: Erstellen oder Ersetzen

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

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

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

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

  • Keine Verhaltensänderung

Problemumgehungen

Für Diejenigen, die sich zuvor auf die Gruppenrichtlinie Einstellung zum Festlegen lokaler Administratorkennwörter verlassen haben, wird das folgende Skript als sichere Alternative zu CPassword bereitgestellt. Kopieren Und speichern Sie den Inhalt in eine neue Windows PowerShell-Datei, und führen Sie dann das Skript aus, wie in der zugehörigen angegeben. BEISPIELabschnitt.

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
{
<#
. SYNOPSIS

Dieses Skript kann verwendet werden, um die Lokalen Kontokennwörter auf Remotecomputern auf zufällige Kennwörter festzulegen. Die Kombination aus Benutzername/Kennwort/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, die sicherstellen, dass Klartextkontokennwörter nicht auf den Datenträger geschrieben werden.
Die verschlüsselten Kennwö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 Lokalen Kontokennwörter auf Remotecomputern auf zufällige Kennwörter festzulegen. Die Kombination aus Benutzername/Kennwort/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, die sicherstellen, dass Klartextkontokennwörter nicht auf den Datenträger geschrieben werden.
Die verschlüsselten Kennwörter können mit einer anderen Funktion in dieser Datei entschlüsselt werden: ConvertTo-CleartextPassword

. PARAMETER ComputerName

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

. PARAMETER LocalAccounts

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

. PARAMETER TsvFileName

Die Datei, an die die Kombinationen aus Benutzername/Kennwort/Server ausgegeben werden sollen.

. PARAMETER EncryptionKey

Ein Kennwort, mit dem die TSV-Datei verschlüsselt werden soll. Verwendet die 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 nach dem Zufallsprinzip für lokale Konten 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 mit allen Computern her, die in der Datei "computerlist.txt" gespeichert sind. Wenn das lokale Konto "administrator" und/oder "CustomLocalAdmin" auf dem System vorhanden ist, wird ihr Kennwort geändert.
auf ein zufällig generiertes Kennwort der Länge 20 (Standard). Die Kombinationen aus Benutzername/Kennwort/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 mit 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 Geändert.
Kennwort der Länge 40. Die Kombinationen aus Benutzername/Kennwort/Server werden unverschlüsselt in LocalAdminCredentials.tsv gespeichert.

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

Skriptverhalten:
- Wenn ein lokales Konto im System vorhanden ist, aber nicht im LocalAccounts-Parameter angegeben ist, schreibt das Skript eine Warnung auf den Bildschirm, um Sie über das Vorhandensein dieses lokalen Kontos zu informieren. Das Skript wird in diesem Fall weiterhin ausgeführt.
– Wenn im Parameter LocalAccounts ein lokales Konto angegeben ist, das Konto aber nicht auf dem Computer vorhanden ist, geschieht nichts (ein Konto wird NICHT erstellt).
- Die Funktion ConvertTo-CleartextPassword, die in dieser Datei enthalten ist, kann verwendet werden, um Kennwörter zu entschlüsseln, die verschlüsselt in der TSV-Datei gespeichert sind.
– Wenn ein in ComputerName angegebener Server nicht mit verbunden werden kann, gibt PowerShell eine Fehlermeldung aus.
-Microsoft rät Unternehmen, regelmäßig alle kennwörter für lokale Konten und Domänenkonten zu verwenden.

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

        [Parameter(Mandatory=$true)]
        [String[]]
        $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 aller erforderlichen .NET-Klassen
    Add-Type -AssemblyName "System.Web" -ErrorAction Stop

    #This ist der Scriptblock, der auf jedem in Computername angegebenen Computer ausgeführt wird.
    $RemoteRollScript = {
        Param(
            [Parameter(Mandatory=$true, Position=1)]
            [String[]]
            $Passwords,

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

            #This ist hier, damit ich aufzeichnen kann, wie der Servername, mit dem das Skript verbunden ist, war, manchmal werden die DNS-Einträge vermasselt, es kann schön sein, dies zu haben.
            [Parameter(Mandatory=$true, Position=3)]
            [Zeichenfolge]
            $TargettedServerName
        )

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

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

        #For jedes lokale Konto, das auf diesem Server vorhanden ist, ändern Sie 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 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. Tätigen dieses Aufrufs
    # auf dem Client, auf dem das Skript ausgeführt wird, stellt sicher, dass nur für einen Computer die vollständige .NET-Runtime installiert sein muss (im Gegensatz zu jedem System, auf dem das Kennwort gerollt wurde).
    Create-RandomPassword
    {
        Param(
            [Parameter(Mandatory=$true)]
            [ValidateRange(20,120)]
            [Int]
            $PasswordLength
        )

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

        #This sollte nie scheitern, aber ich stelle hier sowieso eine Integritätsprüfung
        if ($Password.Length -ne $PasswordLength)
        {
            throw new Exception("Password returned by GeneratePassword is not same length as required. Erforderliche Länge: $($PasswordLength). Generierte Länge: $($Password.Length)")
        }

        $Password zurückgeben
    }

    #Main Funktionalität: Generieren eines Kennworts und Remotezugriff auf Computer, 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 "Herstellen einer Verbindung mit dem Server '$($Computer)'", um angegebene lokale Administratorkennwörter zu verwenden.
        $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 auf den Datenträger schreiben.
        if ($Result -ne $null)
        {
            if ($PsCmdlet.ParameterSetName -ieq "NoEncryption")
            {
                $Result | Select-Object Benutzername,Kennwort,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation
            }
            else
            {
                $null zurückgegebenen Einträge #Filters
                $Result = $Result | Select-Object Benutzername,Kennwort,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
                }
            }
        }
    }
}

ConvertTo-CleartextPassword
{
<#
. SYNOPSIS
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 Kennwort, das für die Verschlüsselung verwendet wird.

. BEISPIEL

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

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

#>
    Param(
        [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 sie der lokalen Administratorgruppe über Gruppenrichtlinie Einstellungen –> Lokale Gruppe hinzufügen. Diese Aktion speichert keine Anmeldeinformationen zwischen. Das Dialogfeld sieht 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 Laufwerkszuordnungen, um Benutzern Netzwerkspeicherorte zuzuweisen. Das Kennwortschutzfeature wird verwendet, um den autorisierten Zugriff auf das Laufwerk sicherzustellen. Die folgenden Einstellungen sind betroffen:

  • Benutzerkonfiguration –> Windows-Einstellungen –> Laufwerkszuordnungen –> 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 Berechtigungen für den Ordner zu steuern.

Szenario 3: Dienste

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

  • Computerkonfiguration –> Systemsteuerung Einstellungen –> 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

Dialogfeld "Neu"

  • 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 in der Microsoft Knowledge Base dokumentiert geändert werden:

256345 Konfigurieren von Gruppenrichtlinie Einstellungen zum Festlegen 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 (up-level)

Diese werden verwendet, um geplante Aufgaben in einem bestimmten Sicherheitskontext auszuführen. Die Möglichkeit, Anmeldeinformationen für geplante Aufgaben zu speichern, die als beliebiger Benutzer ausgeführt werden, 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 –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Geplante Aufgabe (mindestens Windows 7)
  • Computerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Sofortige Aufgabe (mindestens Windows 7)
  • Benutzerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Geplante Aufgabe (mindestens Windows 7)
  • Benutzerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Sofortige Aufgabe (mindestens Windows 7)

Wichtige Änderungen

Aktion: Erstellen, Aktualisieren oder Ersetzen

  • Wenn Sie die Option Ausführen auswählen, ob der Benutzer angemeldet ist oder nicht , fordert ein Dialogfeld den Administrator nicht mehr zur Eingabe von Anmeldeinformationen auf.
  • 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 betreffende Benutzer angemeldet ist. Oder sie haben nur Zugriff auf lokale Ressourcen als dieser Benutzer. Diese Aufgaben können weiterhin im Kontext des lokalen Diensts ausgeführt werden.

            
Szenario 5: Geplante und sofortige Tasks (down-level) Dies ist die down-level-Version der Einstellungen, die zum Ausführen von geplanten Aufgaben in einem bestimmten Sicherheitskontext verwendet werden. Die Möglichkeit, Anmeldeinformationen für geplante Aufgaben zu speichern, die als beliebiger Benutzer ausgeführt werden, wenn dieser Benutzer nicht angemeldet ist, ist nicht mehr verfügbar. Die folgenden Einstellungen sind betroffen:

  • Computerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Vorgänge –> Neu –> Geplante Aufgabe
  • Computerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Direkttask (Windows XP)
  • Benutzerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Geplante Aufgabe
  • Benutzerkonfiguration –> Systemsteuerung Einstellungen –> Geplante Aufgaben –> Neu –> Direkttask (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 Einstellung Datenquellen 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 –> Systemsteuerung Einstellungen –> Datenquellen
  • Benutzerkonfiguration –> Systemsteuerung Einstellungen –> 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 Windows PowerShell Skript, das in diesem Microsoft Knowledge Base-Artikel enthalten ist, erkennt, ob eine Domäne Gruppenrichtlinie Einstellungen enthält, die CPassword verwenden könnten. Wenn CPassword-XML in einer bestimmten Einstellung erkannt wird, wird es in dieser Liste angezeigt. 

Erkennen von CPassword-Einstellungen

Dieses Skript muss in einem lokalen Verzeichnis auf dem Domänencontroller ausgeführt werden, den Sie sauber möchten. Kopieren Und speichern Sie den Inhalt in eine neue Windows PowerShell-Datei, bestimmen Sie Das Systemlaufwerk, und führen Sie dann das Skript aus, wie in der folgenden Verwendung angegeben.

  <#
. SYNOPSIS
Gruppenrichtlinie Objekte in Ihrer Domäne können Über Einstellungen verfügen, in denen Kennwörter für verschiedene Aufgaben gespeichert werden, z. B. die folgenden:
1. Data Sources
2. Laufwerkszuordnungen
3. Lokale Benutzer
4. Geplante Aufgaben (sowohl XP als auch up-level)
5. Dienste
Diese Kennwörter werden im Rahmen der GP-Einstellungen in SYSVOL gespeichert und sind aufgrund einer schwachen Verschlüsselung (32-Byte-AES) nicht sicher.
Daher wird empfohlen, dass Sie solche Einstellungen nicht in Ihrer Domänenumgebung bereitstellen und vorhandene Solche entfernen.
Einstellungen. Dieses Skript soll Administratoren dabei helfen, GP-Einstellungen in der SYSVOL-Datei ihrer Domäne zu finden, die 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
kennwort mit Informationen wie GPO, Einstellungsname, GPEdit-Pfad, unter dem diese Einstellung definiert ist.
Nachdem Sie über eine Liste der betroffenen Einstellungen verfügen, können diese Einstellungen mithilfe des Editors in der Gruppenrichtlinie Management Console entfernt werden.

. SYNTAX
Get-SettingsWithCPassword.ps1 [-Path <String>]
. BEISPIEL
Get-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domain
Get-SettingsWithCPassword.ps1 -Path <GPO Backup Folder Path>

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

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

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

Eingabeparameter

#--------------------------------------------------------------------------------------------------------------
param(
    [string]$Path = $(throw "-Path is required.") # Verzeichnispfad, in dem sich GPPs befinden.
 )
#---------------------------------------------------------------------------------------------------------------
$isGPModuleAvailable = $false
$impactedPrefs = { "Groups.xml", "ScheduledTasks.xml","Services.xml", "DataSources.xml", "Drives.xml" }
#----------------------------------------------------------------------------------------------------------------

Import group olicy module (falls verfügbar)

#----------------------------------------------------------------------------------------------------------------
if (-not (Get-Module -name "GroupPolicy"))
{
   if (Get-Module -ListAvailable |
         Where-Object { $_. Name -ieq "GroupPolicy" })
    {
        $isGPModuleAvailable = $true
        Import-Module "GroupPolicy"
    }
    else
    {
        Write-Warning "Gruppenrichtlinie Modul für PowerShell kann nicht importiert werden. Daher werden GPO-GUIDs gemeldet.
                       Führen Sie dieses Skript auf dem Domänencontroller aus, um die GPO-Namen abzurufen, oder verwenden Sie das Cmdlet Get-GPO (auf DC), um den Gruppenrichtlinienobjektnamen aus der GPO-GUID abzurufen."
    }
}
else
{
    $isGPModuleAvailable = $true
}
Funktions-Enum-SettingsWithCpassword ( [Zeichenfolge]$sysvolLocation )
{
    # GPMC-Strukturpfade
    $commonPath = " -> Einstellungen -> Systemsteuerung Einstellungen -> "
    $driveMapPath = " –> Einstellungen –> Windows-Einstellungen –> "

    # Rekursives Abrufen aller XML-Dateien innerhalb des SYVOL-Speicherorts
    $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 sie
    # enthält das cpassword-Attribut und zeigt es an.
    foreach ( $file in $impactedXmls )
    {
        $fileFullPath = $file. Fullname

        # Legen Sie die GPP-Kategorie fest. Wenn sich die Datei unter dem Ordner "Computer" in SYSVOL befindet
        # die Einstellung wird unter Computerkonfiguration definiert, andernfalls
        Die #-Einstellung ist eine für die Benutzerkonfiguration.
        if ( $fileFullPath.Contains("Machine") )
        {
            $category = "Computerkonfiguration"
        }
        elseif ( $fileFullPath.Contains("User") )
        {
            $category = "Benutzerkonfiguration"
        }
        else
        {
            $category = "Unbekannt"
        }
        # Abrufen von Dateiinhalten als XML
        Versuch
        {
            [xml]$xmlFile = get-content $fileFullPath -ErrorAction Continue
        }
        catch [Ausnahme]{
            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 Vorgänge"
            }
            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 = "Drive Maps"
            }
            Dienste
            {
                $gppWithCpassword = $xmlFile.SelectNodes("NTServices/NTService") | where-Object { [String]::IsNullOrEmpty($_. Properties.cpassword) -eq $false }
                $preferenceType = "Services"
            }
            Standard
            { # clear gppWithCpassword und preferenceType für das nächste Element.
                Versuch
                {
                    Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue
                    Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue
                }
                catch [Ausnahme]{}
            }
        }
        if ($gppWithCpassword -ne $null)
        {
            # Erstellen des Gruppenrichtlinienobjektnamens aus der GUID, die aus filePath extrahiert wurde
            $guidRegex = [regex]"\{(.*)\}"
            $match = $guidRegex.match($fileFullPath)
            if ($match. Erfolg)
            {
               $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 [Ausnahme] {
                    Write-Host $_. Exception.Message
                }
            }
            # Anzeigevorausdrücke, 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) –passthru |
                       Add-Member -MemberType NoteProperty -name Preference -value ($gpp. Name) -passthru |
                       Add-Member -MemberType NoteProperty -name Path -value ($prefLocation)
                Write-Output $obj
            }
        } # end if $gppWithCpassword
    } # end foreach $file
} # end functions Enum-PoliciesWithCpassword
#-----------------------------------------------------------------------------------

Überprüfen Sie, ob Path gültig ist. Listet alle Einstellungen auf, die cpassword enthalten.

#-----------------------------------------------------------------------------------
if (Testpfad $Path )
{
    Enum-SettingsWithCpassword $Path
}
else
{
    Write-Warning "Kein solches Verzeichnis: $Path"
}

Beispielverwendung (geht davon aus, dass das Systemlaufwerk C ist)

.\Get-SettingsWithCPassword.ps1 –path "C:\Windows\SYSVOL\domain" | Format-List
Hinweis Beachten Sie, dass Sie auch jedes Sicherungs-GPO als Ziel für den Pfad anstelle der Domäne 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, Gruppenrichtlinie Management Console (GPMC) auf dem Domänencontroller oder auf einem Client zu verwenden, auf dem Remoteserver-Verwaltungstools installiert sind. Sie können jede Einstellung in fünf Schritten auf diesen Konsolen entfernen. Führen Sie hierzu die folgenden Schritte aus:

  1. Öffnen Sie in GPMC die Einstellung, die CPassword-Daten enthält.
  2. Ändern Sie die Aktion in Löschen oder Deaktivieren, je nach Einstellung.
  3. Klicken Sie auf OK, um die Änderungen zu speichern.
  4. Warten Sie auf einen oder zwei Gruppenrichtlinie Aktualisierungszyklen, damit Änderungen an 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 null 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 016D7E9DBBC5E487E397BE0147B590CFBBB5E83795B97894870EC10171E16D4
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 6641B1A9C95A7E4F0D5A247B9F48887AC94550B7F1D7B1198D5BCBA92F7A753
Windows8.1-KB2928120-x86.msu DE84667EC79CBA2006892452660EB99580D27306 468EE4FA3A22DDE61D85FD3A9D0583F504105DF2F8256539051BC0B1EB713E9C
Windows8.1-KB2961899-x64.msu 10BAE807DB158978BCD5D8A7862BC6B3EF20038B EC26618E23D9278FC1F02CA1F13BB289E1C6C4E0C8DA5D22E1D9CDA0DA8AFF51
Windows8.1-KB2961899-x86.msu 230C64447CC6E4AB3AD7B4D4655B8D8CEFBFBE98 E3FAD567AB6CA616E42873D3623A777185BE061232B952938A8846A974FFA7AF