
Una herramienta para rociar Shadow Credentials a través de todo un dominio con la esperanza de abusar de DACLs GenericWrite/GenericAll olvidadas hace tiempo sobre otros objetos en el dominio.
Una herramienta para rociar Shadow Credentials a través de todo un dominio con la esperanza de abusar de DACLs GenericWrite/GenericAll olvidados hace mucho tiempo sobre otros objetos del dominio.
En muchas evaluaciones veo (en BloodHound) que el grupo "Everyone" / "Authenticated Users" / "Domain Users" o algún otro grupo amplio, que contiene casi todos los usuarios del dominio, tiene algunos DACLs GenericWrite/GenericAll sobre otros objetos del dominio.

Estos derechos pueden ser abusados para agregar Shadow Credentials en el objeto objetivo y obtener su TGT y NT Hash.
Se me ocurrió que podemos simplemente intentar rociar Shadow Credentials sobre todo el dominio y ver qué funciona (obviamente este enfoque es más adecuado para evaluaciones no sigilosas, no lo uses en un equipo rojo donde se requiera sigilo). Cuando se agrega exitosamente una Shadow Credential, simplemente hacemos el baile PKINIT + UnPACTheHash y ¡voilà! - obtenemos los NT Hashes.
Dado que el proceso es extremadamente rápido, se puede usar al inicio de la evaluación y, con suerte, tendrás algunos usuarios y computadoras comprometidos antes incluso de empezar.
Nota: Reciclé mucho código de mi herramienta anterior por lo que AV/EDR podrían marcarlo como KrbRelayUp...
Funciona así:
ShadowSpray soporta CTRL+C, así que si en algún momento deseas detener la ejecución solo presiona CTRL+C y ShadowSpray mostrará los NT Hashes recuperados hasta el momento antes de salir (como se muestra en la demostración a continuación).
__ __ __ __ __ __
/__` |__| /\ | \ / \ | | /__` |__) |__) /\ \ /
.__/ | | /~~\ |__/ \__/ |/\| .__/ | | \ /~~\ |
Usage: ShadowSpray.exe [-d FQDN] [-dc FQDN] [-u USERNAME] [-p PASSWORD] [-r] [-re] [-cp CERT_PASSWORD] [-ssl]
-r (--RestoreShadowCred) Restaurar el atributo "msDS-KeyCredentialLink" después de que el ataque haya terminado. (Opcional)
-re (--Recursive) Realizar el ataque ShadowSpray de forma recursiva. (Opcional)
-cp (--CertificatePassword) Contraseña del certificado. (por defecto = contraseña aleatoria)
Opciones Generales:
-u (--Username) Nombre de usuario para la autenticación LDAP inicial. (Opcional)
-p (--Password) Contraseña para la autenticación LDAP inicial. (Opcional)
-d (--Domain) FQDN del dominio. (Opcional)
-dc (--DomainController) FQDN del controlador de dominio. (Opcional)
-ssl Usar LDAP sobre SSL. (Opcional)
-y (--AutoY) No preguntar confirmación para iniciar el ataque ShadowSpray. (Opcional)
Tomado del artículo de Elad Shamir sobre Shadow Credentials:
Si la autenticación PKINIT no es común en el entorno o no es común para la cuenta objetivo, el evento “Kerberos authentication ticket (TGT) was requested” (4768) puede indicar comportamiento anómalo cuando los atributos de Información del Certificado no están en blanco.
Si un SACL está configurado para auditar modificaciones de objetos de Active Directory para la cuenta objetivo, el evento “Directory service object was modified” (5136) puede indicar comportamiento anómalo si el sujeto que cambia la msDS-KeyCredentialLink no es la cuenta de sincronización de Azure AD Connect o la cuenta de servicio de ADFS, que normalmente actúan como servidor de aprovisionamiento de claves y modifican legítimamente este atributo para usuarios.
Un control preventivo más específico es agregar una Entrada de Control de Acceso (ACE) para DENEGAR al principal EVERYONE la modificación del atributo msDS-KeyCredentialLink para cualquier cuenta que no esté destinada a inscribirse en la autenticación sin contraseña de Key Trust, y particularmente para cuentas privilegiadas.
Detecting UnPACing and shadowed credentials por Henri Hambartsumyan de FalconForce
Detecciones específicas de ShadowSpray: