ANAVEM
Languagefr
Windows Event Viewer displaying system time change events on a professional monitoring dashboard
Event ID 903InformationMicrosoft-Windows-Kernel-GeneralWindows

Windows Event ID 903 – Microsoft-Windows-Kernel-General: System Time Changed

Event ID 903 indicates the system time has been changed, either manually by a user or automatically through time synchronization services. Critical for security auditing and compliance tracking.

Emanuel DE ALMEIDAEmanuel DE ALMEIDA
18 March 202612 min read 0
Event ID 903Microsoft-Windows-Kernel-General 5 methods 12 min
Event Reference

What This Event Means

Event ID 903 is generated by the Windows kernel whenever the system clock undergoes a time change that exceeds the normal drift correction threshold. The event captures comprehensive details including the old time value, new time value, and the security identifier of the process or service that initiated the change.

This event plays a critical role in maintaining audit trails for time-sensitive operations. In Active Directory environments, time synchronization is essential for Kerberos authentication, which requires client and server clocks to be within five minutes of each other by default. When Event ID 903 appears frequently, it often indicates underlying issues with time synchronization infrastructure or potential security concerns.

The event data includes precise timestamps in UTC format, making it suitable for correlation across multiple systems in different time zones. Security teams rely on this event to detect unauthorized time modifications that could be used to circumvent time-based security controls or obscure the timeline of malicious activities.

Modern Windows systems generate this event not only for manual changes but also for significant automatic corrections performed by the Windows Time service, hardware clock adjustments, and time zone changes that affect the system's perception of absolute time.

Applies to

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

Possible Causes

  • Manual time adjustment through Windows Date & Time settings
  • Automatic time synchronization by Windows Time service (W32Time)
  • Time zone changes that affect system time calculation
  • Hardware clock drift correction exceeding normal thresholds
  • Group Policy-enforced time synchronization updates
  • Third-party time synchronization software modifications
  • System recovery operations that restore previous time settings
  • Virtual machine time synchronization with hypervisor host
  • Network Time Protocol (NTP) server synchronization events
Resolution Methods

Troubleshooting Steps

01

Review Event Details in Event Viewer

Start by examining the specific details of Event ID 903 to understand what triggered the time change.

  1. Open Event Viewer by pressing Win + R, typing eventvwr.msc, and pressing Enter
  2. Navigate to Windows LogsSystem
  3. Filter for Event ID 903 by right-clicking the System log and selecting Filter Current Log
  4. Enter 903 in the Event IDs field and click OK
  5. Double-click on recent Event ID 903 entries to view detailed information
  6. Note the Old Time and New Time values in the event data
  7. Check the Process ID and Process Name to identify what caused the change

Use PowerShell to query multiple events efficiently:

Get-WinEvent -FilterHashtable @{LogName='System'; Id=903} -MaxEvents 20 | Select-Object TimeCreated, Id, LevelDisplayName, Message | Format-Table -Wrap
02

Analyze Time Synchronization Configuration

Investigate the Windows Time service configuration to determine if automatic synchronization is causing frequent time changes.

  1. Open an elevated Command Prompt or PowerShell session
  2. Check the current time service configuration:
w32tm /query /configuration
  1. Review the time synchronization status:
w32tm /query /status
  1. Check time synchronization peers:
w32tm /query /peers
  1. For domain-joined computers, verify domain hierarchy synchronization:
w32tm /query /source
  1. Review Group Policy settings affecting time synchronization in Computer Configuration\Administrative Templates\System\Windows Time Service
  2. Check the registry for time service configuration at HKLM\SYSTEM\CurrentControlSet\Services\W32Time
Pro tip: Use w32tm /stripchart /computer:time.windows.com to test connectivity to external time servers and measure time drift.
03

Monitor Time Change Patterns with PowerShell

Create a comprehensive analysis of time change patterns to identify trends and potential issues.

  1. Use PowerShell to extract detailed time change information:
# Get Event ID 903 entries from the last 30 days
$Events = Get-WinEvent -FilterHashtable @{LogName='System'; Id=903; StartTime=(Get-Date).AddDays(-30)}

