Administrative Windows Shares (ADMIN$, C$, D$, …) mit Revoke-SmbShareAccess absichern

Zugriff auf administrative SmbShares über Windows Explorer

Windows erstellt standardmäßig spezielle, versteckte Freigaben (z. B. C$, ADMIN$, IPC$) für den Remote-Zugriff von Administratoren. Diese sind im Explorer grundsätzlich nicht sichtbar (ausgeblendet), können aber z.B. mittels folgendem PowerShell-CmdLet angezeigt werden:

PS C:\> Get-SmbShare

Name   ScopeName Path                              Description
----   --------- ----                              -----------
ADMIN$ *         C:\WINDOWS                        Remoteverwaltung
C$     *         C:\                               Standardfreigabe
D$     *         D:\                               Standardfreigabe
E$     *         E:\                               Standardfreigabe
IPC$   *                                           Remote-IPC

Was vielen nicht bewusst ist: Auch interaktiv angemeldete Benutzer (ohne Administrator-Rechte) können auf diese administrativen Freigaben lokal zugreifen, z.B. wie folgt: \\127.0.0.1\c$\Windows

Warum ist dies erlaubt? Weil die Zugriffsrechte wie folgt konfiguriert sind:

PS C:\> Get-SmbShareAccess -Name "C$"

Name ScopeName AccountName              AccessControlType AccessRight
---- --------- -----------              ----------------- -----------
C$   *         BUILTIN\Administrators   Allow             Full
C$   *         BUILTIN\Backup Operators Allow             Full
C$   *         NT AUTHORITY\INTERACTIVE Allow             Full

Können die Berechtigungen regulär geändert werden?

Kann diese Berechtigung für NT AUTHORITY\INTERACTIVE mit einfacher Nutzung von Revoke-SmbShareAccess geändert, z.B. entzogen oder blockiert werden?

Leider NEIN! Beim Versuch diese zu entziehen oder zu blockieren stößt man auf die Fehlermeldung „Die Anforderung wird nicht unterstützt.

