
Gestion des vulnérabilités en entreprise sur Azure — Scanner Nessus déployé via Terraform, analyse avec informations d'identification, correction de CVE-2013-3900 avec re-vérification par scan.
Cycle de vie complet de la gestion des vulnérabilités — analyser, trouver, corriger, vérifier — exécuté sur mon environnement de laboratoire Azure Active Directory en direct à l'aide d'un scanner Nessus dédié déployé avec Terraform.
J'ai déployé une machine virtuelle scanner Ubuntu 24.04 dédiée dans mon environnement de laboratoire Azure AD existant, réalisé une analyse de référence non authentifiée et une analyse authentifiée contre un contrôleur de domaine, un serveur de fichiers et un client joint au domaine. J'ai analysé les résultats, corrigé une vulnérabilité de sévérité Élevée (CVE-2013-3900) via un renforcement de registre PowerShell, et vérifié la correction avec une nouvelle analyse. C'est le workflow complet que les programmes de gestion des vulnérabilités en entreprise exécutent en continu.
| Analyse de référence non authentifiée | Analyse authentifiée | |
|---|---|---|
| Résultats | 35 | 64 |
| Visibilité | Surface d'attaque externe uniquement — le point de vue de l'attaquant | À l'intérieur du système d'exploitation — niveaux de correctifs, configuration du registre, contrôles locaux |
| Authentification | Échec (3 hôtes) | Identifiants Windows via NTLMv2, jamais envoyés en clair |
| Durée d'analyse | 15 minutes | 23 minutes |
Cette augmentation du nombre de résultats constitue l'argument complet en faveur de l'analyse authentifiée — la vulnérabilité de sévérité Élevée CVE-2013-3900 que j'ai corrigée dans ce laboratoire est un contrôle local que l'analyse non authentifiée ne pouvait pas du tout voir.
Appliance scanner dédiée NESSUS01 sur Subnet-Serveurs avec des chemins d'analyse authentifiée vers les trois cibles Windows. Le plan de gestion accessible uniquement via tunnel SSH depuis le poste de travail administrateur — le port 8834 n'est jamais exposé publiquement.
Le scanner rejoint le VNet de laboratoire existant de ma série Enterprise Azure Infrastructure Automation series, déployé en tant que configuration Terraform indépendante avec son propre état distant.
| Hôte | Rôle | OS | IP privée |
|---|---|---|---|
| NESSUS01 | Scanner de vulnérabilités | Ubuntu 24.04 LTS | 10.0.1.8 |
| DC01 | Contrôleur de domaine (lab.local) | Windows Server 2025 | 10.0.1.5 |
| FS01 | Serveur de fichiers | Windows Server 2025 | 10.0.1.6 |
| CLIENT01 | Poste de travail joint au domaine | Windows 11 Pro | 10.0.1.7 |
Décisions de conception que j'ai prises :
data plutôt que de les dupliquer, avec un état isolé dans sa propre clé nessus-scanner.tfstate afin que le scanner puisse être créé et détruit sans toucher à l'état du laboratoire principal.ssh -L 8834:localhost:8834). L'exposition du plan de gestion est la principale raison pour laquelle les appliances scanner sont compromises.Avant de déployer quoi que ce soit, j'ai audité les règles NSG existantes — et j'ai trouvé exactement le genre de mauvaise configuration que ce laboratoire existe pour détecter : la règle RDP autorisait la source * (n'importe quelle IP sur Internet).
Audit pré-déploiement : la requête az network nsg list expose Allow-RDP-3389 ouvert à n'importe quelle source (*).
Je l'ai resserrée à mon IP publique actuelle avant de procéder :
az network nsg rule update -g RG-FileServerLab --nsg-name NSG-RDP \
-n Allow-RDP-3389 --source-address-prefixes $(curl -s ifconfig.me)
La même règle après correction — source restreinte à une seule IP administrateur.
Trouver et corriger une exposition dans votre propre environnement avant d'y pointer un scanner est le changement d'état d'esprit entre « exécuter un outil » et « faire de la sécurité ».
Cinq ressources — IP publique, NSG, NIC, association NSG et la VM Ubuntu — déployées en moins de deux minutes :
terraform apply : 5 ajoutés, 0 modifiés, 0 détruits. Les sorties incluent la commande SSH prête à l'emploi.
Je me suis ensuite connecté via SSH et effectué l'installation sans tête de Nessus Essentials 10.12.1 :
Première connexion SSH à NESSUS01 avec authentification par clé — Ubuntu 24.04 opérationnel à 10.0.1.8, prêt pour l'installation sans tête de Nessus.
Première analyse : aucune identification — c'est ce qu'un attaquant sur le segment réseau voit.
Analyse réseau de base ciblant les trois hôtes : 10.0.1.5, 10.0.1.6, 10.0.1.7.
Résultats de référence : 35 résultats sur 3 hôtes, colonne Auth affichant Échec — Nessus n'a pas pu se connecter, donc chaque résultat provient uniquement de l'observation externe.
L'analyse authentifiée est la norme d'entreprise pour la gestion interne des vulnérabilités. J'ai préparé les cibles Windows en activant le service Registre à distance et en ouvrant les groupes de règles de pare-feu requis sur le profil Domaine :
Set-Service -Name RemoteRegistry -StartupType Automatic
Start-Service RemoteRegistry
Set-NetFirewallRule -DisplayGroup "File and Printer Sharing" -Enabled True -Profile Domain
Set-NetFirewallRule -DisplayGroup "Windows Management Instrumentation (WMI)" -Enabled True -Profile Domain
Préparation de la cible sur FS01 — RemoteRegistry en cours d'exécution avec démarrage automatique, règles WMI et Partage de fichiers et d'imprimantes activées pour le profil Domaine.
J'ai configuré les identifiants Windows dans l'analyse avec les options de sécurité que les entreprises exigent : ne jamais envoyer d'identifiants en clair et NTLMv2 uniquement.
Configuration des identifiants Windows — domaine LAB, NTLMv1 désactivé, transmission d'identifiants en clair désactivée, Registre à distance activé pour l'analyse.
Résultats authentifiés : 64 résultats — une augmentation de 83 % par rapport à la référence non authentifiée sur les mêmes trois hôtes.
Résultats triés par sévérité, avec le contrôle local de validation de signature WinVerifyTrust de sévérité Élevée désormais visible — un résultat que l'analyse non authentifiée n'avait aucun moyen de détecter.
Le plugin #166555 a signalé Validation de signature WinVerifyTrust (CVE-2013-3900) sur DC01 et FS01 — score de base CVSS v3 8.8, Tenable VPR 9.0. La valeur de registre EnableCertPaddingCheck était absente, laissant les hôtes dans un état où un attaquant pouvait ajouter un contenu malveillant à un exécutable signé sans invalider sa signature Authenticode.
Analyse complète du résultat : la sortie du plugin confirme que la valeur de registre est absente sur 10.0.1.5 et 10.0.1.6, avec le chemin de correction exact documenté dans la section Solution.
Pourquoi ce résultat est important : il s'agit d'une vulnérabilité d'atténuation par configuration — aucun correctif n'existe car Microsoft a rendu la correction optionnelle. Elle était absente sur les images fraîches de Windows Server 2025 en 2026, treize ans après la publication du CVE. C'est exactement le type de problème que seules l'analyse authentifiée et la gestion de la configuration peuvent détecter.
J'ai appliqué la correction sur les hôtes affectés conformément à la section Solution du plugin — en définissant EnableCertPaddingCheck = 1 aux deux chemins de registre 64 bits et Wow6432Node — puis j'ai vérifié les deux clés avant de relancer l'analyse :
New-Item -Path "HKLM:\Software\Microsoft\Cryptography\Wintrust\Config" -Force | Out-Null
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Cryptography\Wintrust\Config" `
-Name "EnableCertPaddingCheck" -Value "1" -Type String
New-Item -Path "HKLM:\Software\Wow6432Node\Microsoft\Cryptography\Wintrust\Config" -Force | Out-Null
Set-ItemProperty -Path "HKLM:\Software\Wow6432Node\Microsoft\Cryptography\Wintrust\Config" `
-Name "EnableCertPaddingCheck" -Value "1" -Type String
Correction appliquée et vérifiée avec Get-ItemProperty — les deux chemins de registre renvoient désormais EnableCertPaddingCheck : 1.
Puis l'étape que la plupart des gens sautent — la nouvelle analyse de vérification. Vous ne fermez pas le ticket tant que le scanner n'a pas confirmé la disparition du résultat :
Analyse de vérification (Historique : 2) : le résultat de sévérité Élevée CVE-2013-3900 est résolu. La plus haute sévérité restante est Moyenne.
Analyser → corriger → vérifier. Boucle fermée.
| Compétence | Où |
|---|---|
| Cycle de vie de la gestion des vulnérabilités | De bout en bout : référence, analyse authentifiée, analyse, correction, vérification |
| Déploiement et exploitation de Nessus | Essentials 10.12.1 sur Ubuntu, configuration de politique d'analyse, analyse authentifiée |
| Architecture de scanner sécurisé | VM dédiée, plan de gestion uniquement via tunnel SSH, authentification par clé, NSG au moindre privilège |
| Infrastructure en tant que code | Terraform avec sources de données contre l'infrastructure existante, état distant isolé |
| Sécurité réseau Azure | Audit et durcissement des NSG via Azure CLI, workflow de restriction d'IP source |
| Durcissement Windows | Atténuation par registre (CVE-2013-3900), préparation du Registre à distance / WMI / pare-feu |
| Interprétation CVSS et des risques | Analyse CVSS 8.8 / VPR 9.0, comparaison de visibilité authentifié vs non authentifié |
| Administration PowerShell | Configuration de service, groupes de règles de pare-feu, correction par registre avec vérification |
La gestion des vulnérabilités est une fonction centrale dans pratiquement tous les rôles en opérations de sécurité, sécurité cloud et GRC. Ce laboratoire couvre l'ensemble du travail — pas seulement exécuter un scanner, mais architecturer son placement de manière sécurisée, préparer correctement les cibles, distinguer le signal du bruit dans les résultats, exécuter une correction et prouver qu'elle a fonctionné. La comparaison entre analyse non authentifiée et authentifiée ainsi que la nouvelle analyse de vérification sont les deux choses qui distinguent les praticiens des opérateurs d'outils.
Le livrable professionnel complet — résumé exécutif, méthodologie, analyse détaillée du résultat CVE-2013-3900, classification des risques résiduels et recommandations priorisées — est disponible en PDF :
Nessus Essentials n'inclut pas l'exportation de rapports, ce livrable a donc été rédigé indépendamment à partir des données d'analyse — ce qui constitue en soi la compétence en rédaction de rapports que la version gratuite ne fournit pas.
Ce scanner se déploie dans l'environnement construit par ma série Enterprise Azure Infrastructure Automation series :
Aucun secret n'est stocké dans ce dépôt — le scanner utilise uniquement l'authentification par clé SSH, et les identifiants d'analyse ont été saisis directement dans la console Nessus, jamais commités dans le code.