Detecting Thread Injection by ETW & One Simple Technique (Chunking codes to two parts) 

In this Article I want to talk about ETW and Thread Injection in this case “Remote Thread Injection”.

I made simple C# code “ETWMonThread.cs” for Monitoring Meterpreter Payload/Thread Injection in 2018.

this code was simple & my goal was to Show how We can use ETW very simple and useful…

 

in this code we have something like this :

Picture 1: ETWEventsFilters with ID 3.

With This code you can have all New Created Thread IDs (TIDs) with ETW then you need to get only Injected Thread which means Thread Created by Process A into Process B so with this simple Code you can get this:

Picture 2: Detecting Injector PID.

 

it seams everything is ok & I tested this code with some Technique like these:

ETW test with Process Hollowing Technique:

As you can see in this picture we have shell but this Meterpreter session and Thread ID Detected by ETW.

Thread Injection Detected & you can see Session Closed… … (click on Picture for better resolution)

Picture 3: Process & TID Detected by ETW (Process Hollowing Technique).

 

ETW test with APC Queue Technique:

Again you can see in this picture we have shell but this Meterpreter session and Thread ID Detected by ETW .

Thread Injection Detected & you can see Session Closed… (click on Picture for better resolution)

Picture 4: Process & TID Detected by ETW (APC-Q Technique).

 

After these tests you can see this code “ETWMonThread.cs” was worked good.

but something in these Tests was same which is all of them have OpenProcess, CreateRemoteThread, WriteProcessMemory & … in one code/exe

it means Malware/Injector Code Will Detect at least with PID by ETW Events.

 

In the Picture 3 Malware/Injector Code PID was “Process Exited:1048”.

In the Picture 4 Malware/Injector Code PID was “Process Exited:3964

 

Chunking Codes:

In this simple technique I want to use Thread Injection method with two Steps, it means I want to run this Injection Technique with two code/exe file.

As you can see I made “NativePayload_TId2.exe” and this is Step1 of Thread Injection Method/Code.

In this step1 we have (OpenProcess, VirtualAllocEx, WriteProcessMemory) API functions only and don’t have CreateRemoteThread Function.

 (click on Picture for better resolution)

Picture 5: “NativePayload_TId2” Payload Injection into Target Process Without CreateRemoteThread.

 

Important Point :

As you can see in the “Picture 5“, we “don’t have any Detection” for Payload Injection or Writing Payload via API Function WriteProcessMemory into Target Process

(Notepad.exe:3796) by ETW code because in this [step1] with “NativePayload_TId2.exe” we did not have CreateRemoteThread Function.

So with this “NativePayload_TId2.exe” we don’t have new Thread but Target Process Infected by This Code very Simple & Malware Payload was injected to Notepad (In-memory).

 

In the Next Picture you can see I used “NativePayload_TId3.exe” which is Part2 of Attack/Code.

In this step2 of code Target Process in this case “Notepad” Opened with API function OpenProcess & Remote Thread created by “Intptr Pointer Address” from Step1

Which is in this case “002B0000”.

 

(click on Picture for better resolution)

Picture 6: “NativePayload_TId3 Creating Remote Thread.

 

Now in this Step2, Code Detected by ETW and you can see “NativePayload_TId3.exe” as Thread Injector Detected by ETW but this is Part2 of Code,

This is not all of them.

Part1 of code which was (OpenProcess, VirtualAllocEx, WriteProcessMemory) executed by “NativePayload_TId2.exe” and Not Detected by ETW code and still is undetectable for this C# ETW code.

In the next “Picture 7” you can see this Session Detected/Closed.

(click on Picture for better resolution)

 Picture 7: “NativePayload_TId3 Creating Remote Thread.

 

Another important thing is in this technique after [step1], your payload is in-memory of Notepad Process and you can Execute that any time you want with/without delay

And more than once so in the next Pictures you can see I used this Technique for Bypassing AVIRA Anti-viruses and these Codes [step1 & step2] worked very well

but in this case I Used [step2] two times and I had two sessions too, very simple.

 

Picture 8: this simple method not detected by AVIRA.

 

 Picture 9: this simple method not detected by AVIRA.

 

ETWMonThread.cs: https://github.com/DamonMohammadbagher/Meterpreter_Payload_Detection/tree/master/MPD/ETWMonThread/

Video ETWMonThread.cs [step by step]: https://www.youtube.com/watch?v=nIoDrqeQ2es

as you can see this ETW is very useful thing for Thread Monitoring also is useful to show Injected Threads also Injector Processes... (Sometimes) and I think Some Anti-viruses need to use this ETW or something like this but always attackers have some Methods for bypassing your things….