NTLM
NTLM
Informations de base
Dans les environnements où Windows XP et Server 2003 sont en fonction, les hachages LM (Lan Manager) sont utilisés, bien qu'il soit largement reconnu qu'ils peuvent être facilement compromis. Un hachage LM particulier, AAD3B435B51404EEAAD3B435B51404EE
, indique un scénario où LM n'est pas utilisé, représentant le hachage pour une chaîne vide.
Par défaut, le protocole d'authentification Kerberos est la méthode principale utilisée. NTLM (NT LAN Manager) intervient dans des circonstances spécifiques : absence d'Active Directory, inexistence du domaine, dysfonctionnement de Kerberos en raison d'une configuration incorrecte, ou lorsque des connexions sont tentées en utilisant une adresse IP plutôt qu'un nom d'hôte valide.
La présence de l'en-tête "NTLMSSP" dans les paquets réseau signale un processus d'authentification NTLM.
Le support des protocoles d'authentification - LM, NTLMv1 et NTLMv2 - est facilité par une DLL spécifique située à %windir%\Windows\System32\msv1\_0.dll
.
Points clés:
Les hachages LM sont vulnérables et un hachage LM vide (
AAD3B435B51404EEAAD3B435B51404EE
) signifie qu'il n'est pas utilisé.Kerberos est la méthode d'authentification par défaut, avec NTLM utilisé uniquement dans certaines conditions.
Les paquets d'authentification NTLM sont identifiables par l'en-tête "NTLMSSP".
Les protocoles LM, NTLMv1 et NTLMv2 sont pris en charge par le fichier système
msv1\_0.dll
.
LM, NTLMv1 et NTLMv2
Vous pouvez vérifier et configurer quel protocole sera utilisé :
GUI
Exécutez secpol.msc -> Stratégies locales -> Options de sécurité -> Authentification LAN Manager : Niveau d'authentification. Il y a 6 niveaux (de 0 à 5).
Registre
Cela définira le niveau 5:
Valeurs possibles :
Schéma d'authentification de base NTLM du domaine
L'utilisateur introduit ses informations d'identification
La machine cliente envoie une demande d'authentification en envoyant le nom de domaine et le nom d'utilisateur
Le serveur envoie le défi
Le client chiffre le défi en utilisant le hachage du mot de passe comme clé et l'envoie en réponse
Le serveur envoie au contrôleur de domaine le nom de domaine, le nom d'utilisateur, le défi et la réponse. Si aucun annuaire Active Directory n'est configuré ou si le nom de domaine est le nom du serveur, les informations d'identification sont vérifiées localement.
Le contrôleur de domaine vérifie si tout est correct et envoie les informations au serveur
Le serveur et le contrôleur de domaine peuvent créer un canal sécurisé via le serveur Netlogon car le contrôleur de domaine connaît le mot de passe du serveur (il est à l'intérieur de la base de données NTDS.DIT).
Schéma d'authentification NTLM local
L'authentification est similaire à celle mentionnée précédemment mais le serveur connaît le hachage de l'utilisateur qui tente de s'authentifier dans le fichier SAM. Ainsi, au lieu de demander au contrôleur de domaine, le serveur vérifiera lui-même si l'utilisateur peut s'authentifier.
Défi NTLMv1
La longueur du défi est de 8 octets et la réponse fait 24 octets de long.
Le hachage NT (16 octets) est divisé en 3 parties de 7 octets chacune (7B + 7B + (2B+0x00*5)): la dernière partie est remplie de zéros. Ensuite, le défi est chiffré séparément avec chaque partie et les octets chiffrés résultants sont assemblés. Total : 8B + 8B + 8B = 24 octets.
Problèmes :
Manque de randomisation
Les 3 parties peuvent être attaquées séparément pour trouver le hachage NT
DES est crackable
La 3ème clé est toujours composée de 5 zéros.
Avec le même défi, la réponse sera la même. Ainsi, vous pouvez donner comme défi à la victime la chaîne "1122334455667788" et attaquer la réponse en utilisant des tables arc-en-ciel précalculées.
Attaque NTLMv1
De nos jours, il est de moins en moins courant de trouver des environnements avec une délégation non contrainte configurée, mais cela ne signifie pas que vous ne pouvez pas abuser d'un service de spouleur d'impression configuré.
Vous pourriez abuser de certaines informations d'identification/sessions que vous avez déjà dans l'AD pour demander à l'imprimante de s'authentifier contre un hôte sous votre contrôle. Ensuite, en utilisant metasploit auxiliary/server/capture/smb
ou responder
, vous pouvez définir le défi d'authentification sur 1122334455667788, capturer la tentative d'authentification, et si elle a été effectuée en utilisant NTLMv1, vous pourrez la craquer.
Si vous utilisez responder
, vous pourriez essayer d'utiliser le drapeau --lm
pour tenter de régresser l'authentification.
Notez que pour cette technique, l'authentification doit être effectuée en utilisant NTLMv1 (NTLMv2 n'est pas valide).
Rappelez-vous que l'imprimante utilisera le compte d'ordinateur lors de l'authentification, et les comptes d'ordinateur utilisent des mots de passe longs et aléatoires que vous ne pourrez probablement pas craquer en utilisant des dictionnaires courants. Mais l'authentification NTLMv1 utilise DES (plus d'informations ici), donc en utilisant certains services spécialement dédiés au craquage de DES, vous pourrez la craquer (vous pourriez utiliser https://crack.sh/ par exemple).
Attaque NTLMv1 avec hashcat
NTLMv1 peut également être cassé avec l'outil NTLMv1 Multi Tool https://github.com/evilmog/ntlmv1-multi qui formate les messages NTLMv1 d'une manière qui peut être cassée avec hashcat.
La commande
NTLM Relay Attack
Introduction
In an NTLM relay attack, an attacker intercepts an authentication attempt from a victim to a server and relays it to another server to gain unauthorized access. This attack takes advantage of the NTLM authentication protocol's design weaknesses.
How it Works
The attacker intercepts an NTLM authentication request from the victim to a server.
The attacker relays the request to another server, pretending to be the victim.
The second server accepts the request, thinking it is coming from the victim.
The attacker gains unauthorized access to the second server using the victim's credentials.
Mitigation
To prevent NTLM relay attacks, consider implementing the following measures:
Enforce SMB Signing: Require SMB signing to prevent tampering with authentication requests.
Enable Extended Protection for Authentication: Helps protect against NTLM relay attacks.
Use LDAP Signing and Channel Binding: Adds an extra layer of security to LDAP communications.
Disable NTLM: Consider disabling NTLM authentication in favor of more secure protocols like Kerberos.
By implementing these measures, you can significantly reduce the risk of NTLM relay attacks on your network.
NTLM Relay Attack
Description
An NTLM relay attack is a type of attack where an attacker captures the NTLM authentication request from a victim and relays it to another server to authenticate as the victim. This attack can be used to gain unauthorized access to systems and resources.
How it works
The attacker captures the NTLM authentication request from the victim.
The attacker relays the captured request to another server.
The server processes the request, thinking it is coming from the victim.
The attacker gains unauthorized access to the server as the victim.
Mitigation
To mitigate NTLM relay attacks, it is recommended to:
Implement SMB signing to prevent relay attacks.
Use LDAP signing and channel binding.
Disable NTLM authentication if possible.
Implement strong network segmentation to limit the attacker's ability to relay requests.
By following these mitigation techniques, organizations can reduce the risk of falling victim to NTLM relay attacks.
Exécutez hashcat (la distribution est meilleure via un outil tel que hashtopolis) car cela prendra sinon plusieurs jours.
Dans ce cas, nous savons que le mot de passe est "password", donc nous allons tricher à des fins de démonstration :
Nous devons maintenant utiliser les utilitaires hashcat pour convertir les clés DES craquées en parties du hash NTLM :
Enfin la dernière partie :
NTLM Relay Attack
Overview
NTLM relay attacks are a common technique used by attackers to exploit the NTLM authentication protocol. This attack involves intercepting NTLM authentication traffic and relaying it to a target server to gain unauthorized access.
How it works
The attacker intercepts NTLM authentication traffic between a client and a server.
The attacker relays this traffic to another server, tricking it into believing the attacker is the legitimate user.
The attacker gains unauthorized access to the target server using the intercepted credentials.
Mitigation
To mitigate NTLM relay attacks, consider implementing the following measures:
Enforce SMB signing: Require SMB signing to prevent tampering with authentication traffic.
Enable Extended Protection for Authentication: Helps protect against NTLM relay attacks by requiring stronger authentication.
Disable NTLM: Consider disabling NTLM authentication in favor of more secure protocols like Kerberos.
By implementing these measures, you can significantly reduce the risk of falling victim to NTLM relay attacks.
Défi NTLMv2
La longueur du défi est de 8 octets et 2 réponses sont envoyées : l'une fait 24 octets de long et la longueur de l'autre est variable.
La première réponse est créée en chiffrant en utilisant HMAC_MD5 la chaîne composée par le client et le domaine et en utilisant comme clé le hash MD4 du hash NT. Ensuite, le résultat sera utilisé comme clé pour chiffrer en utilisant HMAC_MD5 le défi. Pour cela, un défi client de 8 octets sera ajouté. Total : 24 B.
La deuxième réponse est créée en utilisant plusieurs valeurs (un nouveau défi client, un horodatage pour éviter les attaques de rejeu...)
Si vous avez un pcap qui a capturé un processus d'authentification réussi, vous pouvez suivre ce guide pour obtenir le domaine, le nom d'utilisateur, le défi et la réponse et essayer de craquer le mot de passe : https://research.801labs.org/cracking-an-ntlmv2-hash/
Pass-the-Hash
Une fois que vous avez le hash de la victime, vous pouvez l'utiliser pour l'impersonner. Vous devez utiliser un outil qui va effectuer l'authentification NTLM en utilisant ce hash, ou vous pourriez créer une nouvelle sessionlogon et injecter ce hash à l'intérieur du LSASS, ainsi lorsque toute authentification NTLM est effectuée, ce hash sera utilisé. La dernière option est ce que fait mimikatz.
N'oubliez pas que vous pouvez également effectuer des attaques Pass-the-Hash en utilisant des comptes d'ordinateur.
Mimikatz
Doit être exécuté en tant qu'administrateur
Cela lancera un processus qui appartiendra aux utilisateurs ayant lancé mimikatz mais internement dans LSASS, les informations d'identification enregistrées sont celles à l'intérieur des paramètres de mimikatz. Ensuite, vous pouvez accéder aux ressources réseau comme si vous étiez cet utilisateur (similaire à l'astuce runas /netonly
mais vous n'avez pas besoin de connaître le mot de passe en texte clair).
Pass-the-Hash depuis linux
Vous pouvez obtenir l'exécution de code sur des machines Windows en utilisant Pass-the-Hash depuis Linux. Accédez ici pour apprendre comment le faire.
Outils compilés Windows Impacket
Vous pouvez télécharger les binaires Impacket pour Windows ici.
psexec_windows.exe
C:\AD\MyTools\psexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.my.domain.local
wmiexec.exe
wmiexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local
atexec.exe (Dans ce cas, vous devez spécifier une commande, cmd.exe et powershell.exe ne sont pas valides pour obtenir un shell interactif)
C:\AD\MyTools\atexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local 'whoami'
Il existe plusieurs autres binaires Impacket...
Invoke-TheHash
Vous pouvez obtenir les scripts PowerShell d'ici: https://github.com/Kevin-Robertson/Invoke-TheHash
Invoke-SMBExec
Invoke-WMIExec
Appeler-WMIExec
Invoke-SMBClient
Appeler-SMBClient
Invoke-SMBEnum
Appeler-SMBEnum
Invoke-TheHash
Cette fonction est un mélange de toutes les autres. Vous pouvez passer plusieurs hôtes, exclure certains et sélectionner l'option que vous souhaitez utiliser (SMBExec, WMIExec, SMBClient, SMBEnum). Si vous sélectionnez l'une quelconque des options SMBExec et WMIExec mais que vous ne fournissez aucun paramètre Commande, il se contentera de vérifier si vous avez suffisamment de permissions.
Éditeur de crédentials Windows (WCE)
Doit être exécuté en tant qu'administrateur
Cet outil fera la même chose que mimikatz (modifier la mémoire LSASS).
Exécution à distance manuelle sur Windows avec nom d'utilisateur et mot de passe
Extraction d'informations d'identification à partir d'un hôte Windows
Pour plus d'informations sur comment obtenir des informations d'identification à partir d'un hôte Windows, vous devriez lire cette page.
NTLM Relay et Responder
Consultez un guide détaillé sur la façon d'effectuer ces attaques ici:
Analyser les défis NTLM à partir d'une capture réseau
Vous pouvez utiliser https://github.com/mlgualtieri/NTLMRawUnHide
Last updated