
Un outil pour spray des Shadow Credentials sur l'ensemble d'un domaine dans l'espoir d'abuser de DACLs GenericWrite/GenericAll depuis longtemps oubliées sur d'autres objets du domaine.
Un outil pour pulvériser des Shadow Credentials à travers un domaine entier, dans l'espoir d'exploiter des DACLs GenericWrite/GenericAll oubliées depuis longtemps sur d'autres objets du domaine.
Dans de nombreuses missions, je vois (dans BloodHound) que le groupe « Everyone » / « Authenticated Users » / « Domain Users » ou un autre groupe large, contenant presque tous les utilisateurs du domaine, possède des DACLs GenericWrite/GenericAll sur d'autres objets du domaine.

Ces droits peuvent être abusés pour ajouter des Shadow Credentials sur l'objet cible et obtenir son TGT et son NT Hash.
Il m'est venu à l'esprit que nous pouvions simplement essayer de pulvériser des Shadow Credentials sur l'ensemble du domaine et voir ce qui prend (évidemment, cette approche est mieux adaptée aux missions non furtives, ne l'utilisez pas dans une red team où la furtivité est requise). Lorsqu'un Shadow Credential est ajouté avec succès, nous effectuons simplement toute la danse PKINIT + UnPACTheHash et voilà – nous obtenons les NT Hashes.
Comme le processus est extrêmement rapide, cela peut être utilisé dès le début de la mission, et avec un peu de chance, vous aurez déjà quelques utilisateurs et ordinateurs compromis avant même de commencer.
Remarque : J'ai recyclé beaucoup de code de mon outil précédent, donc les AV/EDR pourraient le signaler comme KrbRelayUp...
Cela se déroule comme ceci :
ShadowSpray prend en charge CTRL+C, donc si à tout moment vous souhaitez arrêter l'exécution, appuyez simplement sur CTRL+C et ShadowSpray affichera les NT Hashes récupérés jusqu'à présent avant de se terminer (comme montré dans la démo ci-dessous).
__ __ __ __ __ __
/__` |__| /\ | \ / \ | | /__` |__) |__) /\ \ /
.__/ | | /~~\ |__/ \__/ |/\| .__/ | | \ /~~\ |
Usage: ShadowSpray.exe [-d FQDN] [-dc FQDN] [-u USERNAME] [-p PASSWORD] [-r] [-re] [-cp CERT_PASSWORD] [-ssl]
-r (--RestoreShadowCred) Restaurer l'attribut « msDS-KeyCredentialLink » après l'attaque. (Optionnel)
-re (--Recursive) Effectuer l'attaque ShadowSpray de manière récursive. (Optionnel)
-cp (--CertificatePassword) Mot de passe du certificat. (par défaut = mot de passe aléatoire)
Options générales :
-u (--Username) Nom d'utilisateur pour l'authentification LDAP initiale. (Optionnel)
-p (--Password) Mot de passe pour l'authentification LDAP initiale. (Optionnel)
-d (--Domain) FQDN du domaine. (Optionnel)
-dc (--DomainController) FQDN du contrôleur de domaine. (Optionnel)
-ssl Utiliser LDAP sur SSL. (Optionnel)
-y (--AutoY) Ne pas demander de confirmation pour démarrer l'attaque ShadowSpray. (Optionnel)
Extrait du billet de blog d'Elad Shamir sur les Shadow Credentials :
Si l'authentification PKINIT n'est pas courante dans l'environnement ou n'est pas courante pour le compte cible, l'événement « Un ticket d'authentification Kerberos (TGT) a été demandé » (4768) peut indiquer un comportement anormal lorsque les attributs d'informations de certificat ne sont pas vides.
Si une SACL est configurée pour auditer les modifications d'objets Active Directory pour le compte ciblé, l'événement « L'objet du service d'annuaire a été modifié » (5136) peut indiquer un comportement anormal si le sujet modifiant msDS-KeyCredentialLink n'est pas le compte de synchronisation Azure AD Connect ou le compte de service ADFS, qui agissent généralement en tant que serveur de provisionnement de clés et modifient légitimement cet attribut pour les utilisateurs.
Un contrôle préventif plus spécifique consiste à ajouter une entrée de contrôle d'accès (ACE) pour INTERDIRE au principal EVERYONE de modifier l'attribut msDS-KeyCredentialLink pour tout compte qui n'est pas destiné à être inscrit dans l'authentification sans mot de passe Key Trust, et en particulier les comptes privilégiés.
Détection de l'UnPACing et des credentials fantômes par Henri Hambartsumyan de FalconForce
Détections spécifiques à ShadowSpray :