extraction de données authentifiantes de la mémoire windowsobjectif : étudier le stockage des...

31
HERVÉ SCHAUER CONSULTANTS HERVÉ SCHAUER CONSULTANTS Cabinet de Consultants en Sécurité Informatique depuis 1989 Cabinet de Consultants en Sécurité Informatique depuis 1989 Spécialisé sur Unix, Windows, TCP/IP et Internet Spécialisé sur Unix, Windows, TCP/IP et Internet GS Days GS Days Extraction de données Extraction de données authentifiantes de la mémoire authentifiantes de la mémoire Windows Windows Steeve Barbeau Steeve Barbeau <[email protected]> 4 avril 2013 4 avril 2013

Upload: others

Post on 03-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

HERVÉ SCHAUER CONSULTANTSHERVÉ SCHAUER CONSULTANTSCabinet de Consultants en Sécurité Informatique depuis 1989Cabinet de Consultants en Sécurité Informatique depuis 1989Spécialisé sur Unix, Windows, TCP/IP et InternetSpécialisé sur Unix, Windows, TCP/IP et Internet

GS DaysGS Days

Extraction de données Extraction de données authentifiantes de la mémoire authentifiantes de la mémoire

WindowsWindows

Steeve BarbeauSteeve Barbeau<[email protected]>

4 avril 20134 avril 2013

Page 2: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite2 / 31

Hervé Schauer Consultants

Société de conseil et d'expertise en sécurité des systèmes d'information

Depuis 1989

Indépendant

30 consultants

Domaines d'expertise

Expertise technique en sécurité : audit de sécurité, tests d'intrusion, etc.

Expertise organisationnelle : risk management, SMSI, etc.

Expertise juridique

Formation :

Securité applicative, sécurité des systèmes d'exploitation, réseau, organisation de la sécurité, etc.

Certifications des consultantsCISSP, OSCP, PCI-DSS, GIAC, ISO2700x

Page 3: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite3 / 31

Sommaire

Introduction

Algorithmes utilisés

Stockages des mots de passe

Processus d'authentification

Extraction en mémoire

Windows NT & Windows 2000

Post Windows XP

Outils réalisés

Scénario d'attaque

Recommandations

Conclusion

Page 4: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite4 / 31

Introduction

Objectif : étudier le stockage des mots de passe Windows en mémoire

Contrainte : ne pas affecter la stabilité du système

Intérêt : permettre d'acquérir des privilèges supérieurs et de rebondir sur d'autres machines

Contexte : prestations de type tests d'intrusion

Page 5: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite5 / 31

Algorithmes utilisés

Différents algorithmes de hashage utilisés par Windows

LM

