Process Injection T1055

Adversaries may inject code into processes in order to evade process-based defenses as well as possibly elevate privileges. Process injection is a method of executing arbitrary code in the address space of a separate live process. Running code in the context of another process may allow access to the process's memory, system/network resources, and possibly elevated privileges. Execution via process injection may also evade detection from security products since the execution is masked under a legitimate process.

Events covered

29 catalog events are tagged with this technique by at least one rule.

ProviderEventTitle
SysmonEvent ID 1Process creation
SysmonEvent ID 3Network connection
SysmonEvent ID 7Image loaded
SysmonEvent ID 8CreateRemoteThread
SysmonEvent ID 10ProcessAccess
SysmonEvent ID 11FileCreate
SysmonEvent ID 17PipeEvent (Pipe Created)
SysmonEvent ID 18PipeEvent (Pipe Connected)
SysmonEvent ID 25ProcessTampering (Process image change)
Security-AuditingEvent ID 4688A new process has been created.
Security-AuditingEvent ID 5145A network share object was checked to see whether client can be granted desired access.
Security-AuditingEvent ID 5156The Windows Filtering Platform has permitted a connection.
Defender-DeviceEventsanyDefender event (any)
Defender-DeviceEventsCreateRemoteThreadApiCallCreateRemoteThread API call
Defender-DeviceEventsNamedPipeEventNamed pipe event
Defender-DeviceEventsNtAllocateVirtualMemoryRemoteApiCallRemote virtual memory allocation (NtAllocateVirtualMemory)
Defender-DeviceEventsMemoryRemoteProtectRemote virtual memory protection change
Defender-DeviceEventsNtMapViewOfSectionRemoteApiCallRemote section map (NtMapViewOfSection)
Defender-DeviceEventsQueueUserApcRemoteApiCallRemote APC queued (QueueUserApc)
Defender-DeviceEventsSetThreadContextRemoteApiCallRemote thread context change (SetThreadContext)
Defender-DeviceNetworkEventsConnectionSuccessConnection succeeded
PowerShellEvent ID 4103Payload Context: ContextInfo User Data: UserData.
PowerShellEvent ID 4104Creating Scriptblock text (MessageNumber of MessageTotal).
Threat-IntelligenceEvent ID 1Remote Virtual Memory Allocation
Threat-IntelligenceEvent ID 2Remote Virtual Memory Protection Change
Threat-IntelligenceEvent ID 3Remote Section Map
Threat-IntelligenceEvent ID 4Remote APC Queue
Threat-IntelligenceEvent ID 5Remote Thread Context Change
Windows-DefenderEvent ID 1119ProductName has encountered a critical error when taking action on malware or other potentially unwanted software.

Authoring guide

Patterns shared across the 125 rules above: which fields they filter on, what specific values they look for, and what they exclude. The catalog normalizes field names across vendors so Sigma's Image, Elastic's process.name, and Splunk's process_name collapse into one row. Each rule contributes at most once per row.

Fields filtered most (49 distinct)

The fields most rules look at when detecting this technique. The How column shows the operators authors use (eq, wildcard, regex_match, match) and how often each appears. Sample values are concrete examples to start from, not an exhaustive list.

