SlideShare a Scribd company logo
Process Injection
Malware style
Who am I
• Security Researcher
• PwC: Consultant
• Former student UGent
• {@ -F-G}/SanderDemeester
Outline
• Windows processes: An introduction
• Dll Injection
• Process replacement
• Questions
Windows PE
• It’s a file format!
• It contains information about the executable
• It’s THE windows format for all executables
• DLL
• EXE
• SYS
• Imports - Functions from other libraries
• Exports - Functions that should be called
• NT Headers - used by windows loader
• Sections - .text, .rdata, .data,…
• Relocations - Preferred base address
• Resources - Strings, icons, …
• Much more..
PE - A short demo
What is a process?
• It’s the execution of a program
• One or more threads run in the context of a process
• Thread - Conceptually, an execution unit inside the
process
Process as a structure
• Fine.. A process is a thing that runs in the system..
• The OS uses different kernel structures to manage
those processes
• Remember, a process believes it has the whole
adres space to It’s self..
Process injection - Malware style
EPROCESS
• Executive component of
windows kernel
• It's a process object for
a process
• Kernel use: IO transfer,
handle virtual memory
• Drivers:
PsGetCurrentProcess()
PEB
• Structure in userspace
• Used by operating system
code in user-space
(ntdll,kernel32)
• Contains information about a
running process
• CLI parameters, pointer to
heap,image base address
• A pointer to PEB_LDR_DATA
PEB_LDR_DATA
• Contains information about
the loaded modules
associated with the running
process
• Has the anchor for a doubly
linked list that contains each
loaded module
• LDR_DATA_TABLE_ENTRY
TIB
• Stores information about the
current thread
• Can be obtained via the FS or
GS registers
• Used to obtain information
about the running thread
• Things like the SEH, stack
base
• Access to the thread local
storage array
PEB,TIB - A short
demo
So…What does this mean?
• Different windows components need to interact with
the process
• Windows API’s need to provide access to that
information
Process in memory
• There is something called virtual memory
• Maps memory addresses into physical addresses,
the virtual memory address space
• A collection of contiguous segments
• Each process thinks.. It's all mine
Process injection - Malware style
Virtual memory - A
short demo
Virtual memory
• Mapping virtual memory addresses into physical addresses
• Base relocation: Fixing memory locations at load time.
• Relative virtual addresses or RVA
• Just made the job of the loader easier
• Three types of “addresses”
• Logical addresses: perspective of the running process
• Linear addresses: logical addresses after segment translation
• Physical addresses: linear addresses after page table translation
Outline
• Windows processes: An introduction
• Dll Injection
• Process replacement
• Questions
Injection.. Why?
• We would like to hide the fact that we are running
code
• Makes deployment a lot easier
• Bypass certain security filters
DLL Injection
• Force a different process to load a DLL at runtime
• Use the windows API
• The OS automatically calls the DLLMain function
• DLL inherits the same rights as the target process
• Everything the malicious code does will appear to
come from the injected process
DLL Injection - Why?
• Everything the malicious code does will appear to
come from the injected process
• It inherits all the permissions of the process
• Read from that process virtual memory
Process injection - Malware style
DLL Injection - Demo
DLL injection steps
• The loader obtains a handle to the victim process
• Most often uses CreateToolhelp32snapshot,
Process32First and Process32Next
• Obtain the Process ID
• Obtain the handle to the process
DLL injection steps
• Make room to create a new thread
• Allocate enough memory in the victims process for
the DLL name
• Write only the name to the virtual memory of our
victim
• Obtain a module handle to LoadLibraryA
DLL injection steps
• The CreateRemoteThread is used to open and execute
a thread in the victims process
• The CreateRemoteThread is passed three parameters
• hProcess - process handle
• lpStartAddress - starting point of the code for our
new thread, in our case. LoadLibraryA
• lpParameter - argument for the new thread
DLL Injection - code
constructs
Outline
• Windows processes: An introduction
• Dll Injection
• Process replacement
• Questions
Process replacement - Why?
• Disguise malware as a legit process
• Can not crash the host process and risk being
discovered
• Same permissions as the replaced process
Process replacement
• Processes are just bytes in memory
• Overwrite the memory space of our victim
process
• Disguises our code as a legitimate process
• Inherit all the permissions of the replaced process
Process replacement - How
would we do it?
• Create a process in a suspended state
• Replace all the code and memory in the process
with our code
• Run the process
• Easy!
Process replacement -
A short demo
What do we need?
• We need a different “process” to replace the existing
one?
• A way to “stop” a legitimate process that is running?
• A lot of information on the legitimate process
• Ways to write into the virtual memory of a different
process?
• A brain that works
Windows resources
• A program contains “resources”
• Contains raw images, bitmaps and dialog boxes
• But it can contain what we want?
• Steganography? Anyone?
• Lets put a PE in it!
Resource hacker - A
short demo
• Create a new process in a SUSPENDED_STATE
Process replacement steps
• Obtain our PE file stored in the resource section
• Create a new windows process in the suspended
state
• Access the “thread context” of the suspended
progress thread.
• The EBX register of newly created process contains
a pointer to the PEB structure
Process replacement steps
• The PEB structure contains a lot of information
about the process, including the image base
address.
• Using an “undocumented" API call
NtUnmapViewOfSection we can remove the code
from memory
• Windows Native System Services routine - use a
function pointer to get to it.
• We need to place our malicious PE file into memory
• Obtain the image base address and the size of our
program
• Call VirtualAllocEx and pass it the handle of our
suspended thread and set the permissions of the
allocated memory to PAGE_EXECUTE_READWRITE
• So far so good
• Start parsing the PE file to obtain pointers to the different
section
• SizeOfHeaders is at some offset in the PE header
• NumberOfSections is at some offset in the PE header
• Copy the PE header to the exact same place in the virtual
adres space as the suspended process
• Read the IMAGE_HEADER_SECTION and perform some
pointer calculations
• Keep going..
• Using the structures
• IMAGE_SECTION_HEADERS.SizeOfRawData
• IMAGE_SECTION_HEADERS.PointerToRawData
• IMAGE_SECTION_HEADER.VirtualAddress
• We perform pointer calculations to copy the data
over
Are we done yet?
• The windows loader has done most of the work
• We need to tell the loader where it should jump to
• Patch the original program entry point with the one
from our PE file
• After loading, lpContext->_eax contains our OEP
• Call SetThreadContext to update the thread context
• Start of suspended process
Process replacement -
code constructs
Is this still the same
process?
• How do you define a process?
• As far as windows is concerned, it’s what It's loaded
into memory
• Using the API to observe the process, it is the
original process
Can we detect this?
• We can monitor for a sequence of strange API
calls?
• We can compare the code sections of the running
process with the ones stored on the filesystem
• We can define rules on how a program should
behave and compare
What other techniques do
we have?
• Direct injection
• Local and remote hook injection
• Detour hijacking
• APC injection from user space and kernel space
• I’m sure, many more.
BSidesLV 2015
• Injection on Steroids: Code-less code injection and
0-day techniques..
• State-of-the-art
(*(*FNPTR)
(LPVOID,*char))
(QUESTIONS,”?”)
Process injection - Malware style

