tester la sécurité de votre annuaire active directory : top 10 des menaces et des mesures de...
TRANSCRIPT
Tester la sécurité de votre annuaire
Active Directory
Guillaume MATHIEU- Architecte - Responsable Avant-Vente Metsys
Retrouvez nous sur http://www.metsys.fr/blog
Création en 2011
CA 2012 : 0,5 M€
CA 2013 : 2,1M€
CA 2014 : 5 M€
3eme société IT
en terme d’évolution, 1er SSII
[Channel News – 15/10/14]
METSYS : Fiche d’identité
46 experts Microsoft seniors
Spécialisés sur l’ensemble
des technologies
Spécialiste Azure et Office 365
© C
opyrig
ht
2014 M
ET
SY
S. T
ous d
roits r
éserv
és
La communauté Metsys
1. Comment les hackers récupèrent les mots de passe Active Directory ?
2. Comment les hackers peuvent élever les privilèges ?
3. Comment les hackers peuvent récupérer un accès SYSTEM ?
4. Comment effectuer un déni de service avec Metasploit ?
Agenda
a. Avec le fichier NTDS.DIT (démo)
b. Avec le mot de passe d’un service Windows (démo)
c. Avec une capture réseau
a. Via NTLM Pass The Hash (démo)
b. Via l’outil INCOGNITO (démo)
c. Via le SID History (démo)
Recommandation ANSII : http://www.ssi.gouv.fr/
Recommandation Microsoft : http://aka.ms/bpsad
Contexte
Les procédures pour sécuriser
un annuaire Active Directory existent
mais ne sont pas appliquées ou connues !
Mot de passe d’un compte utilisateur Active Directory :
Stocké sous forme d’une empreinte (Hash)
2 types d’empreinte :
LMHASH (14127487) : 882B5831DF88FDB77C3113B4A1A5E3A0
NTHASH (14127487) : B8895ECED52341EDFC6A078BB962CB3B
Rainbow Table : retrouver un mot de passe à partir d’un HASH
Démo1 : récupérer le mot de passe d’un utilisateur
à partir du fichier NTDS.DIT
Le LMHASH :
Attributs dBCSPwd (mot de passe) et lmPwdHistory (historique) protégés par
le système
Mot de passe < 14 caractères, pas de majuscules / minuscules
LMHASH = DES(Password[0..6], KGS!@#$%) | DES(Password[7..13],
KGS!@#$%)
Mot de passe < 8 caractères -> résultat seconde clé : 0xAAD3B435B51404EE
Rainbow Table 17 Go : retrouver tout mot passe à partir de son LMHASH
Démo1 : récupérer le mot de passe d’un utilisateur
à partir du fichier NTDS.DIT
Le NTHASH :
Attribut UnicodePwd (mot passe actuel) et ntPwdHistory (historique)
NTHASH = MD4 (Password Unicode)
Rainbow Table 5 Go : retrouver un mot de passe < 8 caractères si utilisation
mot du dictionnaire ou suite de chiffres
Démo1 : récupérer le mot de passe d’un utilisateur
à partir du fichier NTDS.DIT
Démonstration 1
Préconisation Metsys :
nombre logins / utilisateur
LMHASH
Mot de passe > 7 caractères pour les utilisateurs standards
Mot de passe > 16 caractères pour les comptes avec privilèges
Contourner les blocages humains
Démo1 : récupérer le mot de passe d’un utilisateur
à partir du fichier NTDS.DIT
LSA SECRETS : exemple avec le mot de
passe d’un compte de service
Démo2 : récupérer le mot de passe d’un service Windows
Démonstration 2
Préconisation Metsys : protéger les LSA SECRETS
Ouverture de session sur des machines non sécurisées
Compte de service = minimum de privilèges
Mots de passe sensibles ≠ coffre fort Windows
Cache des sessions sur les serveurs / machines d’administration
Utilisateur ≠ administrateur de sa station
Bloquer l’outil PSEXEC (AppLocker)
Utiliser des MSA ou des gMSA pour les services / tâches planifiées
Démo2 : récupérer le mot de passe d’un service Windows
Comment s’authentifier avec un annuaire Active Directory ?
LDAP BIND SIMPLE : transmission de mot de passe (texte clair) via le
réseau
LDAP BIND SASL (Simple Authentication and Security Layer) :
authentification avec Lan Manager, NTLM ou Kerberos
Démo3 : récupérer le mot de passe d’un compte de service
via une capture réseau
Démonstration 3
Préconisation Metsys :
Signer les données LDAP : bloque les authentifications LDAP BIND SIMPLE
sans SSL.
Générer des certificats pour les contrôleurs de domaine.
Démo3 : récupérer le mot de passe d’un compte de service
via une capture réseau
Authentification NTLM :Charlie accède au serveur FILE1. DC1 est le contrôleur du domaine. CL1 est la machine de Charlie.
Démo4 : élévation de privilège avec NTLM Pass The Hash
Charlie
CL1
FILE1 DC1
Version NTLM
(négociation…)
1 - Charlie ouvre sa session2- Charlie accède à File1
Challenge
4- CL1 chiffre ce challenge avec NTHASH Charlie et le
renvoie
3- FILE1 génère le challenge et l’envoie à CL1
Réponse
5- FILE1 envoie le logon + challenge + réponse à DC1
Challenge
Logon de
Charlie
6- DC1 génère la réponse avec le challenge et le logon de Charlie
Réponse
DC1 : OK
7- DC1 compare la réponse générée avec celle reçue par FILE18- Si les deux réponses correspondent, DC1 donne accès à FILE1
« Je suis
Charlie »
Démonstration 4 : élévation de privilège avec NTLM Pass The Hash
Comprendre l’attaque NTLM Pass the Hash :
Comportement standard du protocole NTLM (SSO)
Sur une machine distante (ouverture de session réseau)
Mot de passe complexe -> vulnérable à cette attaque !
Démonstration 4
Préconisations Metsys :
Activer NTLM V2
Désactiver NTLM ?
Protéger les NTHASH / LSA SECRETS
Démonstration 4 : élévation de privilège avec NTLM Pass The Hash
Qu’est ce qu’un SID ?
Attribut objectSid -> protégé en écriture par LSASS.EXE
Identifiant de sécurité unique généré Active Directory (maître RID)
Les permissions sont associées à un SID
Démonstration 5 : élévation de privilège avec l’outil INCOGNITO
Qu’est ce qu’un jeton d’accès (Access Token) ?
Contient les SID du compte utilisateur / groupes
Liste des privilèges (Debug Programs) de l’utilisateur
Jeton d’accès primaire : généré par Lsass.exe à l’ouverture de session
Démarrage de Notepad.exe : jeton d’accès primaire est copié / attaché au
processus Notepad
Processus nécessite permissions (NTFS) ou un privilège (Debug Programs)
-> Windows analyse jeton d’accès
Démonstration 5 : élévation de privilège avec l’outil INCOGNITO
Présentation d’INCOGNITO :
Duplique les jetons d’accès existants et les utilise pour exécuter des tâches
Nécessite les privilèges Debug Programs, Replace a process-level token,
Impersonate a client after authentication
Exécuter INCOGNITO en tant que System (PSEXEC)
Utiliser la version 2.0 d’INCOGNITO : https://labs.mwrinfosecurity.com/tools/
Démonstration 5 : élévation de privilège avec l’outil INCOGNITO
Démonstration 5
Préconisation Metsys :
Détecter INCOGNITO avec antivirus
Utilisateur ≠ administrateur station de travail
Replace a process-level token, Impersonate a client after authentication et
Debug Programs
Démonstration 5 : élévation de privilège avec l’outil INCOGNITO
Présentation du SID History :
Pour les migrations (ADMT)
L’attribut SIDHistory (tableau) est protégé contre les accès en écriture
Ajout SID History avec SIDCloner, suppression avec ADMOD.EXE
Démonstration 6 : Elévation de privilège avec le SID History
Démonstration 6
Préconisation Metsys :
SID History en fin de migration
Activer la quarantaine SID (netdom trust) en fin de migration
Démonstration 6 : Elévation de privilège avec le SID History
Démonstration 7 : accès SYSTEM au démarrage d’une machine
“If a bad guy has unrestricted
physical access to your computer,
it's not your computer anymore”
Loi n°3 de Jesper M.Johansson
Démonstration 7
Démonstration 8 : effectuer un déni de service avec Metasploit
Présentation de Metasploit :
Un exploit = permet l’élévation de privilège ou le déni de service.
Metasploit = base de donnée d’exploits.
MS012-020 crash machine via vulnérabilité service TSE / RDS
Démonstration 8
Mots de passe complexe et LMHASH
Minimum de droits (services, comptes administratifs)
Activer la signature LDAP
SID History
Utilisateur ≠ administrateur
Debug Programs, Impersonate a client after authentication, Replace a process-
level token
Chiffrer les disques
OS supporté et à jour
Synthèse des préconisations
Venez chercher votre livre sur le stand Metsys !
Stand G11