MS14-025: Beveiligingsprobleem in voorkeuren voor groepsbeleid kan leiden tot uitbreiding van bevoegdheden: 13 mei 2014

Van toepassing: Windows RT 8.1Windows 8.1Windows 8.1 Enterprise

INLEIDING


Microsoft heeft beveiligingsbulletin MS14-025 uitgebracht. Meer informatie over dit beveiligingsbulletin:

Hulp en ondersteuning voor deze beveiligingsupdate

Hulp bij installatie van updates: Ondersteuning voor Microsoft Windows Update

Beveiligingsoplossingen voor IT-professionals: TechNet Oplossingen voor beveiligingsproblemen en ondersteuning

Uw Windows-computer beter beveiligen tegen virussen en malware: Support voor Microsoft-virusbescherming en Windows-beveiliging

Lokale ondersteuning voor uw land: Internationale ondersteuning

Meer informatie


Bekende problemen en meer informatie over deze beveiligingsupdate

De volgende artikelen bevatten meer informatie over deze beveiligingsupdate met betrekking tot afzonderlijke productversies. De artikelen kunnen informatie over bekende problemen bevatten. In dat geval wordt het bekende probleem kort beschreven onder de koppeling naar het artikel.
  • 2928120



    MS14-025: Beschrijving van de beveiligingsupdate voor Windows Remote Server Administration Tools voor systemen waarop update 2919355 is geïnstalleerd: 13 mei 2014

  • 2961899

    MS14-025: Beschrijving van de beveiligingsupdate voor Windows Remote Server Administration Tools voor systemen waarop update 2919355 niet is geïnstalleerd: 13 mei 2014

Voorkeuren voor groepsbeleid


Overzicht

In sommige voorkeuren voor groepsbeleid kan een wachtwoord worden opgeslagen. Deze functionaliteit wordt verwijderd omdat het wachtwoord onveilig werd opgeslagen. In dit artikel worden de wijzigingen in de gebruikersinterface en eventuele beschikbare oplossingen beschreven.

In de volgende voorkeuren voor groepsbeleid kunnen niet langer gebruikersnamen en wachtwoorden worden opgeslagen:
  • Stationstoewijzingen
  • Lokale gebruikers en groepen
  • Geplande taken
  • Services
  • Gegevensbronnen
