MS14-025: Säkerhetsproblem i grupprincip-inställningar kan möjliggöra rättighetsökning: den 13 maj 2014

VIKTIGT: Denna artikel har översatts av Microsofts programvara för maskin-översättning och möjligen efterredigerats via CTF-teknologi av Microsofts community istället för av en professionell mänsklig översättare. För att du på ditt eget språk skall få tillgång till samtliga Knowledge Base-artiklar erbjuder Microsoft både mänskligt översatta såväl som maskinöversatta artiklar samt artiklar som efterredigerats av en community. En maskinöversatt artikel likväl som en artikel som blivit efterredigerad av en community är dock inte alltid helt perfekt, då de kan innehålla misstag i ordförrådet, syntax- och grammatikfel. Microsoft är inte ansvarigt för några felaktigheter, misstag eller skador orsakade av felöversättningar eller för våra kunders bruk av innehållet. Microsoft uppdaterar ofta sin programvara för maskinöversättning samt de verktyg som förbättrar den maskinöversatta efterredigeringen.

Den engelska versionen av artikeln är följande: 2962486
Introduktion
Microsoft har publicerat säkerhetsbulletinen MS14-025. Mer information om den här säkerhetsbulletinen:

Skaffa hjälp och support för den här säkerhetsuppdateringen

Hjälp med att installera uppdateringar:Stöd för Microsoft Update

Säkerhetslösningar för IT-proffs:TechNet Security felsökning och Support

Skydda din Windows-baserade dator Windows från virus och skadliga program:Lösning för virus och Säkerhetscenter

Lokal support enligt ditt land:Internationellt stöd

Mer Information

Kända problem och mer information om den här säkerhetsuppdateringen

Följande artiklar innehåller mer information om den här säkerhetsuppdateringen som gäller enskilda produktversioner. Artiklarna kan innehålla information om kända problem. Om så är fallet visas ett känt problem under varje artikel-länk.
  • 2928120 MS14-025: Beskrivning av säkerhetsuppdatering för Windows Remote Server Administration Tools för system som har uppdatering 2919355 installerat: den 13 maj 2014
  • 2961899 MS14-025: Beskrivning av säkerhetsuppdatering för Windows Remote Server Administration Tools för system som saknar uppdatera 2919355 installeras: den 13 maj 2014
Grupprincip-inställningar

Översikt

Vissa inställningar för grupprincip kan lagra ett lösenord. Den här funktionen tas bort eftersom lösenordet lagrades insecurely. Den här artikeln beskrivs ändringar i användargränssnittet och alla tillgängliga lösningar.

Följande inställningar i grupprincip tillåter inte längre användarnamn och lösenord ska sparas:
  • Enhetsmappningar
  • Lokala användare och grupper
  • Schemalagda aktiviteter
  • Tjänster
  • Datakällor
Detta påverkar beteendet för alla befintliga grupprincip-objekt (GPO) i miljön som är beroende av lösenord som finns i dessa inställningar. Den kommer också att skapa nya grupprincip-inställningar med hjälp av den här funktionen.

Enhetsmappningar, lokala användare och grupper och tjänster, kan du kanske att uppnå liknande mål för säkrare, andra funktioner i Windows.

Du kan inte att uppnå samma mål som var tillgängliga via icke-säkra funktionen lösenord för grupprincip-inställningar för schemalagda aktiviteter och datakällor.
Scenarier
Följande inställningar för grupprincip som påverkas av ändringen. Varje inställning beskrivs kortfattat och sedan i detalj. Dessutom tillhandahålls lösningar som gör att du kan utföra samma uppgifter.
Aktuella inställningarGäller för användareGäller för datorn
Hantering av lokala användareJaJa
Mappade enheterJa
Nr
Tjänster
Nr
Ja
Schemalagda aktiviteter (up-nivå)JaJa
Schemalagda aktiviteter (äldre)JaJa
Omedelbara aktiviteter (up-nivå)JaJa
Omedelbara aktiviteter (äldre)JaJa
DatakällorJaJa

