AD CS Vol de Certificat
Reading time: 8 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.
Ceci est un petit résumé des chapitres sur le vol de l'excellent recherche de https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf
Que puis-je faire avec un certificat
Avant de vérifier comment voler les certificats, voici quelques informations sur la façon de trouver à quoi le certificat peut servir :
# Powershell
$CertPath = "C:\path\to\cert.pfx"
$CertPass = "P@ssw0rd"
$Cert = New-Object
System.Security.Cryptography.X509Certificates.X509Certificate2 @($CertPath, $CertPass)
$Cert.EnhancedKeyUsageList
# cmd
certutil.exe -dump -v cert.pfx
Exportation des certificats en utilisant les Crypto APIs â THEFT1
Dans une session de bureau interactive, l'extraction d'un certificat utilisateur ou machine, ainsi que de la clĂ© privĂ©e, peut ĂȘtre facilement rĂ©alisĂ©e, en particulier si la clĂ© privĂ©e est exportable. Cela peut ĂȘtre accompli en naviguant vers le certificat dans certmgr.msc
, en cliquant avec le bouton droit dessus, et en sĂ©lectionnant All Tasks â Export
pour générer un fichier .pfx protégé par mot de passe.
Pour une approche programmatique, des outils tels que le cmdlet PowerShell ExportPfxCertificate
ou des projets comme TheWoverâs CertStealer C# project sont disponibles. Ceux-ci utilisent la Microsoft CryptoAPI (CAPI) ou l'API de cryptographie : Next Generation (CNG) pour interagir avec le magasin de certificats. Ces APIs fournissent une gamme de services cryptographiques, y compris ceux nĂ©cessaires pour le stockage et l'authentification des certificats.
Cependant, si une clĂ© privĂ©e est dĂ©finie comme non-exportable, CAPI et CNG bloqueront normalement l'extraction de tels certificats. Pour contourner cette restriction, des outils comme Mimikatz peuvent ĂȘtre employĂ©s. Mimikatz offre des commandes crypto::capi
et crypto::cng
pour patcher les APIs respectives, permettant l'exportation des clés privées. Plus précisément, crypto::capi
patch le CAPI dans le processus actuel, tandis que crypto::cng
cible la mémoire de lsass.exe pour le patching.
Vol de certificat utilisateur via DPAPI â THEFT2
Plus d'infos sur DPAPI dans :
Dans Windows, les clés privées des certificats sont protégées par DPAPI. Il est crucial de reconnaßtre que les emplacements de stockage pour les clés privées utilisateur et machine sont distincts, et les structures de fichiers varient en fonction de l'API cryptographique utilisée par le systÚme d'exploitation. SharpDPAPI est un outil qui peut naviguer automatiquement dans ces différences lors du déchiffrement des blobs DPAPI.
Les certificats utilisateur sont principalement logés dans le registre sous HKEY_CURRENT_USER\SOFTWARE\Microsoft\SystemCertificates
, mais certains peuvent Ă©galement ĂȘtre trouvĂ©s dans le rĂ©pertoire %APPDATA%\Microsoft\SystemCertificates\My\Certificates
. Les clés privées correspondantes pour ces certificats sont généralement stockées dans %APPDATA%\Microsoft\Crypto\RSA\User SID\
pour les clés CAPI et %APPDATA%\Microsoft\Crypto\Keys\
pour les clés CNG.
Pour extraire un certificat et sa clé privée associée, le processus implique :
- Sélectionner le certificat cible dans le magasin de l'utilisateur et récupérer son nom de magasin de clés.
- Localiser la masterkey DPAPI requise pour déchiffrer la clé privée correspondante.
- Déchiffrer la clé privée en utilisant la masterkey DPAPI en clair.
Pour acquĂ©rir la masterkey DPAPI en clair, les approches suivantes peuvent ĂȘtre utilisĂ©es :
# With mimikatz, when running in the user's context
dpapi::masterkey /in:"C:\PATH\TO\KEY" /rpc
# With mimikatz, if the user's password is known
dpapi::masterkey /in:"C:\PATH\TO\KEY" /sid:accountSid /password:PASS
Pour simplifier le déchiffrement des fichiers masterkey et des fichiers de clé privée, la commande certificates
de SharpDPAPI s'avĂšre utile. Elle accepte /pvk
, /mkfile
, /password
ou {GUID}:KEY
comme arguments pour déchiffrer les clés privées et les certificats associés, générant ensuite un fichier .pem
.
# Decrypting using SharpDPAPI
SharpDPAPI.exe certificates /mkfile:C:\temp\mkeys.txt
# Converting .pem to .pfx
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
Vol de certificats de machine via DPAPI â THEFT3
Les certificats de machine stockés par Windows dans le registre à HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates
et les clés privées associées situées dans %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\MachineKeys
(pour CAPI) et %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\Keys
(pour CNG) sont chiffrĂ©s Ă l'aide des clĂ©s maĂźtresses DPAPI de la machine. Ces clĂ©s ne peuvent pas ĂȘtre dĂ©chiffrĂ©es avec la clĂ© de sauvegarde DPAPI du domaine ; au lieu de cela, le secret LSA DPAPI_SYSTEM, auquel seul l'utilisateur SYSTEM peut accĂ©der, est requis.
Le dĂ©chiffrement manuel peut ĂȘtre rĂ©alisĂ© en exĂ©cutant la commande lsadump::secrets
dans Mimikatz pour extraire le secret LSA DPAPI_SYSTEM, puis en utilisant cette clé pour déchiffrer les clés maßtresses de la machine. Alternativement, la commande crypto::certificates /export /systemstore:LOCAL_MACHINE
de Mimikatz peut ĂȘtre utilisĂ©e aprĂšs avoir patchĂ© CAPI/CNG comme dĂ©crit prĂ©cĂ©demment.
SharpDPAPI offre une approche plus automatisée avec sa commande de certificats. Lorsque le drapeau /machine
est utilisé avec des permissions élevées, il s'élÚve à SYSTEM, extrait le secret LSA DPAPI_SYSTEM, l'utilise pour déchiffrer les clés maßtresses DPAPI de la machine, puis utilise ces clés en texte clair comme table de recherche pour déchiffrer toutes les clés privées de certificats de machine.
Recherche de fichiers de certificats â THEFT4
Les certificats se trouvent parfois directement dans le systÚme de fichiers, comme dans des partages de fichiers ou le dossier Téléchargements. Les types de fichiers de certificats les plus couramment rencontrés ciblant les environnements Windows sont les fichiers .pfx
et .p12
. Bien que moins fréquemment, des fichiers avec les extensions .pkcs12
et .pem
apparaissent également. D'autres extensions de fichiers liées aux certificats notables incluent :
.key
pour les clés privées,.crt
/.cer
pour les certificats uniquement,.csr
pour les demandes de signature de certificat, qui ne contiennent pas de certificats ni de clés privées,.jks
/.keystore
/.keys
pour les Java Keystores, qui peuvent contenir des certificats ainsi que des clés privées utilisées par des applications Java.
Ces fichiers peuvent ĂȘtre recherchĂ©s Ă l'aide de PowerShell ou de l'invite de commande en cherchant les extensions mentionnĂ©es.
Dans les cas oĂč un fichier de certificat PKCS#12 est trouvĂ© et qu'il est protĂ©gĂ© par un mot de passe, l'extraction d'un hachage est possible grĂące Ă l'utilisation de pfx2john.py
, disponible sur fossies.org. Par la suite, JohnTheRipper peut ĂȘtre utilisĂ© pour tenter de cracker le mot de passe.
# Example command to search for certificate files in PowerShell
Get-ChildItem -Recurse -Path C:\Users\ -Include *.pfx, *.p12, *.pkcs12, *.pem, *.key, *.crt, *.cer, *.csr, *.jks, *.keystore, *.keys
# Example command to use pfx2john.py for extracting a hash from a PKCS#12 file
pfx2john.py certificate.pfx > hash.txt
# Command to crack the hash with JohnTheRipper
john --wordlist=passwords.txt hash.txt
NTLM Credential Theft via PKINIT â THEFT5
Le contenu donné explique une méthode pour le vol de crédentiels NTLM via PKINIT, spécifiquement à travers la méthode de vol étiquetée comme THEFT5. Voici une réexplication à la voix passive, avec le contenu anonymisé et résumé lorsque cela est applicable :
Pour soutenir l'authentification NTLM [MS-NLMP] pour les applications qui ne facilitent pas l'authentification Kerberos, le KDC est conçu pour renvoyer la fonction unidirectionnelle NTLM (OWF) de l'utilisateur dans le certificat d'attribut de privilÚge (PAC), spécifiquement dans le tampon PAC_CREDENTIAL_INFO
, lorsque PKCA est utilisé. Par conséquent, si un compte s'authentifie et obtient un Ticket-Granting Ticket (TGT) via PKINIT, un mécanisme est intrinsÚquement fourni qui permet à l'hÎte actuel d'extraire le hachage NTLM du TGT pour maintenir les protocoles d'authentification hérités. Ce processus implique le déchiffrement de la structure PAC_CREDENTIAL_DATA
, qui est essentiellement une représentation NDR sérialisée du texte en clair NTLM.
L'utilitaire Kekeo, accessible à https://github.com/gentilkiwi/kekeo, est mentionné comme capable de demander un TGT contenant ces données spécifiques, facilitant ainsi la récupération du NTLM de l'utilisateur. La commande utilisée à cet effet est la suivante :
tgt::pac /caname:generic-DC-CA /subject:genericUser /castore:current_user /domain:domain.local
De plus, il est notĂ© que Kekeo peut traiter des certificats protĂ©gĂ©s par carte Ă puce, Ă©tant donnĂ© que le code PIN peut ĂȘtre rĂ©cupĂ©rĂ©, avec rĂ©fĂ©rence Ă https://github.com/CCob/PinSwipe. La mĂȘme capacitĂ© est indiquĂ©e comme Ă©tant prise en charge par Rubeus, disponible Ă https://github.com/GhostPack/Rubeus.
Cette explication encapsule le processus et les outils impliqués dans le vol d'identifiants NTLM via PKINIT, en se concentrant sur la récupération des hachages NTLM à travers le TGT obtenu en utilisant PKINIT, et les utilitaires qui facilitent ce processus.
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.