More Related Content

What's hot (20)

PPT
Linux forensics
Santosh Khadsare
 
PPT
Port scanning
Hemanth Pasumarthi
 
PDF
Nessus Software
Megha Sahu
 
PPTX
Introduction to Malware Analysis
Andrew McNicol
 
PPTX
MITRE ATT&CK framework
Bhushan Gurav
 
PPTX
Information security
Jin Castor
 
PPTX
Penetration testing reporting and methodology
Rashad Aliyev
 
PPTX
Introduction to Network Security
John Ely Masculino
 
PPTX
Intrusion detection
CAS
 
PPTX
Pen Testing Explained
Rand W. Hirt
 
PPTX
Introduction to penetration testing
Nezar Alazzabi
 
PDF
Metaploit
Ajinkya Pathak
 
PPTX
Ethical Hacking
Rishab garg
 
PPSX
Intrusion detection system
gaurav koriya
 
DOCX
Vulnerability Assessment and Penetration Testing Framework by Falgun Rathod
Falgun Rathod
 
PDF
How MITRE ATT&CK helps security operations
Sergey Soldatov
 
PDF
1. introduction to cyber security
Animesh Roy
 
PPTX
Honeypot ss
Kajal Mittal
 
Linux forensics
Santosh Khadsare
 
Port scanning
Hemanth Pasumarthi
 