Dit heeft gevolgen voor het gedrag van bestaande groepsbeleidsobjecten (GPO's) in uw omgeving die afhankelijk zijn van wachtwoorden in deze voorkeuren. Ook wordt voorkomen dat nieuwe voorkeuren voor groepsbeleid worden gemaakt met deze functionaliteit.

Voor Stationstoewijzingen, Lokale gebruikers en groepen en Services kunt u vergelijkbare resultaten bereiken met andere, veiligere functionaliteit in Windows.

Voor Geplande taken en Gegevensbronnen kunt u niet dezelfde resultaten bereiken die mogelijk waren met de onveilige functionaliteit voor wachtwoorden in voorkeuren voor groepsbeleid.

Scenario's


De volgende voorkeuren voor groepsbeleid worden beïnvloed door deze wijziging. Elke voorkeur wordt eerst kort en daarna uitgebreider besproken. Ook worden er oplossingen geboden waarmee u dezelfde taken kunt uitvoeren.
Voorkeur waarop dit van invloed is Van toepassing op gebruikerVan toepassing op computer
Lokaal gebruikersbeheerJaJa
Toegewezen stationsJa
Nee
Services
Nee
Ja
Geplande taken (hoger niveau)JaJa
Geplande taken (lager niveau)JaJa
Directe taken (hoger niveau)JaJa
Directe taken (lager niveau)JaJa
GegevensbronnenJaJa

Overzicht van wijzigingen

  • Wachtwoordvelden in alle betrokken voorkeuren zijn uitgeschakeld. Beheerders kunnen geen nieuwe voorkeuren maken met deze wachtwoordvelden.
  • Het veld Gebruikersnaam is uitgeschakeld in sommige voorkeuren.
  • Bestaande voorkeuren die een wachtwoord bevatten, kunnen niet worden bijgewerkt. Ze kunnen alleen worden verwijderd of uitgeschakeld (wat van toepassing is voor de specifieke voorkeur).
  • Het gedrag voor de acties Verwijderen en Uitschakelen is niet gewijzigd voor de voorkeuren.
  • Wanneer een beheerder een voorkeur opent die het kenmerk CPassword bevat, krijgt de beheerder het volgende dialoogvenster te zien met een melding over de recente afschaffing. Bij pogingen om wijzigingen op te slaan in nieuwe of bestaande voorkeuren waarvoor het kenmerk CPassword is vereist, wordt hetzelfde dialoogvenster geopend. Alleen bij de acties Verwijderen en Uitschakelen worden geen waarschuwingsvensters geopend.





Scenario 1: Lokaal gebruikersbeheer

De voorkeur Lokaal gebruikersbeheer wordt vaak gebruikt om lokale beheerders te maken die een bekend wachtwoord hebben op een computer. Deze functie is niet veilig door de manier waarop wachtwoorden worden opgeslagen in voorkeuren voor groepsbeleid. Daarom is deze functionaliteit niet meer beschikbaar. De volgende voorkeuren worden beïnvloed:
  • Computerconfiguratie -> Instellingen van Configuratiescherm -> Lokale gebruikers en groepen-> Nieuw-> Lokale gebruiker
  • Gebruikersconfiguratie -> Instellingen van Configuratiescherm -> Lokale gebruikers en groepen-> Nieuw-> Lokale gebruiker

Belangrijke wijzigingen

Actie: maken of vervangen
  • De velden Gebruikersnaam, Wachtwoord en Wachtwoord bevestigen zijn uitgeschakeld.
  • Het waarschuwingsvenster wordt weergegeven wanneer de beheerder een bestaande voorkeur die een wachtwoord bevat, opent of daarin wijzigingen wil opslaan.




Actie: bijwerken
  • De velden Wachtwoord en Wachtwoord bevestigen zijn uitgeschakeld.
  • Het waarschuwingsvenster wordt weergegeven wanneer de beheerder een bestaande voorkeur die een wachtwoord bevat, opent of daarin wijzigingen wil opslaan.




Actie: verwijderen
  • Geen verandering in gedrag

Tijdelijke oplossingen

Degenen die eerder wachtwoorden voor lokale beheerders instelden in een voorkeur voor groepsbeleid, kunnen het volgende script gebruiken als veilig alternatief voor CPassword. Kopieer de inhoud, sla deze op in een nieuw Windows PowerShell-bestand en voer het script uit zoals aangegeven in de bijbehorende sectie .EXAMPLE.

Microsoft verstrekt deze code zonder enige expliciete of impliciete garantie, daaronder mede begrepen, maar niet beperkt tot impliciete garanties met betrekking tot de verkoopbaarheid en/of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal VBScript, alsmede met de hulpprogramma's waarmee procedures worden gemaakt en waarmee fouten in procedures worden opgespoord. U kunt desgewenst contact opnemen met Microsoft Product Support Services voor uitleg over de functionaliteit van een bepaalde procedure. Microsoft Product Support Services is echter niet bereid de voorbeelden aan te passen om extra functionaliteit toe te voegen of om procedures te maken die aan uw specifieke eisen voldoen.

function Invoke-PasswordRoll
{
<#
.SYNOPSIS

Dit script kan worden gebruikt om wachtwoorden van lokale accounts op externe computers te wijzigen in willekeurige wachtwoorden. De combinatie gebruikersnaam/wachtwoord/server wordt opgeslagen in een CSV-bestand. De accountwachtwoorden die in het CSV-bestand zijn opgeslagen, kunnen worden versleuteld met een wachtwoord dat de beheerders zelf kiezen, zodat er geen leesbare wachtwoorden naar de schijf worden geschreven. De versleutelde wachtwoorden kunnen worden ontsleuteld met een andere functie in dit bestand: ConvertTo-CleartextPassword


Function: Invoke-PasswordRoll
Author: Microsoft
Version: 1.0

.DESCRIPTION

Dit script kan worden gebruikt om wachtwoorden van lokale accounts op externe computers te wijzigen in willekeurige wachtwoorden. De combinatie gebruikersnaam/wachtwoord/server wordt opgeslagen in een CSV-bestand. De accountwachtwoorden die in het CSV-bestand zijn opgeslagen, kunnen worden versleuteld met een wachtwoord dat de beheerders zelf kiezen, zodat er geen leesbare wachtwoorden naar de schijf worden geschreven. De versleutelde wachtwoorden kunnen worden ontsleuteld met een andere functie in dit bestand: ConvertTo-CleartextPassword

.PARAMETER ComputerName

Een matrix van computers waarvoor het script wordt uitgevoerd via externe communicatie van PowerShell.

.PARAMETER LocalAccounts

Een matrix van lokale accounts waarvan het wachtwoord moet worden gewijzigd.

.PARAMETER TsvFileName

Het bestand waarin de combinaties van gebruikersnaam/wachtwoord/server worden opgeslagen.

.PARAMETER EncryptionKey

Een wachtwoord voor het versleutelen van het TSV-bestand. Maakt gebruik van AES-versleuteling. Alleen de wachtwoorden die in het TSV-bestand zijn opgeslagen, worden versleuteld en de servernaam bevat leesbare tekst.

.PARAMETER PasswordLength

De lengte van de wachtwoorden die willekeurig worden gegenereerd voor lokale accounts.

.PARAMETER NoEncryption

U moet de accountwachtwoorden die in het TSV-bestand zijn opgeslagen niet versleutelen. Dit leidt ertoe dat leesbare wachtwoorden naar de schijf worden geschreven.

.EXAMPLE

. .\Invoke-PasswordRoll.ps1 #Laadt de functies in dit scriptbestand
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator","CustomLocalAdmin") -TsvFileName "LocalAdminCredentials.tsv" -EncryptionKey "Password1"

Maakt verbinding met alle computers die zijn opgeslagen in het bestand 'computerlist.txt'. Als de lokale account 'administrator' en/of 'CustomLocalAdmin' aanwezig zijn in het systeem, worden de wachtwoorden van deze accounts gewijzigd in een willekeurig gegenereerd wachtwoord van 20 tekens lang (standaardwaarde). De combinaties van gebruikersnaam/wachtwoord/server worden opgeslagen in LocalAdminCredentials.tsv en de accountwachtwoorden worden via AES versleuteld met het wachtwoord 'Password1'.

.EXAMPLE

. .\Invoke-PasswordRoll.ps1 #Laadt de functies in dit scriptbestand
Invoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40

Maakt verbinding met alle computers die zijn opgeslagen in het bestand 'computerlist.txt'. Als de lokale account 'administrator' aanwezig is in het systeem, wordt het wachtwoord daarvan gewijzigd in een willekeurig gegenereerd wachtwoord met een lengte van 40 tekens. De combinaties van gebruikersnaam/wachtwoord/server worden niet-versleuteld opgeslagen in LocalAdminCredentials.tsv.

.NOTES
Vereisten: -PowerShellv2 of hoger moet zijn geïnstalleerd -Externe communicatie van PowerShell moet zijn ingeschakeld op alle systemen waarvoor het script wordt uitgevoerd

Gedrag van het script: -Als er een lokaal account aanwezig is in het systeem, maar dit niet is opgegeven in de parameter LocalAccounts, geeft het script een waarschuwing op het scherm weer over de aanwezigheid van dit lokale account. Het script wordt voortgezet wanneer dit gebeurt. -Als er een lokaal account is opgegeven in de parameter LocalAccounts, maar het account niet bestaat op de computer, gebeurt er niets (er wordt GEEN account gemaakt). -De functie ConvertTo-CleartextPassword, in dit bestand, kan worden gebruikt voor het ontsleutelen van wachtwoorden die versleuteld zijn opgeslagen in het TSV-bestand. -Als er geen verbinding kan worden gemaakt met een server die in ComputerName is opgegeven, wordt een foutbericht weergegeven. -Microsoft adviseert bedrijven alle wachtwoorden van lokale accounts en domeinaccounts regelmatig te vervangen.

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


#Laadt de benodigde .net-klassen
Add-Type -AssemblyName "System.Web" -ErrorAction Stop


#Dit is het scriptblok dat wordt uitgevoerd op elke computer die is opgegeven in ComputerName
$RemoteRollScript = {
Param(
[Parameter(Mandatory=$true, Position=1)]
[String[]]
$Passwords,

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

#Dit is hier zodat ik kan vastleggen wat de servernaam was waarmee het script was verbonden. Soms raken DNS-records door elkaar en dan is het fijn om dit te hebben.
[Parameter(Mandatory=$true, Position=3)]
[String]
$TargettedServerName
)

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

#Controleer of de computer lokale gebruikersaccounts heeft waarvan de wachtwoorden niet worden vervangen door dit 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"
}
}

#Wijzig het wachtwoord voor elk opgegeven lokaal account dat op deze server bestaat
$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++
}
}