# Parse event data for analysis
$TimeChanges = foreach ($Event in $Events) {
    $EventXML = [xml]$Event.ToXml()
    $OldTime = $EventXML.Event.EventData.Data | Where-Object {$_.Name -eq 'OldTime'} | Select-Object -ExpandProperty '#text'
    $NewTime = $EventXML.Event.EventData.Data | Where-Object {$_.Name -eq 'NewTime'} | Select-Object -ExpandProperty '#text'
    
    [PSCustomObject]@{
        TimeCreated = $Event.TimeCreated
        OldTime = [DateTime]::FromFileTime($OldTime)
        NewTime = [DateTime]::FromFileTime($NewTime)
        TimeDifference = ([DateTime]::FromFileTime($NewTime) - [DateTime]::FromFileTime($OldTime)).TotalSeconds
    }
}

# Display results
$TimeChanges | Sort-Object TimeCreated -Descending | Format-Table -AutoSize
  1. Analyze the frequency and magnitude of time changes:
# Group by day to identify patterns
$TimeChanges | Group-Object {$_.TimeCreated.Date} | Select-Object Name, Count | Sort-Object Name -Descending
  1. Export results for further analysis:
$TimeChanges | Export-Csv -Path "C:\Temp\TimeChanges.csv" -NoTypeInformation
04

Configure Time Change Auditing and Alerts

Set up comprehensive monitoring to track and alert on suspicious time changes for security purposes.

  1. Enable advanced audit policy for time changes using Group Policy or local security policy:
  2. Open Local Security Policy (secpol.msc) or Group Policy Management
  3. Navigate to Computer ConfigurationWindows SettingsSecurity SettingsAdvanced Audit Policy Configuration
  4. Enable Audit System Integrity under System category
  5. Create a PowerShell script for real-time monitoring:
# Real-time Event ID 903 monitor
Register-WmiEvent -Query "SELECT * FROM Win32_NTLogEvent WHERE LogFile='System' AND EventCode=903" -Action {
    $Event = $Event.SourceEventArgs.NewEvent
    $Message = "Time change detected at {0}: {1}" -f $Event.TimeGenerated, $Event.Message
    Write-Host $Message -ForegroundColor Yellow
    
    # Optional: Send email alert or log to custom location
    Add-Content -Path "C:\Logs\TimeChangeAlerts.log" -Value "$(Get-Date): $Message"
}
  1. Configure Windows Event Forwarding (WEF) to centralize time change events:
# Configure event forwarding subscription
wecutil cs TimeChangeSubscription.xml
  1. Set up Task Scheduler to trigger actions on Event ID 903:
  2. Open Task Scheduler and create a new task
  3. Set trigger to On an event with Log: System, Source: Microsoft-Windows-Kernel-General, Event ID: 903
  4. Configure appropriate actions such as running scripts or sending notifications
05

Investigate Security Implications and Forensic Analysis

Perform advanced analysis to determine if time changes represent security threats or compliance violations.

  1. Correlate Event ID 903 with security events using PowerShell:
# Correlate time changes with logon events
$TimeChanges = Get-WinEvent -FilterHashtable @{LogName='System'; Id=903; StartTime=(Get-Date).AddDays(-7)}
$LogonEvents = Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624,4625; StartTime=(Get-Date).AddDays(-7)}

# Find logon events within 5 minutes of time changes
foreach ($TimeChange in $TimeChanges) {
    $StartWindow = $TimeChange.TimeCreated.AddMinutes(-5)
    $EndWindow = $TimeChange.TimeCreated.AddMinutes(5)
    
    $RelatedLogons = $LogonEvents | Where-Object {
        $_.TimeCreated -ge $StartWindow -and $_.TimeCreated -le $EndWindow
    }
    
    if ($RelatedLogons) {
        Write-Host "Time change at $($TimeChange.TimeCreated) correlates with $($RelatedLogons.Count) logon events" -ForegroundColor Red
    }
}
  1. Check for privilege escalation attempts around time changes:
# Look for privilege use events (4672, 4673, 4674)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4672,4673,4674; StartTime=(Get-Date).AddDays(-7)} | Where-Object {
    $TimeChange = $TimeChanges | Where-Object {[Math]::Abs(($_.TimeCreated - $Event.TimeCreated).TotalMinutes) -lt 10}
    return $TimeChange -ne $null
}
  1. Analyze process execution context for time changes:
