Le cheval de Troie DanaBot, modulaire et en évolution rapide, a subi d'autres changements, avec la dernière version dotée d'un tout nouveau protocole de communication. Le protocole, présenté à DanaBot fin janvier 2019, ajoute plusieurs couches de cryptage à la communication C&C de DanaBot.
Outre les changements de communication, l'architecture et les identifiants de campagne (ID) de DanaBot ont également été modifiés.
L'évolution de DanaBot
Après avoir été découvert en mai 2018 dans le cadre de campagnes de spam ciblées en Australie, DanaBot a été très actif depuis, apparaissant dans des campagnes de spam en Pologne, Italie, Allemagne, Autriche et Ukraine, ainsi qu'aux États-Unis. Les campagnes européennes ont vu le cheval de Troie étendre ses capacités avec de nouveaux plugins et de nouvelles fonctionnalités d'envoi de publicités intempestives (spam).
Dans la télémétrie du 25 janvier 2019 d’ESET, nous avons remarqué des exécutables inhabituels liés à DanaBot. Après une inspection plus poussée, ces binaires se sont, en effet, révélés être des variantes de DanaBot, mais en utilisant un protocole de communication différent pour communiquer avec le serveur C&C. A partir du 26 janvier 2019, les opérateurs DanaBot ont cessé de construire des binaires avec l'ancien protocole.
Au moment de la rédaction du présent rapport, la nouvelle version est distribuée selon deux scénarios :
- En tant que « mises à jour » fournies aux victimes existantes de DanaBot;
- Comme malspam, en Pologne
Le nouveau protocole de communication
Dans le protocole de communication qui était utilisé avant le 25 janvier, les paquets n'étaient aucunement chiffrés, comme le montre la figure 1.
Suite aux derniers changements, DanaBot utilise les algorithmes de chiffrement AES et RSA dans sa communication C&C. Le nouveau protocole de communication est compliqué, plusieurs couches de chiffrement étant utilisées. On l’observe dans la figure 2.
Ces changements brisent les signatures réseau existantes et rendent plus difficile la rédaction de nouvelles règles pour les systèmes de détection et de prévention des intrusions. De plus, sans accès aux clés RSA correspondantes, il est impossible de décoder les paquets envoyés ou reçus; les fichiers PCAP des systèmes d'analyse en nuage (tels que ANY.RUN) deviennent donc inutilisables pour les chercheurs.
Chaque paquet envoyé par le client a un en-tête de 24 octets (0x18) :
Offset | Size (bytes) | Meaning |
---|---|---|
0x0 | 0x8 | Size of the data after this header |
0x8 | 0x8 | Random value |
0x10 | 0x8 | Sum of first two fields |
Pour chaque paquet, l'en-tête est suivi par des données de paquet cryptées AES, puis une valeur de 4 octets indiquant la taille de remplissage AES, et enfin la clé AES avec chiffrement RSA. Chaque paquet est chiffré avec une clé AES différente.
Les réponses du serveur utilisent le même format. Contrairement aux versions précédentes, les données par paquets dans les réponses du serveur ne suivent aucune disposition spécifique (à quelques exceptions près).
Répartition des données par paquets
L'ancienne mise en page des données par paquets a été détaillée par Proofpoint en octobre 2018. Dans la dernière version de DanaBot, la disposition est légèrement modifiée, comme le montre la figure 4.
Changements à l'architecture de DanaBot
Outre le changement de protocole de communication, DanaBot a également subi quelques changements d'architecture. Les versions précédentes de DanaBot incluaient un composant qui téléchargeait et exécutait le module principal. Le module principal a ensuite téléchargé et exécuté les plugins et les configurations.
La dernière version transfère ces deux responsabilités à un nouveau composant de chargeur, qui est utilisé pour télécharger tous les plugins avec le module principal. La persistance est obtenue en enregistrant le composant chargeur en tant que service.
Commandes
Selon notre analyse, le composant chargeur utilise les commandes suivantes :
- 0x12C - Bonjour. Première commande envoyée par le client au serveur
- 0x12D – Télécharger le composant lanceur 32/64 bits
- 0x12E – Demander la liste des plugins et des fichiers de configuration
- 0x12F – Télécharger les fichiers de plugin et de configuration
Les plugins téléchargés et les fichiers de configuration sont chiffrés à l'aide d'une clé AES dérivée du Client ID. De plus, les plugins sont compressés au format ZIP en utilisant la compression LZMA, alors que les fichiers de configuration sont compressés en utilisant zlib.
Les commandes avec les numéros d'identification 0x130 - 0x134 sont envoyées par le module principal :
- 0x130 – Télécharger les informations collectées sur le serveur C&C (par exemple, capture d'écran de l'ordinateur d'une victime; informations système)
- 0x131 – Télécharger les informations collectées sur le serveur C&C (par exemple, liste des fichiers sur le disque dur de la victime)
- 0x132 –Demander d'autres commandes au serveur C&C ; il y a environ 30 commandes disponibles typiques des backdoors, incluant le lancement de plugins, la collecte d'informations système détaillées et la modification de fichiers sur le système client.
- 0x133 – Mettre à jour de la liste des serveurs C&C via le proxy Tor
- 0x134 – But exact inconnu; très probablement utilisé pour la communication entre les plugins et C&C
Changements dans les ID de campagne
Des recherches antérieures ont suggéré que DanaBot est distribué sous diverses identifiants « affiliées » ou « de campagne ».
Dans la version précédente de DanaBot, près de 20 ID de campagne différents étaient utilisés. Dans la dernière version, les ID de campagne ont légèrement changé. En date du 5 février 2019, nous voyons les pièces d'identité suivantes dans la nature :
- ID=2semble être une version de test, desservant un nombre limité de fichiers de configuration et aucun webinjects.
- ID=3 se répand activement, ciblant les utilisateurs en Pologne et en Italie, servant tous les fichiers de configuration et les webinjects pour les cibles polonaises et italiennes.
- ID=5 sert de fichier de configuration pour les cibles australiennes.
- ID=7 n'est diffusé qu'en Pologne, desservant des webinjects pour des cibles polonaises.
- ID=9semble être une autre version de test, avec une diffusion limitée et sans ciblage spécifique, desservant un nombre limité de fichiers de configuration et sans webinjects.
Conclusion
Les produits d’ESET détectent et bloquent tous les composants et plugins DanaBot sous les noms de détection énumérés dans la section IoCs.
Cette recherche a été réalisée par Kaspars Osis, Tomáš Procházka et Michal Kolář.
Indicateurs de compromission (IoCs)
Serveurs C&C utilisés par la nouvelle version de DanaBot
- 84.54.37[.]102
- 89.144.25[.]243
- 89.144.25[.]104
- 178.209.51[.]211
- 185.92.222[.]238
- 192.71.249[.]51
Webinject et serveurs de redirection
- 47.74.249[.]106
- 95.179.227[.]160
- 185.158.249[.]144
Exemples de hashes
Notez que puisque de nouvelles versions des composants de DanaBot sont publiées régulièrement, nous ne fournissons qu'un échantillon de hashes.
Component | SHA-1 | ESET detection name |
---|---|---|
Dropper | 98C70361EA611BA33EE3A79816A88B2500ED7844 | Win32/TrojanDropper.Danabot.O |
Loader (x86), campaign ID=3 | 0DF17562844B7A0A0170C9830921C3442D59C73C | Win32/Spy.Danabot.L |
Loader (x64), campaign ID=3 | B816E90E9B71C85539EA3BB897E4F234A0422F85 | Win64/Spy.Danabot.G |
Loader (x86), campaign ID=9 | 5F085B19657D2511A89F3172B7887CE29FC70792 | Win32/Spy.Danabot.I |
Loader (x64), campaign ID=9 | 4075375A08273E65C223116ECD2CEF903BA97B1E | Win64/Spy.Danabot.F |
Main module (x86) | 28139782562B0E4CAB7F7885ECA75DFCA5E1D570 | Win32/Spy.Danabot.K |
Main module (x64) | B1FF7285B49F36FE8D65E7B896FCCDB1618EAA4B | Win64/Spy.Danabot.C |
Plugins
Plugin | SHA-1 | ESET detection name |
---|---|---|
RDPWrap | 890B5473B419057F89802E0B6DA011B315F3EF94 | Win32/Spy.Danabot.H |
Stealer (x86) | E50A03D12DDAC6EA626718286650B9BB858B2E69 | Win32/Spy.Danabot.C |
Stealer (x64) | 9B0EC454401023DF6D3D4903735301BA669AADD1 | Win64/Spy.Danabot.E |
Sniffer | DBFD8553C66275694FC4B32F9DF16ADEA74145E6 | Win32/Spy.Danabot.B |
VNC | E0880DCFCB1724790DFEB7DFE01A5D54B33D80B6 | Win32/Spy.Danabot.D |
TOR | 73A5B0BEE8C9FB4703A206608ED277A06AA1E384 | Win32/Spy.Danabot.G |