Thanks to all of our ATT&CKcon participants. All sessions are here, and individual presentations will be posted soon.

Time Providers

The Windows Time service (W32Time) enables time synchronization across and within domains. [1] W32Time time providers are responsible for retrieving time stamps from hardware/network resources and outputting these values to other network clients. [2]

Time providers are implemented as dynamic-link libraries (DLLs) that are registered in the subkeys of HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W32Time\TimeProviders\. [2] The time provider manager, directed by the service control manager, loads and starts time providers listed and enabled under this key at system startup and/or whenever parameters are changed. [2]

Adversaries may abuse this architecture to establish Persistence, specifically by registering and enabling a malicious DLL as a time provider. Administrator privileges are required for time provider registration, though execution will run in context of the Local Service account. [3]

ID: T1209

Tactic: Persistence

Platform:  Windows

Permissions Required:  Administrator, SYSTEM

Data Sources:  API monitoring, Binary file metadata, DLL monitoring, File monitoring, Loaded DLLs, Process monitoring

Contributors:  Scott Lundgren, @5twenty9, Carbon Black

Version: 1.0

Mitigation

Identify and block potentially malicious software that may be executed as a time provider by using whitelisting [4] tools, like AppLocker, [5] [6] that are capable of auditing and/or blocking unknown DLLs.

Consider using Group Policy to configure and block subsequent modifications to W32Time parameters. [7]

Detection

Baseline values and monitor/analyze activity related to modifying W32Time information in the Registry, including application programming interface (API) calls such as RegCreateKeyEx and RegSetValueEx as well as execution of the W32tm.exe utility. [7] There is no restriction on the number of custom time providers registrations, though each may require a DLL payload written to disk. [3]

The Sysinternals Autoruns tool may also be used to analyze auto-starting locations, including DLLs listed as time providers. [8]

References