SMB Hardening

Server Message Block ist anfällig für NTLM-Relay-Attacken, wenn Pakete nicht signiert werden. Diese Man-In-The-Middle-Attacke kapert Authentifizierungen zwischen Clients und Servern. Mit der Authentifizierung kann man auf dem Server eine Session starten und Daten entwenden. Die SMB-Signierung ordnet jeder initiierte Session explizit dem Client zu. Somit bleibt die Kaperung der Authentifizierung zwar immer noch möglich, wird jedoch verworfen, da die Session nicht signiert ist.

In SMBv1 ist die SMB-Signierung im Standard deaktiviert. Dieses Protokoll ist veraltet, fehlerbehaftet, unsicher und sollte generell abgeschaltet werden. SMBv2 aktiviert SMB-Signierung zwar als Standardwert, nutzt es jedoch nur, wenn Server oder Client es als Voraussetzung verlangen. Dies ist in der Regel nicht der Fall.

Server
Client Benötigt Aktiviert Deaktiviert (SMBv1)
Benötigt Signiert Signiert nicht unterstützt
Aktiviert Signiert Signiert SMBv1, nicht signiert SMBv2 nicht signiert
Deaktiviert (SMBv1) nicht unterstützt nicht signiert nicht signiert

Somit ergibt sich, dass SMB-Signierung auf den Server als Voraussetzung aktiviert werden muss.

flowchart Z[Ablauf] A[SMBv1 deaktivieren] B[SMB-Signierung] C(Client) D(Server) E(optionale Aktivierung) F(erzwungene Aktivierung) Z--Schritt 1-->A Z-->B B-->C B-->D C--Schritt 2-->E D--Schritt 3-->F

Clients

Clients können über das Anmeldeskript gehandhabt werden. Über die Powershell (Adminrechte erforderlich) kann der Status wie folgt abgefragt werden:

Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

SMBv1 deaktiveren geht ebenfalls über die Powershell (Neustart erforderlich):

Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

Server

Für Server gelten die gleichen Kommandos. Im Vorfeld sollte ein Neustart eingeplant werden.

Im nächsten Schritt wird das SMB-Signing optional auf der Clientseite aktiviert. Hierzu kann eine globale Gruppenrichtlinie gesetzt werden. Die entsprechenden Richtlinien sind hier zu finden:

Computerkonfiguration       ->
 Windows-Einstellungen      -> 
  Sicherheitseinstellungen  ->
   Lokale Richtlinien       ->
    Sicherheitsoptionen
    

Alternativ können die Einstellungen auch in der Registry gesetzt werden.

Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]
"EnableSecuritySignature"=dword:00000001
"RequireSecuritySignature"=dword:00000000

Option 1: via Gruppenrichtlinie

Computerkonfiguration       ->
 Windows-Einstellungen      -> 
  Sicherheitseinstellungen  ->
   Lokale Richtlinien       ->
    Sicherheitsoptionen
 

Option 2: via Powershell

Status abrufen
Get-SmbClientConfiguration | select RequireSecuritySignature, EnableSecuritySignature
Get-SmbServerConfiguration | select RequireSecuritySignature, EnableSecuritySignature
Erzwingen aktivieren
Set-SmbClientConfiguration -EnableSecuritySignature $true
Set-SmbServerConfiguration -EnableSecuritySignature $true
Set-SmbServerConfiguration -RequireSecuritySignature $true
Set-SmbClientConfiguration -RequireSecuritySignature $true

Referenzen

https://learn.microsoft.com/de-de/troubleshoot/windows-server/networking/overview-server-message-block-signing

https://en.hackndo.com/ntlm-relay/

  • it-security/smb-hardening.txt
  • Zuletzt geändert: 2024/01/12 22:16
  • von 127.0.0.1