Avec Windows 8.1, Microsoft a intégré de nouveaux mécanismes de sécurité visant à protéger les secrets d’authentification, c’est-à-dire les condensats cryptographiques correspondant aux mots de passe, stockés en mémoire. Ces nouveaux mécanismes permettent donc de lutter contre les attaques de type « pass-the-hash ».
En mai dernier, Microsoft publiait un correctif permettant de mettre en place ce type de mécanisme pour les systèmes à partir de Windows 7 SP1. Le KB2871997 contient ces modifications.
On note quatre apports en terme de sécurité :
- L’administration restreinte pour CredSSP
- L’ajout du groupe « Protected users » au sein de l’Active Directory
- La suppression de secrets d’authentification stocké par le processus lsass.exe en mémoire
- L’interdiction des connexions de comptes locaux sur des machines appartenant à un Active Directory
Intéressons-nous à ces différents points.
L’administration restreinte pour CredSSP
CredSSP est majoritairement utilisé pour les connexions à distance (du type Remote Desktop Protocol). Un mode d’administration restreint a été intégré au sein de CredSSP. Il permet, une fois activé, de ne pas stocker en cache les secrets d’authentification de l’utilisateur lorsque celui-ci se connecte. Ainsi, si la machine sur laquelle l’utilisateur se connecte est compromise, le risque de compromission des secrets d’authentifications est limité.
L’ajout du groupe « Protected users » au sein de l’Active Directory
Ce nouveau groupe impose certaines restrictions en terme d’authentification aux membres qui le constitue. En effet, ces membres ne peuvent s’authentifier qu’avec Kerberos pour lequel de nouveaux mécanismes ont été implémentés. À titre d’exemple Kerberos n’utilise plus les méthodes de chiffrement faible que sont RC4 et DES. Les autres méthodes d’authentification impliquant NTLM, Digest ou encore CredSSP ne sont pas possibles. Par ailleurs, les secrets d’authentification ne sont plus enregistrés en mémoire.
La suppression de secrets d’authentification stockés par le processus lsass.exe en mémoire
Pour cela, Microsoft a limité le temps de présence de ces secrets en mémoire. LSASS fait simplement appel aux méthodes de libération mémoire ou d’écrasement de données offertes par le système d’exploitation. Aussi, Microsoft propose de désactiver le composant WDigest via une clé de registre sous Windows 7 et Windows Server 2008. Ainsi, lorsqu’un utilisateurse déconnecte, ses mots de passe en clair sont supprimés. En effet, ce composant, utilisé pour l’authentification via MD5, nécessite d’après sa RFC de stocker des mots de passe utilisateurs en clair.
Ces deux efforts permettent de limiter l’exfiltration de mots de passe via des outils d’analyse de la mémoire, tels que Mimikatz.
L’interdiction des connexions de comptes locaux sur des machines appartenant à un Active Directory
De nouveaux SID, ajoutés dans Windows 8.1, ont été introduits sur les anciennes versions de Windows :
- SID S-1-5-113 qui représente les comptes utilisateurs locaux ;
- SID S-1-5-114 qui représente les comptes utilisateurs locaux membres du groupe d’administration local d’un système.
L’ajout de ces deux SID permet de faciliter la gestion des restrictions sur les comptes locaux et empêcher une utilisation depuis le réseau. Il est désormais possible d’interdire des utilisateurs locaux d’ouvrir certains types de sessions à travers l’éditeur de stratégie locale. Par exemple, l’authentification via le protocole RDP pourra être interdite. Cela permet de limiter les scénarios d’attaques dans lesquels un attaquant rejouera les empreintes de comptes locaux pour rebondir sur un parc de machines. Il n’y a donc plus besoin de faire l’inventaire des comptes locaux, il suffit désormais de se reposer sur ce SID générique.
Ces modifications ont été présentées en détail par l’ANSSI dans ces notes CERTFR-2014-ACT-020 et CERTFR-2014-ACT-021