Nessus Software
Megha Sahu
 
Introduction to Malware Analysis
Andrew McNicol
 
MITRE ATT&CK framework
Bhushan Gurav
 
Information security
Jin Castor
 
Penetration testing reporting and methodology
Rashad Aliyev
 
Introduction to Network Security
John Ely Masculino
 
Intrusion detection
CAS
 
Pen Testing Explained
Rand W. Hirt
 
Introduction to penetration testing
Nezar Alazzabi
 
Metaploit
Ajinkya Pathak
 
Ethical Hacking
Rishab garg
 
Intrusion detection system
gaurav koriya
 
Vulnerability Assessment and Penetration Testing Framework by Falgun Rathod
Falgun Rathod
 
How MITRE ATT&CK helps security operations
Sergey Soldatov
 
1. introduction to cyber security
Animesh Roy
 
Honeypot ss
Kajal Mittal
 

Similar to Process injection - Malware style (20)

PDF
CNIT 126 12: Covert Malware Launching
Sam Bowne
 
PPTX
Taking Hunting to the Next Level: Hunting in Memory
Joe Desimone
 
PPTX
Threads in Operating System | Multithreading | Interprocess Communication
Shivam Mitra
 
PPTX
OS Internals and Portable Executable File Format
Aitezaz Mohsin
 
PDF
CNIT 126 7: Analyzing Malicious Windows Programs
Sam Bowne
 
PPT
Windows internals
Piyush Jain
 
PPTX
Chapter -2 operating system presentation
chnrketan
 
PPT
Practical Malware Analysis: Ch 7: Analyzing Malicious Windows Programs
Sam Bowne
 
PDF
CNIT 126 Ch 7: Analyzing Malicious Windows Programs
Sam Bowne
 
PDF
Operating Systems 1 (7/12) - Threads
Peter Tröger
 
PPTX
They why behind php frameworks
Kirk Madera
 
PPTX
Utilizing the OpenNTF Domino API
Oliver Busse
 
PDF
Course 102: Lecture 18: Process Life Cycle
Ahmed El-Arabawy
 
PDF
"You Don't Know NODE.JS" by Hengki Mardongan Sihombing (Urbanhire)
Tech in Asia ID
 
PPTX
44CON 2014 - Meterpreter Internals, OJ Reeves
44CON
 
PDF
Practical Malware Analysis Ch12
Sam Bowne
 
PPTX
Powering up on PowerShell - BSides Greenville 2019
Fernando Tomlinson, CISSP, MBA
 
PPTX
Utilizing the open ntf domino api
Oliver Busse
 
PPTX
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
midnite_runr
 
PPTX
Utilizing the OpenNTF Domino API
Oliver Busse
 
CNIT 126 12: Covert Malware Launching
Sam Bowne
 
Taking Hunting to the Next Level: Hunting in Memory
Joe Desimone
 
Threads in Operating System | Multithreading | Interprocess Communication
Shivam Mitra
 
OS Internals and Portable Executable File Format
Aitezaz Mohsin
 
CNIT 126 7: Analyzing Malicious Windows Programs
Sam Bowne
 
Windows internals
Piyush Jain
 
Chapter -2 operating system presentation
chnrketan
 
Practical Malware Analysis: Ch 7: Analyzing Malicious Windows Programs
Sam Bowne
 
CNIT 126 Ch 7: Analyzing Malicious Windows Programs
Sam Bowne
 
Operating Systems 1 (7/12) - Threads
Peter Tröger
 
They why behind php frameworks
Kirk Madera
 
Utilizing the OpenNTF Domino API
Oliver Busse
 
Course 102: Lecture 18: Process Life Cycle
Ahmed El-Arabawy
 
"You Don't Know NODE.JS" by Hengki Mardongan Sihombing (Urbanhire)
Tech in Asia ID
 
44CON 2014 - Meterpreter Internals, OJ Reeves
44CON
 
Practical Malware Analysis Ch12
Sam Bowne
 
Powering up on PowerShell - BSides Greenville 2019
Fernando Tomlinson, CISSP, MBA
 
