Sådan ændres Registreringstilladelser med

vinduet registreringsdatabasen kan være en guldgrube for angribere og clueless medarbejdere. Der er ikke noget sted, der er bedre egnet til at indføre sikkerhedssårbarheder eller helt skrue op et vinduer system end registreringsdatabasen.

for at kontrollere tilladelser til registreringsnøgler til sikkerheds-og fejlfindingsformål kan du bruge et par forskellige metoder. I denne artikel lærer du Magtskal. Ved hjælp af et par Kraftshell cmdlets og lidt .NET magic, du kan læse og manipulere registreringstilladelser efter eget valg.

Hvad er en Registry tilladelse?

i denne artikel er en registreringsdatabasetilladelse et sæt Adgangskontrolposter (esser), der udgør en adgangskontrolliste (ACL). Disse ACL ‘ ER gælder derefter for en registreringsnøgle.

ACL ‘ER er et almindeligt udtryk blandt mange enheder i det, og ACL’ er tildelt registreringsnøgler er ikke anderledes. ACL definerer, hvad og hvordan en konto kan få adgang til den registreringsdatabasenøgle.

en registreringsdatabasetilladelse (ACL) definerer, hvilken konto der kan få adgang til en bestemt registreringsdatabasenøgle, og hvilken type tilladelser den konto har.

Find eksisterende Registreringsnøgletilladelser

Start med at lede efter en registreringsnøgle, du gerne vil ændre tilladelser på. Jeg vælger tilfældigt en med stien til *HKCU:. Du kan vælge en hvilken som helst nøgle, du gerne vil prøve dette.

før du ændrer noget, er det en god ide at se, hvad den nuværende ACL ER, og lave en sikkerhedskopi, hvis tingene går galt. En cmdlet kaldet Get-Acl, der vil gøre netop det.

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 hvor du har den eksisterende ACL fanget, kan du ændre den. Hvis du er bekymret, kan du endda gemme ACL til filsystemet ved hjælp af eksport-Clicksml cmdlet, men det er for en anden dag.

du kan se et eksempel på at bruge cmdlet til at gemme objekter på disken her.

oprettelse af en ACL med Strømshell

i ovenstående afsnit fangede du en ACL med Get-Acl. Da du bruger registreringsdatabasen, fungerer denne særlige ACL-optagne kun med registreringsdatabasen. For at opdatere ACL ‘en skal du tilføje en regel (ACE) til ACL’ en, der er beregnet til registreringsdatabasen.

når du definerer tilladelser til registreringsdatabasen, skal du oprette et System.Sikkerhed.Adgangskontrol.RegistryAccessRule objekt. Dette objekt giver dig mulighed for at definere kriterier som hovedstolen (bruger, gruppe osv.) at dette es gælder for, adgangsniveau, og hvis du vil tillade eller nægte denne adgang.

definition af højre

det første skridt er at tildele de relevante rettigheder til registreringsnøglen. Der er 14 forskellige rettigheder at vælge imellem. Tjek tabellen i dette Microsoft doc for at finde den rigtige, du leder efter.

du kan opdage alle mulige rettigheder ved at skrive :: og trykke på tab-tasten. Vi vil gennemgå alle tilgængelige rettigheder.

oprettelse af objektet RegistryAccessRule

når du har det rigtige rigtige navn, skal du derefter oprette objektet RegistryAccessRule. Dette objekt har tre argumenter, du skal videregive til det:

  • en identitet (en konto)
  • højre (har flere forskellige objekter til at oprette dette)
  • Tillad eller nægt denne ret

Opret først identiteten ved at oprette et System.Sikkerhed.Vigtigste.Ntaccount objekt passerer i identitetsreferencen som vist nedenfor.

$idRef = ("HOSTNAME\username")

opret derefter et System.Sikkerhed.Adgangskontrol.Registryrettigheder gør indsigelse ved hjælp af en af rettighederne i tabellen ovenfor.

$regRights = ::FullControl

Definer nu arv og formeringsflag. Her kan du vælge mellem None, ContainerInherit eller ObjectInherit. Du kan finde mere information om disse muligheder her.

følgende uddrags nedarvningsindstilling er indstillet til Ingen, hvilket betyder, at den ikke arver nogen tilladelser fra dens overordnede registreringsdatabasenøgle.

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

når du har indstillet nedarvning og formering flag, derefter indstille adgangskontrol typen enum.

$acType = ::Allow

Opret endelig objektet RegistryAccessRule ved hjælp af alle de objekter, du lige har samlet.

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

du har nu en RegistryAccessRule defineret i $regelvariablen. Du skal bruge dette i næste afsnit.

tilføjelse af ACL

det næste trin er at tilføje den RegistryAccessRule, du oprettede i det foregående afsnit, til den Aktuelle ACL ved hjælp af metoden AddAccessRule() på det ACL-objekt, du greb tidligere.

PS> $acl.AddAccessRule($rule)

overskrivning af en eksisterende ACL

Alternativt kan du også overskrive den eksisterende ACL fuldstændigt ved hjælp af metoden SetAccessRule ().

PS> $acl.SetAccessRule($rule)

tildeling af ACL

men du er ikke færdig endnu! Du har faktisk ikke forpligtet den nye ACL til registreringsnøglen. Hvis du vil anvende den nye ACL på registreringsdatabasenøglen, skal du bruge kommandoen Set-Acl. For at bruge kommandoen Set-Acl skal du sende den gemte ACL i $acl direkte til Set-Acl, mens du peger på den nøgle, du vil anvende den på.

du vil indstille ACL på den samme nøgle, som du samlede den originale ACL fra. Send denne nøglevej til Path-parameteren for Set-Acl for at anvende den.

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

ACL ‘ en med den tilføjede regel om adgang til registreringsdatabasen er blevet anvendt på den oprindelige registreringsdatabasenøgle. Du kan nu bekræfte, at ændringen blev foretaget ved igen at ringe til Get-Acl og sikre, at egenskaberne IdentityReference, RegistryRights og AccessControlType er som du forventer.

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

Resume

i dette blogindlæg lærte du, hvordan du fanger, ændrer og forpligter esser til registreringsnøgle ACL ‘ er. Du brugte Get-Acl cmdlet til at finde eksisterende ACL ‘ ER og Set-Acl cmdlet til at ændre dem. Brug af disse to cmdlets er næsten alt hvad du behøver for at arbejde med registreringsdatabasetilladelser.

Leave a Reply

Din e-mailadresse vil ikke blive publiceret.