DES(KGS!@#$% , password[0:7]) + DES(KGS!@#$% , password[7:14])

NTLM

MD4 (password)

MSCash

MD4(MD4(password) + Unicode(login))

MSCash2

PBKDF2(HMAC-SHA1, MSCash, login, 10240)

Page 6: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite6 / 31

Stockage des mots de passe

Comptes locaux

Stockés dans la base SAM : %windir%\System32\config\SAM

HKLM\SAM\SAM\Domains\Account\User\[RID]\V

Chiffrés avec la SYSKEY : %windir%\System32\config\SYSTEM

Techniques

Injection de code dans LSASS

Lecture du registre (base SAM)

Outils : bkhive, samdump2, pwdump7, etc.

Page 7: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite7 / 31

Stockage des mots de passe

Comptes du domaine

Stockés dans NTDS.DIT : %windir%\ntds\NTDS.DIT

Mécanisme de réplication de l'Active Directory

Volume Shadow Copie Service

Empreintes et clé (pekList) stockées dans des attributs (ATTk*)

Chiffrement RC4

Ntdsa.dll : PEKInPlaceEncryptDecryptDataWithKey()

Outil : QuarksPwDump

Page 8: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite8 / 31

Stockage des mots de passe

Identifiants en cache

Utilisés lorsque l'Active Directory est injoignable

Stockés dans HKLM/Security/Cache/NL$X

Clé LSA extraite de lsass.exe pour déchiffrer (DES) HKLM/SECURITY/Policy/Secrets/NL$KM/CurrVal

Génération de la clé RC4 : HMAC-MD5(CurrVal, NL$X.CH)

Déchiffrement des données : RC4

Outils : fgdump, module Cachedump de Metasploit

Page 9: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite9 / 31

Stockage des mots de passe

Secrets LSA

Mots de passe navigateurs, logiciels VPN, FTP, clés privées de solutions de chiffrement, etc.

Stockés dans HKLM/SECURITY/Policy/Secrets

Chiffrement DES-ECB

Session d'authentification

Empreintes et mots de passe stockés en mémoire

Techniques

Injection de code/DLL

Lecture de la mémoire

Outils : Whosthere[-alt], WCE, Mimikatz

Page 10: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite10 / 31

Processus d'authentification

Authentication Package (AP)

Bibliothèque appelée par LSASS pour valider les authentifications intéractives

Security Support Provider (SSP)

Bibliothèque implémentant des protocoles d'authentification client/serveur pour les authentifications non-intéractives

Session d'authentification

Créée lors de chaque connexion authentifiée

Différents types

Interactive (Type 2)

Network (Type 3)

Service (Type 5)

RemoteInteractive (Type 10)

Page 11: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite11 / 31

Processus d'authentification

Composants intervenant lors de l'authentification

Page 12: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite12 / 31

Processus d'authentification

Windows 2000

Msv1_0

Protocole défi-réponse LM/NTLM

Authentification réseau (ex : SMB)

Kerberos

Protocole Kerberos v5

Utilisé par défaut pour s'authentifier sur un domaine Active Directory

Schannel

Certificats SSL/TLS

Utilisé pour des services Web, accès VPN

Windows XP

Wdigest

Authentification « Digest »

Utilisé par certains sites internet (≠ authentification « Basic »)

Page 13: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite13 / 31

Processus d'authentification

Windows Vista

Tspkg

SSO pour Terminal Server

Windows 7

Pku2u

Authentification pair à pair

Windows 7 Media

Échanges de fichiers (en dehors d'un domaine)

Windows 8

LiveSSP

Authentification avec le Cloud « Live » de Microsoft

Office en ligneExchange en ligne

Page 14: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite14 / 31

Extraction en mémoire - Windows NT & Windows 2000

FindPass

Recherche du processus Winlogon.exe

Présence du module MsGina (interface graphique d'authentification)

Parcours de la mémoire de Winlogon à la recherche de

%USERNAME%

%USERDOMAIN% à l'offset 0x200 (Win NT), 0x400 (Win 2000)

Mot de passe présent à l'offset

0x400 (Win NT)

0x800 (Win 2000)

Désobfuscation du mot de passe à l'aide de RtlRunDecodeUnicodeString

Page 15: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite15 / 31

Extraction en mémoire – Post Windows XPa) Pré-requis

Nécessité de connaître

Structures internes

Liste chaînée

Structures imbriquées

Emplacement et type des différents champs

Adresses mémoire de certaines données

Emplacement de la liste des structures

Clefs de chiffrement

Vecteur d'initialisation

Fonction de déchiffrement

Page 16: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite16 / 31

Extraction en mémoire – Post Windows XPa) Pré-requis

Identifiant unique

Lien entre DLL et fichier de débogage

DBG

Antérieur à Windows XP

PDB 2.0 (NB10)

8 octets (DWORD) + 1

PDB 7.0 (RSDS)

32 octets (GUID) + 1

Structure d'un fichier PDB

Page 17: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite17 / 31

Extraction en mémoire – Post Windows XPa) Pré-requis

Tous systèmes

Lsasrv.dll!?LogonSessionList

Lsasrv.dll!?LogonSessionListCount

Lsasrv.dll!?LogonSessionCount

Wdigest.dll!?l_LogSessList

Avant Vista SP1

Lsasrv.dll!?g_Feedback

Lsasrv.dll!?g_pDESXKey

Lsasrv.dll!?LsaEncryptMemory

Depuis Vista SP1

Lsasrv.dll!?h3DesKey

Lsasrv.dll!?InitializationVector

Liste chaînée des empreintes

Nombre de listes

Vecteur d'initialisation

Vecteur d'initialisation

Clé DESX

Fonction de déchiffrement

Clé 3DES

Liste chaînée des mots de passe

Page 18: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite18 / 31

Extraction en mémoire – Post Windows XPb) Extraction des empreintes

