Oups, compte Microsoft et Windows 8.1 preview (en clair)

penguin_oups

Une bonne surprise d’un point de vue sécurité

Il semblerait que Microsoft ait (enfin) compris qu’il valait mieux ne pas conserver au même endroit :

  • des données chiffrées
  • les clés de déchiffrement
  • les routines de déchiffrement

Les mécanismes de protection de LSASS sous Windows 8.1 preview n’utilisent plus la CNG en mode utilisateur (process), mais en mode noyau :

  1. lsasrv!LsaProtectMemory
  2. crypt32!CryptProtectMemory
  3. dispatch ksecdd
  4. dispatch cng
  5. cng!CngEncryptMemory

Par ces mécanismes, LSASS peut chiffrer des données en s’assurant que celles-ci ne pourront pas être déchiffrées en dehors de son propre process.
L’API CryptProtectMemory est utilisée avec le flag CRYPTPROTECTMEMORY_SAME_PROCESS.

Cette fois, les clés de chiffrement sont générées avec certaines informations disponibles seulement en mode noyau (cookie, salt, heure de création, …).
Conséquence : les données ne peuvent être utilisées que depuis le même processus.

…ce n’est pas trop tôt, ces API étaient disponibles depuis Windows XP/2003 http://msdn.microsoft.com/magazine/cc163883.aspx#S2

Limites

Ces améliorations ont le mérite de protéger des dumps mémoire ou d’attaques sur LSASS par lecture de données et de clés.
Mais si notre code est exécuté dans le processus LSASS (injection de DLL ou autre), les mêmes clés sont utilisées, et le déchiffrement reste possible.

Surprise !

Il semblerait que Microsoft se donne du mal pour améliorer des routines sensibles et historiques…. mais ne les utilise pas toujours !

Windows 8.1 preview – provider LiveSSP

windows81_livessp
oui, le mot de passe est bien en clair en mémoire…

Windows 8 (« c’était mieux avant ») – provider LiveSSP

windows80_livessp
le mot de passe était bien chiffré précédemment…

4 réflexions au sujet de « Oups, compte Microsoft et Windows 8.1 preview (en clair) »

  1. Hello Benjamin,

    Nice post as always. But please help me, my French is not good, are you saying Windows 8.1 is better or worse than 8.0 in terms of security? You point out that they have been doing some work on the LSASS vulnerability, but in your screenshots, it looks like you were successful in retrieving the password in 8.1 where you could not in 8.0.

    Anyway, did you see Aaron Margosis talk at TechEd this year? He mentioned Mimikatz in his talk. :)

    • Hi Ryan,

      I sayed Windows 8.1 includes better crypto part to protect passwords… but it seems Microsoft does not use it for LiveSSP provider.
      strange !
      In screenshot, I show « raw » memory from LSASS

      • in Windows 8.0 password is encrypted : mimikatz must do the work
      • in Windows 8.1 password is in cleartext (for LiveSSP)

      For TechEd, unfortunately no, I had not this chance. But from what I saw on the net, it seems they prefer to use WCE wich hides some DLL and copy my work ;)

  2. Hi!
    What about Protected LSA mode in WIndows 8.1 and Windows 2012 r2? If you enable this function – your tool still can get password from lsass memory?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *