{"id":5209,"date":"2026-04-13T13:34:25","date_gmt":"2026-04-13T13:34:25","guid":{"rendered":"https:\/\/geekmungus.co.uk\/?p=5209"},"modified":"2026-04-13T13:34:25","modified_gmt":"2026-04-13T13:34:25","slug":"reset-active-directory-krbtgt-password","status":"publish","type":"post","link":"https:\/\/geekmungus.co.uk\/?p=5209","title":{"rendered":"Reset Active Directory KRBTGT Password"},"content":{"rendered":"\n<p>The periodic reset of the KRBTGT password is now recommended by Microsoft to be carried out every 180 days. Resetting the password periodically reduces the risks of a Kerbroasting attack being successful.<\/p>\n\n\n\n<p><strong>To ensure the KRBTGT password is fully reset you MUST perform this reset operation twice. And you MUST wait a bare minimum of 10 hours between password resets<\/strong>. The 10 hours are the default Maximum lifetime for user ticket and Maximum lifetime for service ticket policy settings, hence in a case where the Maximum lifetime period changes, the minimum waiting period between resets should be greater than the configured value.<\/p>\n\n\n\n<p>It is therefore strongly recommended to wait 24 hours between resets, rather than just the minimum recommended 10 hours.<\/p>\n\n\n\n<p>Resetting the KRBTGT account password twice is essential because Active Directory stores the previous two passwords for Kerberos ticket validation. The first reset creates a new password but keeps the (potentially) compromised one in history; the second reset eliminates the old password entirely, rendering active forged &#8220;golden tickets&#8221; invalid.<\/p>\n\n\n\n<p><strong>It is not recommended to automate the process of resetting the KRBTGT password due to the risk of the process going wrong and resulting in service unavailability.<\/strong><\/p>\n\n\n\n<p><strong>Do not attempt to reset the KRBTGT_AzureAD account password without fully understanding the process and what is required, there is a specific process that differs from the below for resetting this particular account password.<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/active-directory\/authentication\/howto-authentication-passwordless-security-key-on-premises\">https:\/\/docs.microsoft.com\/en-us\/azure\/active-directory\/authentication\/howto-authentication-passwordless-security-key-on-premises<\/a><\/p>\n\n\n\n<p>How to complete the reset of this particular KRBTGT_AzureAD account is beyond the scope of this article; as is the reset of the KRBTGT_XXXXX (Number) accounts used by Read Only Domain Controllers.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-FindLastChangeDate(Powershell)\">Find Last Change Date (Powershell)<\/h1>\n\n\n\n<p>Find when the KRBTGT password was last changed with:<\/p>\n\n\n\n<p><code>Get-ADUser \"krbtgt\" -Property Created, PasswordLastSet<\/code><\/p>\n\n\n\n<p>You should see an output such as the following which shows that the KRBTGT password was last reset on&nbsp;<strong>13th December 2012 at 09:21:05<\/strong>&nbsp;in the morning.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"246\" src=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-13.png\" alt=\"\" class=\"wp-image-5210\" srcset=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-13.png 593w, https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-13-300x124.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-FindLastChangeDate(Script)\">Find Last Change Date (Script)<\/h1>\n\n\n\n<p>Find when the KRBTGT password was last changed with the below script, this script has the added bonus that it will seek out and find all of the KRBTGT accounts you may have in your domain and report on those.<\/p>\n\n\n\n<p>Be aware that you only have one KRBTGT account per Active Directory Domain, the additional accounts will only exist if you have Read Only Domain Controllers (RODC) and\/or Active Directory Directory Sync to Microsoft 365.<\/p>\n\n\n\n<p><strong>krbtgt_getinfo.ps1<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import-module activedirectory\n$ADForestRootDomain = (Get-ADForest).RootDomain\n$AllADForestDomains = (Get-ADForest).Domains\n$ForestKRBTGTInfo = @()\nForEach ($AllADForestDomainsItem in $AllADForestDomains)\n{\n&#91;string]$DomainDC = (Get-ADDomainController -Discover -Force -Service \u201cPrimaryDC\u201d -DomainName $AllADForestDomainsItem).HostName\n&#91;array]$ForestKRBTGTInfo += Get-ADUSer -filter {name -like \u201ckrbtgt*\u201d} -Server $DomainDC -Prop Name,Created,logonCount,Modified,PasswordLastSet,PasswordExpired,msDS-KeyVersionNumber,CanonicalName,msDS-KrbTgtLinkBl\n}\n$ForestKRBTGTInfo | Select Name,Created,logonCount,PasswordLastSet,PasswordExpired,msDS-KeyVersionNumber,CanonicalName | ft -auto<\/code><\/pre>\n\n\n\n<p>Gets the output of:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"130\" src=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-14-1024x130.png\" alt=\"\" class=\"wp-image-5211\" srcset=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-14-1024x130.png 1024w, https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-14-300x38.png 300w, https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-14-768x97.png 768w, https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-14.png 1166w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>As you can see we can see a number of KRBTGT accounts, the one called &#8220;KRBTGT&#8221; is domain&#8217;s Ticket Granting Ticket account, it is this which we want to reset (typically), the other two called KRBTGT_35708 and KRBTGT_4536 are used by RODC, we typically won&#8217;t need to reset these, but you may also wish to. The last one KRBTGT_AzureAD is a special use KRBTGT account for Active Directory ADSync.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-FindMaximumTGTLifetime(inHours)\">Find Maximum TGT Lifetime (in Hours)<\/h1>\n\n\n\n<p>Unless the lifetime has been changed by someone, this will be set to the default 10 Hours. To verify this the following PoweShell may be used. The GUID is apparently the same across any forest and domain, but add your Domain you want to inspect at the end:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;xml]$gpo = Get-GPOReport -Guid '{31B2F340-016D-11D2-945F-00C04FB984F9}' -ReportType Xml -ErrorAction Stop -Domain internal.domain.com\n\n$MaxTgtLifetimeHours = (($gpo.gpo.Computer.ExtensionData | Where-Object { $_.name -eq 'Security' }).Extension.ChildNodes | Where-Object { $_.Name -\neq 'MaxTicketAge' }).SettingNumber\n\nWrite-Host \"$MaxTgtLifetimeHours Hours\"<\/code><\/pre>\n\n\n\n<p>You should now get a number the output showing the Maximum TGT Lifetime in hours.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-UptoDateCredentialEncryption\">Up to Date Credential Encryption<\/h1>\n\n\n\n<p>As per this article:&nbsp;<a href=\"https:\/\/adsecurity.org\/?p=483\">https:\/\/adsecurity.org\/?p=483<\/a>, the following is mentioned:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Note: Changing the KRBTGT password is only supported by Microsoft once the domain functional level is Windows Server 2008 or greater. This is likely due to the fact that the KRBTGT password changes as part of the DFL update to 2008 to support Kerberos AES encryption, so it has been tested.<\/p>\n<\/blockquote>\n\n\n\n<p>So because the domain and forest is now running beyond the 2008 functional level, we are at the time of writing on 2016 Functional Level (for Domain and Forest), the DFL triggered a reset of the password, therefore it has AES credentials (effectively), so although we appear to be good, we&#8217;ll reset the password anyway. We&#8217;re concerned about this because of the retirement of the RC4 Cipher in April 2026, in our case it appears the KRBTGT has the necessary AES credentials, but a reset of the KRBTGT password will just ensure doubly that this is the case.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-KRBTGTPasswordResetProcedure\">KRBTGT Password Reset Procedure<\/h1>\n\n\n\n<p>The password reset can be completed manually (its not a complicated procedure), the Microsoft article:&nbsp;<a href=\"https:\/\/learn.microsoft.com\/en-us\/windows-server\/identity\/ad-ds\/manage\/forest-recovery-guide\/ad-forest-recovery-reset-the-krbtgt-password\">https:\/\/learn.microsoft.com\/en-us\/windows-server\/identity\/ad-ds\/manage\/forest-recovery-guide\/ad-forest-recovery-reset-the-krbtgt-password<\/a>&nbsp;explains how to complete these steps. We are going to use a script that has been written for just this purpose.<\/p>\n\n\n\n<p>Like with many things, you just do what Ali says:&nbsp;<a href=\"https:\/\/www.alitajran.com\/krbtgt-password-reset\/\">https:\/\/www.alitajran.com\/krbtgt-password-reset\/<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-Step1-ConsiderationsforMulti-DomainandForestTrusts\">Step 1 &#8211; Considerations for Multi-Domain and Forest Trusts<\/h2>\n\n\n\n<p>Because we only have a single domain within the forest we do not need to follow the process of resetting the KRBTGT in each child domain first (<a href=\"https:\/\/learn.microsoft.com\/en-us\/answers\/questions\/2075055\/resetting-krbtgt-account-password-in-a-multi-domai\">citation<\/a>).<\/p>\n\n\n\n<p>No considerations could be found that referenced a problem with resetting the KRBTGT and any effect on the Forest Trust to the&nbsp;<a href=\"http:\/\/hinxtonit.com\/\">hinxtonit.com<\/a>&nbsp;Forest (and domain).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-Step2-EnsureBackupsofActiveDirectoryExist\">Step 2 &#8211; Ensure Backups of Active Directory Exist<\/h2>\n\n\n\n<p>Ensure you have valid Active Directory backups available and recently taken and tested so you can perform a restoration of the whole of Active Directory if it were so to be required.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-Step3-CheckActiveDirectoryHealthandReplicationStatus\">Step 3 &#8211; Check Active Directory Health and Replication Status<\/h2>\n\n\n\n<p>To manually check the replication status you can use the commands to look for any issues identified:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>repadmin \/showrepl\nrepadmin \/replsummary\nrepadmin \/queue<\/code><\/pre>\n\n\n\n<p>Other useful commands can be found in:\u00a0<a href=\"https:\/\/activedirectorypro.com\/repadmin-how-to-check-active-directory-replication\/\">https:\/\/activedirectorypro.com\/repadmin-how-to-check-active-directory-replication\/<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-Step4-ResettheKRBTGTAccountPassword-1stTimePass\">Step 4 &#8211; Reset the KRBTGT Account Password &#8211; 1st Time Pass<\/h2>\n\n\n\n<p>From an Active Directory Domain Controller, using a user accont with Domain Admin privileges perform the following steps:<\/p>\n\n\n\n<p>1. Select&nbsp;<strong>Start<\/strong>, point to&nbsp;<strong>Control Panel<\/strong>, point to&nbsp;<strong>Administrative Tools<\/strong>, and then select&nbsp;<strong>Active Directory Users and Computers<\/strong>.<br>2. Select&nbsp;<strong>View<\/strong>, and then select&nbsp;<strong>Advanced Features<\/strong>.<br>3. In the console tree, double-click the domain container, and then select&nbsp;<strong>Users<\/strong>.<br>4. In the details pane, right-click the&nbsp;<strong>krbtgt&nbsp;<\/strong>user account, and then select&nbsp;<strong>Reset Password<\/strong>.<br>5.&nbsp;<strong>Clear (untick)&nbsp;<\/strong>the&nbsp;<strong>User must change password at next logon<\/strong>&nbsp;check box, and then click&nbsp;<strong>OK<\/strong>.&nbsp;Important!<br>6. In&nbsp;<strong>New password<\/strong>, type a new password, retype the password in&nbsp;<strong>Confirm password<\/strong>, and then select&nbsp;<strong>OK<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"343\" height=\"177\" src=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-15.png\" alt=\"\" class=\"wp-image-5212\" srcset=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-15.png 343w, https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-15-300x155.png 300w\" sizes=\"auto, (max-width: 343px) 100vw, 343px\" \/><\/figure>\n\n\n\n<p>The password that you specify isn&#8217;t significant because the system generates a strong password automatically independent of the password that you specify. But you may want to make a record of it anyway.<\/p>\n\n\n\n<p>The following PowerShell will generate a random secure password which you may want to use, but being that the system generates another one that it actually uses its kind of irrelevant.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Reflection.Assembly]::LoadWithPartialName(\u201cSystem.Web\u201d)\n$RandPassLength = &#91;int] 128\nWrite-Output \u201cGenerating Random Password of $RandPassLength Characters\u201d\n$RandomPassword = &#91;System.Web.Security.Membership]::GeneratePassword($RandPassLength,2)\n$RandomPassword<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-Step5-VerifyPasswordResetafter1stTimePass\">Step 5 &#8211; Verify Password Reset after 1st Time Pass<\/h2>\n\n\n\n<p>Verify the KRBTGT account password has been changed by running the PowerShell command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Get-ADUser \"krbtgt\" -Property Created, PasswordLastSet<\/code><\/pre>\n\n\n\n<p>And observing that the date and time of the&nbsp;<strong>PasswordLastSet<\/strong>&nbsp;attribute have changed to the date and time of the 1st password change attempt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-EventViewer\">Event Viewer<\/h3>\n\n\n\n<p>Examine the Windows Event log, specifically the Security log and look for the following event IDs, potentially in this order:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>4724\u00a0<\/strong>(An attempt was made to reset an account\u2019s password)<\/li>\n\n\n\n<li><strong>4738\u00a0<\/strong>(A user account was changed)<\/li>\n<\/ul>\n\n\n\n<p>You are looking to verify that the KRBTGT account password has been successfully reset.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-Splunk\">Splunk<\/h3>\n\n\n\n<p>Examine the Windows Event log via Splunk, specifically the Security log and look for the following Event IDs:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>4724\u00a0<\/strong>(An attempt was made to reset an account\u2019s password)<\/li>\n\n\n\n<li><strong>4738\u00a0<\/strong>(A user account was changed)<\/li>\n<\/ul>\n\n\n\n<p>You can also if you wish filter for the Target Account Name and Keywords if you have a busy number of account passwords resets taking place due to normal course of business.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>index=\"wineventlog\" LogName=\"Security\" EventCode IN (\"4724\",\"4738\") earliest=-2d@d latest=now Target_Account_Name=krbtgt Keywords=\"Audit Success\"<\/code><\/pre>\n\n\n\n<p>You are looking to verify that the KRBTGT account password has been successfully reset. <\/p>\n\n\n\n<p>Note your index name will likely be different.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-Step6-VerifyReplicationSuccessful\">Step 6 &#8211; Verify Replication Successful<\/h2>\n\n\n\n<p>Verify that Active Directory Domain Controller replication has been successful following the first password change.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>repadmin \/showrepl\nrepadmin \/replsummary\nrepadmin \/queue<\/code><\/pre>\n\n\n\n<p>Additionally verify there are no obvious issues with authentication following the change of the password.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>repadmin.exe \/showattr *.internal.domain.com\u201c cn=krbtgt,cn=users,dc=internal,dc=domain,dc=com\u201d \/atts:pwdLastSet<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-Step7-ResettheKRBTGTAccountPassword-2ndTimePass\">Step 7 &#8211; Reset the KRBTGT Account Password &#8211; 2nd Time Pass<\/h2>\n\n\n\n<p>From an Active Directory Domain Controller, using a user accont with Domain Admin privileges perform the following steps:<\/p>\n\n\n\n<p><strong>ATTENTION<\/strong>: Do not proceed with the following steps until at least 24 hours have passed since the last KRBTGT account password reset.<\/p>\n\n\n\n<p>Failure to wait at least 10 hours (or whatever the maximum ticket lifetime is) will result in valid Kerberos Tickets being invalidated incorrectly and loss of availability.<\/p>\n\n\n\n<p>1. Select&nbsp;<strong>Start<\/strong>, point to&nbsp;<strong>Control Panel<\/strong>, point to&nbsp;<strong>Administrative Tools<\/strong>, and then select&nbsp;<strong>Active Directory Users and Computers<\/strong>.<br>2. Select&nbsp;<strong>View<\/strong>, and then select&nbsp;<strong>Advanced Features<\/strong>.<br>3. In the console tree, double-click the domain container, and then select&nbsp;<strong>Users<\/strong>.<br>4. In the details pane, right-click the&nbsp;<strong>krbtgt&nbsp;<\/strong>user account, and then select&nbsp;<strong>Reset Password<\/strong>.<br>5.&nbsp;<strong>Clear (untick)&nbsp;<\/strong>the&nbsp;<strong>User must change password at next logon<\/strong>&nbsp;check box, and then click&nbsp;<strong>OK<\/strong>.&nbsp;Important!<br>6. In&nbsp;<strong>New password<\/strong>, type a new password, retype the password in&nbsp;<strong>Confirm password<\/strong>, and then select&nbsp;<strong>OK<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"343\" height=\"177\" src=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-16.png\" alt=\"\" class=\"wp-image-5213\" srcset=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-16.png 343w, https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/04\/image-16-300x155.png 300w\" sizes=\"auto, (max-width: 343px) 100vw, 343px\" \/><\/figure>\n\n\n\n<p>The password that you specify isn&#8217;t significant because the system generates a strong password automatically independent of the password that you specify. But you may want to make a record of it anyway.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-Step8-VerifyPasswordResetafter2ndTimePass\">Step 8 &#8211; Verify Password Reset after 2nd Time Pass<\/h2>\n\n\n\n<p>Repeat the tasks that were detailed in&nbsp;<strong>Step 5<\/strong>&nbsp;to verify that the KRBTGT password was successfully reset for the second time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-Step9-VerifyReplicationSuccessful\">Step 9 &#8211; Verify Replication Successful<\/h2>\n\n\n\n<p>Repeat the tasks that were details in Step 6 to verify the Active Directory replication is successful and authentication is working as expected.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-Conclusion\">Conclusion<\/h2>\n\n\n\n<p>And that, is it, you have successfully reset the KRBTGT account password.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-PowerShellScripts\">PowerShell Scripts<\/h1>\n\n\n\n<p>You can use some PowerShell scripts that can semi-automate the process. You may or may not want to use these.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-ActiveDirectoryHealthandReplicationStatusScript\">Active Directory Health and Replication Status Script<\/h2>\n\n\n\n<p>Download the Active Directory Health and Replication Status script from:&nbsp;<a href=\"https:\/\/www.alitajran.com\/active-directory-health-check-powershell-script\/\">https:\/\/www.alitajran.com\/active-directory-health-check-powershell-script\/<\/a>&nbsp;and place onto a Domain Controller ready for use.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass\n\nc:\\script\\Get-ADHealth.ps1 -ReportFile<\/code><\/pre>\n\n\n\n<p>You can then verify the output by examining the HTML file generated in the same directory as the script was run from.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-KRBTGTPasswordResetScript\">KRBTGT Password Reset Script<\/h2>\n\n\n\n<p>Download the password reset script from:&nbsp;<a href=\"https:\/\/github.com\/zjorz\/Public-AD-Scripts\/blob\/master\/Reset-KrbTgt-Password-For-RWDCs-And-RODCs.ps1\">https:\/\/github.com\/zjorz\/Public-AD-Scripts\/blob\/master\/Reset-KrbTgt-Password-For-RWDCs-And-RODCs.ps1<\/a>&nbsp;and place onto a Domain Controller ready for use. The script will need to be run by a user with Domain Administrator privileges.<\/p>\n\n\n\n<p>Run the script within an elevated PowerShell console prompt (which has the Active Directory Module available), we&#8217;ll bypass (answer &#8220;A&#8221; when prompted) the need for digital signing because the script is not been digitally signed, but has been reviewed by Sanger staff and is safe for use.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass\n\nc:\\script\\Reset-KrbTgt-Password-For-RWDCs-And-RODCs.ps1<\/code><\/pre>\n\n\n\n<p>You can then perform a dry run, or a real password reset.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"ResetActiveDirectoryKRBTGTPassword-AdditionalInformation\">Additional Information<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/windows-server\/identity\/ad-ds\/manage\/ad-forest-recovery-resetting-the-krbtgt-password\">https:\/\/learn.microsoft.com\/en-us\/windows-server\/identity\/ad-ds\/manage\/ad-forest-recovery-resetting-the-krbtgt-password<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/answers\/questions\/819902\/krbtgt-rc4-encryption-type\">https:\/\/learn.microsoft.com\/en-us\/answers\/questions\/819902\/krbtgt-rc4-encryption-type<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.reddit.com\/r\/sysadmin\/comments\/ywtxxj\/resetting_krbtgt_password\/\">https:\/\/www.reddit.com\/r\/sysadmin\/comments\/ywtxxj\/resetting_krbtgt_password\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/adsecurity.org\/?p=483\">https:\/\/adsecurity.org\/?p=483<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/itworldjd.wordpress.com\/2025\/04\/07\/krbtgt-account-password-reset-scripts\/\">https:\/\/itworldjd.wordpress.com\/2025\/04\/07\/krbtgt-account-password-reset-scripts\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/frsecure.com\/krbtgt-password-reset-guide\/\">https:\/\/frsecure.com\/krbtgt-password-reset-guide\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The periodic reset of the KRBTGT password is now recommended by Microsoft to be carried out every 180 days. Resetting the password periodically reduces the risks of a Kerbroasting attack being successful. To ensure the KRBTGT password is fully reset you MUST perform this reset operation twice. And you MUST wait a bare minimum of &#8230; <a title=\"Reset Active Directory KRBTGT Password\" class=\"read-more\" href=\"https:\/\/geekmungus.co.uk\/?p=5209\" aria-label=\"Read more about Reset Active Directory KRBTGT Password\">Read more<\/a><\/p>\n","protected":false},"author":4,"featured_media":4367,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27,14],"tags":[],"class_list":["post-5209","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-active-directory","category-microsoft-windows"],"_links":{"self":[{"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/5209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5209"}],"version-history":[{"count":1,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/5209\/revisions"}],"predecessor-version":[{"id":5214,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/5209\/revisions\/5214"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/media\/4367"}],"wp:attachment":[{"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}