Impacket pour les Pentesters : Techniques de Changement de Mot de Passe
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Cet article explique comment les mauvaises configurations d’Active Directory peuvent être exploitées pour réinitialiser de force les mots de passe des utilisateurs avec l’outil Impacket. Il se concentre sur l’utilitaire impacket-changepasswd , qui peut tirer parti du Reset Password ACE pour permettre la prise de contrôle des comptes. La technique prend en charge plusieurs protocoles, y compris SMB-SAMR, RPC-SAMR, LDAP et Kerberos.
Enquête
Le rapport présente un scénario de laboratoire dans lequel un utilisateur se voit accorder des droits de réinitialisation de mot de passe sur un autre objet de compte. Il passe en revue plusieurs approches d’authentification, y compris les identifiants en clair, Pass-the-Hash, Pass-the-Key, et l’utilisation du cache TGT Kerberos pour manipuler les mots de passe des comptes à travers différents protocoles.
Atténuation
Les défenseurs devraient auditer régulièrement les ACLs d’Active Directory avec des outils tels que BloodHound pour identifier les droits de réinitialisation de mot de passe excessivement permissifs. L’application d’un modèle d’administration par niveaux et l’utilisation du groupe de sécurité Utilisateurs protégés peuvent réduire considérablement l’exposition. L’application de la signature LDAP et le déploiement de Credential Guard sont également recommandés.
Réponse
Si une activité suspecte est détectée, les équipes de sécurité devraient enquêter sur les IDs d’événement Windows 4723, 4724, 4738, 4771, et 5136. Les analystes doivent vérifier si la réinitialisation du mot de passe était autorisée et examiner l’environnement pour identifier tout trafic SAMR inhabituel ou des modifications dans le répertoire LDAP. Les actions immédiates doivent inclure l’audit des autorisations du compte affecté et la rotation des identifiants pour tout utilisateur administratif potentiellement compromis.
Flux d’attaque
Nous mettons encore à jour cette partie. Inscrivez-vous pour être informé
M’informerDétections
Utilisation probable d’outils de piratage Windows [Partie1] (via cmdline)
Voir
Utilisation probable d’outils de piratage Windows [Partie3] (via file_event)
Voir
Détection des manipulations non autorisées de mots de passe Active Directory [Journal des événements de sécurité de Microsoft Windows]
Voir
Exécution de simulation
Prérequis : Le contrôle pré-vol de télémétrie & Baseline doit avoir réussi.
Justification : Cette section détaille l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et la narration DOIVENT refléter directement les TTPs identifiés et viser à générer la télémétrie exacte attendue par la logique de détection. Des exemples abstraits ou non liés entraîneront des erreurs de diagnostic.
-
Narratif d’attaque & Commandes: Un adversaire a compromis avec succès un compte utilisateur avec des permissions déléguées ou a escaladé ses privilèges à un niveau d’administrateur de domaine. Pour assurer une persistance à long terme et éviter la détection lors d’une phase ultérieure de l’opération, l’attaquant décide de réinitialiser le mot de passe d’un compte de service connu. En utilisant des outils PowerShell natifs (
Set-ADAccountPasswordornet user), l’attaquant tente de modifier le mot de passe deService_SVC. Cette action est une technique classique « Living off the Land », conçue pour se fondre dans les tâches administratives de routine, mais elle déclenche des IDs spécifiques d’événements de sécurité Windows (4724/4738) que la règle de détection est prévue pour capturer. -
Script de test de régression :
# Script de simulation : Réinitialisation de mot de passe via PowerShell # Remarque : Cela doit être exécuté dans un environnement de laboratoire contrôlé avec les autorisations appropriées. $TargetUser = "Service_SVC" Write-Host "[*] Vérification de l'existence de l'utilisateur cible..." -CouleurTexte Cyan if (Get-ADUser -Filter "SamAccountName -eq '$TargetUser'") { Write-Host "[+] Utilisateur cible $TargetUser trouvé. Poursuite avec la simulation de réinitialisation du mot de passe..." -CouleurTexte Vert # Génération de l'ID d'événement 4724 / 4738 try { $NewPassword = ConvertTo-SecureString "SimulatedPass123!" -AsPlainText -Force Set-ADAccountPassword -Identity $TargetUser -NewPassword $NewPassword Write-Host "[+] SUCCÈS : Réinitialisation de mot de passe déclenchée. Vérifiez les journaux de sécurité pour l'ID d'événement 4724/4738." -CouleurTexte Vert } catch { Write-Host "[-] ERREUR : Échec de la réinitialisation du mot de passe. Assurez-vous que vous exécutez en tant qu'utilisateur Admin/Autorisé." -CouleurTexte Rouge Write-Error $_ } } else { Write-Host "[-] ERREUR : Utilisateur cible $TargetUser non trouvé. Veuillez créer l'utilisateur d'abord." -CouleurTexte Rouge } -
Commandes de nettoyage :
# Script de nettoyage : Restaurer l'état d'origine $TargetUser = "Service_SVC" $OriginalPassword = ConvertTo-SecureString "Original_Safe_Pass_2025!" -AsPlainText -Force Write-Host "[*] Restauration du mot de passe d'origine pour $TargetUser..." -CouleurTexte Cyan Set-ADAccountPassword -Identity $TargetUser -NewPassword $OriginalPassword Write-Host "[+] Nettoyage terminé." -CouleurTexte Vert