When we look at a prevalent malware family, we give credit to its authors regarding the established malicious infrastructure. New malicious activity is flowing smoothly, command-and-control servers appear, everything works like Swiss watch. Are there any weak points in such a construction?
To answer this question we may think about a race car. It’s a masterpiece crafted for maximum speed, however, the more speed it has, the less chances it has to make a sharp turn. Malware infrastructure has the same weakness of inertia. When every joint works fine, you should have a strong reason to change something in it.
We can use it for our benefit just like movie detectives do. Take a city map, mark the spots of previous crimes ─ and you will likely understand the pattern and even get a probable place of next crime activity, it will likely follow the determined template. In this research we show how to transform these actions to the world of malware. We take one of the most prevalent contemporary botnets called Dridex, mark its previous crime scenes, build the map and draw conclusions helping us to catch the next strike. We show evidence of success of such an approach measured in strict numbers and explain how to use this idea in other real world cases.
The Dridex Banking Trojan first appeared in 2014 and is still one of the most prevalent malware families. In March 2020, Dridex topped the list of most wanted malware.
Dridex was created by a cyber-crime group called “Evil Corp” which has caused an estimated damage of $100 million to the banking system worldwide. A lot of research has been issued already covering different aspects of the malware details and how the cyber-crime group functions.
In this article we provide a summary of key details known about Dridex to date. We explore pre-history of Dridex development, give an overview and show its key technical features and methods of spreading. We explain how we can intercept this malware at the earliest stages of the infection chain. We also provide graphs that show evidence of the success of our approach and how our customers are protected against this malware.
Dridex has a famous lineage. Let’s take a step back in history to find out more about the time period when its earliest version appeared.
The key names in this story:
Zeus is a Trojan Horse malware. Its capabilities include turning an infected machine into a botnet node, stealing banking credentials, downloading and executing separate malicious modules. The members of cyber crime group attempted to steal around 220 million USD worldwide utilizing ZeuS according to FBI investigation.
The timeline below shows key points in ZeuS evolution:
Figure 1 – Chronology of ZeuS evolution.
When ZeuS source code was leaked in 2011, various branches of this malware started to appear. It was very popular malware and gave rise to lots of different malware branches. ZeuS versions may be in a ZeuS online museum. At the time of this writing, ZeuS was associated with 29 different malware families, featuring around 490 versions in total.
In May 2014, the FBI issued a bulletin with description of Evgeniy Bogachev and the promised reward of 3 million USD “for information leading to the arrest and/or conviction.”
Figure 2 – Description of Evgeniy Bogachev on the FBI site.
After the botnets of direct ZeuS successors were taken down, Dridex’s time came. This malware is a result of Bugat evolution (which appeared in 2010). Bugat v5 was recognized as Dridex in 2014.
More names appear on the stage at this time.
More names connected to Dridex can be found in US treasury sanctions statement.
The timeline below shows some milestones in Dridex evolution:
Figure 3 – Chronology of Dridex evolution.
Dridex in turn gave rise to a number of ransomwares starting with Bitpaymer in 2017. This branch continued with DoppelPaymer, which was developed in 2019, and WastedLocker, which was developed in 2020.
In 2019, Dridex had at least 14 active botnets, some of which had already been spotted previously, and others newly developed. Botnets are differentiated by their ID numbers. These are among the most active at this time: 10111, 10222, 10444, 40200, 40300.
At the end of 2019, the FBI issued a bulletin with a description of the author of Dridex and a promised reward of 5 million USD (compared with 3 million USD previously for E. Bogachev).
Figure 4 – Description of Maksim Yakubets on the FBI site.
There is also evidence of Maksim’s luxurious lifestyle, undoubtedly due to income from his malicious activities.
Figure 5 – Cars, girls, money; the luxurious lifestyle of Maksim Yakubets.
To date, Maksim Yakubets has not been apprehended by law enforcement.
As mentioned previously, in 2020, Dridex topped the lists of the most prevalent malware families in the world.
Before we start the analysis of Dridex samples themselves, we want to understand the infrastructure behind the malware. How is it delivered? What are the targets? What is the initial detection rate of supporting files? We will find the answers to all of these questions below.
When the operators want to spread Dridex, they use established spambots from different cyber-crime groups to send malicious documents attached to handily crafted e-mails. At different times of the Dridex lifecycle, Necurs, Cutwail and Andromeda botnets have all been involved in spreading Dridex.
When a user downloads and opens such a document (it may be Word or Excel), the embedded macros are launched with the aim of downloading and executing the Dridex payload.
Figure 6 – Dridex infection chain execution flow.
Dridex targets different high-profile entities from various parts of the world:
To increase the successful rate at which Dridex is spread, malicious actors disguise their spam e-mails to look like legitimate ones. We can name examples of UPS, FedEx and DHL as companies whose logos and mailing style are used as bait in such e-mails.
Figure 7 – Examples of lures.
When the victim clicks the link, either the archive with the malicious document or the malicious document itself is opened.
When first seen in the wild, Dridex delivery files show a very low detection rate. In the screenshot below we see the initial detection rate of the Excel document which delivers Dridex:
Figure 8 – Initial detection rate of the Dridex delivery file.
The same is true for other delivery files.
The Dridex sample consists of the loader and the payload. We discuss key points of each part below.
The Dridex loader utilizes the OutputDebugStringW function to make malware analysis more difficult. Different loaders produce different outputs (with the “Installing…” string being very popular) but the idea is the same everywhere: making a long loop that contains a lot of meaningless debug messages. In the figure below, we see the example of such a loop with an iteration of around 200 million:
Figure 9 – Loop with 0xBEBBE7C (around 200 million) iterations calling OutputDebugStringW.
The output looks like this in the log:
Figure 10 – Dridex debug messages that overwhelm the analysis log.
The payload is heavily obfuscated; almost no function is called directly. Call resolutions are performed with the help of hash values identifying the library and the function it contains. An example of such a resolution is shown in the screenshot below:
Figure 11 – Example of the call resolution in the Dridex payload.
All the functions important for key Dridex’ tasks are called this way.
Figure 12 – Example of resolved calls to Internet functions.
We used the Labeless tool to resolve obfuscated function calls.
Strings in the malware are obfuscated using the RC4 algorithm and the decryption key stored inside the sample.
The main point of interest inside the payload is its configuration. It contains the following important details:
An example of the configuration:
Figure 13 – Example of the Dridex configuration inside the payload.
The bot ID in this example is 12333. The Command and Control servers are:
Dridex sends POST requests to the servers from the configuration to get further commands, waiting for 200 OK responses. Please note that these servers are not real C&C servers but rather proxies for connecting to the real ones.
Figure 14 – The Dridex botnet infrastructure.
The information which is sent by the malware to the C&C servers contains the following data:
This data is encrypted with the RC4 algorithm, the key for which is stored among encrypted strings inside the malware.
There are at least 6 different types of request; among them are the following ones:
The earlier the infection is caught, the better the chances of mitigation. To catch the infection as quickly as possible while spending the minimum amount of resources, we want to focus on the initial delivery stage.
However, detection is only one aspect. We may confidently say that something is malicious, but we also want to classify the threat. To do so, we have to be sure that this particular malware is indeed Dridex.
Let’s take a look at the Dridex infection chain again and determine the different stages which we can use for its detection and identification:
Figure 15 – Different stages of Dridex detection.
At different stages of the Dridex infection, we can use the following indicators for its detection.
We have seen a correlation between infrastructures and indicators of Dridex and other prevalent malware families such as Emotet and Ursnif. Malicious documents share common indicators when used for the delivery of all the malware mentioned above. Some C2 servers – or to be precise, proxy servers – are used both by Dridex and Emotet, though ports and connection types are different.
That’s why we have to analyze a lot of details before we draw a conclusion of what malware we’re dealing with. The more unique factors related to a particular botnet we have, the easier it is to say if another attack has the same patterns.
The ideal way to classify malware is of course getting and analyzing the final payload: if it’s Dridex, then everything that was launched before it is classified as Dridex as well. However, it may take some time (sometimes a significant amount after the initial malicious document is obtained) before the result is known. We can do the classification faster, with high confidence, by analyzing all the indicators we get at the earliest stages of infection chain.
Another interesting note is utilizing the same network for downloading Dridex samples. We analyzed domains used for this purpose, resolved their IPs and discovered that quite a few of them reside in the same network 84.38.180.0/22 with less than 1024 addresses available in total. Network belongs to Russian ASN Selectel that rarely takes down the malicious content or spam.
We saw the following IP addresses linked to Dridex domains in the 84.38.180.0/22 network (and other networks within the same ASN). Dates show the first time the Dridex domain pointed to the corresponding IPs:
IPs | Date | Domains |
---|---|---|
84.38.182.248 | May 10 | rokadorc.com nrokadorc.com |
84.38.183.77 | June 17 | juneusdousigninc.com usdousigninc.com |
84.38.182.236 84.38.183.213 |
June 22 | marutoba.com terrasimonad.com enterassimonad.com |
84.38.181.195 | June 28 | caranatrium.com |
84.38.183.114 84.38.183.237 |
July 06 | menodlap.com turendong.com madustag.com |
While this factor alone is not enough to identify Dridex, this is a good auxiliary detail to refer to when dealing with Dridex IOCs.
The graphs below show Dridex spikes on different dates when we caught the incoming threats at its earliest stages.
Figure 16 – Dridex infection spike on June 29.
Figure 17 – Dridex infection spike between July 6 – July 8.
It is crucial to be able to intercept Dridex infection as early as possible. In many cases, if the spam is not being sent for several days consecutively, like it was between July 6 and July 8, the botnet activity slows down the next day and we do not get as many IOC matches as during its spike. Given that new infections appear at around afternoon UTC+3, we have less than 12 hours to react to the incoming threat.
Since July 22 we haven’t observed any fresh Dridex spam samples. Dridex made a re-appearance on September 7, showing a massive increase in its activity spike for 2 consecutive days:
Figure 18 – Recent September spike in Dridex activity.
Dridex operators updated the 1st stage of Dridex execution: they have added more URLs from where payload may be downloaded – as opposed to the single URL in the earliest versions of malicious documents. Now their number may be as high as 50 within the single document.
We’re constantly monitoring this botnet and detecting its payload at different stages of execution.
We hope this publication provided useful insights on different variants and methods to deal with this threat. We also believe that these methods may be applied when encountering other threats as well.
As cyber attacks become increasingly evasive, more controls are added, making security more complicated and tedious to the point that user workflows are affected. Until now.
Fueled by the Power of ThreatCloud, the Most Powerful Threat Intelligence and AI technologies to prevent unknown cyber threats
SandBlast Network provides the best zero-day protection while reducing security overhead and ensuring business productivity.
Banker.Win.Dridex.A
Banker.Win.Dridex.B
Banker.Win.Dridex.С
Banker.Win.Dridex.D
Banker.Win.Dridex.E
Banker.Win.Dridex.F
Banker.Win.Dridex.gl.H
Banker.Win.Dridex.J
Banker.Win.Dridex.K
Below we list some of the indicators linked to Dridex. Please note that the list is not full by any means.
Domains:
rokadorc[.com |
nrokadorc[.com |
juneusdousigninc[.com |
usdousigninc[.com |
marutoba[.com |
terrasimonad[.com |
enterassimonad[.com |
caranatrium[.com |
menodlap[.com |
turendong[.com |
madustag[.com |
fattnumdelordine[.com |
armomaq[.com |
caissefamilylaw[.com |
secretpath[.xyz |
IP addresses:
84[.38.181.195 |
84[.38.182.236 |
84[.38.182.248 |
84[.38.183.77 |
84[.38.183.114 |
84[.38.183.213 |
84[.38.183.237 |
Dridex 1st layer proxy C&C servers:
https://45.79.8.25[:443 |
https://185.201.9.197[:9443 |
https://217.160.78.166[:4664 |
https://108.175.9.22[:33443 |
https://51.38.124.206[:443/ |
https://207.180.230.218[:3389/ |
https://2.58.16.87[:8443/ |
https://45.177.120.36[:691/ |
https://52.114.132.73[:443 |
https://192.232.251.32[:443 |
https://162.144.41.190[:443 |
https://40.122.160.14[:443 |
https://67.213.75.205[:443 |
https://217.160.78.166[:4664 |
https://108.175.9.22[:33443 |
https://185.201.9.197[:9443 |
URLs:
https:[//discuss.ojowa.com/themes/wowonder/javascript/tinymce/js/dkfjgbji.gif |
https:[//sjoeberg.nu/a/jdfggo.rar |
https:[//greatstr.com/webadmin/djfhgeh.pdf |
https:[//axalta.grupojenrab.mx/wp-admin/ssfisjgniwerg.pdf |
https:[//bombshellshow.me/wp-content/jdfggo.rar |
https:[//amaimaging.net/wp-content/rjkthgowertgoiwe.zip |
https:[//pharmacy.binarybizz.com/vendor/njdfhgeroig.rar |
https:[//construtorahabite.com.br/wpadmin/rjkthgowertgoiwe.zip |
https:[//drinkangola.com/wp-content/plugins/wordpress-seo/config/composer/dkfjgbji.gif |
https:[//mcciorar.iglesiamcci.cl/njdfhgeroig.rar |
https:[//eduserve.sezibwa.com/images/njdfhgeroig.rar |
https:[//idklearningcentre.com.ng/wp/wp-content/plugins/jetpack/3rd-party/dkfjgbji.gif |
https:[//agencia.fal.cl/wp-includes/njdfhgeroig.rar |
https:[//sweepegy.com/djfhgeh.pdf |
https:[//tallermecanicoyllantera.grupojenrab.mx/wp-admin/rjkthgowertgoiwe.zip |
https:[//neocuboarquitetura.com.br/viewer/ssfisjgniwerg.pdf |
https:[//vyvanse.co/auth14/zxc.zip |
https:[//minsann.se/NewFolder/ad/style/theme/upload/84348fh34hf.pdf |
https:[//admin.grandoceanvilla.com/pug/includes/css/84348fh34hf.pdf |
https:[//glowtank.in/js/ssfisjgniwerg.pdf |
https:[//leandrokblo.com/wp-content/plugins/w3-total-cache/ini/apache_conf/dkfjgbji.gif |
https:[//medszoo.in/jdfggo.rar |
https:[//properties.igpublica.com.br/excelPo/rjkthgowertgoiwe.zip |
https:[//coomiponal.com/simulador/zxc.zip |
https:[//inkrites.com/wp-content/themes/zerif-lite/ti-prevdem/img/84348fh34hf.pdf |
https:[//manogyam.com/storage/njdfhgeroig.rar |
https:[//radiantmso.com/wp-content/plugins/smart-slider-3/library/media/dkfjgbji.gif |
https:[//etsp.org.pk/uploads/jdfggo.rar |
https:[//tmpartners-gh.com/djfhgeh.pdf |
https:[//heraldfashion.store/wp-admin/zxc.zip |
https:[//danojowacollection.com/djfhgeh.pdf |
https:[//leboudoirstquayportrieux.fr/image/ssfisjgniwerg.pdf |
https:[//quiz.walkprints.com/wp-includes/js/tinymce/themes/inlite/84348fh34hf.pdf |
https:[//siebuhr.com/pmosker/zxc.zip |
https:[//karyagrafis.com/njdfhgeroig.rar |
https:[//businessquest.com.my/schedule/jdfggo.rar |
https:[//maisaquihost.com.br/teste/rjkthgowertgoiwe.zip |
https:[//getsolar4zerodown.info/djfhgeh.pdf |
https:[//emyhope.com/wp-content/plugins/jetpack/_inc/blocks/84348fh34hf.pdf |
https:[//igpublica.com.br/asset/zxc.zip |
https:[//speakerpedia.in/images/zxc.zip |
https:[//timamollo.co.za/sitepro/jdfggo.rar |
https:[//eb3tly.online/njdfhgeroig.rar |
Hashes (malicious documents):
15d3edcf37b1e4d03a5c61c1c7752130a9899b978c94f80d8dabc45f416fc253 |
16b98e2156fb721a760cd3d4e5c1a8c18dee54f795c6d8624339e25c5e33c2b1 |
97defc4fa68d6d3d76226b2ab02c8c3c0544b4d035083057b52d101f5884cbf1 |
99842250e5da8f987227c22d864ea6552cbf176710cd5c45f430bc2765cbf534 |
9a54d7a8551641f3c77a6f2743890f30e5d5ed4854fcadb25fc1a45bf928cefb |
a633110b7d2f045d88b43c95838372d556de7bf9d2543149b9e5a984f9377539 |
cbbb3ffd6f20060d8176954afb0f26fb220a281fd0e49facd02be8f597f24645 |
d3e9f6933d519b6bd1514ceaaa14df64722214c0c6c2a60a6924c92f284b3c08 |
d77234374d79b24022c26ecdd16a684ae7e94efba502422d74852b0eddd4f1b4 |
d943478cb08756734a766eb5da189eef45577c29d33cbd679976e5cb97f2c9f2 |
Hashes (malware samples):
84d3573747fbdf7ca822fd5a48726484c8b617e74a920dc2a68dd039b8f576fd |
a633e85176faf87dfa99e89e559e3be3f2854592a3adb9f6ea6aab88c06dd198 |
ad4d2f9fcadce231e18e50de3bb58028ae13eaf76a9c085d0073230e0fa17a9e |
b0699861417da2e3626eb78d62d305b7ca5e03f06e5e6bfd0eea99d64306495e |
b5b71c61a29f80c667772f5d008789816e0c7a53193536fc660a6f72009b23de |
b66a5d391335b6dc827225b6531f172151d8a87c7514de789bcaf1999b0645ff |
c37accc1f995cb32235edbea877813109627eca4b209f060bee357489c6bb31b |
c6de2ef240cdca97e8d5d6fdcfc7bfd8d5c81a47204d268bd08e4b963d66a64b |
c8cca37f43f4aa66b4bfbf811931c57971d2f1571cfebbb7d24235c07e108f26 |
cc33c8c4eb3588fdd48ddb081f77040283c2f6b8c37777f8202b858b64a5952b |
d18d211cf75fbc048d785af92b76a1aa7a01e381313b1a5e66e9cf564cbe78d4 |
f8c974a6572fd522a64d22da3bf36db7e912ccb700bd41623ed286f1e8b0e939 |
fa61c3c9e2089deb3f2b40333f5ee0860177692c436c50b07eef85993a1dbfa9 |
fcc0db0ce710f68915b4d73274d69bb5765012b02631bb737c66a32a9a708aab |