Article inspiré des travaux: Protection contre les ransomwares avec FSRM et PowerShell (netwrix.fr); et FSRM experiant.ca GitHub – nexxai/CryptoBlocker. J’ai voulu mettre en pratique ces articles. L’outil/Script sur GitHub est excellent mais très complexe à comprendre (pour moi). J’ai donc étudié pour mettre ici une procédure de mise en place intelligible (j’aime bien maîtriser mes outils).

L’intégrité des fichiers partagés sur un serveur ne saurait se reposer seulement sur un antivirus; Bien sûr il y a les sauvegardes, mais que faire si un dossier important est crypté depuis longtemps sans qu’on s’en rende compte, et que l’historique de backup ne contient plus le dossier sain ? A en croire ce projet Github il est facile de contourner les antivirus.

Environnement de travail

Un serveur 2019 avec les fonctionnalités active directory/DNS/DHCP . Un ordinateur sous Windows 10 Pro lié au domaine (rappel). 

Serveur 2019: Installer le serveur de fichier et le gestionnaire de ressources du serveur de fichiers (FSRM)

Depuis le Gestionnaire de serveur, clic sur Gérer> Ajouter des rôles et des fonctionnalités> Installation basée sur un rôle ou une fonctionnalité> Sélectionner le serveur du pool.

Et cocher comme sur la capture les encadrés rouges (ici déjà installés). Ensuite cliquer sur suivant, etc.. en laissant tout par défaut.

Régler les notifications Email sur serveur 2019

Configurer les notifications mail sur Origami SMTP

Ce chapitre a pour but d’être averti par mail qu’un potentiel Ransomware a tenté d’accéder aux dossiers partagés du serveur.

Le problème avec les notifications mail depuis FSRM c’est que les mails sont envoyés sans aucune authentification (en tout cas ici sur un serveur 2019). Pas de SSL/TLS et d’identification. Donc votre serveur de messagerie(orange.fr, etc..) va refuser l’envoie des mails d’alerte. Si vous avez la possibilité de créer un « connecteur exchange » -Et donc que vous avez un abo payant Office entreprise- Pas de problème à priori. Mais ce n’est pas le cas de tout le monde! L’astuce ici va être d’envoyer ces mails d’alerte vers un logiciel installé sur le serveur qui n’a pas besoin d’authentification (un fake SMTP), puis de le renvoyer automatiquement en « authentifié » depuis ce logiciel vers l’adresse mail de l’admin serveur; @mail de laposte.net pour l’exemple: Un serveur mail qui ne demande pas de double authentification ou d’application fortement sécurisée comme Gmail.

Ce logiciel choisit est Origami SMTP  . Les options de « File> Settings« :

  • Port: 25 (Port d’écoute des mails envoyés par FSRM)
  • Coché: Forward message by remote SMTP server (on retransfère le mail)
  • User et Password : @Mail et mot de passe de l’expéditeur du mail
  • Adresse: Serveur SMTP utilisé pour le transfert
  • Port: 465 Port utilisé par le SMTP de laposte.net
  • Forwarding Email Adress: Clic sur icône + pour renseigner l’Email de l’admin serveur qui recevra l’alerte

 

Donc on l’aura compris: FSRM envoie un mail non authentifié en « local » sur le serveur sur le port 25, Celui-ci est capté par Origami SMTP qui le renvoie en mode sécurisé (identifié par couple Utilisateur/mot de passe et chiffré en SSL) à l’@mail de l’administrateur du serveur! Astucieux contournement des limitations.

Ce n ‘est pas tout: Il faut que Origami SMTP se lance automatiquement en cas de redémarrage du serveur: Création du service Windows depuis la ligne de commande:

				
					SC CREATE "Origami SMTP" Displayname="Origami SMTP" binpath="C:\Program Files (x86)\Origami SMTP\Origami SMTP.exe" start=auto
				
			

Puis on règle le service pour le faire exécuter dans l’environnement administrateur:

Menu démarrer Windows> Outils d’administration> Services> Double clic sur le service Origami SMTP> Onglet Connexion. On coche Ouvrir un session en tant que: Ce compte et on tape le nom d’utilisateur et mot de passe de l’administrateur du serveur:

Configurer les notifications mail sur FSRM

Je fais les réglages un peu à l’envers en ayant commencé par préparer Origami SMTP, mais je voulais insister sur cette limitation de FSRM.

Gestionnaire de serveur> Outils> Gestionnaire de ressources etc.. On configure le mail d’alerte d’abord: Clic droit sur Gestionnaire de ressource du serveur et clic sur Configurer les options> puis onglet Notifications par courriel.

  • Nom ou @IP du serveur SMTP= Adresse IP du serveur (vu qu’on envoie l’alerte mail en local sur Origami SMTP).
  • Admins destinataires par défaut= Email de l’Admin du serveur.
  • Adresse de messagerie de l’expéditeur= Il faut taper la même @mail que celle dans le champs User de Origami SMTP.  
