Process Injection Attacks with ROP
Practical methodologies and automation frameworks for executing complex Windows process injection entirely using ROP chains.
Summary
Process Injection via ROP Chains
This talk showcases techniques for process injection using advanced return-oriented programming (ROP). Process injection via ROP introduces significant hurdles, requiring many WinAPIs to be chained together, each with complex parameters and return values. We give practical details on how to best manage this. One seemingly insurmountable challenge is in identifying the target binary, as string comparison can be extremely difficult in ROP, as needed ROP gadgets may be lacking. We unveil a unique, universal solution, giving a reliable means of string comparison via ROP, which works all the time, allowing a specific process to be pinpointed and injected into via ROP.
Chaining Complex WinAPI Calls
We created numerous patterns for different WinAPIs, allowing for as many as a dozen ways of preparing a specific WinAPI via ROP, if using an approach centered around the PUSHAD instruction. With some WinAPIs, there are zero patterns for PUSHAD, forcing us to rely upon the much lauded “sniper” approach. We document all such variations of patterns for the WinAPIs in our demonstrated process injection. This research is not intended to demo a one-off example of process injection via ROP, but to provide a methodology that can be used time and time again, providing unique templates for others to use the same WinAPIs when attempting process injection via ROP.
Related talks
Main Stage·18 min
Alon Weinberg
Introduces a novel x64 code injection technique that bypasses modern Windows security controls without process hollowing.
Main Stage·36 min
Hadrian Barral
Introduces modern shellcoding techniques that survive ASLR, NX, and common AV detection by combining gadget chaining with runtime resolution.
Main Stage·48 min
Itzik Kotler
Comprehensive catalog of 15+ Windows process injection techniques with detection signatures and evasion analysis for each.