#Genereer het wachtwoord op de client waarop dit script wordt uitgevoerd, niet op de externe computer. System.Web.Security is niet beschikbaar in het .NET-clientprofiel. Deze aanroep # op de client waarop het script wordt uitgevoerd, zorgt ervoor dat slechts op één computer de volledige .NET-runtime hoeft te zijn geïnstalleerd (en niet op elk systeem waarop het wachtwoord wordt vervangen).
function Create-RandomPassword
{
Param(
[Parameter(Mandatory=$true)]
[ValidateRange(20,120)]
[Int]
$PasswordLength
)

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

#Dit zou nooit moeten mislukken, maar ik voer hier toch een controle uit
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
}


#Hoofdfunctionaliteit - genereer een wachtwoord en wijzig extern op computers het wachtwoord van de opgegeven lokale accounts
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)
{
#Moet 1 wachtwoord genereren voor elk account dat kan worden gewijzigd
$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
#Als versleuteling wordt gebruikt, versleutel dan het wachtwoord met de sleutel die de gebruiker heeft opgegeven, voordat het naar de schijf wordt geschreven
if ($Result -ne $null)
{
if ($PsCmdlet.ParameterSetName -ieq "NoEncryption")
{
$Result | Select-Object Username,Password,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation
}
else
{
#Filteren op geretourneerde $null-vermeldingen
$Result = $Result | Select-Object Username,Password,TargettedServerName,RealServerName

foreach ($Record in $Result)
{
$PasswordSecureString = ConvertTo-SecureString -AsPlainText -Force -String ($Record.Password)
$Record | Add-Member -MemberType NoteProperty -Name EncryptedPassword -Value (ConvertFrom-SecureString -Key $SecureStringKey -SecureString $PasswordSecureString)
$Record.PSObject.Properties.Remove("Password")
$Record | Select-Object Username,EncryptedPassword,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation
}
}
}
}
}function ConvertTo-CleartextPassword
{
<#
.SYNOPSIS
Deze functie kan worden gebruikt voor het versleutelen van wachtwoorden die versleuteld zijn opgeslagen met de functie Invoke-PasswordRoll.

Function: ConvertTo-CleartextPassword
Author: Microsoft
Version: 1.0

.DESCRIPTION
Deze functie kan worden gebruikt voor het versleutelen van wachtwoorden die versleuteld zijn opgeslagen met de functie Invoke-PasswordRoll.


.PARAMETER EncryptedPassword

Het versleutelde wachtwoord dat is opgeslagen in een TSV-bestand.

.PARAMETER EncryptionKey

Het wachtwoord dat wordt gebruikt voor de versleuteling.


.EXAMPLE. .\Invoke-PasswordRoll.ps1 #Laadt de functies in dit scriptbestand
ConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAGIAMABiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"

Decodeert het versleutelde wachtwoord dat is opgeslagen in de TSV-bestand.

#>
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)))
}
  Beheerders kunnen lokale beheerdersaccounts aan computers toevoegen door een Active Directory-groep te maken en deze aan de lokale groep Administrators toevoegen via Voorkeuren voor groepsbeleid -> Lokale groep. Hierbij worden geen referenties opgeslagen in het cachegeheugen. Het dialoogvenster is vergelijkbaar met het volgende. Voor deze oplossing is geen verbinding met Active Directory Domain Services vereist wanneer de gebruiker is aangemeld met deze referenties.





