Advanced Malware threats nowadays using powerful Code Injection Technique called “Early Bird” that helps to evade the detection by Anti-Malware software.
Code injection technique allows malware inject the malicious code into a legitimate process and run before an entry point of the process in Main threat.
This New technique abuse the anti-malware product to evade the detection since the malicious injection process started earlier before an Anti-Malware start its scanning process.
Since the Malicious code has been injected before the entry point of the legitimate process, anti Malware scan only perform the legitimated process hence obfuscates the malicious code execution.
Various new Malware is using this technique such as DorkBot to evade the detection and compromise the targeted computers.
How does “Early Bird” Code Injection Technique Works
Early Bird Code injection flaw starts with creating a suspended process (a new process that executes and continue within the running process) and this suspended process(svchost.exe) most likely to be legitimate windows process.
Once the suspended process(svchost.exe) will be created then malware allocate a memory and write malicious code to that process.
After the required memory allocation, it Writes the Malicious code into the allocated memory space its also called hollow process infection.
Later it Queues an asynchronous procedure call (APC) to execute the code on the main thread and resuming the thread for the execution and the start address pointed to the entry point of Malicious code.
According to Microsoft, “When a user-mode APC is queued, the thread to which it is queued is not directed to call the APC function unless it is in an alertable state” so APC will be in an alertable state in order to execute the APC.
According to cyberbit Research, “the thread has not even started its execution since the process was created in a suspended state. How does the malware “know” that this thread will be alertable at some point? Does this method work exclusively on svchost.exe or will it always work when a process is created in a suspended state?”