Structures internes de Lsasrv.dll

Page 19: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite19 / 31

Extraction en mémoire – Post Windows XPc) Extraction des mots de passe

Structures internes de Wdigest.dll

Page 20: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite20 / 31

Extraction en mémoire – Post Windows XPd) Déchiffrement des données en mémoire

Avant Windows Vista SP1

Bibliothèque Lsasrv.dll

Chiffrement DESX / RC4

g_FeedBack (vecteur d'initialisation)

g_pDESXKey (clé de chiffrement)

LsaEncryptMemory (fonction de déchiffrement)

Depuis Windows Vista SP1

Cryptography Next Generation (CNG)

Bibliothèque BCrypt.dll

Chiffrement 3DES / AES

h3DesKey (clé de chiffrement)

InitializationVector (vecteur d'initialisation)

Page 21: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite21 / 31

Extraction en mémoire – Post Windows XPd) Déchiffrement des données en mémoire

Structures internes de BCrypt.dll

Page 22: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite22 / 31

Extraction en mémoire – Post Windows XPd) Déchiffrement des données en mémoire

Processus de déchiffrement avec Bcrypt

Page 23: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite23 / 31

Outils réalisésa) Findpass

Intégré à Metasploit

Sous la forme d'une extension Meterpreter (module post-exploitation)

Ecrit en C et Ruby

Uniquement compatible Windows 2000

Commande unique

Findpass

Disponible sur http://www.hsc.fr/ressources/outils/findpass/index.html.en

Page 24: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite24 / 31

Outils réalisésb) Scripts Python

dll_download.py

Parse les pages des bulletins de sécurité de Microsoft

Télécharge les correctifs

Extrait les bibliothèques de ces correctifs

dll_parser.py

Télécharge les fichiers PDB

Extrait les symboles de ces fichiers

Sauvegarde les offsets dans un fichier CSV

get_input_offset.py

Génère l'entrée nécessaire pour fournir les offsets aux commandes Meterpreter à la volée

Page 25: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite25 / 31

Outils réalisésc) Sessiondump

Intégré à Metasploit

Sous la forme d'une extension Meterpreter (module post-exploitation)

Ecrit en C et Ruby

Compatible 32 bits et 64 bits

De Windows XP/2003 à Windows 8/2012

Offsets des différentes versions des bibliothèques

metasploit-framework/data/sessiondump_lsasrv_offsets.csv

dll_version, architecture, encryptmemory, logon_session_list_addr, logon_session_list_count, feedback_addr, deskey_ptr_addr, 3deskey_ptr_addr, iv_addr

metasploit-framework/data/sessiondump_wdigest_offsets.csv

dll_version, architecture, wdigest_session_list

Page 26: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite26 / 31

Outils réalisésc) Sessiondump

Requiert les droits systèmes

Commandes

GetLsasrvVer

GetWdigestVer

SetLsasrvOffsetsFile

SetWdigestOffsetsFile

GetHashes

GetWdigestPasswords

Options de getHashes et getWdigestPasswords

« -i » : utilisation d'offsets « à la volée »

« -o » : enregistrement des données dans des fichiers

http://www.hsc.fr/ressources/outils/sessiondump/index.html.en

Page 27: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite27 / 31

Outils réalisésc) Sessiondump

Démonstration

Page 28: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite28 / 31

Scénario d'attaque

Exemple de compromission du controleur du domaine avec sessiondump

Page 29: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite29 / 31

Recommandations

Désactivation des packages d'authentification non utilisés

HKLM\System\CurrentControlSet\Control\Lsa\Security Packages

Certains sont indipensables à Windows

Kerberos

Msv1_0

Schannel

Limiter l'utilisation des comptes privilégiés

Ne pas laisser de sessions actives

Page 30: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite30 / 31

Conclusion

Empreintes et mots de passe toujours présent en mémoire

Outil très pratique en test d'intrusion

Pas d'outil spécifique à uploader

Pas d'impact sur la stabilité de la machine

Page 31: Extraction de données authentifiantes de la mémoire WindowsObjectif : étudier le stockage des mots de passe Windows en mémoire Contrainte : ne pas affecter la stabilité du système

Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite31 / 31

Merci de votre attention

Questions ?