Sammanfattning av ändringar

  • Lösenordsfält i alla aktuella inställningar är inaktiverade. Administratörer kan inte skapa nya inställningar med hjälp av fälten lösenord.
  • Fältet användarnamn är inaktiverad i vissa inställningar.
  • Befintliga inställningar som innehåller ett lösenord kan inte uppdateras. De kan endast vara borttagen eller inaktiverad, efter specifika önskemål.
  • Beteendet för ta bort och inaktivera åtgärder har inte ändrats för inställningar.
  • När en administratör öppnar någon inställning som innehåller attributet CPassword, får administratören följande varningsdialogrutan att informera honom eller henne senaste utfasningen. Försök att spara ändringar i nya eller befintliga inställningar som kräver attributet CPassword utlöser samma dialogruta. Bara ta bort och inaktivera åtgärder utlöser inte varningsmeddelanden.

CPassword-Säkerhetsvarning



Scenario 1: Hantering av lokala användare

Hantera lokala användare inställning används ofta för att skapa lokala administratörer som har ett känt lösenord på en dator. Den här funktionen är inte säker på ett sådant sätt som lagrar inställningar för grupprincip-lösenord. Därför är funktionen inte längre tillgänglig. Följande inställningar påverkas:
  • Datorkonfiguration-> Kontrollpanelsinställningar-> lokala användare och grupper-> nya-> lokal användare
  • Användarkonfiguration-> Kontrollpanelsinställningar-> lokala användare och grupper-> nya-> lokal användare

Viktiga ändringar

Åtgärd: skapa eller ersätta
  • Fält för användarnamn, lösenordoch Bekräfta lösenord är inaktiverad.
  • Den här dialogrutan visas när administratören öppnar eller försöker spara ändringar i en befintlig inställning som innehåller ett lösenord.


Lokala användare - skapa eller ersätta

Åtgärd: uppdatera
  • Fälten lösenord och Bekräfta lösenord är inaktiverad.
  • Varning för boxappears när administratören öppnar eller försöker spara ändringar i en befintlig inställning som innehåller ett lösenord.


Lokala användare - uppdatering

Åtgärd: ta bort
  • Ingen förändring i beteende

Lösningar

Följande skript tillhandahålls som ett alternativ till CPassword för dem som tidigare förlitade sig på inställningen grupprincip för att ange lokala administratörslösenord. Kopiera och spara innehållet i en ny fil i Windows PowerShell och sedan köra skriptet som anges i dess. Avsnittet.

