Signature des messages SMB
Introduction
Le protocole SMB (Bloc de messages serveur), initialement conçu pour l'accès aux fichiers et aux partages, est largement utilisé comme protocole de communication dans Windows. De nombreux Named pipes (Tubes nommés) utilisent le protocole SMB, permettant notamment l'exécution de code à distance.
En utilisant le protocole SMB, un utilisateur du domaine peut s'authentifier et utiliser les services exposés par les autres serveurs et postes de travail Windows au sein du domaine.
La signature des messages SMB est une méthode cryptographique qui permet de signer les paquets réseau envoyés par le client, afin de les authentifier et d'en connaître l'origine. Cette fonctionnalité a été introduite dans Windows 2000, puis rétroportée vers certaines versions antérieures de Windows.
Par défaut, seul le Contrôleur de domaine est configuré avec la signature SMB, tandis que les postes de travail et serveurs sont configurés pour prendre en charge la signature, mais sans l'imposer.
Recommandations générales
L'activation de la signature SMB s'effectue en modifiant la valeur du registre du système d'exploitation. Cependant, il est fortement recommandé de configurer ces paramètres en utilisant les objets de stratégies de groupe (GPO) plutôt que de modifier les valeurs directement dans le registre. Les stratégies de groupe offrent une configuration centralisée et plus flexible.
Il est important de noter qu'il existe trois paramètres pour la signature SMB :
- Activé
- Désactivé
- Requis
Activer la signature SMB signifie que la machine est capable de communiquer à l'aide de la messagerie SMB signée, mais qu'elle autorise également les communications non signées. Dans cette configuration, l'ordinateur préférera utiliser la communication signée, mais pourra revenir à la version non signée si nécessaire. Cette option n'empêche pas totalement les activités malveillantes, car un attaquant pourrait forcer l'ordinateur à utiliser une communication non signée.
Le paramètre recommandé est Requis, qui oblige le système d'exploitation à communiquer uniquement via une messagerie signée.
Impacts sur mon système
Les messages SMB peuvent être utilisés par des utilisateurs malveillants de deux manières différentes :
1. Attaque de type Homme du milieu (Man-in-the-middle)
Un attaquant peut exécuter une attaque de type empoisonnement de cache ARP pour faire en sorte qu'une victime envoie une requête SMB à son ordinateur. Il redirige ensuite cette requête vers une machine Windows cible. Une fois la redirection effectuée, l'attaquant utilise l'authentification de la victime pour accéder aux ressources ou exécuter du code malveillant.
2. Détournement des mises à jour des paramètres d'une organisation (ex. : GPO)
Le protocole SMB est souvent utilisé pour envoyer des commandes ou appliquer des mises à jour, comme les GPO. Un attaquant malveillant peut intercepter ces messages et modifier les paramètres pour abaisser les niveaux de sécurité de l'organisation.
Exemple lorsque la signature SMB est désactivée :
Exemple lorsque la signature SMB est paramétrée comme "Requise" :
Méthode technique
L'activation de la signature SMB peut être réalisée à l'aide d'un GPO.
Dans l'Éditeur de gestion des stratégies de groupe, créez une nouvelle stratégie et naviguez vers :
Configuration ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Stratégies locales > Options de sécurité
Activez l'option Signer numériquement les communications (toujours) pour les clients et les serveurs :
Pour les clients :
Pour les serveurs :
Activation/Désactivation manuelle de la signature SMB (PowerShell)
Pour les serveurs :
- Pour Windows 8 et Windows Server 2012 et postérieur
- Pour Windows 7, Windows Server 2008 R2, Windows Vista et Windows Server 2008
Pour Windows 8 et Windows Server 2012 et postérieur
Windows 8 et Windows Server 2012 introduit la nouvelle commande Windows PowerShell set-SMBServerConfiguration
. La commande vous permet d’activer ou de désactiver les protocoles SMBv1, SMBv2 et SMBv3 sur le composant serveur.
Vous n’avez pas besoin de redémarrer l’ordinateur après avoir exécuté la commande Set-SMBServerConfiguration
.
Note: Lorsque vous activez ou désactivez SMBv2 dans Windows 8 ou Windows Server 2012, SMBv3 est également activé ou désactivé. Ce comportement se produit parce que ces protocoles partagent la même pile.
SMB v1
Détecter :
Get-SmbServerConfiguration | Select EnableSMB1Protocol
Pour désactiver SMBv1, exécutez la commande suivante :
Set-SmbServerConfiguration -EnableSMB1Protocol $false
Pour activer SMBv1, exécutez la commande suivante :
Set-SmbServerConfiguration -EnableSMB1Protocol $true
SMB v2/v3
Détecter :
Get-SmbServerConfiguration | Select EnableSMB2Protocol
Pour désactiver SMBv2/v3, exécutez la commande suivante :
Set-SmbServerConfiguration -EnableSMB2Protocol $false
Pour activer SMBv2/v3, exécutez la commande suivante :
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Pour Windows 7, Windows Server 2008 R2, Windows Vista et Windows Server 2008
Pour activer ou désactiver des protocoles SMB sur un serveur SMB exécutant Windows 7, Windows Server 2008 R2, Windows Vista ou Windows Server 2008, utilisez Windows PowerShell ou l’Éditeur de Registre.
Note: Cette méthode nécessite PowerShell 2.0 ou version ultérieure, Pour vérifier la version de PowerShell, exécutez la commande suivante :
Get-Host | Select-Object Version
.
SMBv1 sur le serveur SMB
Détecter :
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
Configuration par défaut = Activé (aucune valeur nommée dans le registre n'est créée), de sorte qu'aucune valeur SMB1 ne sera renvoyée.
Pour désactiver SMBv1, exécutez la commande suivante :
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 -Force
Pour activer SMBv1, exécutez la commande suivante :
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 -Force
Note: Vous devez redémarrer l’ordinateur après avoir apporté ces modifications.
SMBv2/v3 sur le serveur SMB
Détecter :
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
Pour désactiver SMBv2/v3, exécutez la commande suivante :
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -Force
Pour activer SMBv2/v3, exécutez la commande suivante :
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 -Force
Note: Vous devez redémarrer l’ordinateur après avoir apporté ces modifications.
Pour les clients :
Voici comment détecter l’état, l’activation et la désactivation des protocoles SMB sur le client SMB qui exécute Windows 10, Windows Server 2019, Windows 8.1, Windows Server 2016, Windows Server 2012 R2 et Windows Server 2012.
SMBv1 sur le client SMB
Détecter :
sc.exe qc lanmanworkstation
Ensuite, désactivez les éléments suivants :
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
Activez :
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto
SMB v2/v3 sur le client SMB
Détecter :
sc.exe qc lanmanworkstation
Ensuite, désactivez les éléments suivants :
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled
Activez :
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto
Vous devez exécuter ces commandes à partir d'une invite de commandes avec élévation de privilèges. Vous devez redémarrer l’ordinateur après avoir apporté ces modifications.
Audit de l’utilisation de SMBv1 :
Pour déterminer les clients qui tentent de se connecter à un serveur SMB avec SMBv1, vous pouvez activer l’audit sur Windows Server 2016, Windows 10 et Windows Server 2019. Vous pouvez également auditer windows 7 et Windows Server 2008 R2 si la mise à jour mensuelle de mai 2018 est installée et sur Windows 8.1 et Windows Server 2012 R2 si la mise à jour mensuelle de juillet 2017 est installée.
Détecter :
Get-SmbServerConfiguration | Select AuditSmb1Access
Activez :
Set-SmbServerConfiguration -AuditSmb1Access $true
Désactivez :
Set-SmbServerConfiguration -AuditSmb1Access $false
Lorsque l’audit SMBv1 est activé, l’événement 3000 apparaît dans le journal des événements « Microsoft-Windows-SMBServer\Audit », identifiant chaque client qui tente de se connecter à SMBv1.
Lexique
SMB
SMB (Server Message Block ) est un protocole de communication réseau utilisé pour le partage de fichiers, d'imprimantes et d'autres ressources sur un réseau local. Il facilite l'échange de données entre un client SMB et un serveur SMB. Initialement développé par Microsoft, SMB est devenu un standard pour le partage de ressources dans les environnements Windows.
Named pipes
Un named pipe, ou tube nommé, est un canal de communication unidirectionnel nommé dans le système de fichiers. Il permet à des processus distincts de s'échanger des données de manière asynchrone.
Hachage MD5
Le hachage MD5 est un algorithme de hachage cryptographique qui génère une empreinte numérique de 128 bits. Il est souvent utilisé pour vérifier l'intégrité des données ou sécuriser les mots de passe.
Hachage HMAC SHA-256
Le hachage HMAC SHA-256 (Code d'authentification de message basé sur le hachage SHA-256) combine l'algorithme de hachage SHA-256 avec une clé secrète pour produire un code d'authentification de message, garantissant l'intégrité et l'authenticité des données.
Contrôleur de domaine
Un Contrôleur de domaine est un serveur dans un environnement Windows qui gère l'authentification, l'autorisation et la gestion des comptes d'utilisateurs, des groupes et des ressources dans un domaine. Il maintient une base de données centralisée pour la sécurité et la cohérence du réseau.
Objet de stratégies de groupe (GPO)
Les GPO, ou "Group Policy Objects", sont des outils de gestion de la configuration et de la sécurité dans les environnements Windows. Ils permettent aux administrateurs de définir et appliquer des paramètres de sécurité et de configuration système de manière centralisée sur un ensemble d'ordinateurs ou d'utilisateurs.