Detect Time Providers in Elastic Security
Adversaries may abuse time providers to execute DLLs when the system boots. The Windows Time service (W32Time) enables time synchronization across and within domains. W32Time time providers are implemented as DLLs registered in the subkeys of HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W32Time\TimeProviders\. The time provider manager loads and starts time providers listed under this key at system startup. Adversaries may create a new subkey pointing to a malicious DLL in the DllName value. Administrator privileges are required for time provider registration, though execution runs in context of the Local Service account.
MITRE ATT&CK
- Tactic
- Persistence Privilege Escalation
- Technique
- T1547 Boot or Logon Autostart Execution
- Sub-technique
- T1547.003 Time Providers
- Canonical reference
- https://attack.mitre.org/techniques/T1547/003/
Elastic Detection Query
registry where registry.path : "*\\Services\\W32Time\\TimeProviders\\*" and (event.action == "registry_key_created" or event.action == "registry_value_set") and not registry.data.strings : ("*w32time.dll*", "*vmictimeprovider.dll*") Detects modifications to the W32Time Time Providers registry path where a non-standard DLL is registered, indicating potential abuse of Windows Time Service for persistence.
Data Sources
Required Tables
False Positives & Tuning
- Legitimate third-party time synchronization software registering custom time provider DLLs (e.g., enterprise NTP solutions)
- VMware Tools or hypervisor guest additions installing or updating vmictimeprovider.dll equivalents under new subkey names
- System administrators deploying custom time sync solutions in environments with strict time accuracy requirements such as financial or ICS networks
Other platforms for T1547.003
Testing Methodology
Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1Register Malicious Time Provider via Registry
Expected signal: Sysmon Event ID 12: Key created for df00techTestProvider. Sysmon Event ID 13: Value set for DllName, Enabled, and InputProvider. MDE DeviceRegistryEvents for all three operations.
- Test 2Enumerate Existing Time Providers
Expected signal: Sysmon Event ID 1: Process creation for reg.exe. No registry modification events.
- Test 3Register Time Provider and Restart W32Time
Expected signal: Sysmon Event ID 12/13 for registry operations. System Event ID 7036 for W32Time service state changes. If the DLL existed, Sysmon Event ID 7 would show it being loaded by svchost.exe hosting W32Time.
References (5)
- https://attack.mitre.org/techniques/T1547/003/
- https://msdn.microsoft.com/library/windows/desktop/ms725475.aspx
- https://docs.microsoft.com/windows-server/networking/windows-time-service/windows-time-service-top
- https://github.com/scottlundgren/w32time
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1547.003/T1547.003.md
Unlock Pro Content
Get the full detection package for T1547.003 including response playbook, investigation guide, and atomic red team tests.