Scenario 2: Toegewezen stations

Beheerders gebruiken stationstoewijzingen om netwerklocaties toe te wijzen aan gebruikers. De functie voor wachtwoordbeveiliging wordt gebruikt om te controleren of de toegang tot het station geautoriseerd is. De volgende voorkeuren worden beïnvloed:
  • Gebruikersconfiguratie -> Windows-instellingen -> Stationstoewijzingen -> Nieuw -> Toegewezen station

Belangrijke wijzigingen

Actie: maken, bijwerken of vervangen
  • De velden Gebruikersnaam, Wachtwoord en Wachtwoord bevestigen zijn uitgeschakeld.



Actie: verwijderen
  • Geen verandering in gedrag

Tijdelijke oplossingen

In plaats van de wachtwoordmethode te gebruiken voor verificatie, kunt u Windows Verkenner gebruiken om gedeelde machtigingen te beheren en rechten toe te wijzen aan gebruikers. U kunt Active Directory-objecten gebruiken om machtigingen voor de map te beheren.


Scenario 3: Services

Met de voorkeur Services kunt u service-eigenschappen zodanig wijzigen dat ze worden uitgevoerd in een andere context dan hun oorspronkelijke beveiligingscontext. De volgende voorkeuren worden beïnvloed:
  • Computerconfiguratie -> Instellingen van Configuratiescherm -> Services -> Nieuw -> Service

