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 :
lsasrv!LsaProtectMemory
crypt32!CryptProtectMemory
- dispatch
ksecdd
- dispatch
cng
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
oui, le mot de passe est bien en clair en mémoire…
Windows 8 (« c’était mieux avant ») – provider LiveSSP
le mot de passe était bien chiffré précédemment…
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
mimikatz
must do the workLiveSSP
)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 ;)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?
By default, 8.1 and 2012r2 have no password! But if you use LiveSSP or enable TS SSO, yes. Hash and Kerberos tickets are still present.
With protected mode, no it can’t… but in some way, yes, it can ;)
– https://twitter.com/gentilkiwi/status/381913850737487872