Clic sur OK en ignorant la fenêtre d’erreur.

Créer les dossiers partagés sur le serveur 2019

Dossier Partage commun aux utilisateurs

Je créé un dossier nommé Partage sur ma partition BACKUPSRV. Ce dossier sera la racine du partage réseau sur le serveur, utilisé par les membres du domaine. Clic droit dessus> Onglet Partage> Partager avancé> Autorisations> je tape Utilisateurs du domaine avec les droits Modifier et Lecture. Puis OK

Dossier partagé "Pot de miel"

De la même façon qu’on a créé le dossier réseau Partage, on va créer un dossier partagé nommé $Honeypot. L’idée est que le PC vérolé par le ransomware est censé attaquer ce dossier en premier (vu son nommage).

Lors de l’attaque le ransomware va essayer de chiffrer le contenu: Un petit fichier texte qu’on va mettre dans ce dossier réseau. Quel que soit le fichier rajouté, modifié, supprimé dans ce dossier, le PC vérolé d’où provient l’attaque sera interdit d’accès aux partages réseau du serveur! 

Il faudra avertir les utilisateurs du réseau de ne pas l’utiliserDonc; Placez dans le dossier réseau Honeypot un fichier texte nommé NE RIEN METTRE DANS CE DOSSIER qui pourrait contenir: Chers collaborateurs, merci de ne rien mettre dans ce dossier partagé, il est là pour sécuriser le réseau!

Réglages de FSRM

On rejoint l’interface de FSRM, puis Gestion du filtrage de fichiers> Modèle de filtre de fichiers> Créer un modèle. Nom du modèle: Bloquer tous les fichiers sur Honeypot et cocher Filtrage actif. Puis clic sur le bouton Créer… et choisir Tout les fichiers en nom de groupe.

Dans Fichiers à inclure taper *.* puis Ajouter, puis OK. De retour sur la fenêtre de création de modèle, cocher Tous les fichiers . Dans l’onglet Message électronique pensez à activer l’envoie du courriel d’alerte. 

Toujours dans l’interface du modèle de filtre de fichier « Bloquer tous les fichiers sur Honeypot » aller Dans l’onglet Commande, cocher « Exécuter cette commande ou ce script » et taper

Cela va lancer PowerShell, qui va ensuite lancer la jolie commande ci-dessous qu’on va rentrer dans le champs Arguments de la commande:

				
					C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

				
			

Que fait ce script? Il identifie l’utilisateur du domaine qui a agi dans le dossier réseau $Honeypot et lui bloque l’accès à tous les dossiers partagés du serveur (pas que le dossier $Honeypot)!

				
					-ExecutionPolicy Unrestricted -NoLogo -Command "& { Get-SmbShare -Special $false | ForEach-Object { Block-SmbShareAccess -Name $_.Name -AccountName '[Source Io Owner]' -Force } }"

				
			

Reste à appliquer le filtre de fichier au dossier partagé $Honeypot. Aller dans Filtres de fichiers> Créer un filtre de fichier> Chemin d’accès du filtre de fichiers> Parcourir et pointer le dossier $Honeypot.

Laisser coché Dériver les propriétés de ce modèle etc… et choisir dans la liste déroulante Bloquer tous les fichiers sur Honeypot.

Si vous avez placé un fichier dans $Honeypot depuis un PC connecté au domaine, tous les partages réseau du serveur lui sont désormais interdits! Voici la commande pour ré-authoriser l’utilisateur.

Remplacer ACCOUNT NAME TO UNBLOCK avec le nom de l’utilisateur bloqué:

				
					 Powershell -ExecutionPolicy Unrestricted
 
 Get-SmbShare -Special $false | ForEach-Object { Unblock-SmbShareAccess -Name $_.Name -AccountName ‘ACCOUNT NAME TO UNBLOCK’ -Force }

				
			

Création d'un modèle de filtre de fichiers dans FSRM contenant les extensions et fichiers Ransomware connus

Je créé un nouveau Modèle de filtre de fichiers nommé « Bloquer les ransomwares » . Sur le même modèle que le groupe « Bloquer tous les fichiers sur Honeypot » on va:

  • Onglet Messagerie: Cocher « Envoyer un courrier etc.. »
  • Onglet Commande: Rentrer les mêmes informations que le modèle « Bloquer tous les fichiers sur Honeypot« 
Retour sur l’onglet Paramètres, cocher Filtrage actif , puis clic sur bouton Créer.. pour créer un Groupe de fichier. Là on va appeler ce groupe « Extensions et fichiers ransomware connus ». Et dans « Fichiers à inclure » renseignez l’extension d’un ransomware; Ex. *.Chuklock . Pourquoi un seul? Parce que sinon Windows server ne voudra pas créer ce groupe de fichiers; On le remplira après avec un script PowerShell.

Ensuite aller dans le menu Filtre de fichiers pour appliquer les paramètres sur le dossier réseau à protéger (ici dossier Partage créé précédemment) puis Créer un filtre de fichiers

Laisser coché Dériver les propriétés de ce modèle etc... et choisir dans la liste déroulante le modèle de filtre Bloquer les Ransomwares.

Récupérer extensions et fichiers de Ransomware pour compléter le Groupe de fichiers

A voir ici: https://fsrm.experiant.ca/api/v1/get. Oui c’est du lourd: Les données sont sérialisées, entre parenthèse les infos sont mises à jour régulièrement (contrairement à beaucoup d’autres) il suffit de regarder la date de MAJ, placée en début de « texte ».

Normalement ce listing va de pair avec l’utilisations de scripts PowerShell très élaborés, qu’on trouve ici GitHub – nexxai/CryptoBlocker . Ces scripts permettent d’automatiser: La création du groupe de fichiers filtrés, d’envoie d’Email d’alertes, de vérifier la bonne version de Windows server, PowerShell, déterminer une tache planifiée et.. j’en passe!

Je préfère maîtriser mes actions sur le serveur; Par… Précaution et parce que ce n’est pas ma philosophie de lancer un script dont je ne comprends pas la moitié! 

Détecter les faux positifs

Il se peut que certains logiciels utilisent la même extension qu’une extension de Ransomware. Donc je vais créer un fichier nommé FauxPositifs.txt dans le répertoire Mes Documents de l’administrateur.

Je tape dedans les extensions et noms de fichiers qui ne doivent pas être bloqués; Un par ligne: (Attention c’est un exemple ne rentrez pas ces valeurs, mais il faut de toute façon créer ce fichier texte pour la suite des opérations).

Voilà le script PowerShell à lancer sur le serveur. Menu Démarrer>taper PowerShell pour lancer la console, ensuite:

				
					# Téléchargement des noms de fichiers et extensions liés aux attaques Ransomware. Création de la variable $jsonStr qui contient ces donnés
$jsonStr = Invoke-WebRequest -Uri https://fsrm.experiant.ca/api/v1/get


# Conversion des données sérialisées en données séparées par des virgules. Extraction des éléments du groupe Filters seule. Classement alphabetique
$BADExtensions = @(ConvertFrom-Json $jsonStr | ForEach-Object { $_.filters }) | Sort-Object

# Récupération du contenu du fichier texte FauxPositifs qui contient les extensions de logiciels utilisés par l'entreprise et communs à certains ransomware
$Exclusions = Get-Content "C:\Users\Administrateur\Documents\FauxPositifs.txt" | ForEach-Object { $_.Trim() }

# On modifie la variable $BADExtensions pour y retirer les faux positifs
$BADExtensions = $BADExtensions | Where-Object { $Exclusions -notcontains $_ }

# On renseigne le groupe de fichier Extensions et fichiers ransomware connus du contenu de la variable $Filescreengroup dans le champs Fichiers à inclure
Get-FsrmFileGroup "Extensions et fichiers ransomware connus" | Set-FsrmFileGroup -IncludePattern $BADExtensions
				
			

Sauvegardez le script dans le répertoire Mes documents de l’administrateurnommé MAJ_Liste_Ransomware.ps1

Un idée: Pour détecter les faux positifs vous pouvez copier-coller depuis un PC du domaine les fichiers les plus représentatifs de fichiers utilisés par l’entreprise dans le dossier réseau Partage du serveur, et vérifier dans le mail d’alerte quels fichiers sont problématiques. Et ensuite mettre à jour le fichier texte d’exclusions FauxPositifs.txt

Tâche planifiée de mise à jour de la liste des Ransomwares

Menu démarrer Windows puis taper Planificateur de tâches. Une fois dans l’interface clic sur Créer une tâche:

  • Nom de tâche: Ce que vous voulez
  • Coché: Exécuter même si l’utilisateur n’est pas connecté
  • Coché: Exécuter avec les autorisations maximales
  • Onglet Déclencheur
    • Nouveau> Chaque jour
    • Cocher Activer
  • Onglet Action> Nouveau
    • Action: Démarrer un programme
    • Programme/Script: PowerShell
    • Ajouter arguments: -File « C:\Users\Administrateur\Documents\MAJ_Liste_Ransomwares.ps1 »
  • Onglet Paramètres: Cocher  Autoriser l’exécution de la tâche à la demande

Clic sur OK, renseigner le mot de passe de l’Administrateur. Si on lance manuellement la tâche, on remarque qu’elle semble ne pas s’arrêter (En Cours). C’est qu’en fait il faut Actualiser l’interface de planificateur de tâches