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.  
- Import address table (IAT) hooking, which use modifications to a process’s IAT, where pointers to imported API functions are stored.   
- Inline hooking, which overwrites the first bytes in an API function to redirect code flow.   
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. 
|Empire||Empire contains some modules that leverage API hooking to carry out tasks, such as netripper. |
|FinFisher||FinFisher hooks processes by modifying IAT pointers to CreateWindowEx.  |
|NOKKI||NOKKI uses the Windows call SetWindowsHookEx and begins injecting it into every GUI process running on the victim's machine. |
|PLATINUM||PLATINUM is capable of using Windows hook interfaces for information gathering such as credential access. |
TrickBot has the ability to capture RDP credentials by capturing the
|Ursnif||Ursnif has hooked APIs to perform a wide variety of information theft, such as monitoring traffic from browsers. |
|Zebrocy||Zebrocy installs an application-defined Windows hook to get notified when a network drive has been attached, so it can then use the hook to call its RecordToFile file stealing method. |
|Zeus Panda||Zeus Panda hooks processes by leveraging its own IAT hooked functions. |
This type of attack technique cannot be easily mitigated with preventive controls since it is based on the abuse of system features.
Monitor for calls to the SetWindowsHookEx and SetWinEventHook functions, which install a hook procedure.   Also consider analyzing hook chains (which hold pointers to hook procedures for each type of hook) using tools    or by programmatically examining internal kernel structures.  
Rootkits detectors  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  to compare the in-memory IAT to the real addresses of the referenced functions.  
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.
- Microsoft. (n.d.). Hooks Overview. Retrieved December 12, 2017.
- Hosseini, A. (2017, July 18). Ten Process Injection Techniques: A Technical Survey Of Common And Trending Process Injection Techniques. Retrieved December 7, 2017.
- Tigzy. (2014, October 15). Userland Rootkits: Part 1, IAT hooks. Retrieved December 12, 2017.
- Hillman, M. (2015, August 8). Dynamic Hooking Techniques: User Mode. Retrieved December 20, 2017.
- Mariani, B. (2011, September 6). Inline Hooking in Windows. Retrieved December 12, 2017.
- Microsoft. (2017, September 15). TrojanSpy:Win32/Ursnif.gen!I. Retrieved December 18, 2017.
- Symantec. (n.d.). Windows Rootkit Overview. Retrieved December 21, 2017.
- Schroeder, W., Warner, J., Nelson, M. (n.d.). Github PowerShellEmpire. Retrieved April 28, 2016.
- FinFisher. (n.d.). Retrieved December 20, 2017.
- Grunzweig, J., Lee, B. (2018, September 27). New KONNI Malware attacking Eurasia and Southeast Asia. Retrieved November 5, 2018.
- Kaspersky Lab's Global Research & Analysis Team. (2018, February 20). A Slice of 2017 Sofacy Activity. Retrieved November 27, 2018.
- Ebach, L. (2017, June 22). Analysis Results of Zeus.Variant.Panda. Retrieved November 5, 2018.
- Llimos, N., Pascual, C.. (2019, February 12). Trickbot Adds Remote Application Credential-Grabbing Capabilities to Its Repertoire. Retrieved March 12, 2019.
- Caragay, R. (2015, March 26). URSNIF: The Multifaceted Malware. Retrieved June 5, 2019.
- Windows Defender Advanced Threat Hunting Team. (2016, April 29). PLATINUM: Targeted attacks in South and Southeast Asia. Retrieved February 15, 2018.
- Volatility Labs. (2012, September 24). MoVP 3.1 Detecting Malware Hooks in the Windows GUI Subsystem. Retrieved December 12, 2017.
- Prekas, G. (2011, July 11). Winhook. Retrieved December 12, 2017.
- Satiro, J. (2011, September 14). GetHooks. Retrieved December 12, 2017.
- Felici, M. (2006, December 6). Any application-defined hook procedure on my machine?. Retrieved December 12, 2017.
- Eye of Ra. (2017, June 27). Windows Keylogger Part 2: Defense against user-land. Retrieved December 12, 2017.
- GMER. (n.d.). GMER. Retrieved December 12, 2017.
- Microsoft. (n.d.). Taking a Snapshot and Viewing Processes. Retrieved December 12, 2017.
- Stack Exchange - Security. (2012, July 31). What are the methods to find hooked functions and APIs?. Retrieved December 12, 2017.