a rendszerleíró Engedélyek módosítása a PowerShell

A Windows rendszerleíró adatbázis aranybánya lehet A támadók és a tanácstalan alkalmazottak számára. Nincs olyan hely, amely jobban megfelelne a biztonsági rések bevezetésének vagy a Windows rendszer teljes elcseszésének, mint a rendszerleíró adatbázis.

a rendszerleíró kulcsok engedélyeinek biztonsági és hibaelhárítási célú vezérléséhez néhány különböző módszert használhat. Ebben a cikkben megtudhatja a PowerShell-t. Néhány PowerShell parancsmag és egy kicsit .NET magic, elolvashatja és manipulálhatja a regisztrációs engedélyeket saját belátása szerint.

mi az a regisztrációs Engedély?

ebben a cikkben a beállításjegyzék-engedély a hozzáférés-vezérlési listát (ACL) alkotó hozzáférés-vezérlési bejegyzések (Ace) halmaza. Ezek az ACL-ek ezután egy rendszerleíró kulcsra vonatkoznak.

az ACL-ek gyakori kifejezés számos entitás között, és a rendszerleíró kulcsokhoz rendelt ACL-ek nem különböznek egymástól. Az ACL meghatározza, hogy egy fiók mit és hogyan férhet hozzá a rendszerleíró kulcshoz.

a beállításjegyzék-engedély (ACL) határozza meg, hogy mely fiók férhet hozzá egy adott beállításkulcshoz, és milyen engedélyekkel rendelkezik az adott fiók.

meglévő beállításkulcs-engedélyek keresése

Kezdje azzal, hogy megkeresi azt a beállításkulcsot, amelyen módosítani szeretné az engedélyeket. Véletlenszerűen kiválasztok egyet a *HKCU:. Bármelyik kulcsot kiválaszthatod, amit ki szeretnél próbálni.

mielőtt bármit megváltoztatna, érdemes megnézni, mi az aktuális ACL, és biztonsági másolatot készíteni, ha a dolgok rosszul mennek. A PowerShell egy get-Acl nevű parancsmagot biztosít, amely éppen ezt fogja tenni.

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

most, hogy már a meglévő ACL rögzített, meg lehet változtatni. Ha aggódik, akár az ACL-t is mentheti a fájlrendszerbe az Export-CliXml parancsmag segítségével, de ez egy másik napra szól.

itt láthat egy példát az Export-CliXml parancsmag használatára az objektumok lemezre mentéséhez.

ACL létrehozása a PowerShell

a fenti szakaszban egy ACL-t készített a Get-Acl segítségével. Mivel a rendszerleíró adatbázist használja,ez a rögzített ACL csak a rendszerleíró adatbázissal működik. Az ACL frissítéséhez hozzá kell adnia egy szabályt (ACE) az ACL-hez, amely a rendszerleíró adatbázis számára készült.

amikor a Windows rendszerleíró adatbázis engedélyeit a PowerShell segítségével határozza meg, Létre kell hoznia egy rendszert.Biztonságiak.Hozzáférés-vezérlés.RegistryAccessRule objektum. Ez az objektum lehetővé teszi olyan kritériumok meghatározását, mint a fő (felhasználó, csoport stb.), amelyre ez az ász vonatkozik, a hozzáférés szintje, és ha engedélyezi vagy megtagadja ezt a hozzáférést.

a jog meghatározása

az első lépés a megfelelő jogok hozzárendelése a rendszerleíró kulcshoz. 14 különböző jog közül lehet választani. Nézze meg a Microsoft doc táblázatát, hogy felfedezze a keresett jogot.

az összes lehetséges jogot a :: beírásával és a tab billentyű lenyomásával fedezheti fel. A PowerShell az összes rendelkezésre álló jogot végigviszi.

a RegistryAccessRule objektum létrehozása

miután megkapta a megfelelő nevet, létre kell hoznia a RegistryAccessRule objektumot. Ennek az objektumnak három argumentuma van, amelyeket át kell adnia:

  • identitás (Windows-fiók)
  • a jobb (több különböző objektummal rendelkezik ennek létrehozásához)
  • engedélyezze vagy tagadja ezt a jogot

először hozza létre az identitást egy rendszer létrehozásával.Biztonságiak.Igazgató.NTAccount objektum halad az identitás hivatkozás az alábbiak szerint.

$idRef = ("HOSTNAME\username")

ezután hozzon létre egy rendszert.Biztonságiak.Hozzáférés-vezérlés.RegistryRights objektum a fenti táblázat egyik jogával.

$regRights = ::FullControl

most határozza meg az öröklési és terjedési jelzőket. Itt választhat a None, a ContainerInherit vagy az ObjectInherit között. További információt ezekről a lehetőségekről itt talál.

a következő kódrészlet öröklési beállítása Nincs értékre van állítva, ami azt jelenti, hogy nem örököl semmilyen engedélyt a szülő rendszerleíró kulcsától.

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

Miután beállította az öröklési és terjesztési jelzőket, állítsa be az enum hozzáférés-vezérlés típusát.

$acType = ::Allow

végül hozza létre a RegistryAccessRule objektumot az összes összegyűjtött objektum felhasználásával.

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

most már van egy RegistryAccessRule definiálva a $szabály változó. Szüksége lesz erre a következő részben.

az ACL hozzáadása

a következő lépés az előző szakaszban létrehozott RegistryAccessRule hozzáadása az aktuális ACL-hez a korábban megragadott ACL objektum AddAccessRule() metódusával.

PS> $acl.AddAccessRule($rule)

meglévő ACL felülírása

Alternatív megoldásként teljesen felülírhatja a meglévő ACL-t a SetAccessRule() metódus használatával.

PS> $acl.SetAccessRule($rule)

az ACL hozzárendelése

de még nem végeztél! Valójában nem kötelezte el az új ACL-t a rendszerleíró kulcshoz. Az új ACL alkalmazásához a beállításkulcsra használja a Set-Acl parancsot. A Set-Acl parancs használatához adja át a mentett ACL-t $acl-ben közvetlenül a Set-Acl-be, miközben arra a kulcsra mutat, amelyre alkalmazni szeretné.

az ACL-t ugyanazon a kulcson szeretné beállítani, amelyből az eredeti ACL-t összegyűjtötte. Adja át ezt a kulcsútvonalat a Set-Acl Path paraméteréhez annak alkalmazásához.

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

a hozzáadott beállításjegyzék-hozzáférési szabályt tartalmazó ACL az eredeti beállításkulcsra lett alkalmazva. Most ellenőrizheti, hogy a módosítás megtörtént-e, ha ismét meghívja a Get-Acl-t, és biztosítja, hogy az IdentityReference, a RegistryRights és az AccessControlType tulajdonságok a vártnak felelnek meg.

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

Összegzés

ebben a blogbejegyzésben megtanultad, hogyan kell rögzíteni, megváltoztatni és elkötelezni az ászokat a rendszerleíró kulcs ACL-ekhez. A Get-Acl PowerShell parancsmagot használta a meglévő ACL-ek megkereséséhez, a Set-Acl parancsmagot pedig a módosításhoz. E két parancsmag használata csak annyit kell tennie, hogy a PowerShell regisztrációs engedélyeivel dolgozzon.

Leave a Reply

Az e-mail-címet nem tesszük közzé.