| ID | Name |
|---|---|
| T1543.001 | Launch Agent |
| T1543.002 | Systemd Service |
| T1543.003 | Windows Service |
| T1543.004 | Launch Daemon |
| T1543.005 | Container Service |
Adversaries may create or modify Windows services to repeatedly execute malicious payloads as part of persistence. When Windows boots up, it starts programs or applications called services that perform background system functions.[1] Windows service configuration information, including the file path to the service's executable or recovery programs/commands, is stored in the Windows Registry.
Adversaries may install a new service or modify an existing service to execute at startup in order to persist on a system. Service configurations can be set or modified using system utilities (such as sc.exe), by directly modifying the Registry, or by interacting directly with the Windows API.
Adversaries may also use services to install and execute malicious drivers. For example, after dropping a driver file (ex: .sys) to disk, the payload can be loaded and registered via Native API functions such as CreateServiceW() (or manually via functions such as ZwLoadDriver() and ZwSetValueKey()), by creating the required service Registry values (i.e. Modify Registry), or by using command-line utilities such as PnPUtil.exe.[2][3][4] Adversaries may leverage these drivers as Rootkits to hide the presence of malicious activity on a system. Adversaries may also load a signed yet vulnerable driver onto a compromised machine (known as "Bring Your Own Vulnerable Driver" (BYOVD)) as part of Exploitation for Privilege Escalation.[5][4]
Services may be created with administrator privileges but are executed under SYSTEM privileges, so an adversary may also use a service to escalate privileges. Adversaries may also directly start services through Service Execution.
To make detection analysis more challenging, malicious services may also incorporate Masquerade Task or Service (ex: using a service and/or payload name related to a legitimate OS or benign software component). Adversaries may also create ‘hidden’ services (i.e., Hide Artifacts), for example by using the sc sdset command to set service permissions via the Service Descriptor Definition Language (SDDL). This may hide a Windows service from the view of standard service enumeration methods such as Get-Service, sc query, and services.exe.[6][7]
| ID | Name | Description |
|---|---|---|
| C0025 | 2016 Ukraine Electric Power Attack |
During the 2016 Ukraine Electric Power Attack, Sandworm Team used an arbitrary system service to load at system boot for persistence for Industroyer. They also replaced the ImagePath registry value of a Windows service with a new backdoor binary. [8] |
| G1030 | Agrius |
Agrius has deployed IPsec Helper malware post-exploitation and registered it as a service for persistence.[9] |
| S0504 | Anchor | |
| S0584 | AppleJeus | |
| G0073 | APT19 |
An APT19 Port 22 malware variant registers itself as a service.[12] |
| G0022 | APT3 |
APT3 has a tool that creates a new service for persistence.[13] |
| G0050 | APT32 |
APT32 modified Windows Services to ensure PowerShell scripts were loaded on the system. APT32 also creates a Windows service to establish persistence.[14][15][16] |
| G0082 | APT38 |
APT38 has installed a new Windows service to establish persistence.[17] |
| G0096 | APT41 |
APT41 modified legitimate Windows services to install malware backdoors.[18][19] APT41 created the StorSyncSvc service to provide persistence for Cobalt Strike.[20] |
| C0040 | APT41 DUST |
APT41 DUST used Windows Services with names such as |
| G0143 | Aquatic Panda |
Aquatic Panda created new Windows services for persistence that masqueraded as legitimate Windows services via name change.[22] |
| S0438 | Attor |
Attor's dispatcher can establish persistence by registering a new service.[23] |
| S0347 | AuditCred | |
| S0239 | Bankshot |
Bankshot can terminate a specific process by its process id.[25][26] |
| S0127 | BBSRAT | |
| S0268 | Bisonal |
Bisonal has been modified to be used as a Windows service.[28] |
| S0570 | BitPaymer |
BitPaymer has attempted to install itself as a service to maintain persistence.[29] |
| S1070 | Black Basta |
Black Basta can create a new service to establish persistence.[30][31] |
| G1043 | BlackByte |
BlackByte modified multiple services on victim machines to enable encryption operations.[32] BlackByte has installed tools such as AnyDesk as a service on victim machines.[33] |
| S0089 | BlackEnergy |
One variant of BlackEnergy creates a new service using either a hard-coded or randomly generated name.[34] |
| G0108 | Blue Mockingbird |
Blue Mockingbird has made their XMRIG payloads persistent as a Windows Service.[35] |
| S1226 | BOOKWORM |
BOOKWORM has created a service named |
| S0204 | Briba |
Briba installs a service pointing to a malicious DLL dropped to disk.[37] |
| G0008 | Carbanak |
Carbanak malware installs itself as a service to provide persistence and SYSTEM privileges.[38] |
| S0335 | Carbon |
Carbon establishes persistence by creating a service and naming it based off the operating system version running on the current machine.[39] |
| S0261 | Catchamas |
Catchamas adds a new service named NetAdapter to establish persistence.[40] |
| G1021 | Cinnamon Tempest |
Cinnamon Tempest has created system services to establish persistence for deployed tooling.[41] |
| S0660 | Clambling |
Clambling can register itself as a system service to gain persistence.[42] |
| G0080 | Cobalt Group |
Cobalt Group has created new services to establish persistence.[43] |
| S0154 | Cobalt Strike |
Cobalt Strike can install a new service.[44] |
| S0608 | Conficker |
Conficker copies itself into the |
| S1235 | CorKLOG | |
| S0050 | CosmicDuke |
CosmicDuke uses Windows services typically named "javamtsup" for persistence.[47] |
| S0046 | CozyCar |
One persistence mechanism used by CozyCar is to register itself as a Windows service.[48] |
| S0625 | Cuba |
Cuba can modify services by using the |
| G0105 | DarkVishnya |
DarkVishnya created new services for shellcode loaders distribution.[50] |
| S1033 | DCSrv |
DCSrv has created new services for persistence by modifying the Registry.[51] |
| S0567 | Dtrack |
Dtrack can add a service called WBService to establish persistence.[52] |
| S0038 | Duqu |
Duqu creates a new service that loads a malicious driver when the system starts. When Duqu is active, the operating system believes that the driver is legitimate, as it has been signed with a valid private key.[53] |
| S1158 | DUSTPAN | |
| S0024 | Dyre |
Dyre registers itself as a service by adding several Registry keys.[54] |
| G1006 | Earth Lusca |
Earth Lusca created a service using the command |
| S0081 | Elise | |
| S1247 | Embargo |
Embargo has created persistence through the DLL variant of the MDeployer toolkit by creating a service called irnagentd that launches after the system is rebooted in Safe Mode.[57] |
| S0082 | Emissary | |
| S0367 | Emotet |
Emotet has been observed creating new services to maintain persistence.[59][60][61] |
| S0363 | Empire |
Empire can utilize built-in modules to modify service binaries and restore them to their original state.[62] |
| S0343 | Exaramel for Windows |
The Exaramel for Windows dropper creates and starts a Windows service named wsmprovav with the description "Windows Check AV."[63] |
| S0181 | FALLCHILL | |
| G0046 | FIN7 |
FIN7 created new Windows services and added them to the startup directories for persistence.[64] |
| S0182 | FinFisher |
FinFisher creates a new Windows service with the malicious executable for persistence.[65][66] |
| S1044 | FunnyDream |
FunnyDream has established persistence by running |
| S0666 | Gelsemium |
Gelsemium can drop itself in |
| S0032 | gh0st RAT |
gh0st RAT can create a new service to establish persistence.[69][70] |
| S0493 | GoldenSpy |
GoldenSpy has established persistence by running in the background as an autostart service.[71] |
| S0342 | GreyEnergy |
GreyEnergy chooses a service, drops a DLL file, and writes it to that serviceDLL Registry key.[72] |
| S1211 | Hannotog | |
| S0071 | hcdLoader |
hcdLoader installs itself as a service for persistence.[74][75] |
| S0697 | HermeticWiper |
HermeticWiper can load drivers by creating a new service using the |
| S0203 | Hydraq |
Hydraq creates new services to establish persistence.[76][77][78] |
| S0604 | Industroyer |
Industroyer can use an arbitrary system service to load at system boot for persistence and replaces the ImagePath registry value of a Windows service with a new backdoor binary.[8] |
| S0259 | InnaputRAT |
Some InnaputRAT variants create a new Windows service to establish persistence.[79] |
| S0260 | InvisiMole |
InvisiMole can register a Windows service named CsPower as part of its execution chain, and a Windows service named clr_optimization_v2.0.51527_X86 to achieve persistence.[5] |
| S0044 | JHUHUGIT |
JHUHUGIT has registered itself as a service to establish persistence.[80] |
| S0265 | Kazuar | |
| G0004 | Ke3chang |
Ke3chang backdoor RoyalDNS established persistence through adding a service called |
| S0387 | KeyBoy |
KeyBoy installs a service pointing to a malicious DLL dropped to disk.[83] |
| G0094 | Kimsuky | |
| S0356 | KONNI |
KONNI has registered itself as a service using its export function.[86] |
| S0236 | Kwampirs |
Kwampirs creates a new service named WmiApSrvEx to establish persistence.[87] |
| G0032 | Lazarus Group |
Several Lazarus Group malware families install themselves as new services.[88][89] |
| S1202 | LockBit 3.0 |
LockBit 3.0 can install system services for persistence.[90] |
| G0030 | Lotus Blossom |
Lotus Blossom has configured tools such as Sagerunex to run as Windows services.[91] |
| S0451 | LoudMiner |
LoudMiner can automatically launch a Linux virtual machine as a service at startup if the AutoStart option is enabled in the VBoxVmService configuration file.[92] |
| G1051 | Medusa Group |
Medusa Group has used vulnerable or signed drivers to modify security solutions on victim devices.[93] |
| S1244 | Medusa Ransomware |
Medusa Ransomware has created a new PowerShell process using the |
| S0149 | MoonWind |
MoonWind installs itself as a new service with automatic startup to establish persistence. The service checks every 60 seconds to determine if the malware is running; if not, it will spawn a new instance.[95] |
| S0205 | Naid | |
| S0630 | Nebulae | |
| S0210 | Nerex |
Nerex creates a Registry subkey that registers a new service.[98] |
| S0118 | Nidiran |
Nidiran can create a new service named msamger (Microsoft Security Accounts Manager).[99] |
| S1090 | NightClub |
NightClub has created a Windows service named |
| S1100 | Ninja |
Ninja can create the services |
| G0049 | OilRig |
OilRig has used a compromised Domain Controller to create a service on a remote host.[102] |
| S0439 | Okrum |
To establish persistence, Okrum can install itself as a new service named NtmSsvc.[103] |
| C0012 | Operation CuckooBees |
During Operation CuckooBees, the threat actors modified the |
| C0006 | Operation Honeybee |
During Operation Honeybee, threat actors installed DLLs and backdoors as Windows services.[105] |
| S0664 | Pandora |
Pandora has the ability to gain system privileges through Windows services.[106] |
| S1031 | PingPull |
PingPull has the ability to install itself as a service.[107] |
| S0501 | PipeMon |
PipeMon can establish persistence by registering a malicious DLL as an alternative Print Processor which is loaded when the print spooler service starts.[108] |
| S0013 | PlugX |
PlugX can be added as a service to establish persistence. PlugX also has a module to change service configurations as well as start, control, and delete services.[109][110][111][112][113] |
| S0012 | PoisonIvy |
PoisonIvy creates a Registry subkey that registers a new service. PoisonIvy also creates a Registry entry modifying the Logical Disk Manager service to point to a malicious DLL dropped to disk.[114] |
| S0194 | PowerSploit |
PowerSploit contains a collection of Privesc-PowerUp modules that can discover and replace/modify service binaries, paths, and configs.[115][116] |
| G0056 | PROMETHIUM |
PROMETHIUM has created new services and modified existing services for persistence.[117] |
| S0029 | PsExec |
PsExec can leverage Windows services to escalate privileges from administrator to SYSTEM with the |
| S0650 | QakBot |
QakBot can remotely create a temporary service on a target host.[119] |
| S0481 | Ragnar Locker |
Ragnar Locker has used sc.exe to create a new service for the VirtualBox driver.[120] |
| S0629 | RainyDay | |
| S0169 | RawPOS |
RawPOS installs itself as a service to maintain persistence.[121][122][123] |
| S0495 | RDAT |
RDAT has created a service when it is installed on the victim machine.[124] |
| S0172 | Reaver | |
| S0074 | Sakula |
Some Sakula samples install themselves as services for persistence by calling WinExec with the |
| S1099 | Samurai |
Samurai can create a service at |
| S0345 | Seasalt | |
| S0140 | Shamoon |
Shamoon creates a new service named "ntssrv" to execute the payload. Newer versions create the "MaintenaceSrv" and "hdv_725x" services.[128][129] |
| S0444 | ShimRat |
ShimRat has installed a Windows service to maintain persistence on victim machines.[130] |
| S0692 | SILENTTRINITY |
SILENTTRINITY can establish persistence by creating a new service.[131] |
| S0533 | SLOTHFULMEDIA |
SLOTHFULMEDIA has created a service on victim machines named "TaskFrame" to establish persistence.[132] |
| S1232 | SplatDropper |
SplatDropper has created a service to execute a payload.[46] |
| S1037 | STARWHALE |
STARWHALE has the ability to create the following Windows service to establish persistence on an infected host: |
| S0142 | StreamEx |
StreamEx establishes persistence by installing a new service pointing to its DLL and setting the service to auto-start.[134] |
| S0491 | StrongPity |
StrongPity has created new services and modified existing services for persistence.[135] |
| S0603 | Stuxnet |
Stuxnet uses a driver registered as a boot start service as the main load-point.[136] |
| S1049 | SUGARUSH |
SUGARUSH has created a service named |
| S0663 | SysUpdate |
SysUpdate can create a service to establish persistence.[106] |
| S0164 | TDTESS |
If running as administrator, TDTESS installs itself as a new service named bmwappushservice to establish persistence.[138] |
| G0139 | TeamTNT |
TeamTNT has used malware that adds cryptocurrency miners as a service.[139] |
| S0560 | TEARDROP |
TEARDROP ran as a Windows service from the |
| G0027 | Threat Group-3390 |
Threat Group-3390's malware can create a new service, sometimes naming it after the config information, to gain persistence.[142][143] |
| S0665 | ThreatNeedle |
ThreatNeedle can run in memory and register its payload as a Windows service.[144] |
| S0004 | TinyZBot |
TinyZBot can install as a Windows service for persistence.[145] |
| S1239 | TONESHELL |
TONESHELL has created a malicious service DISMsrv to maintain persistence.[146] |
| S0266 | TrickBot |
TrickBot establishes persistence by creating an autostart service that allows it to run whenever the machine boots.[147] |
| G0081 | Tropic Trooper |
Tropic Trooper has installed a service pointing to a malicious DLL dropped to disk.[148] |
| S0263 | TYPEFRAME |
TYPEFRAME variants can add malicious DLL modules as new services.TYPEFRAME can also delete services from the victim’s machine.[149] |
| S0022 | Uroburos |
Uroburos has registered a service, typically named |
| S0386 | Ursnif |
Ursnif has registered itself as a system service in the Registry for automatic execution at system startup.[151] |
| S0180 | Volgmer |
Volgmer installs a copy of itself in a randomly selected service, then overwrites the ServiceDLL entry in the service's Registry entry. Some Volgmer variants also install .dll files as services with names generated by a list of hard-coded strings.[152][153][154] |
| S0366 | WannaCry |
WannaCry creates the service "mssecsvc2.0" with the display name "Microsoft Security Center (2.0) Service."[155][156] |
| S0612 | WastedLocker |
WastedLocker created and established a service that runs until the encryption process is complete.[157] |
| S0206 | Wiarp |
Wiarp creates a backdoor through which remote attackers can create a service.[158] |
| S0176 | Wingbird |
Wingbird uses services.exe to register a new autostart service named "Audit Service" using a copy of the local lsass.exe file.[159][160] |
| S0141 | Winnti for Windows |
Winnti for Windows sets its DLL file as a new service in the Registry to establish persistence.[161] |
| G0102 | Wizard Spider |
Wizard Spider has installed TrickBot as a service named ControlServiceA in order to establish persistence.[162][163] |
| S0230 | ZeroT |
ZeroT can add a new service to ensure PlugX persists on the system when delivered as another payload onto the system.[113] |
| S0086 | ZLib |
ZLib creates Registry keys to allow itself to run as various services.[164] |
| S0350 | zwShell |
zwShell has established persistence by adding itself as a new service.[165] |
| S0412 | ZxShell |
ZxShell can create a new service using the service parser function ProcessScCommand.[166] |
| ID | Mitigation | Description |
|---|---|---|
| M1047 | Audit |
Use auditing tools capable of detecting privilege and service abuse opportunities on systems within an enterprise and correct them. |
| M1040 | Behavior Prevention on Endpoint |
On Windows 10, enable Attack Surface Reduction (ASR) rules to prevent an application from writing a signed vulnerable driver to the system.[167] On Windows 10 and 11, enable Microsoft Vulnerable Driver Blocklist to assist in hardening against third party-developed service drivers.[168] |
| M1045 | Code Signing |
Enforce registration and execution of only legitimately signed service drivers where possible. |
| M1028 | Operating System Configuration |
Ensure that Driver Signature Enforcement is enabled to restrict unsigned drivers from being installed. |
| M1018 | User Account Management |
Limit privileges of user accounts and groups so that only authorized administrators can interact with service changes and service configurations. |
| ID | Name | Analytic ID | Analytic Description |
|---|---|---|---|
| DET0552 | Detection of Windows Service Creation or Modification | AN1527 |
Detects creation or modification of Windows Services through command-line tools (e.g., |