cum se schimbă permisiunile de registru cu PowerShell

registrul Windows poate fi o mină de aur pentru atacatori și angajați clueless. Nu există un loc mai potrivit pentru introducerea vulnerabilităților de securitate sau pentru înșurubarea completă a unui sistem Windows decât Registrul.

pentru a controla permisiunile la cheile de registry în scopuri de securitate și depanare, puteți utiliza câteva metode diferite. În acest articol, veți învăța PowerShell. Folosind câteva cmdleturi PowerShell și puțin .Net magic, puteți citi și manipula permisiunile de registru la discreția dvs.

ce este o permisiune de registru?

pentru acest articol, o permisiune de registry este un set de intrări de control al accesului (ACEs) care alcătuiesc o listă de control al accesului (ACL). Aceste ACL-uri se aplică apoi la o cheie de registry.

ACL-urile sunt un termen comun printre multe entități din acesta, iar ACL-urile atribuite cheilor de registry nu diferă. ACL definește ce și cum un cont poate accesa acea cheie de registry.

o permisiune de registry (ACL) definește ce cont poate accesa o anumită cheie de registry și ce fel de permisiuni are acel cont.

găsirea permisiunilor cheie de Registry existente

începeți prin căutarea unei chei de registry pe care doriți să modificați permisiunile. Voi alege la întâmplare unul cu calea *HKCU:. Puteți alege orice cheie doriți să încercați acest lucru.

înainte de a schimba ceva, este o idee bună să vedeți ce este ACL curent și să faceți o copie de rezervă dacă lucrurile merg prost. PowerShell oferă un cmdlet numit Get-Acl care va face exact asta.

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--

acum că ați capturat ACL-ul existent, îl puteți schimba. Dacă sunteți îngrijorat, puteți chiar să salvați ACL în sistemul de fișiere folosind cmdletul Export-CliXml, dar asta este pentru o altă zi.

puteți vedea aici un exemplu de utilizare a cmdletului Export-CliXml pentru a salva obiecte pe disc.

crearea unui ACL cu PowerShell

în secțiunea de mai sus, ați capturat un ACL cu Get-Acl. Deoarece utilizați registrul, acest ACL special capturat funcționează numai cu registrul. Pentru a actualiza ACL, va trebui să adăugați o regulă (ACE) la ACL care este destinat Registrului.

când definiți permisiunile pentru registrul Windows cu PowerShell, va trebui să creați un sistem.Securitatea.Controlul accesului.Obiect RegistryAccessRule. Acest obiect vă permite să definiți criterii precum principalul (utilizator, grup etc.) că acest As se aplică, nivelul de acces, și dacă ai de gând să permită sau să refuze acest acces.

definirea dreptului

primul pas este să atribuiți drepturile corespunzătoare cheii de registry. Există 14 drepturi diferite de a alege. Consultați tabelul din acest document Microsoft pentru a descoperi dreptul pe care îl căutați.

puteți descoperi toate drepturile posibile tastând :: și apăsând tasta tab. PowerShell va parcurge toate drepturile disponibile.

crearea obiectului RegistryAccessRule

odată ce aveți numele corect corect, va trebui să creați obiectul RegistryAccessRule. Acest obiect are trei argumente va trebui să treacă la ea:

  • o identitate (un cont Windows)
  • dreptul (are mai multe obiecte diferite pentru a crea acest lucru)
  • permiteți sau refuzați acest drept

mai întâi, creați identitatea prin crearea unui sistem.Securitatea.Directore.NTAccount obiect care trece în referința de identitate așa cum se arată mai jos.

$idRef = ("HOSTNAME\username")

apoi, creați un sistem.Securitatea.Controlul accesului.RegistryRights obiect folosind unul dintre drepturile din tabelul de mai sus.

$regRights = ::FullControl

acum definiți steagurile de moștenire și propagare. Aici puteți alege între None, ContainerInherit sau ObjectInherit. Puteți găsi mai multe informații despre aceste opțiuni aici.

următoarea setare de moștenire a fragmentului este setată la niciuna, ceea ce înseamnă că nu va moșteni nicio permisiune de la cheia de registry părinte.

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

după ce ați setat steagurile moștenire și propagare, apoi setați tipul de control acces enum.

$acType = ::Allow

în cele din urmă, creați obiectul RegistryAccessRule folosind toate obiectele pe care tocmai le-ați colectat.

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

acum aveți un RegistryAccessRule definit în variabila $rule. Veți avea nevoie de acest lucru în secțiunea următoare.

adăugarea ACL

următorul pas este adăugarea RegistryAccessRule ați creat în secțiunea anterioară la ACL curent folosind metoda AddAccessRule() pe obiectul ACL ai apucat mai devreme.

PS> $acl.AddAccessRule($rule)

suprascrierea unui ACL existent

alternativ, puteți suprascrie complet ACL existent utilizând metoda SetAccessRule ().

PS> $acl.SetAccessRule($rule)

atribuirea ACL

dar nu ați terminat încă! Nu ați angajat de fapt noul ACL la cheia de registry. Pentru a aplica noul ACL la cheia de registry, utilizați comanda Set-Acl. Pentru a utiliza comanda Set-Acl, treceți ACL salvat în $acl direct la Set-Acl în timp ce indicați cheia la care doriți să o aplicați.

doriți să setați ACL-ul pe aceeași cheie din care ați adunat ACL-ul original. Treceți acea cale cheie la parametrul Path Din Set-Acl pentru ao aplica.

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

ACL cu regula de acces la registru adăugată a fost aplicată cheii de registry originale. Acum Puteți verifica dacă modificarea a fost făcută apelând din nou Get-Acl și asigurându-vă că proprietățile IdentityReference, RegistryRights și AccessControlType sunt așa cum vă așteptați.

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

rezumat

în această postare pe blog, ați învățat cum să capturați, să modificați și să comiteți ACEs la cheia de registry ACL-uri. Ați folosit cmdletul Get-Acl PowerShell pentru a găsi ACL-urile existente și cmdletul Set-Acl pentru a le schimba. Utilizarea acestor două cmdleturi este aproape tot ce aveți nevoie pentru a lucra cu permisiunile de registru în PowerShell.

Leave a Reply

Adresa ta de email nu va fi publicată.