Beachte: Obwohl diese BuiltIn-administrativen Shares mit englisch-sprachigen AccountNames aufscheinen, müsste man beim Konfigurieren in der PowerShell auf einem deutschsprachigen System die korrekten deutschsprachigen Accounts verwenden (Siehe Zeile #4). Nutzung der englisch-sprachigen Identitäten (Zeile #1) führt lediglich zur Fehlermeldung „Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt.

PS C:\> Revoke-SmbShareAccess -Name "C$" -AccountName "NT AUTHORITY\INTERACTIVE" -Force
Revoke-SmbShareAccess : Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt.

PS C:\> Revoke-SmbShareAccess -Name "C$" -AccountName "NT-AUTORITÄT\Interaktiv" -Force
Revoke-SmbShareAccess : Die Anforderung wird nicht unterstützt.

Anmerkung: Bei regulären (selbst erstellten / freigegebenen) Netzwerk-Shares klappt diese Syntax. Beim Versuch administrative Shares (also solche mit einem Dollar-Zeichen „$“ als Suffix) hiermit zu konfigurieren, wird jedoch lediglich „Die Anforderung wird nicht unterstützt.“ ausgegeben.

Fazit: Es ist NICHT möglich administrative Shares mittels Revoke-SmbShareAccess, Grant-SmbShareAccess oder Block-SmbShareAccess zu konfigurieren!

Warum ist das so?

Diese Shares C$, D$, ADMIN$, … sind NICHT am System konfiguriert, sondern werden vom LanManServer beim Systemstart automatisch in einer nicht änderbaren Default-Konfiguration aktiviert.

Deaktivieren der administrativen Shares (ADMIN$, C$, D$, …)

Ob die administrativen Shares ( ADMIN$, C$, D$, …) verfügbar sind kann über folgenden Registry-DWORD-Value gesteuert und wie folgt deaktiviert werden: AutoShareWks = 0

PS C:\> New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters -Name "AutoShareWks" -PropertyType DWord -Value 0


AutoShareWks : 0
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer
PSChildName  : Parameters
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry

PS C:\> Restart-Service -Name Server -Force

PS C:\> Get-SmbShare

Name   ScopeName Path                              Description
----   --------- ----                              -----------
IPC$   *                                           Remote-IPC

Wenn dieser Registry-DWORD-Value AutoShareWks = 0 nicht vorhanden ist (Default-Zustand), sind die administrativen Shares aktiv.

Um diese zu deaktivieren ist der Wert anzulegen und mit „0“ zu belegen. Der genannte Registry-Wert AutoShareWks = 0 gilt für Clients (Workstations), bei Windows Servern ist hingegen ein anderer Wert, nämlich AutoShareServer = 0 zu setzen.

Danach das System neu starten (oder alternativ das Service „server“ wie hier gezeigt neu starten), dann sind die administrativen Shares (ADMIN$, C$, …) nicht mehr verfügbar.

Der IPC$ Share, welcher für (Remote-)Administration benötigt wird bleibt, bleibt erhalten.

Aktivieren der administrativen Shares (ADMIN$, C$, D$, …)

Die Änderung lässt sich wie folgt wieder rückgängig machen und der Default-Zustand herstellen:

PS C:> Remove-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters -Name "AutoShareWks"

PS C:> Restart-Service -Name Server -Force

PS C:> Get-SmbShare

Name ScopeName Path Description
---- --------- ---- -----------
ADMIN$ * C:\WINDOWS Remoteverwaltung
C$ * C:\ Standardfreigabe
D$ * D:\ Standardfreigabe
E$ * E:\ Standardfreigabe
IPC$ * Remote-IPC

PS C:> Get-SmbShareAccess -Name "ADMIN$"

Name ScopeName AccountName AccessControlType AccessRight
---- --------- ----------- ----------------- -----------
ADMIN$ * BUILTIN\Administrators Allow Full
ADMIN$ * BUILTIN\Backup Operators Allow Full
ADMIN$ * NT AUTHORITY\INTERACTIVE Allow Full

Können Shares mit Namen C$, ADMIN$ manuell angelegt werden?

Ja, Fun-Fact: Wenn AutoShareWks = 0 gesetzt ist, die administrativen Shares also deaktiviert sind, kann man mittels New-SmbShare einen Share „C$“ manuell einrichten und auch im Zuge der Anlage die gewünschten Berechtigungen (erstmalig und letztmalig) setzen:

PS C:\> New-SmbShare -Name "C$" -Path "C:\" -FullAccess "Administratoren" -Description "Manuell-erstellte-Standardfreigabe"

Name ScopeName Path Description
---- --------- ---- -----------
C$   *         C:\  Manuell-erstellte-Standardfreigabe


PS C:\> Get-SmbShare

Name   ScopeName Path                              Description
----   --------- ----                              -----------
C$     *         C:\                               Manuell-erstellte-Standardfreigabe
IPC$   *                                           Remote-IPC
print$ *         C:\WINDOWS\system32\spool\drivers Druckertreiber


PS C:\> Get-SmbShareAccess -Name "C$"

Name ScopeName AccountName                  AccessControlType AccessRight
---- --------- -----------                  ----------------- -----------
C$   *         VORDEFINIERT\Administratoren Allow             Full

ABER – Vorsicht! Ein solch „manuell erstellter“ admin-Share mit einem $ als Suffix ist NICHT persistent verfügbar, sobald Windows oder das Server-Service neu gestartet werden verschwindet dieser wieder:

PS C:\> Restart-Service -Name Server -Force

PS C:\> Get-SmbShare

Name   ScopeName Path                              Description
----   --------- ----                              -----------
IPC$   *                                           Remote-IPC

Außerdem lässt sich so ein manuell angelegter „C$“ Share auch nur im Zuge des New-SmbShare Aufrufs mit Berechtigungen versehen, ein nachträgliches Ändern der Berechtigungen mit Revoke-SmbShareAccess, Grant-SmbShareAccess oder Block-SmbShareAccess ist NICHT möglich. Durch Restart des Server-Service verschwindet der Share bei gesetztem AutoShareWks = 0 jedoch wieder und kann mit anderen gewünschten Rechten durch Verwendung von New-SmbShare neu erstellt werden. Der Vorgang müsste allerdings bei jedem System-Start wiederholt werden, da dies wie erläutert nicht persistiert wird.

Alternativ müsste man sich durch manuelle Anlage der benötigten Registry-Values unter HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares selbst um eine persistente Hinterlegung kümmern (technisch möglich, jedoch aus aktueller Sicht nicht meine präferierte / empfohlene Vorgangsweise).

Default Security Descriptor der administrativen Shares (C$, ADMIN$) ändern

Ein anderer Lösungs-Ansatz als das Deaktivieren der administrativen Shares stellt das Ändern des Default-Security-Descriptors dar.

Ich werde nachfolgend auch ein fertiges Registry-File zum Download anbieten, hier aber eine detaillierte Beschreibung wie der Security Descriptor Schritt für Schritt geändert werden kann erläutern:

Zuerst erstellen wir uns einen Share namens mySecurityDescriptor, dieser wird uns nachfolgend dazu dienen, den Default-Security-Descriptor auf mySecurityDescriptor zu kopieren, diesen zu ändern und anschließend wieder auf den Default-Security-Descriptor zurück zu kopieren:

Also Schritt 1: Share namens mySecurityDescriptor erstellen:

PS C:> New-SmbShare -Name "mySecurityDescriptor" -Path "C:\" -FullAccess "Administratoren" -Description "Neuer Share mit Wunsch-SecurityDescriptor"

Name ScopeName Path Description
---- --------- ---- -----------
mySecurityDescriptor * C:\ Neuer Share mit Wunsch-SecurityDescriptor

Die Konfiguration dieses neu erstellten Shares mySecurityDescriptor findet sich hier: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares

PS C:\> $mySecurityDescriptorShare = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares -Name "mySecurityDescriptor"
PS C:\> $mySecurityDescriptorShare.mySecurityDescriptor
CATimeout=0
CSCFlags=0
MaxUses=4294967295
Path=C:\
Permissions=0
Remark=Neuer Share mit Wunsch-SecurityDescriptor
ShareName=mySecurityDescriptor
Type=0

Der auf diese Art neu erstellte Share weist nun diesen Security-Descriptor auf:

PS C:\> Get-SmbShareAccess -Name "mySecurityDescriptor"

Name                 ScopeName AccountName                  AccessControlType AccessRight
----                 --------- -----------                  ----------------- -----------
mySecurityDescriptor *         VORDEFINIERT\Administratoren Allow             Full

Der Security-Descriptor des Shares mySecurityDescriptor befindet sich hier: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares\Security

PS C:\> $key = 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares\Security'
PS C:\> $value = 'mySecurityDescriptor'

PS C:\> $SecurityDescriptor=(New-Object System.Security.AccessControl.RawSecurityDescriptor (Get-ItemProperty $key).$value, 0).GetSddlForm('All')
PS C:\> $SecurityDescriptor
O:SYG:SYD:(A;;FA;;;BA)

PS C:\> $SecurityDescriptorSDDL=ConvertFrom-SddlString -Sddl $SecurityDescriptor -Type FileSystemRights
PS C:\> $SecurityDescriptorSDDL


Owner            : NT-AUTORITÄT\SYSTEM
Group            : NT-AUTORITÄT\SYSTEM
DiscretionaryAcl : {VORDEFINIERT\Administratoren: AccessAllowed (ChangePermissions, CreateDirectories, Delete, DeleteSubdirectoriesAndFiles, ExecuteKey, FullControl, FullControl, FullControl, FullControl, FullControl, GenericAll, GenericExecute, GenericRead, GenericWrite,
                   ListDirectory, Modify, Read, ReadAndExecute, ReadAttributes, ReadExtendedAttributes, ReadPermissions, Synchronize, TakeOwnership, Traverse, Write, WriteAttributes, WriteData, WriteExtendedAttributes, WriteKey)}
SystemAcl        : {}
RawDescriptor    : System.Security.AccessControl.CommonSecurityDescriptor

PS C:\> $SecurityDescriptorSDDL.DiscretionaryAcl
VORDEFINIERT\Administratoren: AccessAllowed (ChangePermissions, CreateDirectories, Delete, DeleteSubdirectoriesAndFiles, ExecuteKey, FullControl, FullControl, FullControl, FullControl, FullControl, GenericAll, GenericExecute, GenericRead, GenericWrite, ListDirectory, Modify, Read, ReadAndExecute, ReadAttributes, ReadExtendedAttributes, ReadPermissions, Synchronize, TakeOwnership, Traverse, Write, WriteAttributes, WriteData, WriteExtendedAttributes, WriteKey)

Der Security-Descriptor der Administrativen Windows Shares (C$, ADMIN$) befindet sich hingegen hier: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\DefaultSecurity\SrvsvcShareAdminConnect

PS C:\> $key = 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\DefaultSecurity'
PS C:\> $value = 'SrvsvcShareAdminConnect'

PS C:\> $SecurityDescriptor=(New-Object System.Security.AccessControl.RawSecurityDescriptor (Get-ItemProperty $key).$value, 0).GetSddlForm('All')
PS C:\> $SecurityDescriptor
O:SYG:SYD:(A;;CCDCSDRCWDWO;;;BA)(A;;CCDCSDRCWDWO;;;SO)(A;;CCDCSDRCWDWO;;;BO)(A;;CCDCSDRCWDWO;;;IU)(A;;CCDCSDRCWDWO;;;SU)(A;;CCDCSDRCWDWO;;;S-1-5-3)

PS C:\> $SecurityDescriptorSDDL=ConvertFrom-SddlString -Sddl $SecurityDescriptor -Type FileSystemRights
PS C:\> $SecurityDescriptorSDDL


Owner            : NT-AUTORITÄT\SYSTEM
Group            : NT-AUTORITÄT\SYSTEM
DiscretionaryAcl : {NT-AUTORITÄT\BATCH: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData), NT-AUTORITÄT\INTERAKTIV: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData),
                   NT-AUTORITÄT\DIENST: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData), VORDEFINIERT\Administratoren: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData)...}
