| ID | Name |
|---|---|
| T1497.001 | System Checks |
| T1497.002 | User Activity Based Checks |
| T1497.003 | Time Based Checks |
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.
Adversaries may use calls like GetTickCount and GetSystemTimeAsFileTime to discover if they are operating within a virtual machine or sandbox, or may be able to identify a sandbox accelerating time by sampling and calculating the expected value for an environment's timestamp before and after execution of a sleep function.[1]
| ID | Name | Description |
|---|---|---|
| S0584 | AppleJeus |
AppleJeus has waited a specified time before downloading a second stage payload.[2] |
| S0642 | BADFLICK |
BADFLICK has delayed communication to the actor-controlled IP address by 5 minutes.[3] |
| S0534 | Bazar |
Bazar can use a timer to delay execution of core functionality.[4] |
| S0574 | BendyBear |
BendyBear can check for analysis environments and signs of debugging using the Windows API |
| S0268 | Bisonal |
Bisonal has checked if the malware is running in a virtual environment with the anti-debug function GetTickCount() to compare the timing.[6][7] |
| S1063 | Brute Ratel C4 |
Brute Ratel C4 can call |
| S1039 | Bumblebee |
Bumblebee has the ability to set a hardcoded and randomized sleep interval.[10] |
| S0660 | Clambling |
Clambling can wait 30 minutes before initiating contact with C2.[11] |
| S0611 | Clop |
Clop has used the |
| S0115 | Crimson |
Crimson can determine when it has been installed on a host for at least 15 days before downloading the final payload.[13] |
| S1066 | DarkTortilla |
DarkTortilla can implement the |
| S0694 | DRATzarus |
DRATzarus can use the |
| S0554 | Egregor |
Egregor can perform a long sleep (greater than or equal to 3 minutes) to evade detection.[16] |
| S0396 | EvilBunny |
EvilBunny has used time measurements from 3 different APIs before and after performing sleep operations to check and abort if the malware is running in a sandbox.[17] |
| S0512 | FatDuke | |
| S0493 | GoldenSpy |
GoldenSpy's installer has delayed installation of GoldenSpy for two hours after it reaches a victim system.[19] |
| S0588 | GoldMax |
GoldMax has set an execution trigger date and time, stored as an ASCII Unix/Epoch time value.[20] |
| S1138 | Gootloader |
Gootloader can designate a sleep period of more than 22 seconds between stages of infection.[21] |
| S0632 | GrimAgent |
GrimAgent can sleep for 195 - 205 seconds after payload execution and before deleting its task.[22] |
| S0561 | GuLoader |
GuLoader has the ability to perform anti-debugging based on time checks, API calls, and CPUID.[23] |
| S1229 | Havoc |
The Havoc demon agent can be set to sleep for a specified time.[24][25] |
| S0697 | HermeticWiper |
HermeticWiper has the ability to receive a command parameter to sleep prior to carrying out destructive actions on a targeted host.[26] |
| S1132 | IPsec Helper |
IPsec Helper will sleep for a random number of seconds, iterating 200 times over sleeps between one to three seconds, before continuing execution flow.[27] |
| S0513 | LiteDuke |
LiteDuke can wait 30 seconds before executing additional code if security software is detected.[18] |
| S0447 | Lokibot |
Lokibot has performed a time-based anti-debug check before downloading its third stage.[28] |
| S1141 | LunarWeb |
LunarWeb can pause for a number of hours before entering its C2 communication loop.[29] |
| S1059 | metaMain |
metaMain has delayed execution for five to six minutes during its persistence establishment process.[30] |
| S0439 | Okrum |
Okrum's loader can detect presence of an emulator by using two calls to GetTickCount API, and checking whether the time has been accelerated.[31] |
| C0022 | Operation Dream Job |
During Operation Dream Job, Lazarus Group used tools that collected |
| S0626 | P8RAT |
P8RAT has the ability to "sleep" for a specified time to evade detection.[32] |
| S0453 | Pony |
Pony has delayed execution using a built-in function to avoid detection and analysis.[33] |
| S0650 | QakBot |
The QakBot dropper can delay dropping the payload to evade detection.[34][35] |
| S0565 | Raindrop |
After initial installation, Raindrop runs a computation to delay execution.[36] |
| S1212 | RansomHub |
RansomHub can sleep for a set number of minutes before beginning execution.[37] |
| S1018 | Saint Bot |
Saint Bot has used the command |
| S1086 | Snip3 |
Snip3 can execute |
| S0627 | SodaMaster |
SodaMaster has the ability to put itself to "sleep" for a specified time.[32] |
| S1034 | StrifeWater |
StrifeWater can modify its sleep time responses from the default of 20-22 seconds.[40] |
| S0559 | SUNBURST |
SUNBURST remained dormant after initial access for a period of up to two weeks.[41] |
| S1064 | SVCReady |
SVCReady can enter a sleep stage for 30 minutes to evade detection.[42] |
| S0595 | ThiefQuest |
ThiefQuest invokes |
| S0671 | Tomiris |
Tomiris has the ability to sleep for at least nine minutes to evade sandbox-based analysis systems.[44] |
| S0266 | TrickBot |
TrickBot has used |
| S0386 | Ursnif |
Ursnif has used a 30 minute delay after execution to evade sandbox monitoring tools.[46] |
| S0689 | WhisperGate |
WhisperGate can pause for 20 seconds to bypass antivirus solutions.[47][48] |
| S0658 | XCSSET |
Using the machine's local time, XCSSET waits 43200 seconds (12 hours) from the initial creation timestamp of a specific file, |
This type of attack technique cannot be easily mitigated with preventive controls since it is based on the abuse of system features.
| ID | Name | Analytic ID | Analytic Description |
|---|---|---|---|
| DET0141 | Detect Time-Based Evasion via Sleep, Timer Loops, and Delayed Execution | AN0396 |
Process creation involving suspicious delays (e.g., Sleep, ping -n loops, WaitForSingleObject), followed by sensitive system access or lateral movement behaviors. |
| AN0397 |
Script-based execution of sleep loops or time delay commands (e.g., sleep, ping delay, while-loops) followed by file creation or network connections. |
||
| AN0398 |
Use of |