Les authentifications Windows

Dans le processus d'authentification, LSASS est en charge de fournir le mécanisme de SSO "Single SignOn". Pour se faire, il charge en mémoire l'ensemble des mots de passe utilisés par l'utilisateur.

Les mots de passe sont chiffrés via une clef symétrique (AES ou 3xDES) qui est également stockée en mémoire.

L'interface SSPI fait le lien entres les applications et les fournisseurs de sécurité (SSP) dans Windows

Quelques SSP :

  • msv1_0 : Utilisé pour une authentification challenge/réponse via les protocoles LM, NTLM et NTLMv2
  • Kerberos : Utilisé lors d'une connexion réseau d’authentification au service KDC "Key Distribution Center" présent sur un contrôleur de domaine
  • wdigest : Utilisé pour une authentification web HTTP
  • livessp : Pour l'authentification au poste via un compte live (Outlook, hotmail, ..) [Apparu avec Windows 8]
  • tskpg : Apporte un nouveau mécanisme de sécurité (NLA) pour établir un canal TLS pendant l'authentification RDP [Apparu avec Vista]

Les hash microsoft

Durant les phases offensives, l'un des artefacts important est généralement l'obtention de hash microsoft. Cette acquisition permet en général d'élever ses privilèges en cassant le hash, ou pire, en le passant à la place du mot de passe (Merci la faiblesse net-NTLM)

Attention LM et NTLM sont à la fois des formats de hash et des protocoles d'authentification distant. Selon les version d'OS Microsoft, certains anciens formats avec l'age et les attaques ont été cassés

Hash LM (Lan Manager)

LM utilise une clé de hachage pour transformer un code de taille variable en un code de taille fixe. Il applique pour cela une fonction mathématique sur le mot de passe.

Le mot de passe doit contenir quatorze caractères. si il est plus court, LM ajoute des 0 pour atteindre la taille de 14 caractères. Il convertit ensuite le mot de passe en majuscules et divise celui-ci en deux parties de sept caractères (c’est le point faible de cette méthode).

Une clé DES de 56 bits est ensuite construite pour chacune des deux moitiés de 7 octets. Elles sont ensuite concaténées pour donner une clé de hachage sur 16 octets.

La faiblesse de ce procédé découle du fait que la division en deux parties nous fait utiliser un cryptage sur 56 bits pour deux mots de 7 octets en lieu et place d’un cryptage de 112 bits pour un mot de 14 octets.

Ce format de hash est obsolète et peut-être craqué en quelques secondes via une attaque par rainbow table

Désactivé par défaut (Depuis Vista & Windows Server 2008) cependant des empreintes LM peuvent toujours se retrouver en mémoire.

NTLM

NTLM utilise quand à lui les algorithmes 3DES et/ou MD4, les mots de passe peuvent aller jusqu'à 255 caractères. Il reste cassable (moins facilement que LM) mais possible en cas de mot de passe faible et d'attaque par bruteforce.

Exemple pour l'utilisateur toto

toto:1001:AAD3B435B51404EEAAD3B435B51404EE:4CCDB7041204D5488C04637BF6ADFF08:::

  • toto est le nom du compte possédant le hash
  • 1001 est l'UID du compte
  • AAD3B435B51404EEAAD3B435B51404EE est le hash LM
  • 4CCDB7041204D5488C04637BF6ADFF08 est le hash NTLM

Ou sont stockés les HASH microsoft ?

Partout ! Windows laisse trainer ses hash (et sous plusieurs format) On peut en retrouver en base de registre, sur le réseau, en mémoire et parfois même dans des fichiers textes (LoL)

Hash NTLM local

Les hash NTLM locaux sont utilisés en environnements workgroup, ils sont enregistrés dans la base SAM (une ruche de base de registre)

Elle se trouve à l'endroit suivant C:\Windows\system32\config\SAM

Pour le cas d'un annuaire ActiveDirectory, la base SAM est la base NTDS, celle qui contient tout les hash de compte

Elle se trouve à l'endroit suivant C:\Windows\NTDS\NTDS.dit

Hash  MSCacheV2

Dans un contexte de domaine hors connexion, le hash de l’utilisateur n’est pas stocké en base SAM mais dans HKLM:/SECURITY/Cache

Par défaut, le système conserve 10 Hash (Laissant un large historique en cas de compromission de poste)

Il est recommandé de réduire à 1 hash conservé

Fonctionnement des protocoles d'authentification

Pour les authentifications hors domaine il est préférable d'utiliser NTLMv2, cependant pour des raisons de compatibilité, les versions récentes de Windows acceptent toujours les protocoles antérieurs d'authentification.

Net-NTLMv1

Authentification utilisé par défaut dans Microsoft, fonctionnant sous forme de challenge/réponse. Le serveur envoi une suite de chiffre/lettre (challenge) au client qui devra le chiffrer avec son hash de mot de passe.

Dans un contexte de domaine, le serveur envoi le username, le challenge et la réponse au contrôleur de domaine qui vérifierait la correspondance.

Net-NTLMv2

Version plus sécurisé que NTLMv1, en plus d'utiliser une cryptographie plus robuste il est renforcé contre l'usurpation d'identité, le serveur doit s'authentifier auprès du client.

Lors de l'échange challenge/réponse, le client envoie deux réponses sur 8 octets au serveur. Chaque réponse contient un hachage HMAC-MD5 de 16 octets du défi serveur

1- Le client concatène le username, nom de domaine et calcule un code d'authentification de message HMAC-MD5 utilisant OWF NT comme clé, le tout est appelé OWF NTLMv2

2- Le client génère son propre challenge contenant l'horodatage et des informations sur la cibles. Le tout est concaténé avec le challenge du serveur et un autre code HMAC-MD5 utilisant NTLMv2OWF comme clé.

3- Le client calcule la réponse en se basant sur OWF NTLMv2, le challenge du serveur et le challenge généré précédemment. La réponse est appelé LM2

4- Le client envoi la réponse avec le challenge client

L'attaque Pass-The-Hash ne fonctionne pas avec le hash NTLMv2, cependant l'attaque Relay NTLM est possible (Nécessite d'entamer  au préalable une demande de connexion avec le service auquel on souhaite accéder)

Kerberos

Protocole d'authentification par défaut en domaine Microsoft (Depuis Windows 2000 SP4)

Grossièrement il permet à des utilisateurs de s’authentifier sur le réseau et d’accéder à des services de manière authentifiée en mode "ticket"

Lorsque le client veut accéder a un service aucun mot de passe n'est envoyé sur le réseau il demande un ticket puis le transmet au service pour y accéder.

  1. Authentification Service (AS)  : Le client s'authentifie au KDC (Contrôleur de domaine)
  2. Ticket-Granting Ticket (TGT) : Il demande ensuite un ticket permettant d'accéder au service
  3. Accès au service (AP) : Il communique avec le service en lui fournissant le ticket