SystemAcl        : {}
RawDescriptor    : System.Security.AccessControl.CommonSecurityDescriptor

PS C:\> $SecurityDescriptorSDDL.DiscretionaryAcl
NT-AUTORITÄT\BATCH: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData)
NT-AUTORITÄT\INTERAKTIV: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData)
NT-AUTORITÄT\DIENST: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData)
VORDEFINIERT\Administratoren: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData)
: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData)
VORDEFINIERT\Sicherungs-Operatoren: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData)

Kurze Erläuterung dieser Einträge, welche Identitäten sind da berechtigt?

  • NT-AUTORITÄT\BATCH
  • NT-AUTORITÄT\INTERAKTIV … den wollen wir entfernen
  • NT-AUTORITÄT\DIENST
  • VORDEFINIERT\Administratoren
  • Ein Eintrag der keinen Namen aufweist!
  • VORDEFINIERT\Sicherungs-Operatoren

In der vorletzten Zeile (Nr. 24) findet sich am Beginn vor dem Doppelpunkt kein Konten-Name, hierbei handelt es sich um "VORDEFINIERT\Server-Operatoren", welcher aber auf einem Win10/Win11 Client-OS nicht vorhanden ist (im nächsten Schritt unten wird klar werden, wie ich auf diese Behauptung/Erkenntnis gekommen bin).