Utilizing the open ntf domino api
Oliver Busse
 
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
midnite_runr
 
Utilizing the OpenNTF Domino API
Oliver Busse
 
Ad

Recently uploaded (20)

PDF
Alpha Altcoin Setup : TIA - 19th July 2025
CIFDAQ
 
PDF
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
OpenInfra ID 2025 - Are Containers Dying? Rethinking Isolation with MicroVMs.pdf
Muhammad Yuga Nugraha
 
PPTX
python advanced data structure dictionary with examples python advanced data ...
sprasanna11
 
PDF
The Past, Present & Future of Kenya's Digital Transformation
Moses Kemibaro
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PDF
Market Wrap for 18th July 2025 by CIFDAQ
CIFDAQ
 
PDF
Per Axbom: The spectacular lies of maps
Nexer Digital
 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PPTX
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
PPTX
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
Alpha Altcoin Setup : TIA - 19th July 2025
CIFDAQ
 
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
OpenInfra ID 2025 - Are Containers Dying? Rethinking Isolation with MicroVMs.pdf
Muhammad Yuga Nugraha
 
python advanced data structure dictionary with examples python advanced data ...
sprasanna11
 
The Past, Present & Future of Kenya's Digital Transformation
Moses Kemibaro
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Market Wrap for 18th July 2025 by CIFDAQ
CIFDAQ
 
Per Axbom: The spectacular lies of maps
Nexer Digital
 
introduction to computer hardware and sofeware
chauhanshraddha2007
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
The Future of Artificial Intelligence (AI)
Mukul
 
Ad