Belangrijke wijzigingen

Opstarten: Geen wijziging, automatisch of handmatig
  • De velden Wachtwoord en Wachtwoord bevestigen zijn uitgeschakeld.
  • De beheerder kan alleen ingebouwde accounts gebruiken.



Opstarten: Uitschakelen
  • Geen verandering in gedrag
Het dialoogvenster Nieuw
  • Beheerders die niet-ingebouwde gebruikers gebruiken voor dit account, krijgen de volgende waarschuwing te zien:




Tijdelijke oplossingen


Services kunnen nog steeds worden uitgevoerd als een lokale systeemaccount. Servicemachtigingen kunnen worden gewijzigd zoals beschreven in het volgende artikel in de Microsoft Knowledge Base:
256345 Instellingen voor groepsbeleid configureren om beveiliging voor systeemservices in te stellen

Opmerking
 Als de service die u wilt configureren niet aanwezig is, moet u de instellingen configureren op een computer waarop de service wordt uitgevoerd. 


Scenario 4: Geplande en directe taken (hoger niveau)

Deze worden gebruikt om geplande taken uit te voeren in een specifieke beveiligingscontext. De mogelijkheid om referenties op te slaan voor geplande taken die worden uitgevoerd als een willekeurige gebruiker wanneer die gebruiker niet is aangemeld of niet meer beschikbaar is. De volgende voorkeuren worden beïnvloed. (Houd er rekening mee dat op sommige platforms 'ten minste Windows 7' wordt vervangen door 'Windows Vista en hoger'.)
  • Computerconfiguratie -> Instellingen van Configuratiescherm -> Geplande taken -> Nieuw -> Geplande taak (ten minste Windows 7)
  • Computerconfiguratie -> Instellingen van Configuratiescherm -> Geplande taken -> Nieuw -> Directe taak (ten minste Windows 7)
  • Gebruikersconfiguratie -> Instellingen van Configuratiescherm -> Geplande taken -> Nieuw -> Geplande taak (ten minste Windows 7)
  • Gebruikersconfiguratie -> Instellingen van Configuratiescherm -> Geplande taken -> Nieuw -> Directe taak (ten minste Windows 7)