Kopieren wir den DefaultSecurity\SrvsvcShareAdminConnect Security-Descriptor auf unseren erstellten mySecurityDescriptor Share:

PS C:\> Copy-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\DefaultSecurity -Name "SrvsvcShareAdminConnect" -Destination HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares\Security
PS C:\> Rename-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares\Security -Name "SrvsvcShareAdminConnect" -NewName "mySecurityDescriptor"

Restart des Server-Service, damit der kopierte SecurityDescriptor ohne Neustart von Windows wirksam wird und wird diesen nun prüfen können:

PS C:\> Restart-Service -Name Server -Force
PS C:\> Get-SmbShareAccess -Name "mySecurityDescriptor"

Name                 ScopeName AccountName                        AccessControlType AccessRight
----                 --------- -----------                        ----------------- -----------
mySecurityDescriptor *         VORDEFINIERT\Administratoren       Allow             Custom
mySecurityDescriptor *         *S-1-5-32-549                      Allow             Custom
mySecurityDescriptor *         VORDEFINIERT\Sicherungs-Operatoren Allow             Custom
mySecurityDescriptor *         NT-AUTORITÄT\INTERAKTIV            Allow             Custom
mySecurityDescriptor *         NT-AUTORITÄT\DIENST                Allow             Custom
mySecurityDescriptor *         NT-AUTORITÄT\BATCH                 Allow             Custom

