extraction de données authentifiantes de la mémoire windowsobjectif : étudier le stockage des...
TRANSCRIPT
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
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
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
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
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)
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.
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
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
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
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)
Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite11 / 31
Processus d'authentification
Composants intervenant lors de l'authentification
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 »)
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
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
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
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
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
Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite18 / 31
Extraction en mémoire – Post Windows XPb) Extraction des empreintes
Structures internes de Lsasrv.dll
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
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)
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
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
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
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
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
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
Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite27 / 31
Outils réalisésc) Sessiondump
Démonstration
Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite28 / 31
Scénario d'attaque
Exemple de compromission du controleur du domaine avec sessiondump
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
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
Copyright Hervé Schauer Consultants 2000-2012 – Reproduction interdite31 / 31
Merci de votre attention
Questions ?