Belangrijke wijzigingen

Actie: maken, bijwerken of vervangen
  • Wanneer u de optie Uitvoeren ongeacht of gebruiker wel of niet is aangemeld selecteert, wordt de beheerder niet meer gevraagd om referenties.
  • Het selectievakje Wachtwoord niet opslaan is uitgeschakeld. Het vakje is ook standaard ingeschakeld.



Actie: verwijderen

Geen verandering in gedrag

Tijdelijke oplossingen

Voor de taken 'Geplande taak' (ten minste Windows 7) en 'Directe taak' (ten minste Windows 7) kunnen beheerders specifieke gebruikersaccounts gebruiken wanneer de opgegeven gebruiker is aangemeld. Of ze kunnen alleen toegang tot lokale bronnen hebben als die gebruiker. Deze taken kunnen nog steeds worden uitgevoerd in de context van de lokale service.



Scenario 5: Geplande en directe taken (lager niveau)

Dit is de lagere versie van voorkeuren die wordt gebruikt voor het uitvoeren van geplande taken in een specifieke beveiligingscontext. De mogelijkheid om referenties op te slaan voor geplande taken die worden uitgevoerd als een willekeurige gebruiker wanneer die gebruiker niet is aangemeld of niet meer beschikbaar is. De volgende voorkeuren worden beïnvloed:
  • Computerconfiguratie -> Instellingen van Configuratiescherm -> Geplande taken -> Nieuw -> Geplande taak
  • Computerconfiguratie -> Instellingen van Configuratiescherm -> Geplande taken -> Nieuw -> Direct taak
  • Gebruikersconfiguratie -> Instellingen van Configuratiescherm -> Geplande taken -> Nieuw -> Geplande taak
  • Gebruikersconfiguratie -> Instellingen van Configuratiescherm -> Geplande taken -> Nieuw -> Direct taak (Windows XP)

Belangrijke wijzigingen

Actie: maken, bijwerken of vervangen
  • Het selectievakje Uitvoeren als is uitgeschakeld. Daarom zijn de velden Gebruikersnaam, Wachtwoord en Wachtwoord bevestigen uitgeschakeld.



Actie: verwijderen

Geen verandering in gedrag

Tijdelijke oplossingen

Voor de items 'Geplande taak' en 'Directe taak' (Windows XP) worden geplande taken uitgevoerd met de machtigingen die momenteel beschikbaar zijn voor de lokale service.


Scenario 6: Gegevensbronnen

De voorkeur Gegevensbronnen wordt gebruikt om een gegevensbron te koppelen aan een computer of een gebruiker. Met deze functie worden niet langer referenties opgeslagen voor toegang tot gegevensbronnen die zijn beveiligd met een wachtwoord. De volgende voorkeuren worden beïnvloed:
  • Computerconfiguratie -> Instellingen van Configuratiescherm -> Gegevensbronnen
  • Gebruikersconfiguratie -> Instellingen van Configuratiescherm -> Gegevensbronnen

Belangrijke wijzigingen

Actie: maken, bijwerken of vervangen
  • De velden Gebruikersnaam, Wachtwoord en Wachtwoord bevestigen zijn uitgeschakeld.