Administratoren, Sicherungs-Operatoren und INTERAKTIV sind jene Berechtigungen, die wir erwartet haben.

Aber warum werden nun noch weitere Berechtigungen für DIENST, BATCH und *S-1-5-32-549 angezeigt?

Bei *S-1-5-32-549 handelt es sich um die Well-Known-SID für Server-Operatoren, die gibt es auf einem Win10/Win11-Client-OS nicht.
Dass DIENST und BATCH aber bislang nicht angezeigt wurde, ist doch irritierend.

Long-Story-Short: Wenn man mittels Get-SmbShareAccess ermittelt, wie die Berechtigungen für die Administrativen Shares C$, ADMIN$, … aussehen, dann erhält man stets nur eine statisch hinterlegte (technisch falsche!) Antwort, die immer gleich aussieht und sogar englisch-sprachige Identitäten angibt, obwohl wir uns auf einem deutschsprachigen System befinden!

Tatsächlich wirksam ist allerdings der in SrvsvcShareAdminConnect hinterlegte Security Descriptor, auch wenn Get-SmbShareAccess etwas anderes anzeigt.

Es macht also dennoch Sinn diesen nun anzupassen, was wie folgt funktioniert:

PS C:\> Revoke-SmbShareAccess -Name mySecurityDescriptor -AccountName "NT-AUTORITÄT\INTERAKTIV" -Force

Name                 ScopeName AccountName                        AccessControlType AccessRight
----                 --------- -----------                        ----------------- -----------
mySecurityDescriptor *         VORDEFINIERT\Administratoren       Allow             Custom
mySecurityDescriptor *         *S-1-5-32-549                      Allow             Custom
mySecurityDescriptor *         VORDEFINIERT\Sicherungs-Operatoren Allow             Custom
mySecurityDescriptor *         NT-AUTORITÄT\DIENST                Allow             Custom
mySecurityDescriptor *         NT-AUTORITÄT\BATCH                 Allow             Custom


PS C:\> Revoke-SmbShareAccess -Name mySecurityDescriptor -AccountName "*S-1-5-32-549" -Force

