Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
ShadowSpray — 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. | Kitploit
Herramientas/GitHubGitHub/dec0ne/shadowspray
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónAutenticaciónRed Teaming
GitHubdec0ne/shadowspray

ShadowSpray

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.

Ver Repositorio
490791hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

ShadowSpray

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.

Por qué esta herramienta

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.

example

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...

Cómo funciona esta herramienta

Funciona así:

  1. Iniciar sesión en el dominio con las credenciales proporcionadas (o usar la sesión actual).
  2. Verificar que el nivel funcional del dominio sea 2016 (de lo contrario, detenerse ya que el ataque Shadow Credentials no funcionará).
  3. Obtener una lista de todos los objetos en el dominio (usuarios y computadoras) desde LDAP.
  4. Para cada objeto en la lista hacer lo siguiente:
    1. Intentar agregar KeyCredential al atributo "msDS-KeyCredentialLink" del objeto.
    2. Si lo anterior es exitoso, usar PKINIT para solicitar un TGT usando la KeyCredential agregada.
    3. Si lo anterior es exitoso, realizar un ataque UnPACTheHash para revelar el hash NT del usuario/computadora.
    4. Si se especificó --RestoreShadowCred: Eliminar la KeyCredential agregada (limpiar después de ti mismo...).
  5. Si se especificó --Recursive: Hacer el mismo proceso usando cada una de las cuentas de usuario/computadora que hemos comprometido exitosamente.

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).

Demo

https://user-images.githubusercontent.com/54464773/194827503-b1eead1a-e09a-41ca-9d9b-0a7a6f0ad6a0.mp4

Uso

root@kitploit:~
 __             __   __        __   __   __
/__` |__|  /\  |  \ /  \ |  | /__` |__) |__)  /\  \ /
.__/ |  | /~~\ |__/ \__/ |/\| .__/ |    |  \ /~~\  |


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)

TODO

  • Refactorización y limpieza del código!!!
  • Agregar opción de salida Detallada
  • Agregar opción para guardar en un archivo en disco las KeyCredentials agregadas / TGT solicitados / NT Hashes recolectados
  • Versión en Python ;)
  • Otras sugerencias serán bienvenidas

Mitigación y Detección

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:

  • Esta herramienta intenta modificar cada objeto usuario/computadora en el dominio en un período de tiempo muy corto; cuando falla (la mayoría de las veces) genera un error LDAP_INSUFFICIENT_ACCESS. Es posible construir detecciones en torno a esto usando el mismo enfoque de detectar rociado de contraseñas (password spray) regular.

Agradecimientos

  • Elad Shamir por su investigación sobre Shadow Credentials y su increíble herramienta Whisker.
  • Will Schroeder y todos los que contribuyeron a Rubeus que todos conocemos y amamos. Básicamente, toda la funcionalidad de TGT/TGS/UnPACTheHash fue tomada de allí.
  • Cube0x0 Parte del código (específicamente las modificaciones de atributos LDAP a través de WINAPI) fue tomado de su increíble herramienta KrbRelay.
  • Michael Grafnetter por su herramienta DSInternals que fue utilizada aquí para ayudar con la funcionalidad de Shadow Credentials.
  • Orange-Cyberdefense por su trabajo en GOAD, el laboratorio de investigación de Active Directory que estoy usando y que puedes ver en el video de demostración e imágenes.
  • Martijn Laarman por la bonita barra de progreso utilizada en esta herramienta.
Descargar herramienta