| ID | Name |
|---|---|
| T1053.002 | At |
| T1053.003 | Cron |
| T1053.005 | Scheduled Task |
| T1053.006 | Systemd Timers |
| T1053.007 | Container Orchestration Job |
Adversaries may abuse the Windows Task Scheduler to perform task scheduling for initial or recurring execution of malicious code. There are multiple ways to access the Task Scheduler in Windows. The schtasks utility can be run directly on the command line, or the Task Scheduler can be opened through the GUI within the Administrator Tools section of the Control Panel.[1] In some cases, adversaries have used a .NET wrapper for the Windows Task Scheduler, and alternatively, adversaries have used the Windows netapi32 library and Windows Management Instrumentation (WMI) to create a scheduled task. Adversaries may also utilize the Powershell Cmdlet Invoke-CimMethod, which leverages WMI class PS_ScheduledTask to create a scheduled task via an XML path.[2]
An adversary may use Windows Task Scheduler to execute programs at system startup or on a scheduled basis for persistence. The Windows Task Scheduler can also be abused to conduct remote Execution as part of Lateral Movement and/or to run a process under the context of a specified account (such as SYSTEM). Similar to System Binary Proxy Execution, adversaries have also abused the Windows Task Scheduler to potentially mask one-time execution under signed/trusted system processes.[3]
Adversaries may also create "hidden" scheduled tasks (i.e. Hide Artifacts) that may not be visible to defender tools and manual queries used to enumerate tasks. Specifically, an adversary may hide a task from schtasks /query and the Task Scheduler by deleting the associated Security Descriptor (SD) registry value (where deletion of this value must be completed using SYSTEM permissions).[4][5] Adversaries may also employ alternate methods to hide tasks, such as altering the metadata (e.g., Index value) within associated registry keys.[6]
| ID | Name | Description |
|---|---|---|
| C0034 | 2022 Ukraine Electric Power Attack |
During the 2022 Ukraine Electric Power Attack, Sandworm Team leveraged Scheduled Tasks through a Group Policy Object (GPO) to execute CaddyWiper at a predetermined time.[7] |
| S0331 | Agent Tesla |
Agent Tesla has achieved persistence via scheduled tasks.[8] |
| S0504 | Anchor | |
| S1133 | Apostle |
Apostle achieves persistence by creating a scheduled task, such as |
| S0584 | AppleJeus |
AppleJeus has created a scheduled SYSTEM task that runs when a user logs in.[11] |
| G0099 | APT-C-36 |
APT-C-36 has used a macro function to set scheduled tasks, disguised as those used by Google.[12] |
| G0016 | APT29 |
APT29 has used named and hijacked scheduled tasks to establish persistence.[13] |
| G0022 | APT3 |
An APT3 downloader creates persistence by creating the following scheduled task: |
| G0050 | APT32 |
APT32 has used scheduled tasks to persist on victim systems.[15][16][17][18] |
| G0064 | APT33 |
APT33 has created a scheduled task to execute a .vbe file multiple times a day.[19] |
| G0067 | APT37 |
APT37 has created scheduled tasks to run malicious scripts on a compromised host.[20] |
| G0082 | APT38 |
APT38 has used Task Scheduler to run programs at system startup or on a scheduled basis for persistence.[21] Additionally, APT38 has used living-off-the-land scripts to execute a malicious script via a scheduled task.[22] |
| G0087 | APT39 |
APT39 has created scheduled tasks for persistence.[23][24][25] |
| G0096 | APT41 |
APT41 used a compromised account to create a scheduled task on a system.[26][27] |
| G1044 | APT42 | |
| S1087 | AsyncRAT |
AsyncRAT can create a scheduled task to maintain persistence on system start-up.[29] |
| S0438 | Attor |
Attor's installer plugin can schedule a new task that loads the dispatcher on boot/logon.[30] |
| S0414 | BabyShark |
BabyShark has used scheduled tasks to maintain persistence.[27] |
| S0475 | BackConfig |
BackConfig has the ability to use scheduled tasks to repeatedly execute malicious payloads on a compromised host.[31] |
| S0606 | Bad Rabbit |
Bad Rabbit’s |
| S1081 | BADHATCH | |
| S0128 | BADNEWS |
BADNEWS creates a scheduled task to establish by executing a malicious payload every subsequent minute.[34] |
| S0534 | Bazar | |
| G1002 | BITTER |
BITTER has used scheduled tasks for persistence and execution.[37] |
| G1043 | BlackByte |
BlackByte created scheduled tasks for payload execution.[38][39] |
| S1180 | BlackByte Ransomware |
BlackByte Ransomware creates a schedule task to execute remotely deployed ransomware payloads.[40] |
| G0108 | Blue Mockingbird |
Blue Mockingbird has used Windows Scheduled Tasks to establish persistence on local and remote hosts.[41] |
| S0360 | BONDUPDATER |
BONDUPDATER persists using a scheduled task that executes every minute.[42] |
| G0060 | BRONZE BUTLER |
BRONZE BUTLER has used schtasks to register a scheduled task to execute malware during lateral movement.[43] |
| S1039 | Bumblebee |
Bumblebee can achieve persistence by copying its DLL to a subdirectory of %APPDATA% and creating a Visual Basic Script that will load the DLL via a scheduled task.[44][45] |
| C0017 | C0017 |
During C0017, APT41 used the following Windows scheduled tasks for DEADEYE dropper persistence on US state government networks: |
| C0032 | C0032 |
During the C0032 campaign, TEMP.Veles used scheduled task XML triggers.[47] |
| S0335 | Carbon |
Carbon creates several tasks for later execution to continue persistence on the victim’s machine.[48] |
| S1043 | ccf32 | |
| G0114 | Chimera |
Chimera has used scheduled tasks to invoke Cobalt Strike including through batch script |
| S1149 | CHIMNEYSWEEP |
CHIMNEYSWEEP can use the Windows |
| S1236 | CLAIMLOADER |
CLAIMLOADER has created scheduled tasks that execute the loader every five(5) minutes using |
| G0080 | Cobalt Group |
Cobalt Group has created Windows tasks to establish persistence.[54] |
| S0126 | ComRAT |
ComRAT has used a scheduled task to launch its PowerShell loader.[55][56] |
| G0142 | Confucius |
Confucius has created scheduled tasks to maintain persistence on a compromised host.[57] |
| S1235 | CorKLOG |
CorKLOG has achieved persistence through the creation of a scheduled task named TableInputServices by using the command |
| S0050 | CosmicDuke |
CosmicDuke uses scheduled tasks typically named "Watchmon Service" for persistence.[59] |
| C0004 | CostaRicto |
During CostaRicto, the threat actors used scheduled tasks to download backdoor tools.[60] |
| S0046 | CozyCar |
One persistence mechanism used by CozyCar is to register itself as a scheduled task.[61] |
| S0538 | Crutch |
Crutch has the ability to persist using scheduled tasks.[62] |
| S0527 | CSPY Downloader |
CSPY Downloader can use the schtasks utility to bypass UAC.[63] |
| G1034 | Daggerfly |
Daggerfly has attempted to use scheduled tasks for persistence in victim environments.[64] |
| S1014 | DanBot | |
| S0673 | DarkWatchman |
DarkWatchman has created a scheduled task for persistence.[66] |
| S1088 | Disco |
Disco can create a scheduled task to run every minute for persistence.[67] |
| G0035 | Dragonfly |
Dragonfly has used scheduled tasks to automatically log out of created accounts every 8 hours as well as to execute malicious files.[68] |
| S0384 | Dridex |
Dridex can maintain persistence via the creation of scheduled tasks within system directories such as |
| S0038 | Duqu |
Adversaries can instruct Duqu to spread laterally by copying itself to shares it has enumerated and for which it has obtained legitimate credentials (via keylogging or other means). The remote host is then infected by using the compromised credentials to schedule a task on remote machines that executes the malware.[70] |
| S0024 | Dyre |
Dyre has the ability to achieve persistence by adding a new task in the task scheduler to run every minute.[71] |
| G1006 | Earth Lusca |
Earth Lusca used the command |
| S1247 | Embargo |
Embargo has obtained persistence of the loader MDeployer by creating a scheduled task named "Perf_sys."[73] |
| G1003 | Ember Bear |
Ember Bear uses remotely scheduled tasks to facilitate remote command execution on victim machines.[74] |
| S0367 | Emotet |
Emotet has maintained persistence through a scheduled task, e.g. though a .dll file in the Registry.[75][76] |
| S0363 | Empire |
Empire has modules to interact with the Windows task scheduler.[77] |
| S0396 | EvilBunny | |
| G0051 | FIN10 |
FIN10 has established persistence by using S4U tasks as well as the Scheduled Task option in PowerShell Empire.[79][77] |
| G1016 | FIN13 |
FIN13 has created scheduled tasks in the |
| G0037 | FIN6 |
FIN6 has used scheduled tasks to establish persistence for various malware it uses, including downloaders known as HARDTACK and SHIPBREAD and FrameworkPOS.[81] |
| G0046 | FIN7 |
FIN7 malware has created scheduled tasks to establish persistence.[82][83][84][85] Specifically, FIN7 has used OpenSSH to establish persistence.[86] |
| G0061 | FIN8 |
FIN8 has used scheduled tasks to maintain RDP backdoors.[87] |
| G0117 | Fox Kitten |
Fox Kitten has used Scheduled Tasks for persistence and to load and execute a reverse proxy binary.[88][89] |
| C0001 | Frankenstein |
During Frankenstein, the threat actors established persistence through a scheduled task using the command: |
| G0093 | GALLIUM |
GALLIUM established persistence for PoisonIvy by created a scheduled task.[91] |
| G0047 | Gamaredon Group |
Gamaredon Group has created scheduled tasks to launch executables after a designated number of minutes have passed.[92][93][94][95] |
| S0168 | Gazer |
Gazer can establish persistence by creating a scheduled task.[96][97] |
| S0588 | GoldMax |
GoldMax has used scheduled tasks to maintain persistence.[98] |
| S0477 | Goopy |
Goopy has the ability to maintain persistence by creating scheduled tasks set to run every hour.[17] |
| S0237 | GravityRAT |
GravityRAT creates a scheduled task to ensure it is re-executed everyday.[99] |
| S0417 | GRIFFON | |
| S0632 | GrimAgent |
GrimAgent has the ability to set persistence using the Task Scheduler.[101] |
| S0170 | Helminth | |
| S0697 | HermeticWiper |
HermeticWiper has the ability to use scheduled tasks for execution.[103] |
| G1001 | HEXANE |
HEXANE has used a scheduled task to establish persistence for a keylogger.[104] |
| G0126 | Higaisa |
Higaisa dropped and added |
| S0431 | HotCroissant |
HotCroissant has attempted to install a scheduled task named "Java Maintenance64" on startup to establish persistence.[107] |
| S0483 | IcedID |
IcedID has created a scheduled task to establish persistence.[108][109][110] |
| S1152 | IMAPLoader |
IMAPLoader creates scheduled tasks for persistence based on the operating system version of the victim machine.[111] |
| S0260 | InvisiMole |
InvisiMole has used scheduled tasks named |
| S0581 | IronNetInjector |
IronNetInjector has used a task XML file named |
| S0189 | ISMInjector |
ISMInjector creates scheduled tasks to establish persistence.[114] |
| S0044 | JHUHUGIT |
JHUHUGIT has registered itself as a scheduled task to run each time the current user logs in.[115][116] |
| S0648 | JSS Loader |
JSS Loader has the ability to launch scheduled tasks to establish persistence.[117] |
| C0044 | Juicy Mix |
During Juicy Mix, OilRig used VBS droppers to schedule tasks for persistence.[118] |
| S1190 | Kapeka | |
| G0094 | Kimsuky |
Kimsuky has downloaded additional malware with scheduled tasks.[121] Kimsuky has established persistence by creating a scheduled task named "ChromeUpdateTaskMachine" through the PowerShell cmdlet |
| S0250 | Koadic | |
| S1160 | Latrodectus |
Latrodectus can create scheduled tasks for persistence.[124][125][126] |
| G0032 | Lazarus Group |
Lazarus Group has used |
| S0680 | LitePower |
LitePower can create a scheduled task to enable persistence mechanisms.[129] |
| S1199 | LockBit 2.0 |
LockBit 2.0 can be executed via scheduled task.[130] |
| S0447 | Lokibot |
Lokibot embedded the commands |
| S0532 | Lucifer |
Lucifer has established persistence by creating the following scheduled task |
| G1014 | LuminousMoth |
LuminousMoth has created scheduled tasks to establish persistence for their tools.[133] |
| S0409 | Machete |
The different components of Machete are executed by Windows Task Scheduler.[134][135] |
| G0095 | Machete |
Machete has created scheduled tasks to maintain Machete's persistence.[136] |
| G0059 | Magic Hound |
Magic Hound has used scheduled tasks to establish persistence and execution.[137][138] |
| S1182 | MagicRAT | |
| S1169 | Mango |
Mango can create a scheduled task to run every 32 seconds to communicate with C2 and execute received commands.[118] |
| S0167 | Matryoshka |
Matryoshka can establish persistence by adding a Scheduled Task named "Microsoft Boost Kernel Optimization".[140][141] |
| S0449 | Maze |
Maze has created scheduled tasks using name variants such as "Windows Update Security", "Windows Update Security Patches", and "Google Chrome Security Update", to launch Maze at a specific time.[142] |
| S0500 | MCMD | |
| G0045 | menuPass |
menuPass has used a script (atexec.py) to execute a command on a target machine via Task Scheduler.[144] |
| S0688 | Meteor |
Meteor execution begins from a scheduled task named |
| S1015 | Milan |
Milan can establish persistence on a targeted host with scheduled tasks.[146][147] |
| G0021 | Molerats |
Molerats has created scheduled tasks to persistently run VBScripts.[148] |
| G1036 | Moonstone Sleet |
Moonstone Sleet used scheduled tasks for program execution during initial access to victim machines.[149] |
| G0069 | MuddyWater |
MuddyWater has used scheduled tasks to establish persistence.[150] |
| S1135 | MultiLayer Wiper |
MultiLayer Wiper creates a malicious scheduled task that launches a batch file to remove Windows Event Logs.[151] |
| G0129 | Mustang Panda |
Mustang Panda has created a scheduled task to execute additional malicious software, as well as maintain persistence.[152][153][154][155] Mustang Panda has also created a scheduled task that creates a reverse shell.[156] |
| G0019 | Naikon |
Naikon has used schtasks.exe for lateral movement in compromised networks.[157] |
| S0198 | NETWIRE |
NETWIRE can create a scheduled task to establish persistence.[158] |
| S1147 | Nightdoor |
Nightdoor uses scheduled tasks for persistence to load the final malware payload into memory.[159] |
| S0368 | NotPetya |
NotPetya creates a task to reboot the system one hour after infection.[160] |
| G0049 | OilRig |
OilRig has created scheduled tasks that run a VBScript to execute a payload on victim machines.[161][162][163][164] |
| S0439 | Okrum |
Okrum's installer can attempt to achieve persistence by creating a scheduled task.[165] |
| S0264 | OopsIE |
OopsIE creates a scheduled task to run itself every three minutes.[161][166] |
| C0012 | Operation CuckooBees |
During Operation CuckooBees, the threat actors used scheduled tasks to execute batch scripts for lateral movement with the following command: |
| C0022 | Operation Dream Job |
During Operation Dream Job, Lazarus Group created scheduled tasks to set a periodic execution of a remote XSL script.[168] |
| C0014 | Operation Wocao |
During Operation Wocao, threat actors used scheduled tasks to execute malicious PowerShell code on remote systems.[169] |
| G0040 | Patchwork |
A Patchwork file stealer can run a TaskScheduler DLL to add persistence.[170] |
| S0013 | PlugX |
PlugX has created a scheduled task to execute additional malicious software, as well as maintain persistence.[171] |
| S0194 | PowerSploit |
PowerSploit's |
| S0223 | POWERSTATS |
POWERSTATS has established persistence through a scheduled task using the command |
| S0184 | POWRUNER |
POWRUNER persists through a scheduled task that executes it every minute.[175] |
| S1058 | Prestige |
Prestige has been executed on a target system through a scheduled task created by Sandworm Team using Impacket.[176] |
| S0147 | Pteranodon |
Pteranodon schedules tasks to invoke its components in order to establish persistence.[177][178] |
| S1228 | PUBLOAD |
PUBLOAD has created scheduled tasks to maintain persistence with the command |
| S0650 | QakBot |
QakBot has the ability to create scheduled tasks for persistence.[181][182][183][184][185][186][187][188] |
| S1242 | Qilin |
Qilin has pushed scheduled tasks via GPO for execution.[189][190] |
| S0269 | QUADAGENT |
QUADAGENT creates a scheduled task to maintain persistence on the victim’s machine.[162] |
| S0262 | QuasarRAT |
QuasarRAT contains a .NET wrapper DLL for creating and managing scheduled tasks for maintaining persistence upon reboot.[191][192] |
| S0629 | RainyDay |
RainyDay can use scheduled tasks to achieve persistence.[157] |
| S0458 | Ramsay |
Ramsay can schedule tasks via the Windows COM API to maintain persistence.[193] |
| G0075 | Rancor |
Rancor launched a scheduled task to gain persistence using the |
| G1039 | RedCurl |
RedCurl has created scheduled tasks for persistence.[195][196][197] |
| S1240 | RedLine Stealer |
RedLine Stealer has achieved persistence via scheduled tasks.[198] |
| S0375 | Remexi |
Remexi utilizes scheduled tasks as a persistence mechanism.[199] |
| S0166 | RemoteCMD |
RemoteCMD can execute commands remotely by creating a new schedule task on the remote system[200] |
| S0125 | Remsec |
Remsec schedules the execution one of its modules by creating a new scheduler task.[201] |
| S0379 | Revenge RAT |
Revenge RAT schedules tasks to run malicious scripts at different intervals.[202] |
| S0148 | RTM |
RTM tries to add a scheduled task to establish persistence.[203][204] |
| S0446 | Ryuk |
Ryuk can remotely create a scheduled task to execute itself on a system.[205] |
| S1018 | Saint Bot |
Saint Bot has created a scheduled task named "Maintenance" to establish persistence.[206] |
| G0034 | Sandworm Team |
Sandworm Team leveraged SHARPIVORY, a .NET dropper that writes embedded payload to disk and uses scheduled tasks to persist on victim machines.[207] |
| S0111 | schtasks |
schtasks is used to schedule tasks on a Windows system to run at a specific date and time.[208] |
| S0382 | ServHelper |
ServHelper contains modules that will use schtasks to carry out malicious operations.[209] |
| S0140 | Shamoon |
Shamoon copies an executable payload to the target system by using SMB/Windows Admin Shares and then scheduling an unnamed task to execute the malware.[210][211] |
| C0058 | SharePoint ToolShell Exploitation |
During SharePoint ToolShell Exploitation, threat actors used scheduled tasks to help establish persistence.[212] |
| S1089 | SharpDisco |
SharpDisco can create scheduled tasks to execute reverse shells that read and write data to and from specified SMB shares.[67] |
| S0546 | SharpStage |
SharpStage has a persistence component to write a scheduled task for the payload.[213] |
| S0589 | Sibot | |
| G0091 | Silence |
Silence has used scheduled tasks to stage its operation.[214] |
| S0226 | Smoke Loader |
Smoke Loader launches a scheduled task.[215] |
| S1166 | Solar |
Solar can create scheduled tasks named Earth and Venus, which run every 30 and 40 seconds respectively, to support C2 and exfiltration.[118] |
| C0024 | SolarWinds Compromise |
During the SolarWinds Compromise, APT29 used |
| S0516 | SoreFang |
SoreFang can gain persistence through use of scheduled tasks.[219] |
| S1140 | Spica |
Spica has created a scheduled task named |
| S0390 | SQLRat |
SQLRat has created scheduled tasks in |
| G0038 | Stealth Falcon |
Stealth Falcon malware creates a scheduled task entitled "IE Web Cache" to execute a malicious file hourly.[221] |
| G1053 | Storm-0501 |
Storm-0501 had used a scheduled task named "SysUpdate" that was registered via GPO on devices in the network to distribute the Embargo ransomware.[222] |
| S1034 | StrifeWater |
StrifeWater has create a scheduled task named |
| S0603 | Stuxnet |
Stuxnet schedules a network job to execute two minutes after host infection.[224] |
| S1042 | SUGARDUMP |
SUGARDUMP has created scheduled tasks called |
| S1064 | SVCReady |
SVCReady can create a scheduled task named |
| G1018 | TA2541 |
TA2541 has used scheduled tasks to establish persistence for installed tools.[227] |
| S1011 | Tarrask |
Tarrask is able to create "hidden" scheduled tasks for persistence.[5] |
| G1022 | ToddyCat |
ToddyCat has used scheduled tasks to execute discovery commands and scripts for collection.[228] |
| S0671 | Tomiris |
Tomiris has used |
| S1239 | TONESHELL |
TONESHELL has created scheduled tasks to maintain persistence.[230][231] |
| S0266 | TrickBot |
TrickBot creates a scheduled task on the system that provides persistence.[232][233][234] |
| C0030 | Triton Safety Instrumented System Attack |
In the Triton Safety Instrumented System Attack, TEMP.Veles installed scheduled tasks defined in XML files.[235] |
| S0476 | Valak |
Valak has used scheduled tasks to execute additional payloads and to gain persistence on a compromised host.[236][237][238] |
| G1035 | Winter Vivern |
Winter Vivern executed PowerShell scripts that would subsequently attempt to establish persistence by creating scheduled tasks objects to periodically retrieve and execute remotely-hosted payloads.[239] |
| G0102 | Wizard Spider |
Wizard Spider has used scheduled tasks to establish persistence for TrickBot and other malware.[240][241][242][243][244] |
| S1207 | XLoader | |
| S0248 | yty |
yty establishes persistence by creating a scheduled task with the command |
| S0251 | Zebrocy |
Zebrocy has a command to create a scheduled task for persistence.[247] |
| S0350 | zwShell | |
| S1013 | ZxxZ |
ZxxZ has used scheduled tasks for persistence and execution.[37] |
| ID | Mitigation | Description |
|---|---|---|
| M1047 | Audit |
Toolkits like the PowerSploit framework contain PowerUp modules that can be used to explore systems for permission weaknesses in scheduled tasks that could be used to escalate privileges. [249] |
| M1028 | Operating System Configuration |
Configure settings for scheduled tasks to force tasks to run under the context of the authenticated account instead of allowing them to run as SYSTEM. The associated Registry key is located at HKLM\SYSTEM\CurrentControlSet\Control\Lsa\SubmitControl. The setting can be configured through GPO: Computer Configuration > [Policies] > Windows Settings > Security Settings > Local Policies > Security Options: Domain Controller: Allow server operators to schedule tasks, set to disabled. [250] |
| M1026 | Privileged Account Management |
Configure the Increase Scheduling Priority option to only allow the Administrators group the rights to schedule a priority process. This can be configured through GPO: Computer Configuration > [Policies] > Windows Settings > Security Settings > Local Policies > User Rights Assignment: Increase scheduling priority. [251] |
| M1018 | User Account Management |
Limit privileges of user accounts and remediate Privilege Escalation vectors so only authorized administrators can create scheduled tasks on remote systems. |
| ID | Name | Analytic ID | Analytic Description |
|---|---|---|---|
| DET0441 | Detection of Suspicious Scheduled Task Creation and Execution on Windows | AN1221 |
Detects the creation, modification, or deletion of scheduled tasks through Task Scheduler, WMI, PowerShell, or API-based methods followed by execution from svchost.exe or taskeng.exe. Includes detection of hidden or anomalous scheduled tasks, especially those created under SYSTEM or suspicious user contexts. |