Name                 ScopeName AccountName                        AccessControlType AccessRight
----                 --------- -----------                        ----------------- -----------
mySecurityDescriptor *         VORDEFINIERT\Administratoren       Allow             Custom
mySecurityDescriptor *         VORDEFINIERT\Sicherungs-Operatoren Allow             Custom
mySecurityDescriptor *         NT-AUTORITÄT\DIENST                Allow             Custom
mySecurityDescriptor *         NT-AUTORITÄT\BATCH                 Allow             Custom

Diesen so modifizierten Security-Descriptor nun als DefaultSecurity\SrvsvcShareAdminConnect hinterlegen:

PS C:\> Rename-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\DefaultSecurity -Name "SrvsvcShareAdminConnect" -NewName "SrvsvcShareAdminConnect.OriginalBackup"
PS C:\> Copy-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares\Security -Name "mySecurityDescriptor" -Destination HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\DefaultSecurity
PS C:\> Rename-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\DefaultSecurity -Name "mySecurityDescriptor" -NewName "SrvsvcShareAdminConnect"

Wir prüfen nochmals, ob der nun hinterlegte DefaultSecurity\SrvsvcShareAdminConnect SecurityDescriptor wie erwartet aussieht:

PS C:\> $key = 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\DefaultSecurity'
PS C:\> $value = 'SrvsvcShareAdminConnect'
PS C:\> $SecurityDescriptor=(New-Object System.Security.AccessControl.RawSecurityDescriptor (Get-ItemProperty $key).$value, 0).GetSddlForm('All')
PS C:\> $SecurityDescriptorSDDL=ConvertFrom-SddlString -Sddl $SecurityDescriptor -Type FileSystemRights
PS C:\> $SecurityDescriptorSDDL.DiscretionaryAcl
NT-AUTORITÄT\BATCH: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData)
NT-AUTORITÄT\DIENST: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData)
VORDEFINIERT\Administratoren: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData)
VORDEFINIERT\Sicherungs-Operatoren: AccessAllowed (ChangePermissions, Delete, ListDirectory, ReadPermissions, TakeOwnership, WriteData)

Sieht gut aus, wir haben erfolgreich "NT-AUTORITÄT\INTERAKTIV" und den leeren Eintrag welcher auf *S-1-5-32-549 = Server-Operatoren zurückzuführen war entfernt.

Den zu Behelfs-Zwecken angelegten Share "mySecurityDescriptor" können wir nun löschen und das Server-Service neu starten, damit der Security-Descriptor wirksam wird:

PS C:\> Remove-SmbShare -Name "mySecurityDescriptor" -Force
PS C:\> Restart-Service -Name Server -Force

Der geänderte Security-Descriptor spiegelt sich wie bereits erläutert NICHT in der Ausgabe von Get-SmbShareAccess wieder, das System gibt hier einfach hardcoded hinterlegte, englisch-sprachige Einträge wieder die faktisch nicht wirksam sind:

PS C:\> Get-SmbShare

Name   ScopeName Path       Description
----   --------- ----       -----------
ADMIN$ *         C:\WINDOWS Remoteverwaltung
C$     *         C:\        Standardfreigabe
IPC$   *                    Remote-IPC


PS C:\> Get-SmbShareAccess -Name "C$"

Name ScopeName AccountName              AccessControlType AccessRight
---- --------- -----------              ----------------- -----------
C$   *         BUILTIN\Administrators   Allow             Full
C$   *         BUILTIN\Backup Operators Allow             Full
C$   *         NT AUTHORITY\INTERACTIVE Allow             Full


PS C:\> Get-SmbShareAccess -Name "ADMIN$"

Name   ScopeName AccountName              AccessControlType AccessRight
----   --------- -----------              ----------------- -----------
ADMIN$ *         BUILTIN\Administrators   Allow             Full
ADMIN$ *         BUILTIN\Backup Operators Allow             Full
ADMIN$ *         NT AUTHORITY\INTERACTIVE Allow             Full

Ergebnis und Fazit

Es wurde gezeigt, wie der Default-Security-Descriptor angepasst werden kann.

