Process Injection: Process Hollowing
Process Write ProcessSegment — Create a new process in suspended state, unmap its legitimate image via NtUnmapViewOfSection, write attacker code into the vacated address space, and resume execution.
Detect
process.start_type is not OCSF native — requires an extension. The practical detection signal is the preceding Launch event with process.start_type = Suspended, but this has a high false-positive rate: JVMs, .NET runtimes, and browser subprocesses all legitimately create suspended processes.
Detect Launch events with process.start_type = Suspended from actor processes outside known-good paths. Correlate with a subsequent NtUnmapViewOfSection call on the same PID for higher precision. The suspended-state signal precedes the image replacement and is the earliest available indicator.
Mitigate
ACG/CIG prevent writing executable code into the vacated address space — the central artifact modification regardless of whether the target is a suspended or running process.
Enable ACG and Code Integrity Guard (CIG). These controls block the write step, identical in structure to other T1055 variants.
Respond
The target process now executes attacker-controlled code. Kill the injector process and the compromised target immediately. Investigate all files, network connections, and child processes they spawned.
actor.processprocessd3f:ProcessTerminationd3f:NetworkIsolationOCSF event model▼
Event class: Process Activity (1007)
· activity_id: Inject
%%{init: {"theme": "dark", "themeVariables": {"edgeLabelBackground": "#18181b", "lineColor": "#52525b"}}}%%
graph TD
classDef attacker fill:#7c2d12,stroke:#ea580c,color:#fed7aa
classDef victim fill:#1e3a5f,stroke:#3b82f6,color:#bfdbfe
classDef postSuccess fill:#78350f,stroke:#d97706,color:#fde68a
classDef tainted fill:#18181b,stroke:#52525b,color:#a1a1aa
EVENT(["Process Activity\n· Inject"])
actor_process["Hollowing Process\nactor.process\nd3f:Process"]:::attacker
target_process["Hollowed Process\nprocess\nd3f:Process"]:::postSuccess
device["Host\ndevice\nd3f:Host\n⚠ tainted"]:::tainted
EVENT --> actor_process
EVENT --> target_process
EVENT --> device
actor_process -.->|"hollows"| target_processactor.process·d3f:Processactor.process.file.path | attacker_controlled | Hollowing tool path — attacker-chosen |
d3f:ProcessTerminationprocess·d3f:Processprocess.pid | variable | Target process identifier — OS-assigned |
process.start_type | invariant | = Suspended |
d3f:ProcessTerminationdevice·d3f:Hostd3f:NetworkIsolationDefinitional Sigma rule▼
Broad by design — defines the technique, not an operational alert. Gate on variable or attacker-controlled field conditions to narrow for production use.
title: Process Injection: Process Hollowing (T1055.012)
status: experimental
description: >
Definitional rule — broad by design. Defines the technique independent of
medium, tool, or attacker-controlled variables. Narrow with variable and
attacker-controlled field conditions for operational use.
logsource:
product: ocsf
category: Process Activity (1007)
detection:
selection:
activity_id: 'Inject'
process.start_type: 'Suspended'
condition: selection