|T1055.001||Dynamic-link Library Injection|
|T1055.002||Portable Executable Injection|
|T1055.003||Thread Execution Hijacking|
|T1055.004||Asynchronous Procedure Call|
|T1055.005||Thread Local Storage|
|T1055.008||Ptrace System Calls|
|T1055.011||Extra Window Memory Injection|
Adversaries may abuse list-view controls to inject malicious code into hijacked processes in order to evade process-based defenses as well as possibly elevate privileges. ListPlanting is a method of executing arbitrary code in the address space of a separate live process. Code executed via ListPlanting may also evade detection from security products since the execution is masked under a legitimate process.
List-view controls are user interface windows used to display collections of items. Information about an application's list-view settings are stored within the process' memory in a
ListPlanting (a form of message-passing "shatter attack") may be performed by copying code into the virtual address space of a process that uses a list-view control then using that code as a custom callback for sorting the listed items. Adversaries must first copy code into the target process’ memory space, which can be performed various ways including by directly obtaining a handle to the
SysListView32 child of the victim process window (via Windows API calls such as
EnumWindows) or other Process Injection methods.
Some variations of ListPlanting may allocate memory in the target process but then use window messages to copy the payload, to avoid the use of the highly monitored
WriteProcessMemory function. For example, an adversary can use the
SendMessage API functions to send
LVM_GETITEMPOSITION messages, effectively copying a payload 2 bytes at a time to the allocated memory.
Finally, the payload is triggered by sending the
LVM_SORTITEMS message to the
SysListView32 child of the process window, with the payload within the newly allocated buffer passed and executed as the
|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||
Consider monitoring for excessive use of
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
Monitor for changes made to processes that may inject code into processes in order to evade process-based defenses as well as possibly elevate privileges. Analyze process behavior to determine if a process is performing unusual actions, such as opening network connections, reading files, or other suspicious actions that could relate to post-compromise behavior.