ANAVEM
Languagefr
Windows security monitoring dashboard displaying Event ID 4935 password reset security alerts
Event ID 4935WarningMicrosoft-Windows-Security-AuditingWindows

Windows Event ID 4935 – Microsoft-Windows-Security-Auditing: Maximum Daily Password Reset Attempts Exceeded

Event ID 4935 fires when a user account exceeds the maximum allowed password reset attempts within a 24-hour period, triggering security lockout mechanisms to prevent brute force attacks.

Emanuel DE ALMEIDAEmanuel DE ALMEIDA
18 March 202612 min read 0
Event ID 4935Microsoft-Windows-Security-Auditing 5 methods 12 min
Event Reference

What This Event Means

Windows Event ID 4935 serves as a critical security indicator within the Microsoft-Windows-Security-Auditing framework, specifically designed to detect and log excessive password reset attempts that could indicate malicious activity. This event is generated by the Local Security Authority (LSA) when the number of password reset requests for a specific user account exceeds the configured daily threshold.

The event mechanism operates independently of standard account lockout policies, focusing specifically on password reset operations. This separation ensures that legitimate authentication attempts aren't affected by password reset abuse, while still providing protection against attackers who might exploit self-service password reset functionality.

When this event fires, Windows temporarily blocks further password reset attempts for the affected account, typically for a 24-hour period. The exact duration and threshold values are configurable through Group Policy or local security policy settings. The event log entry includes comprehensive details such as the target account name, the source IP address or workstation name, and the timestamp of the triggering attempt.

In modern Windows environments, particularly those integrated with Azure AD or hybrid identity solutions, this event becomes increasingly important as password reset functionality is often exposed through web portals and mobile applications. The event helps administrators identify potential security threats while maintaining usability for legitimate users who may occasionally need to reset their passwords.

Applies to

Windows 10Windows 11Windows Server 2019/2022/2025
Analysis

Possible Causes

  • User repeatedly attempting to reset password due to confusion about current password requirements
  • Automated password management tools misconfigured with incorrect credentials
  • Brute force attacks targeting self-service password reset portals
  • Malicious actors attempting to exploit password reset functionality for account takeover
  • Service accounts with automated password reset scripts encountering authentication issues
  • Integration issues between identity providers causing repeated reset attempts
  • Mobile applications or cached credentials triggering multiple reset requests
  • Phishing attacks where victims repeatedly attempt to reset compromised accounts
Resolution Methods

Troubleshooting Steps

01

Review Security Event Details

Start by examining the specific details of Event ID 4935 to understand the scope and source of the password reset attempts.

  1. Open Event ViewerWindows LogsSecurity
  2. Filter for Event ID 4935 using the following PowerShell command:
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4935} -MaxEvents 50 | Format-Table TimeCreated, Id, LevelDisplayName, Message -Wrap
  1. Examine the event details for:
    • Target account name and domain
    • Source workstation or IP address
    • Timestamp patterns indicating frequency
    • Associated logon type information
  2. Cross-reference with Event ID 4625 (failed logon attempts) to identify coordinated attacks:
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625,4935; StartTime=(Get-Date).AddHours(-24)} | Sort-Object TimeCreated
Pro tip: Look for patterns in timing between events - legitimate users typically space out reset attempts, while automated attacks show consistent intervals.
02

Check Password Reset Policy Configuration

Verify and adjust the password reset attempt thresholds to balance security with usability.

  1. Open Local Security Policy or Group Policy Management Console
  2. Navigate to Computer ConfigurationWindows SettingsSecurity SettingsAccount PoliciesAccount Lockout Policy
  3. Review the following settings:
    • Account lockout threshold
    • Account lockout duration
    • Reset account lockout counter after
  4. Check the registry for password reset specific settings:
Get-ItemProperty -Path "HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" -Name "MaximumPasswordAge" -ErrorAction SilentlyContinue
  1. For domain environments, verify Group Policy settings:
gpresult /h C:\temp\gpresult.html
  1. Review Azure AD Connect settings if using hybrid identity:
Get-ADSyncScheduler
Warning: Modifying lockout policies affects all users. Test changes in a non-production environment first.
03

Investigate Source IP and Network Activity

Analyze the network source of password reset attempts to identify potential threats or compromised systems.

  1. Extract source IP addresses from Event ID 4935 entries:
