<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Kerberos on Cybernoob - Offensive Security Blog</title><link>https://blog.cybernoob.io/tags/kerberos/</link><description>Recent content in Kerberos on Cybernoob - Offensive Security Blog</description><image><title>Cybernoob - Offensive Security Blog</title><url>https://blog.cybernoob.io/og-default.png</url><link>https://blog.cybernoob.io/og-default.png</link></image><generator>Hugo -- 0.155.0</generator><language>en-us</language><lastBuildDate>Fri, 30 Jan 2026 13:03:54 +0100</lastBuildDate><atom:link href="https://blog.cybernoob.io/tags/kerberos/index.xml" rel="self" type="application/rss+xml"/><item><title>Your Active Directory Authentication Might Break in April 2026 - Here's How to Prevent It</title><link>https://blog.cybernoob.io/posts/your-active-directory-authentication-might-break-in-april-2026-heres-how-to-prevent-it/</link><pubDate>Thu, 29 Jan 2026 12:00:00 +0100</pubDate><guid>https://blog.cybernoob.io/posts/your-active-directory-authentication-might-break-in-april-2026-heres-how-to-prevent-it/</guid><description>Microsoft is killing RC4 encryption in Kerberos. Starting April 2026, unprepared accounts will stop authenticating. Here&amp;#39;s how to check if you&amp;#39;re affected and exactly what to do about it.</description><content:encoded><![CDATA[<p><strong>TL;DR</strong>: Microsoft is killing RC4 encryption in Kerberos. Starting April 2026, accounts that haven&rsquo;t had their password changed since the Windows 2008 era will stop authenticating. If you&rsquo;re running XP or Server 2003 - yes, I know some of you still are - those machines will completely stop talking to your domain. This article tells you how to check if you&rsquo;re affected and exactly what to do about it.</p>
<hr>
<h2 id="the-short-version">The Short Version</h2>
<p>Microsoft announced that starting <strong>April 2026</strong>, the default encryption for Kerberos will change from RC4 to AES. If any of your accounts - service accounts, user accounts, computer accounts - don&rsquo;t have AES encryption keys stored in AD, authentication will fail.</p>
<p>Here&rsquo;s why this matters to you personally: <strong>you don&rsquo;t need to have done anything wrong</strong>. An account that&rsquo;s been working perfectly for 15 years can suddenly stop working overnight because the domain controller changes how it issues tickets.</p>
<p>And if you&rsquo;re running Windows XP or Server 2003 anywhere? Those systems have zero AES support. They will completely lose domain connectivity. Not &ldquo;degraded service&rdquo; - <strong>complete authentication failure</strong>.</p>
<hr>
<h2 id="the-timeline-you-need-to-know">The Timeline You Need to Know</h2>
<table>
  <thead>
      <tr>
          <th>When</th>
          <th>What Happens</th>
          <th>Can You Undo It?</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>January 2026</strong> (NOW)</td>
          <td>Audit mode - warning events logged</td>
          <td>N/A</td>
      </tr>
      <tr>
          <td><strong>April 2026</strong></td>
          <td>Enforcement - RC4 blocked by default</td>
          <td>Yes, temporarily</td>
      </tr>
      <tr>
          <td><strong>July 2026</strong></td>
          <td>Permanent enforcement</td>
          <td>No</td>
      </tr>
  </tbody>
