New to CAPEC? Start Here
Home > CAPEC List > CAPEC-640: Inclusion of Code in Existing Process (Version 3.9)  

CAPEC-640: Inclusion of Code in Existing Process

Attack Pattern ID: 640
Abstraction: Detailed
View customized information:
+ Description
The adversary takes advantage of a bug in an application failing to verify the integrity of the running process to execute arbitrary code in the address space of a separate live process. The adversary could use running code in the context of another process to try to access process's memory, system/network resources, etc. The goal of this attack is to evade detection defenses and escalate privileges by masking the malicious code under an existing legitimate process. Examples of approaches include but not limited to: dynamic-link library (DLL) injection, portable executable injection, thread execution hijacking, ptrace system calls, VDSO hijacking, function hooking, reflective code loading, and more.
+ Likelihood Of Attack


+ Typical Severity


+ Relationships
Section HelpThis table shows the other attack patterns and high level categories that are related to this attack pattern. These relationships are defined as ChildOf and ParentOf, and give insight to similar items that may exist at higher and lower levels of abstraction. In addition, relationships such as CanFollow, PeerOf, and CanAlsoBe are defined to show similar attack patterns that the user may want to explore.
ChildOfStandard Attack PatternStandard Attack Pattern - A standard level attack pattern in CAPEC is focused on a specific methodology or technique used in an attack. It is often seen as a singular piece of a fully executed attack. A standard attack pattern is meant to provide sufficient details to understand the specific technique and how it attempts to accomplish a desired goal. A standard level attack pattern is a specific type of a more abstract meta level attack pattern.251Local Code Inclusion
Section HelpThis table shows the views that this attack pattern belongs to and top level categories within that view.
+ Execution Flow
  1. Determine target process: The adversary determines a process with sufficient privileges that they wish to include code into.

    On Windows, use the process explorer's security tab to see if a process is running with administror privileges.
    On Linux, use the ps command to view running processes and pipe the output to a search for a particular user, or the root user.
  1. Attempt to include simple code with known output: The adversary attempts to include very simple code into the existing process to determine if the code inclusion worked. The code will differ based on the approach used to include code into an existing process.

  1. Include arbitrary code into existing process: Once an adversary has determined that including code into the existing process is possible, they will include code for a targeted purpose, such as accessing that process's memory.

+ Prerequisites
The targeted application fails to verify the integrity of the running process that allows an adversary to execute arbitrary code.
+ Skills Required
[Level: High]
Knowledge of how to load malicious code into the memory space of a running process, as well as the ability to have the running process execute this code. For example, with DLL injection, the adversary must know how to load a DLL into the memory space of another running process, and cause this process to execute the code inside of the DLL.
+ Consequences
Section HelpThis table specifies different individual consequences associated with the attack pattern. The Scope identifies the security property that is violated, while the Impact describes the negative technical impact that arises if an adversary succeeds in their attack. The Likelihood provides information about how likely the specific consequence is expected to be seen relative to the other consequences in the list. For example, there may be high likelihood that a pattern will be used to achieve a certain impact, but a low likelihood that it will be exploited to achieve a different impact.
Execute Unauthorized Commands
Read Data
+ Mitigations
Prevent unknown or malicious software from loading through using an allowlist policy.
Properly restrict the location of the software being used.
Leverage security kernel modules providing advanced access control and process restrictions like SELinux.
Monitor API calls like CreateRemoteThread, SuspendThread/SetThreadContext/ResumeThread, QueueUserAPC, and similar for Windows.
Monitor API calls like ptrace system call, use of LD_PRELOAD environment variable, dlfcn dynamic linking API calls, and similar for Linux.
Monitor API calls like SetWindowsHookEx and SetWinEventHook which install hook procedures for Windows.
Monitor processes and command-line arguments for unknown behavior related to code injection.
+ Taxonomy Mappings
Section HelpCAPEC mappings to ATT&CK techniques leverage an inheritance model to streamline and minimize direct CAPEC/ATT&CK mappings. Inheritance of a mapping is indicated by text stating that the parent CAPEC has relevant ATT&CK mappings. Note that the ATT&CK Enterprise Framework does not use an inheritance model as part of the mapping to CAPEC.
Relevant to the ATT&CK taxonomy mapping (also see parent)
Entry IDEntry Name
1505.005Server Software Component: Terminal Services DLL
1574.006Hijack Execution Flow: Dynamic Linker Hijacking
1574.013Hijack Execution Flow: KernelCallbackTable
1620Reflective Code Loading
+ Content History
Submission DateSubmitterOrganization
(Version 2.12)
CAPEC Content TeamThe MITRE Corporation
Modification DateModifierOrganization
(Version 3.1)
CAPEC Content TeamThe MITRE Corporation
Updated Related_Weaknesses
(Version 3.3)
CAPEC Content TeamThe MITRE Corporation
Updated Description, Mitigations, Taxonomy_Mappings
(Version 3.5)
CAPEC Content TeamThe MITRE Corporation
Updated Taxonomy_Mappings
(Version 3.6)
CAPEC Content TeamThe MITRE Corporation
Updated Execution_Flow
(Version 3.8)
CAPEC Content TeamThe MITRE Corporation
Updated Taxonomy_Mappings
(Version 3.9)
CAPEC Content TeamThe MITRE Corporation
Updated Description, Related_Weaknesses, Taxonomy_Mappings
More information is available — Please select a different filter.
Page Last Updated or Reviewed: July 31, 2018