Adversaries may inject malicious code into suspended and hollowed processes in order to evade process-based defenses. Process hollowing is a method of executing arbitrary code in the address space of a separate live process.
Process hollowing is commonly performed by creating a process in a suspended state then unmapping/hollowing its memory, which can then be replaced with malicious code. A victim process can be created with native Windows API calls such as CreateProcess
, which includes a flag to suspend the processes primary thread. At this point the process can be unmapped using APIs calls such as ZwUnmapViewOfSection
or NtUnmapViewOfSection
before being written to, realigned to the injected code, and resumed via VirtualAllocEx
, WriteProcessMemory
, SetThreadContext
, then ResumeThread
respectively.[1][2]
This is very similar to Thread Local Storage but creates a new process rather than targeting an existing process. This behavior will likely not result in elevated privileges since the injected process was spawned from (and thus inherits the security context) of the injecting process. However, execution via process hollowing may also evade detection from security products since the execution is masked under a legitimate process.
ID | Name | Description |
---|---|---|
S0331 | Agent Tesla |
Agent Tesla has used process hollowing to create and manipulate processes through sections of unmapped memory by reallocating that space with its malicious code.[3] |
S0373 | Astaroth |
Astaroth can create a new process in a suspended state from a targeted legitimate process in order to unmap its memory and replace it with malicious code.[4][5] |
S0344 | Azorult |
Azorult can decrypt the payload into memory, create a new suspended process of itself, then inject a decrypted payload to the new process and resume new process execution.[6] |
S0128 | BADNEWS |
BADNEWS has a command to download an .exe and use process hollowing to inject it into a new process.[7][8] |
S0234 | Bandook |
Bandook has been launched by starting iexplore.exe and replacing it with Bandook's payload.[9][10][11] |
S0534 | Bazar |
Bazar can inject into a target process including Svchost, Explorer, and cmd using process hollowing.[12][13] |
S0127 | BBSRAT |
BBSRAT has been seen loaded into msiexec.exe through process hollowing to hide its execution.[14] |
S0660 | Clambling |
Clambling can execute binaries through process hollowing.[15] |
S0154 | Cobalt Strike |
Cobalt Strike can use process hollowing for execution.[16][17] |
S1111 | DarkGate |
DarkGate leverages process hollowing techniques to evade detection, such as decrypting the content of an encrypted PE file and injecting it into the process vbc.exe.[18] |
S0354 | Denis |
Denis performed process hollowing through the API calls CreateRemoteThread, ResumeThread, and Wow64SetThreadContext.[19] |
S0567 | Dtrack |
Dtrack has used process hollowing shellcode to target a predefined list of processes from |
S0038 | Duqu |
Duqu is capable of loading executable code via process hollowing.[21] |
S0367 | Emotet |
Emotet uses a copy of |
S1138 | Gootloader |
Gootloader can inject its Delphi executable into ImagingDevices.exe using a process hollowing technique.[23][24] |
G0078 | Gorgon Group |
Gorgon Group malware can use process hollowing to inject one of its trojans into another process.[25] |
S0483 | IcedID |
IcedID can inject a Cobalt Strike beacon into cmd.exe via process hallowing.[26] |
S0189 | ISMInjector |
ISMInjector hollows out a newly created process RegASM.exe and injects its payload into the hollowed process.[27] |
G0094 | Kimsuky |
Kimsuky has used a file injector DLL to spawn a benign process on the victim's system and inject the malicious payload into it via process hollowing.[28] |
S0447 | Lokibot |
Lokibot has used process hollowing to inject itself into legitimate Windows process.[29][30] |
G0045 | menuPass |
menuPass has used process hollowing in iexplore.exe to load the RedLeaves implant.[31] |
S0198 | NETWIRE |
The NETWIRE payload has been injected into benign Microsoft executables via process hollowing.[32][33] |
S0229 | Orz |
Some Orz versions have an embedded DLL known as MockDll that uses process hollowing and Regsvr32 to execute another payload.[34] |
G0040 | Patchwork |
A Patchwork payload uses process hollowing to hide the UAC bypass vulnerability exploitation inside svchost.exe.[35] |
S0650 | QakBot |
QakBot can use process hollowing to execute its main payload.[36] |
S1130 | Raspberry Robin |
Raspberry Robin will execute a legitimate process, then suspend it to inject code for a Tor client into the process, followed by resumption of the process to enable Tor client execution.[37] |
S0662 | RCSession |
RCSession can launch itself from a hollowed svchost.exe process.[38][15][39] |
S1018 | Saint Bot |
The Saint Bot loader has used API calls to spawn |
S0226 | Smoke Loader |
Smoke Loader spawns a new copy of c:\windows\syswow64\explorer.exe and then replaces the executable code in memory with malware.[41][42] |
S1086 | Snip3 |
Snip3 can use RunPE to execute malicious payloads within a hollowed Windows process.[43][44] |
G1018 | TA2541 |
TA2541 has used process hollowing to execute CyberGate malware.[45] |
G0027 | Threat Group-3390 |
A Threat Group-3390 tool can spawn |
S0266 | TrickBot |
TrickBot injects into the svchost.exe process.[48][49][50][51] |
S0386 | Ursnif |
Ursnif has used process hollowing to inject into child processes.[52] |
S0689 | WhisperGate |
WhisperGate has the ability to inject its fourth stage into a suspended process created by the legitimate Windows utility |
S1065 | Woody RAT |
Woody RAT can create a suspended notepad process and write shellcode to delete a file into the suspended process using |
ID | Mitigation | Description |
---|---|---|
M1040 | Behavior Prevention on Endpoint |
Some endpoint security solutions can be configured to block some types of process injection based on common sequences of behavior that occur during the injection process. |
ID | Data Source | Data Component | Detects |
---|---|---|---|
DS0009 | Process | OS API Execution |
Monitoring Windows API calls indicative of the various types of code injection may generate a significant amount of data and may not be directly useful for defense unless collected under specific circumstances for known bad sequences of calls, since benign use of API functions may be common and difficult to distinguish from malicious behavior. Windows API calls such as |
Process Access |
Monitor for processes being viewed that may inject malicious code into suspended and hollowed processes in order to evade process-based defenses. |
||
Process Creation |
Monitor for newly executed processes that may inject malicious code into suspended and hollowed processes in order to evade process-based defenses. Adversaries may start legitimate processes and then use their memory space to run malicious code. This analytic looks for common Windows processes that have been abused this way in the past; when the processes are started for this purpose they may not have the standard parent that we would expect. This list is not exhaustive, and it is possible for cyber actors to avoid this discepency. These signatures only work if Sysmon reports the parent process, which may not always be the case if the parent dies before sysmon processes the event. Analytic 1 - Processes Started From Irregular Parents
|
||
Process Modification |
Monitor for changes made to processes that may inject malicious code into suspended and hollowed processes in order to evade process-based defenses. |