</table>
<p>Right now, we&rsquo;re in audit mode. You should be seeing Event IDs 201-209 in your Domain Controller System logs if you have RC4 dependencies. If you&rsquo;re not checking those logs&hellip; start.</p>
<hr>
<h2 id="why-microsoft-is-doing-this-and-why-you-should-care">Why Microsoft Is Doing This (And Why You Should Care)</h2>
<p>Here&rsquo;s the thing nobody tells you about Kerberoasting: <strong>any authenticated user can do it</strong>. Your receptionist. The intern. The contractor who just joined for a two-week project.</p>
<p>The attack works like this:</p>
<ol>
<li>Any domain user asks the DC for a service ticket to any SPN</li>
<li>The DC happily provides it (this is by design - it&rsquo;s how Kerberos works)</li>
<li>That ticket is encrypted with the service account&rsquo;s password hash</li>
<li>The attacker takes the ticket offline and cracks it</li>
</ol>
<p>One command. Takes seconds. No firewall blocks it. No EDR detects it. No SIEM alerts on it. The request looks completely normal because it <em>is</em> completely normal.</p>
<p><strong>The only defense is password strength and encryption type.</strong></p>
<p>With RC4 encryption, a modern GPU can try <strong>4 billion passwords per second</strong>. With AES-256, that drops to about <strong>6 million per second</strong>. That&rsquo;s roughly a million times slower.</p>
<p>Here&rsquo;s what this means practically:</p>
<ul>
<li><strong>RC4 + &ldquo;Summer2026!&rdquo;</strong> = cracked in under a second</li>
<li><strong>AES + &ldquo;Summer2026!&rdquo;</strong> = cracked in a few hours</li>
<li><strong>AES + 25-character random password</strong> = effectively uncrackable</li>
</ul>
<p>Now imagine your SQL service account gets cracked. That account probably has admin rights to your SQL servers. Maybe it&rsquo;s in a privileged group. Maybe it&rsquo;s a path to Domain Admin. I see this in almost every engagement - service accounts with way too many privileges.</p>
<p>The Ascension Health breach in 2024? 140 hospitals. 5.6 million patient records. Started with Kerberoasting.</p>
<p><strong>This is why Microsoft is forcing this change.</strong> They&rsquo;re not doing it to annoy you - they&rsquo;re doing it because RC4 has been a gaping security hole for over a decade.</p>
<hr>
<h2 id="are-you-affected">Are You Affected?</h2>
<p>Let&rsquo;s find out. Here&rsquo;s what needs AES keys to keep working:</p>
<h3 id="the-easy-checks">The Easy Checks</h3>
<p><strong>Service accounts with SPNs</strong> - These are your highest risk. Any account with a Service Principal Name can be Kerberoasted, and if it still uses RC4, it&rsquo;s both a security risk AND will break in April.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span><span style="color:#75715e"># Find accounts without msDS-SupportedEncryptionTypes set (RC4 by default)</span>
</span></span><span style="display:flex;"><span>Get-ADUser -Filter {ServicePrincipalName <span style="color:#f92672">-like</span> <span style="color:#e6db74">&#34;*&#34;</span>} -Properties msDS-SupportedEncryptionTypes |
</span></span><span style="display:flex;"><span>    Where-Object { $_.<span style="color:#e6db74">&#39;msDS-SupportedEncryptionTypes&#39;</span> <span style="color:#f92672">-eq</span> $null <span style="color:#f92672">-or</span> $_.<span style="color:#e6db74">&#39;msDS-SupportedEncryptionTypes&#39;</span> <span style="color:#f92672">-eq</span> <span style="color:#ae81ff">4</span> } |
</span></span><span style="display:flex;"><span>    Select-Object Name, SamAccountName
</span></span></code></pre></div><p><strong>User accounts with &ldquo;password never expires&rdquo;</strong> - If someone set this flag years ago and the user never changed their password, they might not have AES keys.</p>
<p><strong>Computer accounts</strong> - Usually fine because they auto-rotate passwords. But if you&rsquo;ve got machines that have been disconnected or have broken trust relationships&hellip;</p>
<h3 id="the-real-test-check-the-events">The Real Test: Check the Events</h3>
<p>On your Domain Controllers, look for Event IDs 202 and 207 in the System log. These are your problem children:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>Get-WinEvent -FilterHashtable @{LogName=<span style="color:#e6db74">&#39;System&#39;</span>; ProviderName=<span style="color:#e6db74">&#39;KDCSVC&#39;</span>; Id=<span style="color:#ae81ff">202</span>,<span style="color:#ae81ff">207</span>} |
</span></span><span style="display:flex;"><span>    Select-Object TimeCreated, Message
</span></span></code></pre></div><ul>
<li>Event 202 = Service account missing AES keys</li>
<li>Event 207 = Account configured for AES but doesn&rsquo;t actually have AES keys</li>
</ul>
<p>If you see these events, those accounts will break in April.</p>
<hr>
<h2 id="the-fix-its-simpler-than-you-think">The Fix: It&rsquo;s Simpler Than You Think</h2>
<p>Here&rsquo;s what generates AES keys in AD: <strong>changing the password on a Domain Controller running Windows Server 2008 or later</strong>.</p>
<p>That&rsquo;s it. You don&rsquo;t need to run special scripts. You don&rsquo;t need to modify attributes manually. Just reset the password.</p>
<h3 id="for-service-accounts">For Service Accounts</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span><span style="color:#75715e"># Prompts for password securely (masked input, won&#39;t appear in command history)</span>
</span></span><span style="display:flex;"><span>Set-ADAccountPassword -Identity <span style="color:#e6db74">&#34;svc_sqlserver&#34;</span> -Reset -NewPassword (Read-Host -AsSecureString <span style="color:#e6db74">&#34;Enter new password&#34;</span>)
</span></span></code></pre></div><p>Then update the password wherever it&rsquo;s used (services, scheduled tasks, config files, connection strings&hellip;).</p>
<p><strong>Pro tip</strong>: I know what you&rsquo;re thinking - &ldquo;can I just reset it to the same password?&rdquo; Actually, yes! Here&rsquo;s the trick most people don&rsquo;t know: when you reset a password on a modern DC (2008 R2+), it regenerates ALL key types the DC supports - including AES. The DC doesn&rsquo;t check if the password is &ldquo;new&rdquo; or &ldquo;the same&rdquo;. It just processes whatever password you give it and generates fresh keys.</p>
<p>So for service accounts where changing the password everywhere would be a nightmare: just reset it to the same value. AES keys get generated, applications keep working.</p>
<p><strong>One caveat</strong>: Your password history policy might block setting &ldquo;the same&rdquo; password. If that happens, you can temporarily exclude the account from the policy, or check if admin-initiated resets bypass history (depends on your configuration).</p>
<h3 id="for-computer-accounts">For Computer Accounts</h3>
<p>Option 1: Just restart the computer (if it&rsquo;s been a while since it rotated its password)</p>
<p>Option 2: Force a password reset:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>Reset-ComputerMachinePassword -Credential (Get-Credential)
</span></span></code></pre></div><h3 id="for-user-accounts">For User Accounts</h3>
<p>Have them change their password. Or force a reset at next logon. Either works.</p>
<h3 id="after-the-fix-verify">After the Fix: Verify</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>Get-ADUser -Identity <span style="color:#e6db74">&#34;svc_sqlserver&#34;</span> -Properties msDS-SupportedEncryptionTypes |
</span></span><span style="display:flex;"><span>    Select-Object Name, msDS-SupportedEncryptionTypes
</span></span></code></pre></div><p>You want to see a value of <strong>24</strong> (AES only) or <strong>28</strong> (AES + RC4). If you see <strong>4</strong> (RC4 only) or <strong>null</strong>, the password wasn&rsquo;t reset on a modern DC.</p>
<hr>
<h2 id="edge-cases-the-annoying-stuff">Edge Cases (The Annoying Stuff)</h2>
<h3 id="windows-xp-and-server-2003">Windows XP and Server 2003</h3>
<p>Look, if you&rsquo;ve kept your XP/2003 systems until now, there&rsquo;s a low chance you&rsquo;ll decommission them just because of this article. I get it. Legacy applications. OT systems. Vendor lock-in. I&rsquo;ve seen it all.</p>
<p>But here&rsquo;s the reality: <strong>these systems cannot do AES</strong>. Period. The operating system doesn&rsquo;t support it. Setting attributes in AD won&rsquo;t help. There is no patch. There is no workaround that keeps them domain-joined and working.</p>
<p>Your options:</p>
<p><strong>Option 1: Finally migrate</strong> (I have to say it)</p>
<p><strong>Option 2: Isolate completely</strong> - This is what I recommend for most people:</p>
<ul>
<li>Remove from domain. Use local accounts only.</li>
<li>Put in isolated VLAN with strict firewall rules</li>
<li>Access only via a jump host (a modern, domain-joined machine)</li>
<li>The legacy machine should talk to minimal systems</li>
<li>This is exactly what we do for OT/industrial systems that can&rsquo;t be upgraded</li>
</ul>
<p>The isolation approach is actually how most organizations handle legacy OT systems anyway. You&rsquo;re essentially treating it as an untrusted network segment that happens to be inside your building.</p>
<h3 id="linuxunix-with-keytabs">Linux/Unix with Keytabs</h3>
<p>If your keytab only has RC4 keys, regenerate it with AES:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># Check what you have</span>
</span></span><span style="display:flex;"><span>klist -kte /etc/krb5.keytab
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Look for &#39;aes256-cts-hmac-sha1-96&#39; - if you only see &#39;arcfour-hmac&#39;, you need new keys</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Regenerate (this resets the AD password)</span>
</span></span><span style="display:flex;"><span>msktutil --update --keytab /etc/krb5.keytab --enctypes 0x18
</span></span></code></pre></div><h3 id="third-party-appliances-nas-printers-etc">Third-Party Appliances (NAS, Printers, etc.)</h3>
<p>Check if newer firmware supports AES. Many vendors added AES support years ago but customers never updated.</p>
<p>If the vendor truly doesn&rsquo;t support AES:</p>
<ul>
<li>Document it as a security exception</li>
<li>Put the device in an isolated VLAN</li>
<li>Use a dedicated service account with explicit RC4 allowed</li>
<li>Set a very strong password (25+ characters)</li>
<li>Tell Microsoft: <a href="mailto:stillneedrc4@microsoft.com">stillneedrc4@microsoft.com</a> (they&rsquo;re tracking vendors who haven&rsquo;t upgraded)</li>
</ul>
<h3 id="trust-relationships">Trust Relationships</h3>
<p>If you have domain/forest trusts, they need AES enabled too:</p>
<ol>
<li>Open Active Directory Domains and Trusts</li>
<li>Right-click domain &gt; Properties &gt; Trusts</li>
<li>Select the trust &gt; Properties</li>
<li>Check &ldquo;The other domain supports Kerberos AES Encryption&rdquo;</li>
</ol>
<p>Or via command line:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-cmd" data-lang="cmd"><span style="display:flex;"><span>ksetup /setenctypeattr TRUSTED.DOMAIN.COM AES128-CTS-HMAC-SHA1-96 AES256-CTS-HMAC-SHA1-96
</span></span></code></pre></div><hr>
<h2 id="timeline-summary">Timeline Summary</h2>
<table>
  <thead>
      <tr>
          <th>Phase</th>
          <th>When</th>
          <th>Your Action</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>Audit</strong></td>
          <td>Now - March 2026</td>
          <td>Monitor events, identify dependencies</td>
      </tr>
      <tr>
          <td><strong>Remediation</strong></td>
          <td>Now - March 2026</td>
          <td>Reset passwords, regenerate keytabs, update appliances</td>
      </tr>
      <tr>
          <td><strong>Testing</strong></td>
          <td>March 2026</td>
          <td>Enable enforcement on test DC, verify nothing breaks</td>
      </tr>
      <tr>
          <td><strong>Enforcement</strong></td>
          <td>April 2026</td>
          <td>Microsoft enables by default, you should be ready</td>
      </tr>
      <tr>
          <td><strong>Permanent</strong></td>
          <td>July 2026</td>
          <td>No more rollback option</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="your-action-plan-do-this-now">Your Action Plan (Do This NOW)</h2>
<p><strong>This week:</strong></p>
<ol>
<li><strong>Install January 2026 updates</strong> on your DCs if you haven&rsquo;t already</li>
<li><strong>Check for Event IDs 201-209</strong> on Domain Controllers (the commands are in this article, scroll up)</li>
<li><strong>Run the at-risk service account script</strong> from the &ldquo;Are You Affected?&rdquo; section above - export that list, it&rsquo;s your remediation backlog</li>
</ol>
<p><strong>February:</strong></p>
<ol start="4">
<li><strong>Reset service account passwords</strong> - Start with accounts that have SPNs</li>
<li><strong>Update keytabs</strong> on Linux/Unix systems</li>
<li><strong>Check trust relationships</strong> for AES support</li>
</ol>
<p><strong>March:</strong></p>
<ol start="7">
<li><strong>Test enforcement mode</strong> on one DC:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>reg add &#34;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters&#34; /v RC4DefaultDisablementPhase /t REG_DWORD /d 2 /f
</span></span></code></pre></div></li>
<li><strong>Fix anything that breaks</strong></li>
<li><strong>Have a plan for XP/2003</strong> systems (isolate or migrate)</li>
</ol>
<hr>
<h2 id="final-thoughts">Final Thoughts</h2>
<p>I know this is another thing on your already-too-long list. But here&rsquo;s the thing: this change is happening whether you&rsquo;re ready or not. July 2026 is the hard deadline - after that, there&rsquo;s no rollback.</p>
<p>The good news? The fix is straightforward. Reset passwords. Check keytabs. Update trusts. The audit mode events tell you exactly what&rsquo;s at risk.</p>
<p>The bad news? If you wait until April and things break, you&rsquo;ll be doing emergency password resets during an outage instead of planned changes during a maintenance window.</p>
<p>Your call.</p>
<hr>
<p>Questions? Reach out directly: <a href="mailto:samy@cybernoob.io">samy@cybernoob.io</a></p>
<p>Want to talk through your specific situation?</p>
<p>Book a call: <a href="https://link.cybernoob.io/book-a-call">https://link.cybernoob.io/book-a-call</a></p>
<hr>
<h2 id="references">References</h2>
<ul>
<li><a href="https://learn.microsoft.com/en-us/windows-server/security/kerberos/detect-remediate-rc4-kerberos">Microsoft: Detect and Remediate RC4 Usage</a></li>
<li><a href="https://support.microsoft.com/en-us/topic/how-to-manage-kerberos-kdc-usage-of-rc4-for-service-account-ticket-issuance-changes-related-to-cve-2026-20833-1ebcda33-720a-4da8-93c1-b0496e1910dc">Microsoft: CVE-2026-20833 KB Article</a></li>
<li><a href="https://www.microsoft.com/en-us/windows-server/blog/2025/12/03/beyond-rc4-for-windows-authentication">Microsoft Blog: Beyond RC4 for Windows Authentication</a></li>
<li><a href="https://github.com/microsoft/Kerberos-Crypto">GitHub: Microsoft Kerberos-Crypto Detection Scripts</a></li>
<li><a href="https://specterops.io/blog/2025/10/21/is-kerberoasting-still-a-risk-when-aes-256-kerberos-encryption-is-enabled/">SpecterOps: Is Kerberoasting Still a Risk When AES-256 Is Enabled?</a></li>
</ul>
]]></content:encoded></item></channel></rss>