Praktische Tests beweisen: Zugriff durch interaktive Nutzer ist nun nicht mehr möglich, Remote-Zugriff mit Administrator-Konten auf C$, ADMIN$, … funktioniert jedoch weiterhin wie gewohnt.

Hier das fertige Registry-File: LanmanServer-DefaultSecurity-Win10-Win11-modifiziert-interaktiv-entfernt.zip

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\DefaultSecurity]

;# SrvsvcShareAdminConnect.Original-Backup = der original Security-Descriptor eines Win10 v22H2 bzw. Win11 v24H2 Patch-Stand 03/2025 Systems gesichert:
;# Name                 ScopeName AccountName                        AccessControlType AccessRight
;# ----                 --------- -----------                        ----------------- -----------
;# mySecurityDescriptor *         VORDEFINIERT\Administratoren       Allow             Custom
;# mySecurityDescriptor *         *S-1-5-32-549                      Allow             Custom
;# mySecurityDescriptor *         VORDEFINIERT\Sicherungs-Operatoren Allow             Custom
;# mySecurityDescriptor *         NT-AUTORITÄT\INTERAKTIV            Allow             Custom
;# mySecurityDescriptor *         NT-AUTORITÄT\DIENST                Allow             Custom
;# mySecurityDescriptor *         NT-AUTORITÄT\BATCH                 Allow             Custom
 
"SrvsvcShareAdminConnect.Original-Backup"=hex:01,00,04,80,a0,00,00,00,ac,00,00,\
  00,00,00,00,00,14,00,00,00,02,00,8c,00,06,00,00,00,00,00,18,00,03,00,0f,00,\
  01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,00,00,18,00,03,00,0f,00,01,\
  02,00,00,00,00,00,05,20,00,00,00,25,02,00,00,00,00,18,00,03,00,0f,00,01,02,\
  00,00,00,00,00,05,20,00,00,00,27,02,00,00,00,00,14,00,03,00,0f,00,01,01,00,\
  00,00,00,00,05,04,00,00,00,00,00,14,00,03,00,0f,00,01,01,00,00,00,00,00,05,\
  06,00,00,00,00,00,14,00,03,00,0f,00,01,01,00,00,00,00,00,05,03,00,00,00,01,\
  01,00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00
  
;# Aus diesem Security-Descriptor die beiden Entitäten entfernt:
;#   *S-1-5-32-549 = Server-Operatoren
;#   NT-AUTORITÄT\INTERAKTIV
;#
;# Folgender Security-Descriptor für die Admin-Shares (C$, ADMIN$, D$, ...) resultiert daraus:
;# Name                 ScopeName AccountName                        AccessControlType AccessRight
;# ----                 --------- -----------                        ----------------- -----------
;# mySecurityDescriptor *         VORDEFINIERT\Administratoren       Allow             Custom
;# mySecurityDescriptor *         VORDEFINIERT\Sicherungs-Operatoren Allow             Custom
;# mySecurityDescriptor *         NT-AUTORITÄT\DIENST                Allow             Custom
;# mySecurityDescriptor *         NT-AUTORITÄT\BATCH                 Allow             Custom
  
"SrvsvcShareAdminConnect"=hex:01,00,04,80,74,00,00,00,80,00,00,00,00,00,00,00,\
  14,00,00,00,02,00,60,00,04,00,00,00,00,00,18,00,03,00,0f,00,01,02,00,00,00,\
  00,00,05,20,00,00,00,20,02,00,00,00,00,18,00,03,00,0f,00,01,02,00,00,00,00,\
  00,05,20,00,00,00,27,02,00,00,00,00,14,00,03,00,0f,00,01,01,00,00,00,00,00,\
  05,06,00,00,00,00,00,14,00,03,00,0f,00,01,01,00,00,00,00,00,05,03,00,00,00,\
  01,01,00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00

You May Also Like

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert