Hijack Execution Flow: DLL
- ID
- T1574.001
- Tactics
- TA0002 Execution, TA0005 Stealth
- Sub-technique of
- T1574 Hijack Execution Flow
- Platforms
- Windows
- Data sources
- File Creation, File Metadata, Module Load, Windows Registry Key Modification, Process Creation
- Source
- attack.mitre.org
- MITRE last modified
- 12 Sep 2026
Adversaries may abuse dynamic-link library files (DLLs) in order to achieve persistence, escalate privileges, and evade defenses. DLLs are libraries that contain code and data that can be simultaneously utilized by multiple programs. While DLLs are not malicious by nature, they can be abused through mechanisms such as side-loading, hijacking search order, and phantom DLL hijacking.[6]
Specific ways DLLs are abused by adversaries include:
### DLL Sideloading
Adversaries may execute their own malicious payloads by side-loading DLLs. Side-loading involves hijacking which DLL a program loads by planting and then invoking a legitimate application that executes their payload(s).
Side-loading positions both the victim application and malicious payload(s) alongside each other. Adversaries likely use side-loading as a means of masking actions they perform under a legitimate, trusted, and potentially elevated system or software process. Benign executables used to side-load payloads may not be flagged during delivery and/or execution. Adversary payloads may also be encrypted/packed or otherwise obfuscated until loaded into the memory of the trusted process.
Adversaries may also side-load other packages, such as BPLs (Borland Package Library).[7]
Adversaries may chain DLL sideloading multiple times to fragment functionality hindering analysis. Adversaries using multiple DLL files can split the loader functions across different DLLs, with a main DLL loading the separated export functions. [8] Spreading loader functions across multiple DLLs makes analysis harder, since all files must be collected to fully understand the malware’s behavior. Another method implements a “loader-for-a-loader”, where a malicious DLL’s sole role is to load a second DLL (or a chain of DLLs) that contain the real payload. [9]
### DLL Search Order Hijacking
Adversaries may execute their own malicious payloads by hijacking the search order that Windows uses to load DLLs. This search order is a sequence of special and standard search locations that a program checks when loading a DLL. An adversary can plant a trojan DLL in a directory that will be prioritized by the DLL search order over the location of a legitimate library. This will cause Windows to load the malicious DLL when it is called for by the victim program.[6]
### DLL Redirection
Adversaries may directly modify the search order via DLL redirection, which after being enabled (in the Registry or via the creation of a redirection file) may cause a program to load a DLL from a different location.[10][11]
### Phantom DLL Hijacking
Adversaries may leverage phantom DLL hijacking by targeting references to non-existent DLL files. They may be able to load their own malicious DLL by planting it with the correct name in the location of the missing module.[12][13]
### DLL Substitution
Adversaries may target existing, valid DLL files and substitute them with their own malicious DLLs, planting them with the same name and in the same location as the valid DLL file.[14]
Programs that fall victim to DLL hijacking may appear to behave normally because malicious DLLs may be configured to also load the legitimate DLLs they were meant to replace, evading defenses.
Remote DLL hijacking can occur when a program sets its current directory to a remote location, such as a Web share, before loading a DLL.[15][16]
If a valid DLL is configured to run at a higher privilege level, then the adversary-controlled DLL that is loaded will also be executed at the higher level. In this case, the technique could be used for privilege escalation.
Detection
- DET0201 Detection Strategy for Hijack Execution Flow for DLLs
Data components: File Creation, File Metadata, Module Load, Windows Registry Key Modification, Process Creation
Mitigations (5)
- M1013 Application Developer Guidance
When possible, include hash values in manifest files to help prevent side-loading of malicious libraries.
- M1038 Execution Prevention
Identify and block potentially malicious software executed through DLL hijacking by using application control solutions capable of blocking DLLs loaded by legitimate software.[1]
- M1044 Restrict Library Loading
Disallow loading of remote DLLs. This is included by default in Windows Server 2012+ and is available by patch for XP+ and Server 2003+.[2]
Enable Safe DLL Search Mode to move the user's current folder later in the search order. This is included by default in modern versions of Windows; the associated Windows Registry key is located at
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SafeDLLSearchMode.[3]- M1047 Audit
Use auditing tools capable of detecting DLL search order hijacking opportunities on systems within an enterprise and correct them. Toolkits like the PowerSploit framework contain PowerUp modules that can be used to explore systems for DLL hijacking weaknesses.[4]
Use the program
sxstrace.exethat is included with Windows, along with manual inspection, to check manifest files for side-by-side problems in software.[5]- M1051 Update Software
Update software regularly to include patches that fix DLL side-loading vulnerabilities.
Groups (36)
- G0019 Naikon
- G0022 APT3
- G0027 Threat Group-3390
- G0032 Lazarus Group
- G0040 Patchwork
- G0045 menuPass
- G0048 RTM
- G0050 APT32
- G0060 BRONZE BUTLER
- G0069 MuddyWater
- G0073 APT19
- G0081 Tropic Trooper
- G0090 WIRTE
- G0093 GALLIUM
- G0096 APT41
- G0098 BlackTech
- G0099 APT-C-36
- G0107 Whitefly
- G0114 Chimera
- G0120 Evilnum
- G0121 Sidewinder
- G0126 Higaisa
- G0129 Mustang Panda
- G0131 Tonto Team
- G0135 BackdoorDiplomacy
- G0143 Aquatic Panda
- G1006 Earth Lusca
- G1008 SideCopy
- G1014 LuminousMoth
- G1016 FIN13
- G1021 Cinnamon Tempest
- G1034 Daggerfly
- G1046 Storm-1811
- G1047 Velvet Ant
- G1054 MirrorFace
- G1059 NIMBUS MANTICORE
Software (82)
- S0009 Hikit
- S0013 PlugX
- S0032 gh0st RAT
- S0070 HTTPBrowser
- S0074 Sakula
- S0098 T9000
- S0109 WEBC2
- S0113 Prikormka
- S0127 BBSRAT
- S0128 BADNEWS
- S0134 Downdelph
- S0153 RedLeaves
- S0176 Wingbird
- S0182 FinFisher
- S0194 PowerSploit
- S0230 ZeroT
- S0260 InvisiMole
- S0275 UPPERCUT
- S0280 MirageFox
- S0354 Denis
- S0363 Empire
- S0373 Astaroth
- S0384 Dridex
- S0398 HyperBro
- S0415 BOOSTWRITE
- S0455 Metamorfo
- S0458 Ramsay
- S0477 Goopy
- S0528 Javali
- S0530 Melcoz
- S0538 Crutch
- S0554 Egregor
- S0579 Waterbear
- S0582 LookBack
- S0585 Kerrdown
- S0612 WastedLocker
- S0624 Ecipekac
- S0629 RainyDay
- S0630 Nebulae
- S0631 Chaes
- S0650 QakBot
- S0660 Clambling
- S0661 FoggyWeb
- S0662 RCSession
- S0663 SysUpdate
- S0664 Pandora
- S1041 Chinoxy
- S1046 PowGoop
- S1059 metaMain
- S1063 Brute Ratel C4
- S1097 HUI Loader
- S1100 Ninja
- S1101 LoFiSe
- S1102 Pcexter
- S1111 DarkGate
- S1130 Raspberry Robin
- S1183 StrelaStealer
- S1213 Lumma Stealer
- S1226 BOOKWORM
- S1227 StarProxy
Showing 60 of 82. Full list on attack.mitre.org.
References
- Microsoft AppLocker DLL
- Microsoft More information about DLL
- Microsoft Dynamic Link Library Search Order
- Powersploit
- Microsoft Sxstrace
- unit 42
- kroll bpl
- Virus Bulletin
- Sophos
- Microsoft redirection
- Microsoft - manifests/assembly
- Hexacorn DLL Hijacking
- Hijack DLLs CrowdStrike
- Wietze Beukema DLL Hijacking
- dll pre load owasp
- microsoft remote preloading