# Extract process information from Event ID 903
$Events = Get-WinEvent -FilterHashtable @{LogName='System'; Id=903} -MaxEvents 50
foreach ($Event in $Events) {
    $EventXML = [xml]$Event.ToXml()
    $ProcessId = $EventXML.Event.EventData.Data | Where-Object {$_.Name -eq 'ProcessId'} | Select-Object -ExpandProperty '#text'
    $ProcessName = $EventXML.Event.EventData.Data | Where-Object {$_.Name -eq 'ProcessName'} | Select-Object -ExpandProperty '#text'
    
    Write-Host "Time changed by Process: $ProcessName (PID: $ProcessId) at $($Event.TimeCreated)"
}
  1. Review registry modifications related to time settings:
  2. Check HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation for unauthorized changes
  3. Monitor HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters for configuration tampering
  4. Use Process Monitor (ProcMon) to track real-time registry access to time-related keys
Warning: Frequent manual time changes may indicate attempts to circumvent time-based security controls or audit log tampering. Investigate thoroughly in security-sensitive environments.

Overview

Event ID 903 from the Microsoft-Windows-Kernel-General source fires whenever the system time is modified on a Windows machine. This event captures both manual time changes performed by users through the Date & Time settings and automatic adjustments made by the Windows Time service (W32Time) during synchronization with domain controllers or external time servers.

The event appears in the System log and provides detailed information about the time change, including the previous time, new time, and the process responsible for the modification. This makes it invaluable for security auditing, compliance monitoring, and troubleshooting time-related issues that can affect authentication protocols like Kerberos.

In enterprise environments, frequent Event ID 903 entries may indicate misconfigured time synchronization, manual tampering, or underlying hardware issues with the system clock. The event becomes particularly important in forensic investigations where establishing accurate timelines is crucial for incident response and compliance reporting.

Frequently Asked Questions

What does Event ID 903 mean and why should I care about it?+
Event ID 903 indicates that the system time has been changed on your Windows machine. This event is crucial for security auditing because time changes can affect authentication protocols like Kerberos, potentially disrupt time-based security controls, and may indicate unauthorized system tampering. In compliance environments, tracking time changes is often mandatory for audit trails and forensic investigations.
How can I tell if Event ID 903 was caused by automatic time sync or manual changes?+
Check the Process Name field in the event details. Automatic synchronization typically shows 'svchost.exe' or 'w32tm.exe' as the process, while manual changes usually show 'explorer.exe' or 'timedate.cpl'. You can also correlate the timing with Windows Time service logs and use 'w32tm /query /status' to check if automatic synchronization is active. Additionally, examine the magnitude of the time change - small adjustments (seconds or minutes) are typically automatic, while large changes often indicate manual intervention.
Is it normal to see multiple Event ID 903 entries per day?+
The frequency depends on your environment configuration. In properly configured domain environments, you should see minimal Event ID 903 entries - perhaps one or two per day for minor drift corrections. However, systems with poor time synchronization, virtual machines with time sync issues, or standalone computers may generate more frequent entries. More than 10-15 entries per day typically indicates a configuration problem that needs investigation.
Can Event ID 903 help me detect security breaches or unauthorized access?+
Yes, Event ID 903 can be valuable for security monitoring. Attackers sometimes manipulate system time to evade time-based security controls, interfere with log correlation, or bypass certificate validity checks. Look for suspicious patterns like time changes during off-hours, large backward time adjustments, or time changes that correlate with failed authentication attempts. Combine Event ID 903 analysis with security event logs (4624, 4625, 4672) to identify potential security incidents.
How do I stop getting too many Event ID 903 entries from automatic time synchronization?+
First, identify the root cause using 'w32tm /query /status' and 'w32tm /query /configuration'. Common solutions include: configuring proper NTP servers in Group Policy, adjusting the time synchronization frequency using 'w32tm /config /update-interval:3600', ensuring network connectivity to time servers, and fixing hardware clock issues. For virtual machines, configure proper time synchronization with the hypervisor. You can also adjust the time change threshold that triggers Event ID 903 by modifying registry settings under HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config, though this should be done carefully to maintain audit compliance.
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...