Actie: verwijderen
  • Geen verandering in gedrag

Tijdelijke oplossingen

Er zijn geen tijdelijke oplossingen beschikbaar. In deze voorkeur worden niet langer referenties opgeslagen voor toegang tot gegevensbronnen die zijn beveiligd met een wachtwoord.


Afschaffing van CPassword


CPassword verwijderen

Het Windows PowerShell-script dat is opgenomen in dit Microsoft Knowledge Base-artikel ontdekt of een domein voorkeuren voor groepsbeleid bevat die gebruikmaken van CPassword. Als XML-code voor CPassword wordt gedetecteerd in een bepaalde voorkeur, wordt deze weergegeven in deze lijst.


Voorkeuren met CPassword detecteren

Dit script moet worden uitgevoerd vanuit een lokale map op de domeincontroller die u wilt opschonen. Kopieer de inhoud, sla deze op in een nieuw Windows PowerShell-bestand, bepaal uw systeemstation en voer het script uit zoals aangegeven in de volgende syntaxis.

<#
.SYNOPSIS

Groepsbeleidsobjecten in uw domein kunnen voorkeuren hebben waarin wachtwoorden voor verschillende taken zijn opgeslagen, zoals de volgende:

1. Gegevensbronnen 2. Stationstoewijzingen 3. Lokale gebruikers 4. Geplande taken (zowel XP als hoger niveau) 5. Services

Deze wachtwoorden worden opgeslagen in SYSVOL als onderdeel van voorkeuren voor groepsbeleid en zijn niet veilig door de zwakke versleuteling (32-byte AES). We raden u daarom aan dergelijke voorkeuren niet te implementeren in uw domeinomgeving en dergelijke bestaande voorkeuren te verwijderen. Dit script helpt beheerders bij het zoeken naar voorkeuren voor groepsbeleid die wachtwoorden bevatten in SYSVOL van hun domein.

.DESCRIPTION
Dit script moet worden uitgevoerd op een domeincontroller of een clientcomputer die is geïnstalleerd met RSAT, voor het afdrukken van alle voorkeuren die een wachtwoord bevatten met informatie zoals groepsbeleidsobject, naam van voorkeur of GPEdit-pad, waaronder deze voorkeur is gedefinieerd.

Als u een lijst met getroffen voorkeuren hebt, kunnen deze voorkeuren worden verwijderd met de editor in de console Groepsbeleidsbeheer.

.SYNTAXGet-SettingsWithCPassword.ps1 [-Path <String>] .EXAMPLEGet-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domain

Get-SettingsWithCPassword.ps1 -Path <GPO Backup Folder Path>

.NOTES
Als de PS-module van groepsbeleid niet wordt gevonden, bevat de uitvoer GUID's van GPO's in plaats van namen van GPO's. U kunt dit script uitvoeren op een domeincontroller of het script opnieuw uitvoeren op de client nadat u RSAT hebt geïnstalleerd en de groepsbeleidsmodule hebt ingeschakeld. Of u kunt GUID's van GPO's gebruiken om namen van GPO's op te halen met de cmdlet Get-GPO.

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

#>

#---------------------------------------------------------------------------------------------------------------- # Invoerparameters #--------------------------------------------------------------------------------------------------------------
param(
[string]$Path = $(throw "-Path is required.") # Pad van map waarin GPP´s zich bevinden.
)

#---------------------------------------------------------------------------------------------------------------

$isGPModuleAvailable = $false
$impactedPrefs = { "Groups.xml", "ScheduledTasks.xml","Services.xml", "DataSources.xml", "Drives.xml" }

