
Whisker es una herramienta en C# para tomar el control de cuentas de usuario y equipo de Active Directory manipulando su atributo msDS-KeyCredentialLink, agregando efectivamente "Shadow Credentials" a la cuenta objetivo.
Whisker es una herramienta en C# para tomar control de cuentas de usuario y equipo de Active Directory mediante la manipulación de su atributo msDS-KeyCredentialLink, añadiendo efectivamente "Credenciales Sombra" a la cuenta objetivo.
Esta herramienta está basada en código de DSInternals por Michael Grafnetter (@MGrafnetter).
Para que este ataque tenga éxito, el entorno debe tener un Controlador de Dominio que ejecute al menos Windows Server 2016, y el Controlador de Dominio debe tener un certificado de autenticación de servidor para permitir la autenticación Kerberos PKINIT.
Más detalles disponibles en el artículo Shadow Credentials: Abusing Key Trust Account Mapping for Takeover.

/target:<samAccountName>: Obligatorio. Establecer el nombre del objetivo. Los objetos de equipo deben terminar con el signo '$'.
/domain:<FQDN>: Opcional. Establecer el Nombre de Dominio Completo (FQDN) del objetivo. Si no se proporciona, intentará resolver el FQDN del usuario actual.
/dc:<IP/HOSTNAME>: Opcional. Establecer el Controlador de Dominio (DC) objetivo. Si no se proporciona, intentará apuntar al Controlador de Dominio Principal (PDC).
/path:<RUTA>: Opcional. Establecer la ruta para almacenar el certificado autofirmado generado para la autenticación. Si no se proporciona, el certificado se imprimirá como un blob Base64.
/password:<CONTRASEÑA>: Opcional. Establecer la contraseña para el certificado autofirmado almacenado. Si no se proporciona, se generará una contraseña aleatoria.
Ejemplo: Whisker.exe add /target:computername$ /domain:constoso.local /dc:dc1.contoso.local /path:C:\path\to\file.pfx /password:P@ssword1
/target:<samAccountName>: Obligatorio. Establecer el nombre del objetivo. Los objetos de equipo deben terminar con el signo '$'.
/deviceID:<GUID>: Obligatorio. Establecer el DeviceID del valor a eliminar del atributo msDS-KeyCredentialLink del objeto objetivo. Debe ser un GUID válido.
/domain:<FQDN>: Opcional. Establecer el Nombre de Dominio Completo (FQDN) del objetivo. Si no se proporciona, intentará resolver el FQDN del usuario actual.
/dc:<IP/HOSTNAME>: Opcional. Establecer el Controlador de Dominio (DC) objetivo. Si no se proporciona, intentará apuntar al Controlador de Dominio Principal (PDC).
Ejemplo: Whisker.exe remove /target:computername$ /domain:constoso.local /dc:dc1.contoso.local /deviceid:2de4643a-2e0b-438f-a99d-5cb058b3254b
/target:<samAccountName>: Obligatorio. Establecer el nombre del objetivo. Los objetos de equipo deben terminar con el signo '$'.
/domain:<FQDN>: Opcional. Establecer el Nombre de Dominio Completo (FQDN) del objetivo. Si no se proporciona, intentará resolver el FQDN del usuario actual.
/dc:<IP/HOSTNAME>: Opcional. Establecer el Controlador de Dominio (DC) objetivo. Si no se proporciona, intentará apuntar al Controlador de Dominio Principal (PDC).
Ejemplo: Whisker.exe clear /target:computername$ /domain:constoso.local /dc:dc1.contoso.local
⚠️ Advertencia: Limpiar el atributo msDS-KeyCredentialLink de cuentas configuradas para autenticación sin contraseña causará interrupciones.
/target:<samAccountName>: Obligatorio. Establecer el nombre del objetivo. Los objetos de equipo deben terminar con el signo '$'.
/domain:<FQDN>: Opcional. Establecer el Nombre de Dominio Completo (FQDN) del objetivo. Si no se proporciona, intentará resolver el FQDN del usuario actual.
/dc:<IP/HOSTNAME>: Opcional. Establecer el Controlador de Dominio (DC) objetivo. Si no se proporciona, intentará apuntar al Controlador de Dominio Principal (PDC).
Ejemplo: Whisker.exe list /target:computername$ /domain:constoso.local /dc:dc1.contoso.local