Avertissement : je suis novice dans ce domaine, et de plus je ne possède pas les connaissances adéquates en VBA ni API Windows en général. De quoi me mêle-je donc ?
C'est en essayant qu'on apprend, l'occasion fait le laron.
La méthode ad hoc que j'ai appliquée peut être utile à des non spécialistes, qui doivent néanmoins réagir à une telle attaque.
1 - L'attaque
Le 16 août à 18:25 heure française, j'ai reçu un email suspect :
Sujet : nomdedomaineinconnu.tld bill
De : "manager" @ un domaine que je ne connais pas
A : 4 adresses aussi inconnues à part la mienne
A noter qu'une des adresses est dans le même domaine que celui mentionné dans le sujet
Le texte :
Et bien sûr une pièce jointe : un fichier nommé nomdedomaineinconnu.tld332034.doc
(encore le même nom de domaine que celui du sujet et d'un des destinataires)
J'ai d'abord classé cet email en junk, puis repris une activité normale. L'heure de l'apéro approchait
Environ 20 minutes plus tard, je me suis ravisé et ai soumis le fichier joint à https://www.virustotal.com
Ce site fait analyser les fichiers qu'on lui soumet par une soixantaine d'anti-virus.
En l'occurence VirusTotal m'a indiqué que mon fichier avait déjà été soumis, verdict : 5 anti-virus (AV) l'avaient detecté comme malicieux.
J'ai tout de même forcé une nouvelle analyse : cette fois 6 AV le détectaient :
Précision : pendant quelques années j'ai travaillé pour un de ces éditeurs d'AV, je pourrais donc être content qu'il soit parmi les premiers à détecter mon malware
Mais les diverses attaques comparables que j'ai eu à traîter m'ont montré que la vitesse de réaction des éditeurs est très variable selon les cas.
Il ne faut donc pas prendre les résultats de VirusTotal pour un indicateur de la qualité des AV ni de la rapidité de mise à jour de leurs bases de signatures.
Sur les cas que j'ai eu à gérer, le temps de mise à jour des AV pouvait aller de quelques heures à une journée.
2 - Analyse
On peut voir que la désignation du malware par les AV est très aléatoire, chacun ayant sa nomenclature.
Cependant, certains éléments apparaissent plusieurs fois : W97M, Dropper, Trojan.
Une première recherche web m'a envoyé sur des rapports concernant des cas semblables.
W97M est bien un "dropper", c'est à dire qu'il ne fait que télécharger un autre malware.
Il a été associé à Dridex, un spyware volant des informations bancaires.
Je n'ai pas les outils pour analyser ce genre d'échantillons. J'ai donc soumis le fichier à un analyzer en ligne : https://www.hybrid-analysis.com
Un tel analyzer exécute le fichier qu'on lui soumet dans une sandbox, et détecte ce que le code fait dans la sandbox.
Le rapport est diponible ici.
Ce rapport mentionne plusieurs choses intéressantes :
Le rapport contient également le code source des macros. Même avec des connaissances très limitées en VBA telles que les miennes, on observe tout de même que ce code est bien tordu (obfuscation), afin de masquer au maximum son but réel.
En particulier, les URLs de téléchargement de l'exécutable sont codées dans une chaine de plus de 4000 caractères. Extrait :
Un morceau du code de la macro qui récupère les URLs depuis la string (attention ça fait saigner les yeux) :
L'analyzer en a extrait les URLs suivantes :
Une recherche web sur les domaines des gates indique que ces domaines ont été repérés comme étant des serveurs Command & Control (C&C), ce qui indiquerait que l'exécutable droppé transforme la machine cible en zombie pour un botnet.
C'est cohérent avec Dridex, qui récolte des informations bancaires des utilisateurs et les envoie vers ses serveurs C&C.
L'exécutable droppé pourrait également se mettre en attente d'ordres envoyés par les C&C, pour envoi de spam ou d'autres mails d'attaques, attaques DDOS, ransomware, etc.
3 - Conclusions
Nous avons donc à faire à une attaque en plusieurs étapes :
Il est à noter que le dropper et sa charge utile n'ont pas forcément la même origine. Le cybercrime est de plus en plus organisé, les tâches réparties, et les produits disponibles à l'achat/location sur les étagères des épiceries du Darknet.
Le code des macros est obfusqué, probablement avec un outil automatique, ce qui explique que les AV ne détectent pas immédiatement ce dropper, bien que ses premières variantes soient connues depuis au moins 2014.
Cela démontre en outre que les anti-virus ne suffisent pas à protéger contre toutes les menaces, et que c'est à la cible humaine de se protéger, en n'ouvrant pas des pièces jointes de source inconnues, et en interdisant l'exécution des macros.
Quelques remarques sur la méthode que j'ai utilisé pour cette analyse :
J'ai envoyé le fichier office à des sites d'analyse en ligne, VirusTotal et Hybrid Analysis.
Ces sites ont une bonne réputation, mais on ne doit pas leur envoyer de données confidentielles, seulement des échantillons dont on est raisonnablement sûr que ce sont des malware.
Dans ce cas, la situation était claire : l'expéditeur et les destinataires de l'email d'attaque m'était inconnus.
J'ai pu voir des cas où l'expéditeur était connu : fournisseur, client, partenaire. Dans ce cas il est impératif de vérifier avec la personne si l'email est légitime ou non, et ainsi ne pas envoyer un document confidentiel vers un site d'analyse en ligne.
Un véritable analyste travaille en général avec ses propres outils : AV, sandbox etc. Ces outils sont en général onéreux, et complexes à maîtriser.
Vu les risques d'exécution un malware, il faut travailler avec des VM ou des environnement dédiés et jetables après usage, dans des réseaux aussi dédiés et maîtrisés : télécharger une payload et observer les interactions avec les C&C fait partie du job, participer à une attaque DDOS, non.
Les sites tels que ceux que j'ai utilisé proposent des services payants qui peuvent simplifier ces tâches, et les compléter avec des intégrations avec d'autres outils (SIEM, IDS/IPS, etc.). Dans ce cadre cela peut être une option si les conditions contractuelles sont compatibles avec les contraintes de l'analyste.
C'est en essayant qu'on apprend, l'occasion fait le laron.
La méthode ad hoc que j'ai appliquée peut être utile à des non spécialistes, qui doivent néanmoins réagir à une telle attaque.
1 - L'attaque
Le 16 août à 18:25 heure française, j'ai reçu un email suspect :
Sujet : nomdedomaineinconnu.tld bill
De : "manager" @ un domaine que je ne connais pas
A : 4 adresses aussi inconnues à part la mienne
A noter qu'une des adresses est dans le même domaine que celui mentionné dans le sujet
Le texte :
hi,
the document you have emailed me has been enclosed to this correspondence.
Thank you
the document you have emailed me has been enclosed to this correspondence.
Thank you
Et bien sûr une pièce jointe : un fichier nommé nomdedomaineinconnu.tld332034.doc
(encore le même nom de domaine que celui du sujet et d'un des destinataires)
J'ai d'abord classé cet email en junk, puis repris une activité normale. L'heure de l'apéro approchait
Environ 20 minutes plus tard, je me suis ravisé et ai soumis le fichier joint à https://www.virustotal.com
Ce site fait analyser les fichiers qu'on lui soumet par une soixantaine d'anti-virus.
En l'occurence VirusTotal m'a indiqué que mon fichier avait déjà été soumis, verdict : 5 anti-virus (AV) l'avaient detecté comme malicieux.
J'ai tout de même forcé une nouvelle analyse : cette fois 6 AV le détectaient :
Code:
Antivirus Result Update FSecure Trojan:W97M/Nastjencro.A 20160816 McAfee W97M/Dropper.cd 20160816 McAfeeGWEdition W97M/Dropper.cd 20160816 Qihoo360 virus.office.gen.70 20160816 Sophos Troj/DocDlL 20160816 Tencent Macro.Trojan.Dropperd.Auto 20160816
Mais les diverses attaques comparables que j'ai eu à traîter m'ont montré que la vitesse de réaction des éditeurs est très variable selon les cas.
Il ne faut donc pas prendre les résultats de VirusTotal pour un indicateur de la qualité des AV ni de la rapidité de mise à jour de leurs bases de signatures.
Sur les cas que j'ai eu à gérer, le temps de mise à jour des AV pouvait aller de quelques heures à une journée.
2 - Analyse
On peut voir que la désignation du malware par les AV est très aléatoire, chacun ayant sa nomenclature.
Cependant, certains éléments apparaissent plusieurs fois : W97M, Dropper, Trojan.
Une première recherche web m'a envoyé sur des rapports concernant des cas semblables.
W97M est bien un "dropper", c'est à dire qu'il ne fait que télécharger un autre malware.
Il a été associé à Dridex, un spyware volant des informations bancaires.
Je n'ai pas les outils pour analyser ce genre d'échantillons. J'ai donc soumis le fichier à un analyzer en ligne : https://www.hybrid-analysis.com
Un tel analyzer exécute le fichier qu'on lui soumet dans une sandbox, et détecte ce que le code fait dans la sandbox.
Le rapport est diponible ici.
Ce rapport mentionne plusieurs choses intéressantes :
- le fichier contient bien des macros, qui s'exécutent dès l'ouverture du document
- ces macros appellent des API Windows en les référençant depuis les DLL du système
- les API appelées indiquent que les macros vont injecter du code dans d'autres processus
- le code des macros semble obfusqué
- les macros téléchargent et installent ("drop") un fichier exécutable Windows, vx012.exe et le lance
- l'exécutable installe des hooks (détournement de fonctions ou API du système)
- l'exécutable contient des mesures anti-debugger
Le rapport contient également le code source des macros. Même avec des connaissances très limitées en VBA telles que les miennes, on observe tout de même que ce code est bien tordu (obfuscation), afin de masquer au maximum son but réel.
En particulier, les URLs de téléchargement de l'exécutable sont codées dans une chaine de plus de 4000 caractères. Extrait :
Code:
_E`oFMdEe[{gIIeFhO]U_E`4FONNZIJZ^]'>:[email protected]@>YeJu]'[email protected][kMMVfgNH8[>MMMMXKBF\I{HuYKNCZNJM...
Code:
For dyslexic = 0 To 63 exponential(dyslexic) = dyslexic * enviously bunko(dyslexic) = dyslexic * uncommercial nuphar(dyslexic) = dyslexic * centriole Next dyslexic certainty = accomplish boathouse = 64 - 60 ReDim flatbottomed((((UBound(certainty) + 1) \ boathouse) * 3) - 1) For predesigned = 0 To UBound(certainty) Step 4 discoursive = certainty(predesigned) bowwow = 3 delonix = nuphar(hanoi(discoursive)) + bunko(hanoi(certainty(predesigned + 1))) + _ exponential(hanoi(certainty(predesigned + 2))) + hanoi(certainty(predesigned + bowwow)) dyslexic = delonix And homespun flatbottomed(emetrol) = dyslexic \ turkscap dyslexic = delonix And pharmacologically flatbottomed(emetrol + 1) = dyslexic \ bedstead flatbottomed(emetrol + 2) = delonix And mongrel emetrol = emetrol + 3 Next predesigned excluded = flatbottomed
- http://google.com
- http://onketorsco.com/ls3/gate.php
- http://dafiutrat.ru/ls3/gate.php
- http://idmuchatbut.ru/ls3/gate.php
- http://api.ipify.org
Une recherche web sur les domaines des gates indique que ces domaines ont été repérés comme étant des serveurs Command & Control (C&C), ce qui indiquerait que l'exécutable droppé transforme la machine cible en zombie pour un botnet.
C'est cohérent avec Dridex, qui récolte des informations bancaires des utilisateurs et les envoie vers ses serveurs C&C.
L'exécutable droppé pourrait également se mettre en attente d'ordres envoyés par les C&C, pour envoi de spam ou d'autres mails d'attaques, attaques DDOS, ransomware, etc.
3 - Conclusions
Nous avons donc à faire à une attaque en plusieurs étapes :
- un email est envoyé aux cibles, contenant un fichier office.
- les cibles ouvrent le fichier, qui exécute alors les macros qu'il contient
- ces macros vont télécharger un autre malware contenant la charge utile
- ce dernier exécutable s'installe durablement dans le système
Il est à noter que le dropper et sa charge utile n'ont pas forcément la même origine. Le cybercrime est de plus en plus organisé, les tâches réparties, et les produits disponibles à l'achat/location sur les étagères des épiceries du Darknet.
Le code des macros est obfusqué, probablement avec un outil automatique, ce qui explique que les AV ne détectent pas immédiatement ce dropper, bien que ses premières variantes soient connues depuis au moins 2014.
Cela démontre en outre que les anti-virus ne suffisent pas à protéger contre toutes les menaces, et que c'est à la cible humaine de se protéger, en n'ouvrant pas des pièces jointes de source inconnues, et en interdisant l'exécution des macros.
Quelques remarques sur la méthode que j'ai utilisé pour cette analyse :
J'ai envoyé le fichier office à des sites d'analyse en ligne, VirusTotal et Hybrid Analysis.
Ces sites ont une bonne réputation, mais on ne doit pas leur envoyer de données confidentielles, seulement des échantillons dont on est raisonnablement sûr que ce sont des malware.
Dans ce cas, la situation était claire : l'expéditeur et les destinataires de l'email d'attaque m'était inconnus.
J'ai pu voir des cas où l'expéditeur était connu : fournisseur, client, partenaire. Dans ce cas il est impératif de vérifier avec la personne si l'email est légitime ou non, et ainsi ne pas envoyer un document confidentiel vers un site d'analyse en ligne.
Un véritable analyste travaille en général avec ses propres outils : AV, sandbox etc. Ces outils sont en général onéreux, et complexes à maîtriser.
Vu les risques d'exécution un malware, il faut travailler avec des VM ou des environnement dédiés et jetables après usage, dans des réseaux aussi dédiés et maîtrisés : télécharger une payload et observer les interactions avec les C&C fait partie du job, participer à une attaque DDOS, non.
Les sites tels que ceux que j'ai utilisé proposent des services payants qui peuvent simplifier ces tâches, et les compléter avec des intégrations avec d'autres outils (SIEM, IDS/IPS, etc.). Dans ce cadre cela peut être une option si les conditions contractuelles sont compatibles avec les contraintes de l'analyste.
Commentaire