Hvordan Endre Registertillatelser Med PowerShell

windows-registeret kan være en gullgruve for angripere og clueless ansatte. Det er ikke noe sted bedre egnet for å introdusere sikkerhetsproblemer eller helt skru opp Et Windows-system enn registret.

hvis du vil kontrollere tillatelser til registernøkler for sikkerhets-og feilsøkingsformål, kan du bruke noen forskjellige metoder. I denne artikkelen vil Du lære PowerShell. Ved hjelp Av Et par PowerShell cmdlets og litt .NET magic, du kan lese og manipulere registertillatelser etter eget skjønn.

Hva Er En Registertillatelse?

for denne artikkelen er en registertillatelse et sett Med Tilgangskontrolloppføringer (ACEs) som utgjør EN TILGANGSKONTROLLLISTE (ACL). Disse Aclene gjelder deretter for en registernøkkel.

Acler er et vanlig begrep blant mange enheter I Det, Og Acler tilordnet registernøkler er ikke annerledes. ACL definerer hva og hvordan en konto kan få tilgang til registernøkkelen.

en registertillatelse (ACL) definerer hvilken konto som har tilgang til en bestemt registernøkkel og hva slags tillatelser kontoen har.

Finne Eksisterende Registernøkkelrettigheter

Start med å se etter en registernøkkel du vil endre tillatelser på. Jeg velger tilfeldig en med banen til *HKCU:. Du kan velge hvilken som helst nøkkel du vil prøve dette ut.

før du endrer noe, er Det en god ide å se hva gjeldende ACL er og å ta en sikkerhetskopi hvis ting går galt. PowerShell gir en cmdlet kalt Get-Acl som vil gjøre nettopp 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--

Nå som du har den eksisterende ACL fanget, kan du endre den. Hvis du er bekymret, kan du til og med lagre ACL til filsystemet ved Hjelp Av Export-CliXml cmdleten, men det er for en annen dag.

Du kan se et eksempel på Å bruke Cmdleten Export-CliXml til å lagre objekter på disken her.

Opprette EN ACL Med PowerShell

i avsnittet ovenfor fanget du EN ACL med Get-Acl. Siden du bruker registret, fungerer denne BESTEMTE ACL-fangsten bare med registret. Hvis DU vil oppdatere ACL, må du legge til en REGEL (ACE) TIL ACL som er ment for registret.

når du definerer tillatelser For windows-registret Med PowerShell, må du opprette Et System.Sikkerhet.AccessControl.RegistryAccessRule objekt. Dette objektet lar deg definere kriterier som rektor(bruker, gruppe, etc.) AT DETTE ESSET gjelder, tilgangsnivå, og hvis du skal tillate eller nekte den tilgangen.

Definere Høyre

det første trinnet er å tildele de riktige rettighetene til registernøkkelen. Det er 14 forskjellige rettigheter å velge mellom. Sjekk ut tabellen I Dette Microsoft-dokumentet for å finne den rette du leter etter.

du kan oppdage alle mulige rettigheter ved å skrive :: og trykke på tab-tasten. PowerShell vil bla gjennom alle tilgjengelige rettigheter.

Opprette RegistryAccessRule-Objektet

når du har riktig riktig navn, må du opprette RegistryAccessRule-objektet. Dette objektet har tre argumenter du må passere til det:

  • en identitet (En Windows-konto)
  • høyre (har flere forskjellige objekter for å opprette dette)
  • Tillat eller Avslå denne retten

opprett først identiteten ved å opprette Et System.Sikkerhet.Viktig.NTAccount-objektet passerer i identitetsreferansen som vist nedenfor.

$idRef = ("HOSTNAME\username")

Opprett Deretter Et System.Sikkerhet.AccessControl.RegistryRights protesterer ved å bruke en av rettighetene i tabellen ovenfor.

$regRights = ::FullControl

definer nå arv-og forplantningsflaggene. Her kan du velge Mellom Ingen, ContainerInherit eller ObjectInherit. Du finner mer informasjon om disse alternativene her.

arvinnstillingen for følgende kodebit er satt Til Ingen, noe som betyr at den ikke arver tillatelser fra den overordnede registernøkkelen.

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

når du har angitt arv-og forplantningsflaggene, angir du adgangskontrolltypen enum.

$acType = ::Allow

til slutt oppretter Du RegistryAccessRule-objektet ved å bruke alle objektene du nettopp har samlet inn.

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

Du har nå En RegistryAccessRule definert i $rule-variabelen. Du trenger dette i neste avsnitt.

Legge TIL ACL

det neste trinnet er å legge Til RegistryAccessRule du opprettet i forrige del, til gjeldende ACL ved Hjelp Av AddAccessRule () – metoden på ACL-objektet du grep tidligere.

PS> $acl.AddAccessRule($rule)

Overskrive En Eksisterende ACL

Alternativt kan du også fullstendig overskrive den eksisterende ACL ved Hjelp Av Metoden SetAccessRule ().

PS> $acl.SetAccessRule($rule)

Tilordne ACL

Men du er ikke ferdig ennå! Du har faktisk ikke begått den nye ACL til registernøkkelen. Hvis du vil bruke den nye ACL til registernøkkelen, bruker du Kommandoen Set-Acl. For å bruke Set-Acl-kommandoen, send den lagrede ACL i $acl direkte til Set-Acl mens du peker på nøkkelen du vil bruke den på.

du vil sette ACL på samme nøkkel som du samlet den opprinnelige ACL fra. Pass den nøkkelbanen til Path-parameteren For Set-Acl for å bruke den.

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

ACL med den ekstra regelen for registertilgang er brukt på den opprinnelige registernøkkelen. Du kan nå bekrefte endringen ble gjort ved igjen å ringe Get-Acl og sikre At IdentityReference, RegistryRights, Og AccessControlType egenskaper 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

Sammendrag

i dette blogginnlegget lærte du hvordan du fanger, endrer Og forplikter Ess til Registernøkkel Acler. Du brukte Cmdleten Get-Acl PowerShell til å finne eksisterende Acler og Cmdleten Set-Acl til å endre dem. Å bruke disse to cmdletene er omtrent alt du trenger for å jobbe med registertillatelser I PowerShell.

Leave a Reply

Din e-postadresse vil ikke bli publisert.