SMB1 Abschaltung
Aktuell sind wir bei SMB3 als Nachfolger von SMB2. Aber vielleicht nutzen einige Dienste von ihnen immer noch SMB1. Hier beschreibe ich, warum sie SMB1 endlich abschalten sollten und es schon seit Herbst 2017 nicht mehr zu Standardumfang von Windows 10 gehört. Höchste Zeit also den Zugang auch auf den Servern abzuschalten. Aber wie können Sie sicherstellen, dass danach alles weiter funktioniert?
Aus meiner Sicht ist SMB1 unsicher und sollte umgehend abgeschaltet werden.
-
Checkliste Active Directory Absicherung
Keine Liste ist komplett aber fangen Sie heute an und hören sie nie auf -
Stop using SMB1
https://techcommunity.microsoft.com/t5/storage-at-microsoft/stop-using-smb1/ba-p/425858
SMB1 ist unsicher!
Microsoft hat mit Windows 10 1709 per Default schon nicht mehr SMB1 mit installiert und seit Windows 2008/Vista unterstützen Microsoft Server und Clients das modernere und sicherere SMB2. Mittlerweile ist es aber so, dass SMB1 einige Schwächen hat, die einen Weiterbetrieb nicht mehr ratsam werden lassen. SMB1 wurde vor über 30 Jahren (Erstmalig um 1983 von IBM, Quelle https://de.wikipedia.org/wiki/Server_Message_Block ) entwickelt, als Funktion vor Sicherheit stand und viele moderne Ansätze haben es nicht in das Protokoll geschafft. Daher gibt es ja SMB2 und mittlerweile SMB3. Vielleicht erinnern Sie sich noch an "WannaCry" (https://de.wikipedia.org/wiki/WannaCry) Verwundbar waren Systeme, die noch SMB1-Verbindungen angenommen haben.
SMB1 fehlen wichtige Schutzfunktionen wie z.B.:
- Pre-authentication Integrity (SMB
3.1.1+).
https://blogs.msdn.microsoft.com/openspecification/2015/08/11/smb-3-1-1-pre-authentication-integrity-in-windows-10/
Damit werden Attacken verhindert, die die Endpunkte zu einer schlechteren SMB-Version, insbesondere SMB2 oder SMB1 ohne Verschlüsselung zwingen - Secure Dialect Negotiation (SMB 3.0,
3.02).
https://blogs.msdn.microsoft.com/openspecification/2012/06/28/smb3-secure-dialect-negotiation/
Damit werden Attacken verhindert, die die Endpunkte zu einer schlechteren SMB-Version, insbesondere SMB2 oder SMB1 ohne Verschlüsselung zwingen - Encryption (SMB 3.0+)
https://blogs.msdn.microsoft.com/openspecification/2015/09/09/smb-3-1-1-encryption-in-windows-10/
Verschlüsselung der Daten verhindern, dass jemand die Informationen mitliest. Ab SMB 3.1.1 gab es hier zudem Performance-Optimierungen - Insecure guest auth blocking (SMB 3.0+
on Windows 10+)
https://msdnshared.blob.core.windows.net/media/2016/09/2016-09-14_17-15-54.png
Weitere Schutzfunktionen, um "Man in the Middle"-Attacken zu verhindern - How to detect, enable and disable SMBv1,
SMBv2, and SMBv3 in Windows
https://docs.microsoft.com/en-us/windows-server/storage/file-server/troubleshoot/detect-enable-and-disable-smbv1-v2-v3 - Messagesigning (SMB 2.02+/2.1)
https://blogs.technet.microsoft.com/josebda/2010/12/01/the-basics-of-smb-signing-covering-both-smb1-and-smb2/
Der bisherige schwache Hash-Algorithmus MD5 wird durch HMAC SHA-256 ersetzt.
Ab SMB3 wird auf AES-CMAC gewechselt, was die Signierung der Pakete beschleunigt. - Overview of Server Message Block signing
(ab SMB2/SMB3 only)
https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/overview-server-message-block-signing
Und selbst wenn Sie diese Funktionen durch Patches alles nachrüsten, so kann mit SMB 1 ein "Man in the Middle" die Endpunkte dazu zwingen, diese Funktionen nicht zu nutzen
- US-CERT: Blocking SMB
https://www.us-cert.gov/ncas/current-activity/2017/01/16/SMB-Security-Best-Practices - Stop using SMB1
https://blogs.technet.microsoft.com/filecab/2016/09/16/stop-using-smb1/ - SMBv1 is not installed by default in
Windows 10 Fall Creators Update and Windows
Server, version 1709
https://support.microsoft.com/en-us/help/4034314/smbv1-is-not-installed-windows-10-and-windows-server-version-1709
https://aka.ms/smb1rs3
https://support.microsoft.com/en-us/help/4034314/smbv1-is-not-installed-by-default-in-windows
SMB1 ist langsam!
Neben der Sicherheit gibt es auch noch jede Menge Performance-Optimierungen mit SMB2:
- Größere Lese/Schreib-Operationen (SMB
2.0.2+)
Wer dachte schon 1986 an Gigabit und WAN-Stecken mit hohen Latenzzeiten. Größere MTU-Werte erlauben eine höhere Performance - Caching auf dem Client für Dateien und
Ordner (2.02+)
Durch die Funktion "Branch-Cache" kann der Client entsprechende Teile lokal cachen und muss nur Änderungen übertragen. Für die Applikation ist dies transparent - Beständige Dateihandles (2.02, 2.1)
Wenn die Netzwerk-Verbindung unterbrochen wurde, sind die Verweise auf die UNC-Dateien nicht mehr ungültig, sondern werden durch SMB wieder aufgebaut. - Optimiertes Locking (Client oplock
leasing model) (2.02+)
Diese Verbesserung optimiert das Locking von Dateien über langsame Netzwerke, reduziert die Datenmenge und erhöht die Skalierbarkeit der Server - Multichannel & SMB Direct (3.0+)
Version SMB3 bringt deutliche Verbesserungen bezüglich redundanten Pfaden, sehr schnellen Netzwerken und direkten Speicherzugriff. Relevant ist dies im Server Backend wie Storage Spaces, Hochverfügbarkeit, Hyper-V Hosting etc. - Directory Leasing (3.0+)
Verbesser die Reaktionszeit von Anwendungen bei Niederlassungen mit BranchCache durch weiteres Caching
Es gibt durchaus Gründe auch bei Clients und Servern auf SMB2+ zu setzen. Glücklicherweise ist SMB2 oder 3 seit Windows Vista/2008 schon der Standard. Aus Performanceüberlegungen ist es also langsam an der Zeit, zumindest die Windows 2003 Server und ältere Clients zu ersetzen.
Kritischer sind aus meiner Sicht aber die Sicherheitslücken, die nicht nur bei "SMB over Internet" sondern auch im LAN durchaus relevant sind.
SMB1,2,3 Kompatibilität
Auf der einen Seite hat Microsoft schön dokumentiert, welche Windows Version mit welcher anderen Version sich auf welche SMB-Version verständigt. Sie müssen dabei nur die Windows-Version der Endpunkte ermitteln und prüfen, welche Maximalversion angeboten wird. Beide Endpunkten einigen sich dann, zumindest wenn kein Angreifer diesen Handshake stört, auf die höchste gemeinsame Version.
Betriebssystem | SMB1 | SMB2 | SMB3 | Quelle |
---|---|---|---|---|
Windows Server 2016, Windows 10, Samba 4.3 |
optional |
2.1 |
3.1.1 |
|
Windows Server 2012R2, Windows 8.1 |
ja |
2.1 |
3.0.2 |
|
Windows Server 2012, Windows 8, Samba 4.0 |
ja |
2.1 |
3.0 |
|
Windows 2008 R2, Windows 7 |
ja |
2.1 |
nein |
|
Windows 2008, Windows Vista, Samba 3.5 |
ja |
2.0 |
nein |
|
Windows 2000, Windows 2003, Windows XP |
1.0 |
nein |
nein |
|
Windows NT 4.0/3.51 |
CIFS |
nein |
nein |
|
Synology Disk Station NAS |
1.0 |
2.0 |
3.0 |
|
QNAP NAS |
1.0 |
2.0+ |
nein? |
|
Samba Server |
EOL |
2.0 |
3.0 |
Ab Version 3.50
|
Wenn also ein Windows XP Client eine Verbindung aufbaut, dann kann das nicht besser als SMB1 werden, da SMB2 erst ab Windows Vista möglich ist. Wenn Sie aber SMB1 abschalten wollen, möchten Sie natürlich das Risiko eine Produktionsstörung vermindern. Wenn Sie höhere SMB-Versionen daher nicht "geblockt" haben, dann sollten alle Clients und Server ja SMB2 oder höher miteinander sprechen und nur die Systeme weiter SMB1 nutzen, die wirklich auch nur SMB1 können. Wenn Sie ein gut verwaltetes Netzwerk haben, dann sollte es eine Liste aller Endgeräte geben, zu denen Sie dann auch die Software und Version ermitteln können. Mit einer hoffentlich vollständigen Liste können Sie zumindest einen Großteil der bekannten Endgeräte prüfen. Eine Liste der MAC-Adressen und die Port-Zuordnung aus dem Switch hilft schon mal bei der Aufstellung der Liste.
- Windows Server 2012: Which version of
the SMB protocol (SMB 1.0, SMB 2.0, SMB 2.1
or SMB 3.0) are you using on your File
Server?
https://blogs.technet.microsoft.com/josebda/2012/06/06/windows-server-2012-which-version-of-the-smb-protocol-smb-1-0-smb-2-0-smb-2-1-or-smb-3-0-are-you-using-on-your-file-server/ - SMB1 Product Clearinghouse
https://blogs.technet.microsoft.com/filecab/2017/06/01/smb1-product-clearinghouse/
https://aka.ms/stillneedssmb1
Microsoft pflegt eine Liste von Produkten, die mit einer SMB1-Abschaltung Probleme haben könnten. Meist reicht schon ein Update - Exchange Server and SMBv1 (Exchange 2013
DAG File Share Whitness)
https://techcommunity.microsoft.com/t5/exchange-team-blog/exchange-server-and-smbv1/ba-p/1165615
Exchange nutzt für einen Fall eine Dateifreigabe: Eine Exchange DAG hat einen "File Share Witness" auf einem anderen Server zum Betrieb des Clusters. Dieser Dateiserver muss kein SMB1 unterstützen, wenn Sie Exchange 2013 und höher nutzen. Für Exchange 2010 kann das nicht garantiert werden. Es wurde einfach nicht getestet. - SMB-Versionen in Windows
https://mstechnology.wordpress.com/2015/10/06/smb-versionen-in-windows/
Schritt 1: Wer nutzt SMB1?
Allerdings wissen viele Firmen immer noch nicht, welche Dienste und Endgeräte in ihrem Netzwerk wie miteinander sprechen. Oft können Sie nicht einmal sicher sein, alle Endgeräte zu kennen. Sie können aber auf Windows Servern eine Protokollierung aktivieren, damit SMB1-Zugriffe im Eventlog erscheinen:
# SMB1 Auditing per PowerShell einschalten Set-SmbServerConfiguration -AuditSmb1Access $true
Alternativ können Sie per Gruppenrichtlinie natürlich auch den Eintrag direkt ändern
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters] "AuditSmb1Access"=dword:00000001
Die Zugriffe sind dann im Eventlog sichtbar.
Die Events gibt es aber auch noch mal bei SMBClient\Audit:
Diese Events lassen sich mit der passenden Monitoring-Software auch überwachen und melden.
Dieser Weg ist ideal, wenn Sie Server für Server die SMB1-Funktion abschalten wollen, um diese besser abzusichern.
Wenn Sie die Server identifiziert haben, können Sie in Windows 2008 oder 2012 über WMI und PowerShell auch hier eine Momentaufnahme der Verbindungen mit dem SMB-Dialekt ermitteln. Diese Daten können Sie z.B. über einige Tage immer wieder erfassen und zusammenführen.
Get-SmbSession ` | ft clientcomputername,clientUsername,dialect ` -AutoSize clientcomputername clientUsername dialect ------------------ -------------- ------- 192.168.178.62 MSXFAQ\fcarius 3.02 192.168.178.59 MSXFAQ\winxpUser 1.0
- SMB1 Abschaltung
https://docs.microsoft.com/en-us/windows-server/storage/file-server/troubleshoot/detect-enable-and-disable-smbv1-v2-v3 - Use DSC to track down machines with SMB1
installed or enabled:
https://blogs.technet.microsoft.com/ralphkyttle/2017/04/07/discover-smb1-in-your-environment-with-dscea/ - SMB1 Product Clearinghouse
https://techcommunity.microsoft.com/t5/storage-at-microsoft/smb1-product-clearinghouse/ba-p/426008 - Stop using SMB1
https://techcommunity.microsoft.com/t5/storage-at-microsoft/stop-using-smb1/ba-p/425858
Schritt 1b: SMB1 Erkennung im Netzwerk
SMB ist ein Netzwerkprotokoll und natürlich können Sie auch auf dem Kabel nach SMB-Paketen suchen und filtern. Wireshark und Co machen hier einen recht guten Job. Sie müssen allerdings die Pakete auf dem Computer selbst oder über einen TAP oder Mirror-Port die Pakete zuführen. Microsoft hat die Spezifikationen zu SMB im Jahren 2007 öffentlich gemacht
- Microsoft SMB Protocol and CIFS Protocol
Overview
https://docs.microsoft.com/en-us/windows/desktop/fileio/microsoft-smb-protocol-and-cifs-protocol-overview - Technical Documents [MS-CIFS]: Common
Internet File System (CIFS) Protocol 1
Introduction
https://msdn.microsoft.com/en-us/library/ee441901.aspx - [MS-SMB2]: Server Message Block (SMB)
Protocol Versions 2 and 3
https://msdn.microsoft.com/en-us/library/cc246482.aspx
Demnach können Sie ein SMB-Paket am String "SMB" erkennen, der bei SMB1 mit einem "0xFF" vorangestellt ist und bei SMB2/3 mit einem 0xFE beginnt.
Solange SMB1 noch aktiv ist, werden Sie beim "Negotiate" der Verbindung sehen, dass hier ein "FF" davor steht und auch die alten Dialekte angeboten werden.
-
Wireshark Capture Filter
https://wiki.wireshark.org/CaptureFilters - SMB1 – Audit Active Usage using Message
Analyzer
https://blogs.technet.microsoft.com/ralphkyttle/2017/05/13/smb1-audit-active-usage-using-message-analyzer/ - Wireshark: Determining a SMB and NTLM
version in a Windows environment
https://richardkok.wordpress.com/2011/02/03/wireshark-determining-a-smb-and-ntlm-version-in-a-windows-environment/
According to Microsoft's [MS-CIFS]
specification, the first 4 bytes of the
header for an SMB message "MUST contain the
4-byte literal string '\xFF', 'S', 'M', 'B',
with the letters represented by their
respective ASCII values in the order shown."
According to their [MS-SMB2 specification],
the first 4 bytes of the header for an SMB2
message "MUST be (in network order) 0xFE,
'S', 'M', and 'B'."
So the first byte of the message is 0xFF for
SMB and 0xFE for SMB2
Quelle:
https://osqa-ask.wireshark.org/questions/9647/can-smb-v1-vs-smb-v2-be-detected-in-the-header
Leider habe ich keinen Capture-Filter erstellen können, der nur SMB1 mitschneidet. Insofern ist es etwas gefährlich, wenn man alle Pakete auf Port 445 mitnimmt und erst bei der Anzeige filtert. Besser wäre es daher gleich die mitgeschnittenen Daten auszuwerten und nur die SMB1-Client zu melden.
So charmant der passive Ansatz eines Netzwerk-Capture ist, so ist es in vielen Netzwerken nur eingeschränkt möglich. Sie müssen müssen ja quasi jedes Paket der Analyse zuführen. Und selbst dann wissen Sie ja nie sicher, ob Sie alle Geräte gefunden haben. Es könnte aber interessant sein, mit einer passenden Analyse zu erkennen, wer noch SMB1 im P2P-Verkehr miteinander spricht. Nicht immer haben Sie als Admin alle Server unter Kontrolle. Aber auch hier ist es sicher besser z.B. den Zugang zum Netzwerk über 802.1x abzusichern und nur für Geräte zu erlauben, die eben SMB1 nicht mehr nutzen dürfen.
Schritt 2: SMB1 auf dem Server abschalten
Damit sind wir beim Punkt: "Wie schalte ich SMB1 ab". Das hängt natürlich wieder von dem eingesetzten Client ab. Bei Windows erfolgt die Konfiguration der SMB-Protokolle wieder über Registrierungsschlüssel, die wie per PowerShell, Regedit oder Gruppenrichtlinie auf Servern und Clients setzen können:
Betriebssystem | Befehle |
---|---|
Windows 10 |
Hier wird das optimale Feature "smb1protocol" einfach deinstalliert # Feature abschalten. Erfordert Neutart des Servers Disable-WindowsOptionalFeature ` -Online ` -FeatureName smb1protocol # SMB Server Konfiguration anpassen Set-SmbServerConfiguration -EnableSMB1Protocol $false |
Windows Server 2012 |
Hier ist es ein Feature # Abschalten Set-SmbServerConfiguration -EnableSMB1Protocol $false -force # Feature entfernen erfordert ggfls.Neustart Remove-WindowsFeature FS-SMB1 |
Windows Vista |
Auf älteren Systemen kann SMB1 nur deaktiviert aber nicht deinstalliert werden. Die Steuerung erfolgt über einen Registrierungsschlüssel. Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters] "SMB1"=dword:00000000 Das geht auch per PowerShell Set-ItemProperty ` -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" ` -Name SMB1 ` -Type DWORD ` -Value 0 ` –Force |
Synology |
Über die Webverwaltung können Sie die Min und Max-Version einstellen. Bei meiner DS216j war SMB1 als Minimum aber SMB2 als Maximum eingestellt. Ich habe die Change genutzt und gleich SMB2 als Minimum und SMB3 als Maximum eingestellt.
|
Ich würde die Einstellung Server für Server manuell machen und die Auswirkungen beobachten. Später sollten Sie aber diese Einstellung über eine Gruppenrichtlinie erzwingen, damit sicher alle SMB-Server kein SMB1 mehr anbieten
- How to detect, enable and disable SMBv1,
SMBv2, and SMBv3 in Windows
https://docs.microsoft.com/en-us/windows-server/storage/file-server/troubleshoot/detect-enable-and-disable-smbv1-v2-v3 - How to detect, enable and disable SMBv1,
SMBv2, and SMBv3 in Windows and Windows
Server
https://support.microsoft.com/en-gb/help/2696547/how-to-detect-enable-and-disable-smbv1-smbv2-and-smbv3-in-windows-and - Group Policy to disable SMB1
https://blogs.technet.microsoft.com/secguide/2017/06/15/disabling-smbv1-through-group-policy/ - Use DSC to track down machines with SMB1
installed or enabled:
https://blogs.technet.microsoft.com/ralphkyttle/2017/04/07/discover-smb1-in-your-environment-with-dscea/
SMB1 auf dem Client abschalten
Zur Vollständigkeit sollten Sie auch den Clients die Nutzung von SMB1 unterbinden. Zwar kommt SMB1 nicht mehr zum Einsatz, wen der Server diese Version nicht mehr anbietet, aber es kann durchaus Server geben, die sie nicht über eine Gruppenrichtlinie (z.B.: NAS, Unix) in ihrem Netzwerk haben. Auf dem Windows Client müssen Sie dazu einen Dienst aus "disabled" stellen und die Abhängigkeit austragen. Auch hier müssen sie unterscheiden
Betriebssystem | Befehle |
---|---|
Windows 10 |
Hier wird das optimale Feature "smb1protocol" einfach deinstalliert. Disable-WindowsOptionalFeature ` -Online ` -FeatureName smb1protocol |
Windows Vista |
Hier muss dein Dienst auf deaktiviert gesetzt und die Abhängigkeit beim Client-Dienst entfernt werden. sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi sc.exe config mrxsmb10 start= disabled Hinweis: Der Text "bowser" ist richtig und muss nicht "browser" lauten. |
- How to detect, enable and disable SMBv1,
SMBv2, and SMBv3 in Windows
https://docs.microsoft.com/en-us/windows-server/storage/file-server/troubleshoot/detect-enable-and-disable-smbv1-v2-v3 - Stop using SMB1
https://techcommunity.microsoft.com/t5/storage-at-microsoft/stop-using-smb1/ba-p/425858
Weitere Links
-
Kerberos RC4 Abschaltung
Wenn sie schon SMB1 abschalten, könnte auch RC4 deaktiviert werden? -
Checkliste Active Directory Absicherung
Keine Liste ist komplett aber fangen Sie heute an und hören sie nie auf - SMB1 Product Clearinghouse
https://blogs.technet.microsoft.com/filecab/2017/06/01/smb1-product-clearinghouse/
https://aka.ms/stillneedssmb1 - SMBv1 is not installed by default in
Windows 10 Fall Creators Update and Windows
Server, version 1709
https://support.microsoft.com/en-us/help/4034314/smbv1-is-not-installed-windows-10-and-windows-server-version-1709 - Detecting and remediating SMBv1
https://blogs.technet.microsoft.com/leesteve/2017/05/11/detecting-and-remediating-smbv1/ - Stop using SMB1
https://blogs.technet.microsoft.com/filecab/2016/09/16/stop-using-smb1/ - Group Policy to disable SMB1
https://blogs.technet.microsoft.com/secguide/2017/06/15/disabling-smbv1-through-group-policy/ - Zurück SMBv1 netzwerkweit deaktivieren
https://www.gruppenrichtlinien.de/artikel/smbv1-netzwerkweit-deaktivieren - Use DSC to track down machines with SMB1
installed or enabled:
https://blogs.technet.microsoft.com/ralphkyttle/2017/04/07/discover-smb1-in-your-environment-with-dscea/ - NetApp Running SMB Version 1 Impacted By
Microsoft Windows (KB5019964) For
CVE-2022-37967
https://geekmungus.co.uk/?p=3532 - Microsoft plans a Windows 10 V1803 SMBv1
fix on June 2018
https://borncity.com/win/2018/06/10/microsoft-plans-a-windows-10-v1803-smbv1-fix-on-june-2018/