During Operation Dream Job, Lazarus Group used tools that collected GetTickCount and GetSystemTimeAsFileTime data to detect sandbox or VMware services.1
Time Based Checks T1497.003
- Platforms
- Linux, macOS, Windows
- Version
- 3.0
- Created
- 06 March 2020
- Last modified
- 12 May 2026
- Contributors
- Deloitte Threat Library Team; Jeff Felling, Red Canary; Jorge Orchilles, SCYTHE; Ruben Dodge, @shotgunner101
Adversaries may employ various time-based methods to detect virtualization and analysis environments, particularly those that attempt to manipulate time mechanisms to simulate longer elapses of time. This may include enumerating time-based properties, such as uptime or the system clock.
Time Based Checks MITRE reference T1497.003
1 campaign has been recorded using this technique. Listed newest first; dates are year-granularity and attribution is MITRE’s.
All 1 campaigns for this technique
48 software entries are documented implementing this technique. MITRE files each as a tool or as malware; newest first, then by how many groups carry them.
Has leveraged a Sleep setting of five minutes before executing tasks to evade sandbox environments.1
Can sleep randomly between 30 and 60 seconds to avoid behavioral analysis.1
Has the ability to hide phishing lures for a set time to avoid scanning by sandboxes.1
The Havoc demon agent can be set to sleep for a specified time.12
Can sleep for a set number of minutes before beginning execution.1
Can pause for a number of hours before entering its C2 communication loop.1
All 48 software entries for this technique · 6 newest in this preview
Offense vs defense T1497.003
Is defensive coverage keeping up with adversary use? Eight counts, each ranked against all 697 ATT&CK techniques. Attack sits left, defense right, so a shape leaning left means adversaries are better documented here than defenders are equipped. Hover any spoke for its percentile and the share of techniques that have more. The timeline below shows when each side arrived.
How it got here
Adversary activity (campaign spans) over cumulative rule output. Each source is plotted independently from zero, so neither line includes the other. Campaign dates are year-granularity.
Time Based Checks detection strategy DET0141
MITRE names one behaviour worth catching for this technique and breaks it into 3 analytics, one per platform. Each carries the log sources it needs and the fields you tune per environment.
Detect Time-Based Evasion via Sleep, Timer Loops, and Delayed Execution
AN0396 · Windows
Process creation involving suspicious delays (e.g., Sleep, ping -n loops, WaitForSingleObject), followed by sensitive system access or lateral movement behaviors.
Log sources
The data this analytic draws on. You do not need every component — each one you already collect covers part of it. Each links to its ATT&CK record.
| Data component | Name | Channel |
|---|---|---|
| Module LoadDC0016 | WinEventLog:Sysmon | EventCode=7 |
| Process CreationDC0032 | WinEventLog:Sysmon | EventCode=1 |
Tunable fields
MITRE calls these the analytic’s mutable elements: the thresholds and filters you set for your own environment.
| Field | What you tune |
|---|---|
| SleepDurationThreshold | Defines maximum allowable sleep duration in milliseconds before triggering anomaly detection. |
| TimeBetweenExecutionAndNextStage | Temporal window between initial process and next stage (e.g., lateral movement or persistence), used to correlate dormant activity. |
| UserContext | Whether the activity occurs in SYSTEM or user context may affect legitimacy scoring. |
AN0397 · Linux
Script-based execution of sleep loops or time delay commands (e.g., sleep, ping delay, while-loops) followed by file creation or network connections.
Log sources
The data this analytic draws on. You do not need every component — each one you already collect covers part of it. Each links to its ATT&CK record.
| Data component | Name | Channel |
|---|---|---|
| Process CreationDC0032 | auditd:SYSCALL | execve of sleep or ping command within script interpreted by bash/python |
| File MetadataDC0059 | auditd:SYSCALL | file write after sleep delay |
Tunable fields
MITRE calls these the analytic’s mutable elements: the thresholds and filters you set for your own environment.
| Field | What you tune |
|---|---|
| SleepLoopCount | Defines how many loop iterations or sleep cycles are considered anomalous in the monitored environment. |
| ExecutionScriptType | Identifies which scripting interpreter is used (e.g., bash, python, perl) to adjust detection logic. |
AN0398 · macOS
Use of usleep, nanosleep, or NSTimer calls in executables or binaries with no GUI interaction, especially followed by disk/network activity.
Log sources
The data this analytic draws on. You do not need every component — each one you already collect covers part of it. Each links to its ATT&CK record.
| Data component | Name | Channel |
|---|---|---|
| OS API ExecutionDC0021 | macos:unifiedlog | application logs referencing NSTimer, sleep, or launchd delays |
| Process CreationDC0032 | WinEventLog:Sysmon | EventCode=1 |
Tunable fields
MITRE calls these the analytic’s mutable elements: the thresholds and filters you set for your own environment.
| Field | What you tune |
|---|---|
| AppBundleIdentifier | Correlate with known/expected signed apps vs. unsigned binaries to reduce noise. |
| TimeToNextEvent | Minimum time expected between process start and observable I/O for normal apps. |
Tests from Atomic Red Team (MIT licence) · technique definition