hoe registermachtigingen te wijzigen met PowerShell

het Windows-register kan een goudmijn zijn voor aanvallers en clueless werknemers. Er is geen plaats beter geschikt voor de invoering van kwetsbaarheden in de beveiliging of volledig verknoeien van een Windows-systeem dan het register.

om machtigingen voor registersleutels te beheren voor beveiliging en probleemoplossing, kunt u een paar verschillende methoden gebruiken. In dit artikel, zul je PowerShell leren. Met behulp van een paar PowerShell cmdlets en een beetje .NET magic, kunt u lezen en manipuleren register machtigingen naar eigen goeddunken.

Wat is een Registermachtiging?

voor dit artikel is een registermachtiging een verzameling Access control entries (azen) die een ACL (access control list) vormen. Deze ACL ‘ s zijn dan van toepassing op een registersleutel.

ACL ’s zijn een veel voorkomende term onder veel entiteiten erin, en ACL’ s toegewezen aan registersleutels zijn niet anders. De ACL bepaalt wat en hoe een account toegang heeft tot die registersleutel.

een registermachtiging (ACL) definieert welk account toegang heeft tot een bepaalde registersleutel en welk soort machtigingen dat account heeft.

bestaande machtigingen voor registersleutels vinden

begin met zoeken naar een registersleutel waarop u machtigingen wilt wijzigen. Ik zal willekeurig kiezen met het pad van * HKCU:. Je kunt elke sleutel kiezen om dit uit te proberen.

voordat je iets verandert, is het een goed idee om te zien wat de huidige ACL is en om een back-up te maken als dingen fout gaan. PowerShell biedt een cmdlet genaamd Get-Acl die precies dat zal doen.

PS> $acl = Get-Acl 'HKCU:\AppEvents\EventLabels\ActivatingDocument'
PS> $acl.Access
RegistryRights : ReadKey
AccessControlType : Allow
IdentityReference : APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES
IsInherited : False
InheritanceFlags : ContainerInherit
PropagationFlags : None
--snip--

Nu u de bestaande ACL hebt vastgelegd, kunt u deze wijzigen. Als je je zorgen maakt, kun je zelfs de ACL opslaan in het bestandssysteem met behulp van de export-CliXml cmdlet, maar dat is voor een andere dag.

hier kunt u een voorbeeld zien van het gebruik van de cmdlet Export-CliXml om objecten op schijf op te slaan.

het maken van een ACL met PowerShell

in de bovenstaande sectie hebt u een ACL vastgelegd met Get-Acl. Omdat je het register gebruikt, werkt deze specifieke ACL-opname alleen met het register. Om de ACL bij te werken, moet je een regel (ACE) toevoegen aan de ACL die bedoeld is voor het register.

wanneer u machtigingen definieert voor het Windows-register met PowerShell, moet u een systeem maken.Veiligheid.Toegangscontrole.RegistryAccessRule object. Met dit object kunt u criteria definiëren zoals de principal (gebruiker, groep, enz.) dat deze ACE van toepassing is op, niveau van toegang, en als je gaat toestaan of weigeren die toegang.

Defining the Right

de eerste stap is het toewijzen van de juiste rechten aan de registersleutel. Er zijn 14 verschillende rechten om uit te kiezen. Bekijk de tabel in deze Microsoft doc om de juiste te ontdekken die u zoekt.

u kunt alle mogelijke rechten ontdekken door:: te typen en op de Tab-toets te drukken. PowerShell zal alle beschikbare rechten doorlopen.

het object RegistryAccessRule aanmaken

zodra u de juiste naam hebt, moet u het object RegistryAccessRule aanmaken. Dit object heeft drie argumenten die je moet doorgeven:

  • een identiteit (een Windows-account)
  • het recht (heeft meerdere verschillende objecten om dit aan te maken)
  • toestaan of weigeren

maak eerst de identiteit aan door een systeem aan te maken.Veiligheid.Belangrijkste.NTAccount object passeert in de identiteit referentie zoals hieronder getoond.

$idRef = ("HOSTNAME\username")

maak vervolgens een systeem aan.Veiligheid.Toegangscontrole.Registratierechten maken bezwaar tegen het gebruik van een van de rechten in de bovenstaande tabel.

$regRights = ::FullControl

definieer nu de overerving-en vermeerderingsvlaggen. Hier kunt u kiezen tussen Geen, ContainerInherit, of ObjectInherit. Meer informatie over deze opties vindt u hier.

de overerving-instelling van het volgende fragment is ingesteld op geen, wat betekent dat het geen machtigingen zal erven van de ouder registersleutel.

$inhFlags = ::None
$prFlags = ::None

zodra u de overerving-en propagatievlaggen hebt ingesteld, stelt u het toegangsbeheertype enum in.

$acType = ::Allow

maak Tot slot het object RegistryAccessRule aan met alle objecten die u zojuist hebt verzameld.

$rule = New-Object System.Security.AccessControl.RegistryAccessRule ($idRef, $regRights, $inhFlags, $prFlags, $acType)

u hebt nu een RegistryAccessRule gedefinieerd in de $ rule variabele. Je hebt dit nodig in de volgende sectie.

ACL

de volgende stap is het toevoegen van de RegistryAccessRule die u in de vorige sectie hebt gemaakt aan de huidige ACL met behulp van de methode AddAccessRule() op het ACL-object dat u eerder hebt gepakt.

PS> $acl.AddAccessRule($rule)

overschrijven van een bestaande ACL

u kunt ook de bestaande ACL volledig overschrijven met de methode SetAccessRule ().

PS> $acl.SetAccessRule($rule)

ACL

toewijzen maar u bent nog niet klaar! Je hebt de nieuwe ACL nog niet toegewezen aan de registersleutel. Als u de nieuwe ACL op de registersleutel wilt toepassen, gebruikt u de opdracht Set-Acl. Om het Set-Acl commando te gebruiken, geef je de opgeslagen ACL in $acl direct door aan Set-Acl terwijl je wijst naar de sleutel waarop je het wilt toepassen.

u wilt de ACL instellen op dezelfde sleutel waarvan u de originele ACL hebt verzameld. Geef dat sleutelpad door aan de Padparameter van Set-Acl om het toe te passen.

$acl | Set-Acl -Path 'HKCU:\AppEvents\EventLabels\ActivatingDocument'

de ACL met de toegevoegde registertoegangsregel is toegepast op de oorspronkelijke registersleutel. U kunt nu controleren of de wijziging is aangebracht door opnieuw Get-Acl te bellen en ervoor te zorgen dat de IdentityReference, RegistryRights en AccessControlType eigenschappen zijn zoals u verwacht.

PS> (Get-Acl 'HKCU:\AppEvents\EventLabels\ActivatingDocument').Access
RegistryRights : FullControl
AccessControlType : Allow
IdentityReference : <hostname>\Administrator
IsInherited : False
InheritanceFlags : None
PropagationFlags : None

samenvatting

In deze blogpost hebt u geleerd hoe u Azen kunt vastleggen, wijzigen en vastleggen op registersleutel-ACL ‘ s. Je gebruikte de Get-Acl PowerShell cmdlet om bestaande ACL ‘ s te vinden en de Set-Acl cmdlet om ze te veranderen. Met behulp van deze twee cmdlets is zowat alles wat je nodig hebt om te werken met register machtigingen in PowerShell.

Leave a Reply

Het e-mailadres wordt niet gepubliceerd.