Je voudrais présenter ci-après une configuration PKI extrêmement dangereuse, qui n'est peut-être pas forcément connue du grand public, mais qui est probablement très courante dans les réseaux d'entreprise.
Je montre comment, en exploitant diverses circonstances malheureuses dans l'infrastructure PKI Windows, il est possible d'obtenir une augmentation des droits, allant du simple accès au réseau à la prise de contrôle totale de l'Active Directory.
Dans cet exemple, le point d'attaque initial est le service d'enregistrement des périphériques réseau (NDES).
Les étapes suivantes ne doivent jamais être effectuées dans un environnement de production. La démonstration effectuée ici est la suivante pas Il ne s'agit pas d'un guide sur la manière de pénétrer dans les systèmes informatiques, mais plutôt de mettre en évidence le risque de sécurité afin de pouvoir prendre des contre-mesures.
Le service d'enregistrement des périphériques réseau (Network Device Enrollment Service, NDES) offre la possibilité de demander des certificats auprès d'une autorité de certification pour les périphériques qui ne disposent pas d'un identifiant dans Active Directory (par exemple les périphériques réseau tels que les routeurs, les commutateurs, les imprimantes, les clients légers ou les smartphones et tablettes). Pour une description plus détaillée, voir l'article "Principes de base du service d'enregistrement des périphériques réseau (Network Device Enrollment Service, NDES)„ .
La situation de départ
Connaissez-vous TameMyCerts? TameMyCerts est un add-on pour l'autorité de certification Microsoft (Active Directory Certificate Services). Il étend la fonction de l'autorité de certification et permet de Application de la réglementationIl s'agit d'un logiciel de gestion des certificats qui permet d'automatiser l'émission de certificats en toute sécurité. TameMyCerts est unique dans l'écosystème Microsoft, a déjà fait ses preuves dans d'innombrables entreprises du monde entier et est disponible sous une licence libre. Il peut téléchargé via GitHub et être utilisé gratuitement. Une maintenance professionnelle est également proposée.
Les environs
L'entreprise attaquée exploite un service d'enregistrement de périphériques réseau (NDES). Celui-ci est configuré de manière à ce que les demandes de certificats sans mot de passe peuvent être utilisés, car, selon les exploitants du système les terminaux ne peuvent pas gérer un mot de passe challenge (ou cela leur demande trop d'efforts).
Le serveur NDES est accessible via les ports 80 et 443 (avec SSL) accessible depuis le réseau. L'URL pour la demande de certificat est :
http://{NDES-Server}/certsrv/mscep
Cette adresse peut également être consultée à l'aide d'un navigateur.
La réponse HTML présentée ne contient aucune indication sur le fait que le NDES exige ou non un mot de passe. Si l'on tente de faire une demande de certificat contre un serveur NDES qui exige un mot de passe, sans mot de passe ou avec un mot de passe erroné, le Événement n° 29 sur le serveur NDES, ce qui déclenche ou devrait déclencher une alarme.

Les certificats demandés par le NDES et délivrés par l'autorité de certification contiennent l'Extended Key Usage pour „Client Authentication“, car les terminaux effectuent ainsi une connexion au réseau ou établissent un tunnel VPN et s'authentifient à cette occasion avec le certificat.
L'autorité de certification est intégrée, selon les paramètres par défaut lors de son installation, dans le Objet NTAuthCertificates dans Active Directory a été enregistré.
Le site Les contrôleurs de domaine sont munis des certificats correspondants. pour permettre, entre autres, les connexions LDAP via SSL. Étant donné que les certificats du contrôleur de domaine correspondent aux paramètres par défaut, l'environnement est donc également adapté à la gestion des données. Inscription par carte à puce activé.
L'agresseur
L'attaquant a obtenu l'accès au réseau, par exemple en accédant physiquement à un port réseau, en se connectant via Wifi ou en infectant initialement un ordinateur interne.
Comme logiciel, il n'a besoin que d'un ordinateur ordinaire et d'un client ordinaire pour le SCEP-est utilisé. Sous Windows, cela peut être par exemple l'intégration certreq.exe ou le PSCertificateEnrollment module PowerShell, sous Linux le module sscep paquet.
L'attaque
Pour des raisons d'illustration, le module PSCertificateEnrollment PowerShell a été utilisé. Pour plus de sécurité, nous vous rappelons que cette procédure pourrait être effectuée avec n'importe quel autre client pour le protocole SCEP.
Demander un certificat
L'agresseur demande un certificat via le serveur NDES.
Il indique ici le nom principal de l'utilisateur (User Principal Name, UPN) d'un compte administratif (ici, dans l'exemple, le compte administrateur prédéfini est utilisé), étant donné que ni NDES ni l'autorité de certification sous-jacente ne procèdent à une vérification de l'identité demandée.
Get-NDESCertificate ` -PrivateKeyExportable ` -ComputerName "ndes.adcslabor.de" ` -Upn "Administrator@intra.adcslabor.de"
Peut-être que le port 80 pour la demande de certificat est limité aux adresses IP à utiliser concrètement, de sorte que la demande de certificat via HTTP n'est pas possible. Peut-être le serveur possède-t-il toutefois un certificat SSL et peut-il être atteint via le port 443 ?

Il reçoit un certificat correspondant de l'autorité de certification via le serveur NDES.

Afin de mieux dissimuler ses traces, l'attaquant pourrait également utiliser un mot de passe prétendument légitime. Subject Distinguished Name (DN) (nom distingué du sujet) qui serait affiché dans la base de données de l'autorité de certification. Le Subject Alternative Name, dans lequel se trouve l'identité du compte Active Directory, n'est pas indexé dans la base de données de l'autorité de certification.
Se connecter en tant qu'administrateur d'entreprise
L'attaquant peut maintenant se connecter au réseau en tant qu'administrateur avec ce certificat, par exemple via Importation du certificat dans une carte à puce.

Comme les contrôleurs de domaine acceptent l'utilisation de la clé étendue „Client Authentication“ pour les connexions par carte à puce (dans la configuration par défaut, les Extended Key Usages ne sont même pas validés du tout), l'inscription avec le certificat ne pose aucun problème.

L'attaquant a déjà le contrôle total de l'environnement. Le certificat utilisé pour l'inscription se trouve toutefois encore dans la base de données des autorités de certification, où il pourrait encore être découvert (même si ce n'est pas facile).
Le pirate pourrait donc maintenant se connecter directement à l'autorité de certification avec l'identité administrative. Il pourrait alors obtenir un nouveau certificat directement par Utilisation de la clé privée de l'organisme de certification.
Comme cette signature est passée par le logiciel de l'autorité de certification et que l'on a accédé directement au fournisseur de stockage de clés, ce certificat ne se trouve pas non plus dans la base de données de l'autorité de certification. De même, aucun Événement d'audit sur la délivrance d'un certificat est généré.
En fin de compte, l'attaquant pourrait encore utiliser le certificat initialement demandé via NDES. supprimer de la base de données des autorités de certification.
Dans la mesure où l'audit est activé, la suppression d'un certificat de la base de données de l'autorité de certification entraînerait la suppression du certificat. Événement n° 4896 déclencher un événement. L'attaquant pourrait également supprimer le journal d'audit de l'autorité de certification (ce qui déclencherait à nouveau un événement).
Au plus tard à partir de ce moment, l'attaquant serait en mesure de se déplacer dans le réseau de l'entreprise presque sans être remarqué.
Contre-mesures
La surface d'attaque peut être modifiée en utilisant le TameMyCerts Le module Policy de l'autorité de certification peut être réduit de manière drastique. Il permet par exemple de définir quels champs de certificat peuvent être demandés et de limiter les comptes à délivrer.
- En principe, il faut éviter de faire fonctionner un serveur NDES sans mot de passe. Il faudrait plutôt évaluer s'il n'est pas possible (en cas de doute) d'utiliser un mot de passe. au moins quotidiennement) d'utiliser des mots de passe alternatifs. Mais il ne faut pas se fier aux apparences, même avec une “protection“ par mot de passe.“ l'authentification par SCEP est encore très superficielle.
- Dans la mesure du possible, les serveurs NDES ne devraient jamais être exposés à l'ensemble du réseau. Au contraire, l'accès devrait être limité autant que possible.
- Les données utilisées par défaut par NDES Version 1 Modèles de certificats devraient être remplacés d'urgence par leurs propres (voir aussi ESC15).
- Le contenu du certificat qui peut être demandé doit être déterminé par le TameMyCerts Le module Policy doit être strictement défini et imposé sur l'autorité de certification.
- Il est judicieux de procéder régulièrement à des évaluations des certificats délivrés par les autorités de certification auxquelles un serveur NDES est connecté et de rechercher les écarts. Pour pouvoir réaliser cela, il faut toutefois que le cas général (contenus de certificats autorisés) soit déjà défini avant la mise en service du serveur NDES.
- Les autorités de certification auxquelles un serveur NDES est rattaché devraient en principe être exclues de la liste des serveurs NDES. NTAuthCertificates objet supprimé dans Active Directory.
- L'extension de certificat "Application Policies devrait être désactivé sur toutes les autorités de certification.
- Si aucune inscription par carte à puce n'est utilisée, les certificats des contrôleurs de domaine ne devraient pas non plus contenir les Extended Key Usages correspondants.
- Pour les événements de Autorité de certification et du Service d'enregistrement des périphériques réseau une surveillance des événements suspects doit être mise en place et une alerte doit être déclenchée.
Liens complémentaires :
- Changement régulier du mot de passe lorsque le service d'enregistrement des périphériques réseau (NDES) est configuré avec un mot de passe statique
- Modifier l'objet NTAuthCertificates dans Active Directory
- Configurer un modèle de certificat pour les contrôleurs de domaine
Sources externes
- Vulnerability Note VU#971035 - Le protocole SCEP (Simple Certificate Enrollment Protocol) n'authentifie pas strictement les demandes de certificat (Université Carnegie Mellon)
- Écrire des modules personnalisés (Microsoft)
- Exploiter ADCS NDES pour l'escalade des privilèges (Giulio Pierantoni)
Les commentaires sont fermés.