Check out the results from our first round of ATT&CK Evaluations at!


Windows processes often leverage application programming interface (API) functions to perform tasks that require reusable system resources. Windows API functions are typically stored in dynamic-link libraries (DLLs) as exported functions. Hooking involves redirecting calls to these functions and can be implemented via:

  • Hooks procedures, which intercept and execute designated code in response to events such as messages, keystrokes, and mouse inputs. [1] [2]
  • Import address table (IAT) hooking, which use modifications to a process’s IAT, where pointers to imported API functions are stored. [2] [3] [4]
  • Inline hooking, which overwrites the first bytes in an API function to redirect code flow. [2] [5] [4]

Similar to Process Injection, adversaries may use hooking to load and execute malicious code within the context of another process, masking the execution while also allowing access to the process's memory and possibly elevated privileges. Installing hooking mechanisms may also provide Persistence via continuous invocation when the functions are called through normal use.

Malicious hooking mechanisms may also capture API calls that include parameters that reveal user authentication credentials for Credential Access. [6]

Hooking is commonly utilized by Rootkits to conceal files, processes, Registry keys, and other objects in order to hide malware and associated behaviors. [7]

ID: T1179

Tactic: Persistence, Privilege Escalation, Credential Access

Platform:  Windows

Permissions Required:  Administrator, SYSTEM

Data Sources:  API monitoring, Binary file metadata, DLL monitoring, Loaded DLLs, Process monitoring, Windows event logs

Version: 1.0



FinFisher hooks processes by modifying IAT pointers to CreateWindowEx.[8][2]


PLATINUM is capable of using Windows hook interfaces for information gathering such as credential access.[9]


This type of attack technique cannot be easily mitigated with preventive controls since it is based on the abuse of operating system design features. For example, mitigating all hooking will likely have unintended side effects, such as preventing legitimate software (i.e., security products) from operating properly. Efforts should be focused on preventing adversary tools from running earlier in the chain of activity and on identifying subsequent malicious behavior.


Monitor for calls to the SetWindowsHookEx and SetWinEventHook functions, which install a hook procedure. [1] [10] Also consider analyzing hook chains (which hold pointers to hook procedures for each type of hook) using tools [10] [11] [12] or by programmatically examining internal kernel structures. [13] [14]

Rootkits detectors [15] can also be used to monitor for various flavors of hooking activity.

Verify integrity of live processes by comparing code in memory to that of corresponding static binaries, specifically checking for jumps and other instructions that redirect code flow. Also consider taking snapshots of newly started processes [16] to compare the in-memory IAT to the real addresses of the referenced functions. [17] [3]

Analyze process behavior to determine if a process is performing actions it usually does not, such as opening network connections, reading files, or other suspicious actions that could relate to post-compromise behavior.