$Events = Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4935; StartTime=(Get-Date).AddDays(-7)}
$Events | ForEach-Object {
    $XML = [xml]$_.ToXml()
    [PSCustomObject]@{
        TimeCreated = $_.TimeCreated
        TargetUserName = $XML.Event.EventData.Data | Where-Object {$_.Name -eq 'TargetUserName'} | Select-Object -ExpandProperty '#text'
        WorkstationName = $XML.Event.EventData.Data | Where-Object {$_.Name -eq 'WorkstationName'} | Select-Object -ExpandProperty '#text'
        IpAddress = $XML.Event.EventData.Data | Where-Object {$_.Name -eq 'IpAddress'} | Select-Object -ExpandProperty '#text'
    }
} | Group-Object IpAddress | Sort-Object Count -Descending
  1. Check Windows Firewall logs for additional context:
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Windows Firewall With Advanced Security/Firewall'; StartTime=(Get-Date).AddHours(-24)} | Where-Object {$_.Message -like '*password*' -or $_.Message -like '*reset*'}
  1. Review IIS logs if running web-based password reset portals:
Get-Content "C:\inetpub\logs\LogFiles\W3SVC1\*.log" | Select-String "password|reset" | Select-Object -Last 50
  1. Use netstat to check for suspicious connections:
netstat -an | findstr :443
Pro tip: Correlate IP addresses with threat intelligence feeds or check them against known malicious IP databases.
04

Implement Enhanced Monitoring and Alerting

Set up proactive monitoring to detect and respond to password reset abuse patterns before they impact users.

  1. Create a custom Windows Event Forwarding subscription for Event ID 4935:
<Subscription xmlns="http://schemas.microsoft.com/2006/03/windows/events/subscription">
    <SubscriptionId>PasswordResetMonitoring</SubscriptionId>
    <SubscriptionType>SourceInitiated</SubscriptionType>
    <Description>Monitor excessive password reset attempts</Description>
    <Enabled>true</Enabled>
    <Uri>http://schemas.microsoft.com/wbem/wsman/1/windows/EventLog</Uri>
    <Query><![CDATA[
        <QueryList>
            <Query Id="0">
                <Select Path="Security">*[System[(EventID=4935)]]</Select>
            </Query>
        </QueryList>
    ]]></Query>
</Subscription>
  1. Create a PowerShell script for automated alerting:
# Save as Monitor-PasswordResetAbuse.ps1
$Events = Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4935; StartTime=(Get-Date).AddMinutes(-15)}
if ($Events.Count -gt 5) {
    $AlertMessage = "High volume of password reset attempts detected: $($Events.Count) events in last 15 minutes"
    Write-EventLog -LogName Application -Source "Password Reset Monitor" -EventId 9999 -EntryType Warning -Message $AlertMessage
    # Send email alert
    Send-MailMessage -To "admin@company.com" -From "monitor@company.com" -Subject "Password Reset Alert" -Body $AlertMessage -SmtpServer "mail.company.com"
}
  1. Schedule the monitoring script using Task Scheduler:
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\Monitor-PasswordResetAbuse.ps1"
$Trigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Minutes 15) -RepetitionDuration (New-TimeSpan -Days 365) -At (Get-Date)
$Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable
Register-ScheduledTask -TaskName "Password Reset Monitoring" -Action $Action -Trigger $Trigger -Settings $Settings -User "SYSTEM"
  1. Configure Windows Event Log size to ensure retention:
wevtutil sl Security /ms:1073741824
05

Implement Account Protection and Recovery Procedures

Deploy comprehensive account protection measures and establish procedures for handling password reset abuse incidents.

  1. Enable Advanced Threat Analytics (ATA) or Microsoft Defender for Identity monitoring:
# Check if Defender for Identity sensor is installed
Get-Service -Name "AATPSensor" -ErrorAction SilentlyContinue
  1. Implement Conditional Access policies for password reset operations (Azure AD environments):
# Connect to Azure AD
Connect-AzureAD
# Review existing Conditional Access policies
Get-AzureADMSConditionalAccessPolicy | Where-Object {$_.Conditions.Applications.IncludeApplications -contains "All"}
  1. Configure account lockout exemptions for service accounts:
# Add service accounts to lockout exemption group
$ServiceAccounts = @("svc-backup", "svc-monitoring", "svc-app")
foreach ($Account in $ServiceAccounts) {
    Add-ADGroupMember -Identity "Lockout Exempt Accounts" -Members $Account -ErrorAction SilentlyContinue
}
  1. Create incident response procedures:
# Automated account protection script
function Protect-CompromisedAccount {
    param([string]$Username)
    
    # Disable account temporarily
    Disable-ADAccount -Identity $Username
    
    # Force password reset
    Set-ADUser -Identity $Username -ChangePasswordAtLogon $true
    
    # Log the action
    Write-EventLog -LogName Application -Source "Security Response" -EventId 8888 -EntryType Information -Message "Account $Username protected due to password reset abuse"
    
    # Notify security team
    Send-MailMessage -To "security@company.com" -From "automated-response@company.com" -Subject "Account Protection: $Username" -Body "Account $Username has been temporarily disabled due to excessive password reset attempts." -SmtpServer "mail.company.com"
}
  1. Implement multi-factor authentication for password reset operations:
# Check MFA status for users experiencing reset abuse
Get-MsolUser | Where-Object {$_.StrongAuthenticationRequirements.State -ne "Enforced"} | Select-Object UserPrincipalName, @{Name="MFAStatus";Expression={$_.StrongAuthenticationRequirements.State}}
Warning: Automated account protection can impact legitimate users. Ensure proper approval workflows and rollback procedures are in place.

Overview

Event ID 4935 appears in the Security log when Windows detects that a user account has exceeded the configured maximum number of password reset attempts within a 24-hour window. This security mechanism prevents automated brute force attacks against user accounts by temporarily blocking further password reset requests.

The event fires as part of Windows' built-in account lockout protection, specifically targeting password reset operations rather than standard authentication attempts. This distinction is crucial because password reset attempts often bypass traditional account lockout policies that apply to regular login failures.

You'll typically see this event in environments with self-service password reset portals, automated password management systems, or when attackers attempt to exploit password reset functionality. The event provides detailed information about the affected account, the source of the attempts, and the configured threshold that was exceeded.

This event requires immediate investigation as it often indicates either legitimate user confusion about password reset procedures or malicious activity targeting your organization's accounts. The timing and frequency of these events can reveal patterns that help distinguish between user error and coordinated attacks.

Frequently Asked Questions

What does Event ID 4935 mean and why should I be concerned?+
Event ID 4935 indicates that a user account has exceeded the maximum allowed password reset attempts within a 24-hour period. This is concerning because it often signals either a brute force attack targeting your password reset functionality or a compromised account being exploited. Unlike regular login failures, password reset abuse can bypass traditional account lockout mechanisms, making this event a critical security indicator that requires immediate investigation.
How can I distinguish between legitimate user confusion and malicious activity when seeing Event ID 4935?+
Legitimate users typically show irregular timing patterns with longer intervals between reset attempts, often during business hours, and usually from consistent IP addresses or workstations. Malicious activity displays automated patterns with consistent intervals (every few seconds or minutes), occurs at unusual hours, originates from multiple or suspicious IP addresses, and often targets multiple accounts simultaneously. Check the event details for source IP, timing patterns, and cross-reference with other security events like 4625 (failed logons) to build a complete picture.
What are the default thresholds for password reset attempts before Event ID 4935 triggers?+
Windows doesn't have a universal default threshold for password reset attempts as this varies by implementation and configuration. The threshold is typically configured through Group Policy under Account Lockout Policy settings or within specific applications like self-service password reset portals. Common enterprise configurations range from 3-10 attempts per 24-hour period. You can check your current settings in Local Security Policy under Account Policies → Account Lockout Policy, or use PowerShell to query registry values under HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters.
Can Event ID 4935 be triggered by service accounts or automated systems?+
Yes, service accounts and automated systems can trigger Event ID 4935 if they're configured with incorrect credentials or encounter authentication issues that cause repeated password reset attempts. This commonly occurs with password management tools, automated backup systems, or applications that cache credentials. To prevent false positives, consider adding service accounts to lockout exemption groups, implementing proper credential management for automated systems, and configuring monitoring to distinguish between service account and user account events.
How should I respond when Event ID 4935 appears for multiple accounts simultaneously?+
Multiple simultaneous Event ID 4935 occurrences typically indicate a coordinated attack or system-wide issue. Immediately investigate the source IP addresses and timing patterns to determine if it's malicious activity. If confirmed as an attack, implement emergency measures: block suspicious IP addresses at the firewall, temporarily disable affected accounts if necessary, force password resets for potentially compromised accounts, and notify your security team. Also check for related events like 4625 (failed logons) and review authentication logs from web applications or identity providers to understand the full scope of the incident.
Documentation

References (2)

Emanuel DE ALMEIDA
Written by

Emanuel DE ALMEIDA

Senior IT Journalist & Cloud Architect

Microsoft MCSA-certified Cloud Architect | Fortinet-focused. I modernize cloud, hybrid & on-prem infrastructure for reliability, security, performance and cost control - sharing field-tested ops & troubleshooting.

Discussion

Share your thoughts and insights

You must be logged in to comment.

Loading comments...