Microsoft tillhandahåller programmeringsexempel endast utan garantier, varken uttryckliga eller underförstådda. Detta inkluderar men är inte begränsat till, underförstådda garantier om säljbarhet eller lämplighet för ett särskilt ändamål. Den här artikeln förutsätter att du är bekant med det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till att förklara funktionen hos en viss procedur. De kommer inte ändra dessa exempel för att ge ytterligare funktioner eller skapa procedurer som motsvarar dina speciella behov.

 function Invoke-PasswordRoll{<#.SYNOPSISThis script can be used to set the local account passwords on remote machines to random passwords. The username/password/server combination will be saved in a CSV file.The account passwords stored in the CSV file can be encrypted using a password of the administrators choosing to ensure clear-text account passwords aren't written to disk.The encrypted passwords can be decrypted using another function in this file: ConvertTo-CleartextPasswordFunction: Invoke-PasswordRollAuthor: MicrosoftVersion: 1.0.DESCRIPTIONThis script can be used to set the local account passwords on remote machines to random passwords. The username/password/server combination will be saved in a CSV file.The account passwords stored in the CSV file can be encrypted using a password of the administrators choosing to ensure clear-text account passwords aren't written to disk.The encrypted passwords can be decrypted using another function in this file: ConvertTo-CleartextPassword.PARAMETER ComputerNameAn array of computers to run the script against using PowerShell remoting..PARAMETER LocalAccountsAn array of local accounts whose password should be changed..PARAMETER TsvFileNameThe file to output the username/password/server combinations to..PARAMETER EncryptionKeyA password to encrypt the TSV file with. Uses AES encryption. Only the passwords stored in the TSV file will be encrypted, the username and servername will be clear-text..PARAMETER PasswordLengthThe length of the passwords which will be randomly generated for local accounts..PARAMETER NoEncryptionDo not encrypt the account passwords stored in the TSV file. This will result in clear-text passwords being written to disk.	.EXAMPLE. .\Invoke-PasswordRoll.ps1    #Loads the functions in this script fileInvoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator","CustomLocalAdmin") -TsvFileName "LocalAdminCredentials.tsv" -EncryptionKey "Password1"Connects to all the computers stored in the file "computerlist.txt". If the local account "administrator" and/or "CustomLocalAdmin" are present on the system, their password is changedto a randomly generated password of length 20 (the default). The username/password/server combinations are stored in LocalAdminCredentials.tsv, and the account passwords are AES encrypted using the password "Password1"..EXAMPLE. .\Invoke-PasswordRoll.ps1    #Loads the functions in this script fileInvoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40Connects to all the computers stored in the file "computerlist.txt". If the local account "administrator" is present on the system, its password is changed to a random generatedpassword of length 40. The username/password/server combinations are stored in LocalAdminCredentials.tsv unencrypted..NOTESRequirements: -PowerShellv2 or above must be installed-PowerShell remoting must be enabled on all systems the script will be run againstScript behavior:-If a local account is present on the system, but not specified in the LocalAccounts parameter, the script will write a warning to the screen to alert you to the presence of this local account. The script will continue running when this happens.-If a local account is specified in the LocalAccounts parameter, but the account does not exist on the computer, nothing will happen (an account will NOT be created).-The function ConvertTo-CleartextPassword, contained in this file, can be used to decrypt passwords that are stored encrypted in the TSV file.-If a server specified in ComputerName cannot be connected to, PowerShell will output an error message.-Microsoft advises companies to regularly roll all local and domain account passwords.#>    [CmdletBinding(DefaultParameterSetName="Encryption")]    Param(        [Parameter(Mandatory=$true)]        [String[]]        $ComputerName,        [Parameter(Mandatory=$true)]        [String[]]        $LocalAccounts,        [Parameter(Mandatory=$true)]        [String]        $TsvFileName,        [Parameter(ParameterSetName="Encryption", Mandatory=$true)]        [String]        $EncryptionKey,        [Parameter()]        [ValidateRange(20,120)]        [Int]        $PasswordLength = 20,        [Parameter(ParameterSetName="NoEncryption", Mandatory=$true)]        [Switch]        $NoEncryption    )    #Load any needed .net classes    Add-Type -AssemblyName "System.Web" -ErrorAction Stop    #This is the scriptblock that will be executed on every computer specified in ComputerName    $RemoteRollScript = {        Param(            [Parameter(Mandatory=$true, Position=1)]            [String[]]            $Passwords,            [Parameter(Mandatory=$true, Position=2)]            [String[]]            $LocalAccounts,            #This is here so I can record what the server name that the script connected to was, sometimes the DNS records get messed up, it can be nice to have this.            [Parameter(Mandatory=$true, Position=3)]            [String]            $TargettedServerName        )        $LocalUsers = Get-WmiObject Win32_UserAccount -Filter "LocalAccount=true" | Foreach {$_.Name}        #Check if the computer has any local user accounts whose passwords are not going to be rolled by this script        foreach ($User in $LocalUsers)        {            if ($LocalAccounts -inotcontains $User)            {                Write-Warning "Server: '$($TargettedServerName)' has a local account '$($User)' whos password is NOT being changed by this script"            }        }        #For every local account specified that exists on this server, change the password        $PasswordIndex = 0        foreach ($LocalAdmin in $LocalAccounts)        {            $Password = $Passwords[$PasswordIndex]            if ($LocalUsers -icontains $LocalAdmin)            {                try                {                    $objUser = [ADSI]"WinNT://localhost/$($LocalAdmin), user"                    $objUser.psbase.Invoke("SetPassword", $Password)                    $Properties = @{                        TargettedServerName = $TargettedServerName                        Username =  $LocalAdmin                        Password = $Password                        RealServerName = $env:computername                    }                    $ReturnData = New-Object PSObject -Property $Properties                    Write-Output $ReturnData                }                catch                {                    Write-Error "Error changing password for user:$($LocalAdmin) on server:$($TargettedServerName)"                }            }            $PasswordIndex++        }    }    #Generate the password on the client running this script, not on the remote machine. System.Web.Security isn't available in the .NET Client profile. Making this call    #    on the client running the script ensures only 1 computer needs the full .NET runtime installed (as opposed to every system having the password rolled).    function Create-RandomPassword    {        Param(            [Parameter(Mandatory=$true)]            [ValidateRange(20,120)]            [Int]            $PasswordLength        )        $Password = [System.Web.Security.Membership]::GeneratePassword($PasswordLength, $PasswordLength / 4)        #This should never fail, but I'm putting a sanity check here anyways        if ($Password.Length -ne $PasswordLength)        {            throw new Exception("Password returned by GeneratePassword is not the same length as required. Required length: $($PasswordLength). Generated length: $($Password.Length)")        }        return $Password    }    #Main functionality - Generate a password and remote in to machines to change the password of local accounts specified    if ($PsCmdlet.ParameterSetName -ieq "Encryption")    {        try        {            $Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider            $SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey))        }        catch        {            Write-Error "Error creating TSV encryption key" -ErrorAction Stop        }    }    foreach ($Computer in $ComputerName)    {        #Need to generate 1 password for each account that could be changed        $Passwords = @()        for ($i = 0; $i -lt $LocalAccounts.Length; $i++)        {            $Passwords += Create-RandomPassword -PasswordLength $PasswordLength        }        Write-Output "Connecting to server '$($Computer)' to roll specified local admin passwords"        $Result = Invoke-Command -ScriptBlock $RemoteRollScript -ArgumentList @($Passwords, $LocalAccounts, $Computer) -ComputerName $Computer        #If encryption is being used, encrypt the password with the user supplied key prior to writing to disk        if ($Result -ne $null)        {            if ($PsCmdlet.ParameterSetName -ieq "NoEncryption")            {                $Result | Select-Object Username,Password,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation            }            else            {                #Filters out $null entries returned                $Result = $Result | Select-Object Username,Password,TargettedServerName,RealServerName                foreach ($Record in $Result)                {                    $PasswordSecureString = ConvertTo-SecureString -AsPlainText -Force -String ($Record.Password)                    $Record | Add-Member -MemberType NoteProperty -Name EncryptedPassword -Value (ConvertFrom-SecureString -Key $SecureStringKey -SecureString $PasswordSecureString)                    $Record.PSObject.Properties.Remove("Password")                    $Record | Select-Object Username,EncryptedPassword,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation                }            }        }    }}function ConvertTo-CleartextPassword{<#.SYNOPSISThis function can be used to decrypt passwords that were stored encrypted by the function Invoke-PasswordRoll.Function: ConvertTo-CleartextPasswordAuthor: MicrosoftVersion: 1.0.DESCRIPTIONThis function can be used to decrypt passwords that were stored encrypted by the function Invoke-PasswordRoll..PARAMETER EncryptedPasswordThe encrypted password that was stored in a TSV file..PARAMETER EncryptionKeyThe password used to do the encryption..EXAMPLE. .\Invoke-PasswordRoll.ps1    #Loads the functions in this script fileConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAGIAMABiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"Decrypts the encrypted password which was stored in the TSV file.#>    Param(        [Parameter(Mandatory=$true)]        [String]        $EncryptedPassword,        [Parameter(Mandatory=$true)]        [String]        $EncryptionKey    )    $Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider    $SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey))    [SecureString]$SecureStringPassword = ConvertTo-SecureString -String $EncryptedPassword -Key $SecureStringKey    Write-Output ([System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($SecureStringPassword)))}
Administratörer kan lägga till lokala administratörskonton datorer genom att skapa en Active Directory-grupp och lägger till den i den lokala gruppen administratörer via grupprincip-inställningar-> lokal grupp. Den här åtgärden cachelagrar inte referenser. Av följande slag i dialogrutan. Denna lösning kräver en anslutning till Active Directory DS när användaren är inloggad onby med dessa referenser.


En lokal grupp - lösning


Scenario 2: Mappade enheter

Administratörer använder enhetsmappningar för att tilldela användare platser i nätverket. Funktion för lösenordsskydd används för att kontrollera av auktoriserad åtkomst till enheten. Följande inställningar påverkas:
  • Användarkonfiguration-> inställningar för Windows-> enhetsmappningar-> nya-> mappad enhet

Viktiga ändringar

Åtgärd: Skapa, uppdatera eller ersätta
  • Fält för användarnamn, lösenordoch Bekräfta lösenord är inaktiverad.

Mappad enhet - skapa/uppdatera/ersätta

Åtgärd: ta bort
  • Ingen förändring i beteende

Lösningar

Istället för att använda lösenordsmetoden för autentisering kan du använda Utforskaren för att hantera behörigheter och tilldela rättigheter till användare. Du kan använda Active Directory-objekt till behörighet till mappen.


Scenario 3: tjänster

Du kan använda inställningen tjänster för att ändra tjänstens egenskaper på ett sådant sätt att de körs i en kontext än sin ursprungliga säkerhetskontext. Följande inställningar påverkas:
  • Datorkonfiguration-> Kontrollpanelsinställningar-> tjänster-> nya-> Service

Viktiga ändringar

Start: Ingen ändring, automatisk eller manuell
  • Fälten lösenord och Bekräfta lösenord är inaktiverad.
  • Administratören kan använda endast inbyggda konton.

Service - oförändrade/automatisk/manuell

Start: inaktivera
  • Ingen förändring i beteende
Dialogrutan Ny
  • Administratörer som använder icke-inbyggda-användare för det här kontot "visas följande varning:

Varning mot icke-inbyggda användare


Lösningar

Tjänster kan fortfarande köras som ett lokalt systemkonto. Tjänstbehörigheter kan ändras på det sätt som beskrivs i följande artikel i Microsoft Knowledge Base:
256345 Så här konfigurerar du grupprincip för att ange säkerhet för systemtjänster

Observera
om den tjänst som du vill konfigurera inte finns måste du konfigurera inställningar på en dator där tjänsten körs.


Scenario 4: Schemalagda och omedelbara aktiviteter (up-nivå)

Dessa används för att köra schemalagda aktiviteter i en viss kontext. Möjligheten att lagra autentiseringsuppgifter för schemalagda aktiviteter ska köras som en användare när användaren inte är inloggad är inte längre tillgänglig. Följande inställningar påverkas. (Tänk som på vissa plattformar "minst Windows 7" ersättas med "Windows Vista och senare versioner.")
  • Datorkonfiguration-> Kontrollpanelsinställningar-> schemalagda aktiviteter-> nytt-> schemalagda aktiviteter (minst Windows 7)
  • Datorkonfiguration-> Kontrollpanelsinställningar-> schemalagda aktiviteter-> nytt-> omedelbar aktivitet (minst Windows 7)
  • Användarkonfiguration-> Kontrollpanelsinställningar-> schemalagda aktiviteter-> nytt-> schemalagda aktiviteter (minst Windows 7)
  • Användarkonfiguration-> Kontrollpanelsinställningar-> schemalagda aktiviteter-> nytt-> omedelbar aktivitet (minst Windows 7)

Viktiga ändringar

Åtgärd: skapa, uppdatera eller ersätta
  • När du markerar alternativet Kör oavsett om användaren är inloggad eller inte tillfrågas längre administratör för autentiseringsuppgifter.
  • Kryssrutan Spara inte lösenordet är inaktiverad. Som standard kontrolleras även rutan.

Nya schemalagda eller omedelbar aktivitet (Up-nivå)

Åtgärd: ta bort

Ingen förändring i beteende

Lösningar

För den "schemalagda aktiviteten (minst Windows 7)" och "omedelbar aktivitet (minst Windows 7)" uppgifter, Administratörer kan använda specifika användarkonton när den angivna användaren är inloggad. Eller så kan de bara har tillgång till lokala resurser som användaren. Dessa tasksstillcan som körs i kontexten för den lokala tjänsten.



Scenario 5: Schemalagda och omedelbara aktiviteter (äldre)

Detta är den äldre versionen av inställningar som används för att köra schemalagda aktiviteter i en viss kontext. Möjligheten att lagra autentiseringsuppgifter för schemalagda aktiviteter ska köras som en användare när användaren inte är inloggad är inte längre tillgänglig. Följande inställningar påverkas:
  • Datorkonfiguration-> Kontrollpanelsinställningar-> schemalagda aktiviteter-> nya-> schemalagd aktivitet
  • Datorkonfiguration-> Kontrollpanelsinställningar-> schemalagda aktiviteter-> nya-> omedelbar aktivitet (Windows XP)
  • Användarkonfiguration-> Kontrollpanelsinställningar-> schemalagda aktiviteter-> nya-> schemalagd aktivitet
  • Användarkonfiguration-> Kontrollpanelsinställningar-> schemalagda aktiviteter-> nya-> omedelbar aktivitet (Windows XP)

Viktiga ändringar

Åtgärd: Skapa, uppdatera eller ersätta
  • Kryssrutan Kör som är inaktiverad. Därför är fälten Användarnamn, lösenordoch Bekräfta lösenord alla inaktiverade.

Ny uppgift - skapa/uppdatera/ersätta (äldre)

Åtgärd: ta bort

Ingen förändring i beteende

Lösningar

"Aktivitet" och "Omedelbar aktivitet (Windows XP)" objekt körs schemalagda aktiviteter med hjälp av behörigheter som är tillgängliga för den lokala tjänsten.


Scenario 6: Datakällor

Inställningen datakällor används för att koppla en datakälla till en dator eller användare. Den här funktionen lagras inte längre referenser om du vill aktivera åtkomst till datakällor som skyddas av ett lösenord. Följande inställningar påverkas:
  • Datorkonfiguration-> Kontrollpanelsinställningar-> datakällor
  • Användarkonfiguration-> Kontrollpanelsinställningar-> datakällor

Viktiga ändringar

Åtgärd: skapa, uppdatera eller ersätta
  • Fält för Användarnamn, lösenordoch Bekräfta lösenord är inaktiverad:

Datakällor - skapa/uppdatera/ersätta

Åtgärd: ta bort
  • Ingen förändring i beteende

Lösningar

Det finns inga lösningar. Den här inställningen lagras inte längre referenser om du vill tillåta åtkomst till datakällor som skyddas av ett lösenord.


Utfasningen av CPassword

Ta bort CPassword

Windows PowerShell-skript som ingår i den här Microsoft Knowledge Base-artikeln upptäcker om en domän innehåller alla inställningar för grupprincip som kan användas för CPassword. Om CPassword XML upptäcks i en viss inställning visas i listan.


Identifiera CPassword inställningar

Det här skriptet måste köras från en lokal katalog på den domänkontrollant som du vill rengöra. Kopiera och spara innehållet i en ny fil i Windows PowerShell, bestämma systemenheten och sedan köra skriptet som anges i följande användning.

 <#.SYNOPSISGroup Policy objects in your domain can have preferences that store passwords for different tasks, such as the following:    1. Data Sources    2. Drive Maps    3. Local Users    4. Scheduled Tasks (both XP and up-level)    5. ServicesThese passwords are stored in SYSVOL as part of GP preferences and are not secure because of weak encryption (32-byte AES). Therefore, we recommend that you not deploy such preferences in your domain environment and remove any such existing preferences. This script is to help administrator find GP Preferences in their domain's SYSVOL that contains passwords. .DESCRIPTIONThis script should be run on a DC or a client computer that is installed with RSAT to print all the preferences that contain password with information such as GPO, Preference Name, GPEdit path under which this preference is defined.After you have a list of affected preferences, these preferences can be removed by using the editor in the Group Policy Management Console. .SYNTAXGet-SettingsWithCPassword.ps1 [-Path  <String>] .EXAMPLEGet-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domainGet-SettingsWithCPassword.ps1 -Path  <GPO Backup Folder Path> .NOTESIf Group Policy PS module is not found the output will contain GPO GUIDs instead of GPO names. You can either run this script on a domain controller or rerun the script on the client after you have installed RSAT and enabled the Group Policy module.Or, you can use GPO GUIDs to obtain GPO names by using the Get-GPO cmdlet. .LINKhttp://go.microsoft.com/fwlink/?LinkID=390507 #>#----------------------------------------------------------------------------------------------------------------# Input parameters#--------------------------------------------------------------------------------------------------------------param(    [string]$Path = $(throw "-Path is required.") # Directory path where GPPs are located. )#---------------------------------------------------------------------------------------------------------------$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 "Unable to import Group Policy module for PowerShell. Therefore, GPO guids will be reported.                        Run this script on DC to obtain the GPO names, or use the Get-GPO cmdlet (on DC) to obtain the GPO name from GPO guid."    }}else{    $isGPModuleAvailable = $true}Function Enum-SettingsWithCpassword ( [string]$sysvolLocation ){    # GPMC tree paths    $commonPath = " -> Preferences -> Control Panel Settings -> "    $driveMapPath = " -> Preferences -> Windows Settings -> "        # Recursively obtain all the xml files within the SYVOL location    $impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" | Where-Object { $impactedPrefs -cmatch $_.Name }            # Each xml file contains multiple preferences. Iterate through each preference to check whether it    # contains cpassword attribute and display it.    foreach ( $file in $impactedXmls )    {        $fileFullPath = $file.FullName                # Set GPP category. If file is located under Machine folder in SYSVOL        # the setting is defined under computer configuration otherwise the         # setting is a to user configuration          if ( $fileFullPath.Contains("Machine") )        {            $category = "Computer Configuration"        }        elseif ( $fileFullPath.Contains("User") )        {            $category = "User Configuration"        }        else        {            $category = "Unknown"        }        # Obtain file content as XML        try        {            [xml]$xmlFile = get-content $fileFullPath -ErrorAction Continue        }        catch [Exception]{            Write-Host $_.Exception.Message        }        if ($xmlFile -eq $null)        {            continue        }        switch ( $file.BaseName )        {            Groups             {                 $gppWithCpassword = $xmlFile.SelectNodes("Groups/User") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Local Users"            }            ScheduledTasks            {                $gppWithCpassword  = $xmlFile.SelectNodes("ScheduledTasks/*") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Scheduled Tasks"            }            DataSources            {                $gppWithCpassword = $xmlFile.SelectNodes("DataSources/DataSource") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Data sources"            }            Drives            {                $gppWithCpassword = $xmlFile.SelectNodes("Drives/Drive") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Drive Maps"            }            Services            {                $gppWithCpassword = $xmlFile.SelectNodes("NTServices/NTService") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Services"            }            default            {   # clear gppWithCpassword and preferenceType for next item.                try                {                    Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue                    Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue                }                catch [Exception]{}            }        }        if ($gppWithCpassword -ne $null)        {            # Build GPO name from GUID extracted from filePath             $guidRegex = [regex]"\{(.*)\}"            $match = $guidRegex.match($fileFullPath)            if ($match.Success)            {               $gpoGuid = $match.groups[1].value               $gpoName = $gpoGuid            }            else            {               $gpoName = "Unknown"            }            if($isGPModuleAvailable -eq $true)            {                try                 {                       $gpoInfo = Get-GPO -Guid $gpoGuid -ErrorAction Continue                    $gpoName = $gpoInfo.DisplayName                }                catch [Exception] {                    Write-Host $_.Exception.Message                }            }            # display prefrences that contain 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 foreach $file} # end functions Enum-PoliciesWithCpassword#-----------------------------------------------------------------------------------# Check whether Path is valid. Enumerate all settings that contain cpassword. #-----------------------------------------------------------------------------------if (Test-Path $Path ){    Enum-SettingsWithCpassword $Path}else{    Write-Warning "No such directory: $Path"}  


Exempel på användning (förutsätter att systemenheten är C)

.\Get-SettingsWithCPassword.ps1 –path “C:\Windows\SYSVOL\domain” | Format-List

Obs! Observera att du även kan rikta alla säkerhetskopierade grupprincipobjekt för den sökväg i en domän.

Identifieringsskriptet genererar en lista av följande slag:

Infoga bild

Bör du spara utdata till en fil för längre listor:

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

Ta bort inställningar för CPassword

För att ta bort alternativ som innehåller data för CPassword, föreslår vi att du använder grupprincip konsolen Grupprinciphantering (GPMC) på domänkontrollanten eller från en klient som har Remote Server Administration Tools installeras. Du kan ta bort valfri inställning i fem steg på dessa konsoler. Gör så här:
  1. Öppna inställningen som innehåller data för CPassword i konsolen Grupprinciphantering.
  2. Ändra åtgärden att Ta bort eller Inaktiverasom gäller för inställningen.
  3. Klicka på OK om du vill spara dina ändringar.
  4. Vänta en eller två grupprincip uppdatera cykler att ändringar sprids till klienter.
  5. Ta bort inställningen när ändringar tillämpas på alla klienter.
  6. Upprepa steg 1 till 5 som behövs för att rensa hela miljön. Om identifieringsskriptet returnerar noll resultat, är du klar.

Hash-filinformation

FilnamnSHA1-hashSHA256 hash
Windows6.0-KB2928120-ia64.msuB2A74305CB56191774BFCF9FCDEAA983B26DC9A6DCE8C0F9CEB97DBF1F7B9BAF76458B3770EF01C0EDC581621BC8C3B2C7FD14E7
Windows6.0-KB2928120-x64.msu386457497682A2FB80BC93346D85A9C1BC38FBF71AF67EB12614F37F4AC327E7B5767AFA085FE676F6E81F0CED95D20393A1D38D
Windows6.0-KB2928120-x86.msu42FF283781CEC9CE34EBF459CA1EFE011D5132C3016D7E9DBBC5E487E397BE0147B590CFBBB5E83795B997894870EC10171E16D4
Windows6.1-KB2928120-ia64.msu5C2196832EC94B99AAF9B074D3938525B72196909958FA58134F55487521243AD9740BEE0AC210AC290D45C8322E424B3E5EBF16
Windows6.1-KB2928120-x 64EA5332F4E289DC799611EAB8E3EE2E86B7880A4B417A2BA34F8FD367556812197E2395ED40D8B394F9224CDCBE8AB3939795EC2A
Windows6.1-KB2928120-x86.msu7B7B6EE24CD8BE1AB3479F9E1CF9C98982C8BAB1603206D44815EF2DC262016ED13D6569BE13D06E2C6029FB22621027788B8095
Windows8-RT-KB2928120-x64.msuE18FC05B4CCA0E195E62FF0AE534BA39511A8593FCAED97BF1D61F60802D397350380FADED71AED64435D3E9EAA4C0468D80141E
Windows8-RT-KB2928120-x86.msuA5DFB34F3B9EAD9FA78C67DFC7ACACFA2FBEAC0B7F00A72D8A15EB2CA70F7146A8014E39A71CFF5E39596F379ACD883239DABD41
Windows8.1-KB2928120-x64.msuA07FF14EED24F3241D508C50E869540915134BB46641B1A9C95A7E4F0D5A247B9F488887AC94550B7F1D7B1198D5BCBA92F7A753
Windows8.1-KB2928120-x86.msuDE84667EC79CBA2006892452660EB99580D27306468EE4FA3A22DDE61D85FD3A9D0583F504105DF2F8256539051BC0B1EB713E9C
Windows8.1-KB2961899-x64.msu10BAE807DB158978BCD5D8A7862BC6B3EF20038BEC26618E23D9278FC1F02CA1F13BB289E1C6C4E0C8DA5D22E1D9CDA0DA8AFF51
Windows8.1-KB2961899-x86.msu230C64447CC6E4AB3AD7B4D4655B8D8CEFBFBE98E3FAD567AB6CA616E42873D3623A777185BE061232B952938A8846A974FFA7AF
uppdatering säkerhetskorrigering patch säkerhetsuppdatering säkerhet bugg fel säkerhetsproblem skadlig angripare utnyttja register oautentiserad buffertöverskridning specialutformad omfattning specialutformad denial of service DoS TSE

Varning: Den här artikeln har automatöversatts

คุณสมบัติ

รหัสบทความ: 2962486 - การตรวจสอบครั้งสุดท้าย: 10/01/2015 05:08:00 - ฉบับแก้ไข: 2.0

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 Essentials, Windows Server 2012 Foundation, Windows Server 2012 Standard, Windows 7 Service Pack 1, Windows Server 2008 R2 Service Pack 1, Windows Server 2008 Service Pack 2, Windows Vista Service Pack 2

  • atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability kbmt KB2962486 KbMtsv
คำติชม