FieldRulesHowSample values
EventID43eq 41, in 38, 4688, 1, 17, 18
Image39ends_with 32, contains 6, starts_with 5, eq 4, cross_field_compare 1, is_null 1, wildcard 1\cscript.exe, \svchost.exe, \\rundll32.exe, \cmd.exe, \dctask64.exe
CommandLine35contains 15, regex_match 10, in 7, ends_with 3, eq 3, is_null 3, match 1(?i)(davclnt.dll.*DavSetCookie.*://\d{1,3}\.\d{1,3}\.\d{1..., (?i)((backgroundtaskhost|svchost|dllhost|werfault|searchp..., (?i)WdiSystemHost|LicenseManager|StorSvc|CDPSvc|cdbhsvc|B..., *dllhost, *dllhost.exe
parent_process_name24eq 12, is_not_null 4, regex_match 3, in 2, match 2, ne 1(?i)lsass\.exe, (?i)svchost, cscript.exe, (?i)Temp|Downloads|Appdata, CiscoCollabHost.exe
process_name22eq 15, regex_match 4, in 2, ends_with 1cmd.exe, (?i)\x5csystem32\x5c(lsass|services)\.exe, (?i)\x5csystem32\x5cspoolsv\.exe, dllhost.exe, gpupdate.exe
TargetImage18ends_with 8, in 6, eq 5, starts_with 3, contains 2, is_null 1*\\calc.exe, *\\calculatorapp.exe, *\\chrome.exe, *\\cmd.exe, *\\firefox.exe
Type13eq 13Image is replaced
ParentImage11ends_with 10, eq 1, starts_with 1\chrome.exe, \excel.exe, \firefox.exe, \more.com, \mrt.exe
OriginalFileName10eq 10dllhost.exe, searchprotocolhost.exe, cmd.exe, compattelrunner.exe, discord.exe
PipeName9contains 4, eq 4, starts_with 4, regex_match 2, ends_with 1-0,, -server, [a-fA-F0-9]{2,10}$, \46a676ab7f179e511e30dd2dc41bd388, \583da945-62af-10e8-4902-a8f205c72b2e
event.type8eq 8start
CallTrace5contains 4, length_compare 1unknown, 0, :\windows\microsoft.net\framework64\v2., >, vbe7.dll
DestinationPort5ne 3, eq 20, 9100, 9389
EventType5eq 3, in 2CreateRemoteThreadApiCall, NtAllocateVirtualMemoryRemoteApiCall, ConnectionSuccess, MemoryRemoteProtect, NamedPipeEvent
GrantedAccess5eq 3, in 20x1fffff, 0x1f3fff, 0x40, 0x147a

Top indicator values (759 distinct)

Specific (field, operator, value) combinations the rules check for, ranked by how many rules under this technique use each one. The Corpus reach column counts how many rules across the entire catalog (any technique) check the same combination. High numbers point to widely-used indicators that are likely noisy on their own; combine them with another condition for useful signal. Blank means the combination is specific to rules under this technique. Click a value to expand the rules under this technique that use it.

FieldKindValueRules (here)Corpus reach
EventIDeq
8
1011
EventIDeq
4688
9312
EventIDeq
1
8232
EventIDeq
17
44
EventIDeq
18
46
EventIDeq
4104
4268
event.typeeq
start
8241
Imageends_with
\regsvr32.exe
468
Imageends_with
\svchost.exe
428
Imageends_with
\cscript.exe
376
Imageends_with
\mshta.exe
369
Imageends_with
\net.exe
350
Imageends_with
\whoami.exe
320
Imageends_with
\winword.exe
327
Imageends_with
\wscript.exe
378
CallTracecontains
unknown
35
CommandLineregex_match
(?i)(davclnt.dll.*DavSetCookie.*://\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
33
DestinationPortne
0
37
EventIDin
17
37
EventIDin
18
37
TargetImagein
*\\chrome.exe
33
TargetImagein
*\\firefox.exe
33
process_nameeq
dllhost.exe
36
process_nameeq
searchprotocolhost.exe
34
CommandLinecontains
rundll32.exe
28
CommandLinein
*dllhost
22
CommandLinein
*dllhost.exe
22
CommandLinein
*dllhost.exe\"
22
CommandLinein
*searchprotocolhost
22
CommandLinein
*searchprotocolhost.exe
22

Exclusions (329 distinct)

Field/operator/value combinations excluded by rules under this technique (top-level not() clauses), sorted by how many rules exclude each. These are the false-positive paths the community has learned to filter out. A new rule that ignores the high-count entries here will likely fire on the same noisy paths. Click a value to expand the rules under this technique that exclude it.

FieldKindValueRules excluding
parent_process_namematch
^-$
4
process_namein
*:\\program files \(x86\)\\adobe*
4
process_namein
*:\\program files \(x86\)\\google*
4
process_namein
*:\\program files \(x86\)\\microsoft*
4
process_namein
*:\\program files\\adobe*
4
process_namein
*:\\program files\\google*
4
process_namein
*:\\program files\\microsoft*
4
process_namein
*:\\windows\\system32\\searchindexer.exe
4
process_namein
*:\\windows\\system32\\svchost.exe
4
process_namein
*:\\windows\\systemapps\\microsoft*
4
process_namein
*\\amazon\\ssm\\instance*
4
process_namein
*\\appdata\\local\\google*
4
process_namein
*\\appdata\\local\\kingsoft\\*
4
process_namein
*\\appdata\\local\\microsoft*
4
process_namein
system
4

Rules under this technique

Every rule in the catalog tagged with this technique, grouped by vendor. Click a rule title for its full predicates, exclusions, and indicators.

Sigma 49 rules

Elastic 12 rules

Splunk 58 rules

Kusto 6 rules