REPOST - ORIGINALLY POSTED OCTOBER 18, 2010
Zeus is evolving. In regards to a new release, one Anti-Virus vendor recently noted:
“[the new exe] uses techniques designed to avoid automatic heuristics-based detection.”
The discussion then proceeds to examine how the exe is different from previous versions of the malware.
Should we be alarmed that Zeus is getting so sophisticated that it evades heuristics-based detection mechanisms?
I suppose if it actually evaded heuristics-based detection mechanisms, that would be alarming. I’m sure the version of Zeus in question evades the mechanisms of certain AV vendors. However, when looking at the exact sample in question (verified by MD5) using the techniques we use for malware identification here, we see the sample stands out like a sore thumb.
Using our own internally-developed heuristic malware identification methods (also used by components of NextGen), we see the exe has traits such as the following (not a complete list!):
- The binary contains packed sections, indicative of packed, obfuscated, and/or encrypted malware.
- The size of the binary is abnormally small considering the conditions and context in which it was found.
- The PE checksum fails to validate, something malware packers are notoriously bad about.
- The binary does not have any information normally found within the version info table in the resource section of the PE.
But… Why get overly wrapped around the minutia related to the abnormal facets of this particular sample of Zeus? There’s a more important note to be made here. That is, Zeus is malware, so it does the things that malware does! You can’t get more “heuristically obvious” than that!
From the same vendor as above:
“…common ZeuS 2.0 variants contain relatively few imported external APIs… By contrast, [this version] imports many external APIs. To a heuristic scanner, this changes the appearance of the file and lowers the possibility of detection.”
Finding a binary that has very few external imports is generally a sign that something is suspicious. Specifically, it’s generally a sign the file is packed, obfuscated, and/or encrypted and the real imports are likely hidden inside. Such is the case when finding binaries that only import between two and five specific API’s from kernel32.dll (in the more obvious cases).
However, when finding a binary with a lot of imports, that’s even better since you get to see the full range of imports needed by the binary/malware! Without even running the sample or doing deep low-level reverse engineering, you can start to make assumptions about the functionality of the binary based on the API’s it uses. Further, it’s a simple matter to separate malware from legitimate binaries by comparing the API’s it uses to the ones it doesn’t need/use.
As is the case with this sample of Zeus, we see it (like the thousands of different types of malware not related to Zeus) imports APIs related to hooking the Windows API, creating mutexes, and managing services – without importing the functions used by legitimate binaries that also use the same functions.
So, should we be alarmed some people say Zeus is getting so sophisticated that it evades heuristics-based detection mechanisms?
If your security vendor is looking for Zeus, then yes, you should be alarmed. However, if your security vendor is looking for general signs of malware, infection, and so on, then no… Fortunately Zeus is still malware, just like all the rest of it…