#---------------------------------------------------------------------------------------------------------------- # groepsbeleidsmodule importeren indien beschikbaar #----------------------------------------------------------------------------------------------------------------
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 )
{
# Paden van GPMC-structuur
$commonPath = " -> Preferences -> Control Panel Settings -> "
$driveMapPath = " -> Preferences -> Windows Settings -> "

# Recursief alle XML-bestanden op de locatie SYSVOL ophalen
$impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" | Where-Object { $impactedPrefs -cmatch $_.Name }


# Elk XML-bestand bevat meerdere voorkeuren. Doorloop elke voorkeur om te controleren of deze # het kenmerk cpassword bevat en dit weer te geven.

foreach ( $file in $impactedXmls )
{
$fileFullPath = $file.FullName

# GPP-categorie instellen. Als het bestand zich bevindt onder de map Machine in SYSVOL, # wordt de instelling gedefinieerd onder computerconfiguratie, anders is de # instelling een gebruikersconfiguratie

if ( $fileFullPath.Contains("Machine") )
{
$category = "Computer Configuration"
}
elseif ( $fileFullPath.Contains("User") )
{
$category = "User Configuration"
}
else
{
$category = "Unknown"
}

# Bestandsinhoud ophalen als 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 { $_.Properties.cpassword -ne $null}
$preferenceType = "Local Users"
}

ScheduledTasks
{
$gppWithCpassword = $xmlFile.SelectNodes("ScheduledTasks/*") | where-Object { $_.Properties.cpassword -ne $null}
$preferenceType = "Scheduled Tasks"
}

DataSources
{
$gppWithCpassword = $xmlFile.SelectNodes("DataSources/DataSource") | where-Object { $_.Properties.cpassword -ne $null}
$preferenceType = "Data sources"
}

Drives
{
$gppWithCpassword = $xmlFile.SelectNodes("Drives/Drive") | where-Object { $_.Properties.cpassword -ne $null}
$preferenceType = "Drive Maps"
}

Services
{
$gppWithCpassword = $xmlFile.SelectNodes("NTServices/NTService") | where-Object { $_.Properties.cpassword -ne $null}
$preferenceType = "Services"
}

default
{ # gppWithCpassword en preferenceType wissen voor volgende item.
try
{
Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue
Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue
}
catch [Exception]{}
}
}if ($gppWithCpassword -ne $null)
{
# Naam van GPO maken via GUID die is opgehaald uit 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
}
}

# voorkeuren weergeven die cpassword bevatten
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

#----------------------------------------------------------------------------------- # Controleer of pad geldig is. Inventariseer alle instellingen die cpassword bevatten. #-----------------------------------------------------------------------------------
if (Test-Path $Path )
{
Enum-SettingsWithCpassword $Path
}
else
{
Write-Warning "No such directory: $Path"
}


Voorbeeld van syntaxis (aangenomen dat C het systeemstation is)

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

Opmerking Let erop dat u ook een back-up-GPO voor het pad kunt opgeven in plaats van het domein.

Het detectiescript genereert een lijst die vergelijkbaar is met het volgende voorbeeld:



Bij langere lijsten kunt u de uitvoer opslaan in een bestand:

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

Voorkeuren met CPassword verwijderen

Als u voorkeuren wilt verwijderen die CPassword-gegevens bevatten, raden we u aan de console Groepsbeleidsbeheer (GPMC) te gebruiken op de domeincontroller of op een client waarop Remote Server Administration Tools is geïnstalleerd. U kunt elk voorkeur in vijf stappen verwijderen op deze consoles. Ga hiervoor als volgt te werk:
  1. Open in de GPMC de voorkeur dat CPassword-gegevens bevat.
  2. Wijzig de actie in Verwijderen of Uitschakelen, afhankelijk van de voorkeur.
  3. Klik op OK om de wijzigingen op te slaan.
  4. Wacht een of twee vernieuwingscycli van groepsbeleid af om de wijzigingen te laten doorgeven aan de clients.
  5. Nadat de wijzigingen zijn toegepast op alle clients, verwijdert u de voorkeur.
  6. Herhaal stap 1 tot en met 5 om uw hele omgeving op te schonen. Als het detectiescript nul als resultaat oplevert, bent u klaar.