Process injection - Malware style

  • 2. Who am I • Security Researcher • PwC: Consultant • Former student UGent • {@ -F-G}/SanderDemeester
  • 3. Outline • Windows processes: An introduction • Dll Injection • Process replacement • Questions
  • 4. Windows PE • It’s a file format! • It contains information about the executable • It’s THE windows format for all executables • DLL • EXE • SYS
  • 5. • Imports - Functions from other libraries • Exports - Functions that should be called • NT Headers - used by windows loader • Sections - .text, .rdata, .data,… • Relocations - Preferred base address • Resources - Strings, icons, … • Much more..
  • 6. PE - A short demo
  • 7. What is a process? • It’s the execution of a program • One or more threads run in the context of a process • Thread - Conceptually, an execution unit inside the process
  • 8. Process as a structure • Fine.. A process is a thing that runs in the system.. • The OS uses different kernel structures to manage those processes • Remember, a process believes it has the whole adres space to It’s self..
  • 10. EPROCESS • Executive component of windows kernel • It's a process object for a process • Kernel use: IO transfer, handle virtual memory • Drivers: PsGetCurrentProcess()
  • 11. PEB • Structure in userspace • Used by operating system code in user-space (ntdll,kernel32) • Contains information about a running process • CLI parameters, pointer to heap,image base address • A pointer to PEB_LDR_DATA
  • 12. PEB_LDR_DATA • Contains information about the loaded modules associated with the running process • Has the anchor for a doubly linked list that contains each loaded module • LDR_DATA_TABLE_ENTRY
  • 13. TIB • Stores information about the current thread • Can be obtained via the FS or GS registers • Used to obtain information about the running thread • Things like the SEH, stack base • Access to the thread local storage array
  • 14. PEB,TIB - A short demo
  • 15. So…What does this mean? • Different windows components need to interact with the process • Windows API’s need to provide access to that information
  • 16. Process in memory • There is something called virtual memory • Maps memory addresses into physical addresses, the virtual memory address space • A collection of contiguous segments • Each process thinks.. It's all mine
  • 18. Virtual memory - A short demo
  • 19. Virtual memory • Mapping virtual memory addresses into physical addresses • Base relocation: Fixing memory locations at load time. • Relative virtual addresses or RVA • Just made the job of the loader easier • Three types of “addresses” • Logical addresses: perspective of the running process • Linear addresses: logical addresses after segment translation • Physical addresses: linear addresses after page table translation
  • 20. Outline • Windows processes: An introduction • Dll Injection • Process replacement • Questions
  • 21. Injection.. Why? • We would like to hide the fact that we are running code • Makes deployment a lot easier • Bypass certain security filters
  • 22. DLL Injection • Force a different process to load a DLL at runtime • Use the windows API • The OS automatically calls the DLLMain function • DLL inherits the same rights as the target process • Everything the malicious code does will appear to come from the injected process
  • 23. DLL Injection - Why? • Everything the malicious code does will appear to come from the injected process • It inherits all the permissions of the process • Read from that process virtual memory
  • 26. DLL injection steps • The loader obtains a handle to the victim process • Most often uses CreateToolhelp32snapshot, Process32First and Process32Next • Obtain the Process ID • Obtain the handle to the process
  • 27. DLL injection steps • Make room to create a new thread • Allocate enough memory in the victims process for the DLL name • Write only the name to the virtual memory of our victim • Obtain a module handle to LoadLibraryA
  • 28. DLL injection steps • The CreateRemoteThread is used to open and execute a thread in the victims process • The CreateRemoteThread is passed three parameters • hProcess - process handle • lpStartAddress - starting point of the code for our new thread, in our case. LoadLibraryA • lpParameter - argument for the new thread
  • 29. DLL Injection - code constructs
  • 30. Outline • Windows processes: An introduction • Dll Injection • Process replacement • Questions
  • 31. Process replacement - Why? • Disguise malware as a legit process • Can not crash the host process and risk being discovered • Same permissions as the replaced process
  • 32. Process replacement • Processes are just bytes in memory • Overwrite the memory space of our victim process • Disguises our code as a legitimate process • Inherit all the permissions of the replaced process
  • 33. Process replacement - How would we do it? • Create a process in a suspended state • Replace all the code and memory in the process with our code • Run the process • Easy!
  • 35. What do we need? • We need a different “process” to replace the existing one? • A way to “stop” a legitimate process that is running? • A lot of information on the legitimate process • Ways to write into the virtual memory of a different process? • A brain that works
  • 36. Windows resources • A program contains “resources” • Contains raw images, bitmaps and dialog boxes • But it can contain what we want? • Steganography? Anyone? • Lets put a PE in it!
  • 37. Resource hacker - A short demo
  • 38. • Create a new process in a SUSPENDED_STATE
  • 39. Process replacement steps • Obtain our PE file stored in the resource section • Create a new windows process in the suspended state • Access the “thread context” of the suspended progress thread. • The EBX register of newly created process contains a pointer to the PEB structure
  • 40. Process replacement steps • The PEB structure contains a lot of information about the process, including the image base address. • Using an “undocumented" API call NtUnmapViewOfSection we can remove the code from memory • Windows Native System Services routine - use a function pointer to get to it.
  • 41. • We need to place our malicious PE file into memory • Obtain the image base address and the size of our program • Call VirtualAllocEx and pass it the handle of our suspended thread and set the permissions of the allocated memory to PAGE_EXECUTE_READWRITE
  • 42. • So far so good • Start parsing the PE file to obtain pointers to the different section • SizeOfHeaders is at some offset in the PE header • NumberOfSections is at some offset in the PE header • Copy the PE header to the exact same place in the virtual adres space as the suspended process • Read the IMAGE_HEADER_SECTION and perform some pointer calculations
  • 43. • Keep going.. • Using the structures • IMAGE_SECTION_HEADERS.SizeOfRawData • IMAGE_SECTION_HEADERS.PointerToRawData • IMAGE_SECTION_HEADER.VirtualAddress • We perform pointer calculations to copy the data over
  • 44. Are we done yet? • The windows loader has done most of the work • We need to tell the loader where it should jump to • Patch the original program entry point with the one from our PE file • After loading, lpContext->_eax contains our OEP • Call SetThreadContext to update the thread context • Start of suspended process
  • 46. Is this still the same process? • How do you define a process? • As far as windows is concerned, it’s what It's loaded into memory • Using the API to observe the process, it is the original process
  • 47. Can we detect this? • We can monitor for a sequence of strange API calls? • We can compare the code sections of the running process with the ones stored on the filesystem • We can define rules on how a program should behave and compare
  • 48. What other techniques do we have? • Direct injection • Local and remote hook injection • Detour hijacking • APC injection from user space and kernel space • I’m sure, many more.
  • 49. BSidesLV 2015 • Injection on Steroids: Code-less code injection and 0-day techniques.. • State-of-the-art