Une offre alléchante de télétravail

0
98

Les avancées technologiques sont visibles dans différents aspects de notre quotidien. Les équipements connectés à Internet nous viennent en aide dans quasiment chacun d’entre eux, en nous fournissant des outils et des informations sur à peu près tous les sujets imaginables. Se rendre au bureau pour travailler est de moins en moins nécessaire car un nombre croissant d’entreprises profitent des avantages du télétravail. Cependant, qu’en est- il si une offre de télétravail est trop belle pour être vraie ?

Tribune par Robert Neumann, Senior Security Researcher du X-Labs de Forcepoint – Nous avons récemment rencontré deux méthodes de tentative d’escroquerie liée à cette tendance du télétravail. La première est une tentative de cybersquatting et la seconde un botnet à petite échelle diffusant de fausses offres de télétravail. Les deux escroqueries proposaient un emploi à distance mais avec une intention malveillante, au détriment d’un prestataire ou d’un télétravailleur qui se ferait berner en répondant à une sollicitation de ce type. Nous pensons par ailleurs que Forcepoint est le premier à révéler cette famille particulière de botnet – avec son précurseur – et à en donner une analyse technique approfondie.

Méthode numéro 1 : cybersquatting

Lorsque j’en ai eu vent pour la première fois par un ami proche, j’ai été surpris d’apprendre que sa profession faisait l’objet d’une enquête policière en cours. Il y a plusieurs années, celui-ci dirigeait un petit organisme d’apprentissage des langues en Autriche, dont il avait cessé les activités. Or il est apparu qu’un nouveau site web avait été créé pour une entreprise du même secteur, mentionnant comme cordonnées le même nom et la même adresse que l’ancien organisme. Comme mon ami ne connaissait pas ce nouveau site, il m’a demandé de vérifier si j’y trouvais quelque chose de suspect. Le site en lui-même était fort bien conçu – mieux que l’original, de l’aveu même de mon ami – mais il n’avait rien à offrir en dehors d’une adresse e-mail et d’un numéro de téléphone permettant de postuler à un emploi. Après quelques recherches, j’ai trouvé plusieurs offres d’emploi similaires en ligne sur divers sites locaux. Il n’y avait aucune tentative de phishing, aucun kit d’exploitation de vulnérabilité dissimulé dans la page ni aucun service de paiement en ligne pointant vers des activités malveillantes manifestes. Au départ, rien n’indiquait clairement le but de ce nouveau site.

Ce n’est qu’après une conversation téléphonique entre mon ami et les autorités locales qu’est apparue la raison de l’ouverture d’une enquête à ce sujet. Il semble que quelqu’un ait postulé à l’emploi proposé (pour du télétravail à plein temps) mais les échanges avec le soi- disant employeur aient déclenché plusieurs signaux d’alarme chez le postulant. Non seulement l’interlocuteur ne semblait pas parler couramment sa prétendue langue maternelle mais les tâches demandées dans le cadre du travail proposé étaient étrangement ambiguës.

L’employeur paraissant souvent réticent à donner des réponses directes. Puis est arrivée une demande plutôt curieuse : « je vais transférer de l’argent sur votre compte et j’aimerais que vous le retransfériez vers un autre que je vous indiquerai par la suite. » A ce stade, il devenait évident que le site servait de couverture à du blanchiment. Un examen plus poussé de ce nouveau site web a également révélé qu’un autre avait été enregistré par la même fausse adresse e-mail au moyen du service douteux Airmail.cc.

L’aspect du site, la profession – le développement d’applications mobiles, cette fois – et l’adresse de contact indiquée étaient différents, tandis que le numéro de téléphone en Autriche était identique aux deux derniers chiffres près, signe manifeste qu’il appartenait aux mêmes individus. Grâce à CERT.at, le premier site a rapidement été fermé et la notification en a été diffusée dans l’un des bulletins quotidiens par e-mail de l’organisme.

Méthode numéro 2 : spams diffusés par un botnet

Séparément, mais durant la même période, notre équipe a reçu une charge malveillante inhabituelle provenant d’une campagne Smoke Loader. Cet échantillon présentait plusieurs caractéristiques originales méritant une investigation plus approfondie, laquelle a révélé qu’il était lui aussi au cœur d’escroqueries au télétravail.

Pas de fumée sans feu

A première vue, la charge ressemblait à une nouvelle variante de ransomware mais le trafic réseau enregistré n’allait pas dans ce sens et aucune demande de rançon n’a été trouvée au cours de l’analyse. Nous avons rapidement détecté la présence, plutôt inattendue, d’une couche supplémentaire de type exepacker et la véritable charge sous-jacente, une application Delphi compressée au format UPX, qui n’avait rien d’un ransomware. De plus, le binaire de niveau supérieur était signé au moyen d’un certificat parfaitement valide.

Le botnet client

Delphi n’est plus vraiment le choix privilégié des cybercriminels pour la création de malware depuis quelque temps déjà. Cependant, son utilisation est encore répandue parmi certains groupes, par exemple ceux se spécialisant dans le malware bancaire en Amérique latine. La charge que nous avons découverte n’avait toutefois rien de commun avec les chevaux de Troie bancaires latino-américains mais elle tentait néanmoins d’entrer en communication avec un certain nombre d’hôtes distants, ce qui a éveillé notre curiosité.

Phase initiale : le module de chargement (Loader)

Dès son exécution ; le tout premier objectif du logiciel client est d’assurer sa persistance, ce qu’il fait de manière assez inhabituelle. Une clé de registre est créée sous HKCU\Software\Microsoft\Windows\CurrentVersion\Run mais, au lieu de pointer vers l’exécutable lui-même, elle pointe vers un fichier texte se trouvant dans le répertoire %APPDATA%. Il s’agit d’un fichier XML, destiné à être chargé par le Script Component Runtime, qui exécutera finalement le binaire via ActiveX. Il est à noter que cette méthode n’est valable que pour les variantes actuelles. Les versions antérieures utilisaient la même clé de registre mais pointaient directement vers l’exécutable.

Une fois sa persistance assurée, le botnet tente d’entrer en contact avec un serveur C2 actif en envoyant une requête POST à une liste de serveurs codée en dur dans le binaire.

Exemple : http://smart[.]cloudnetwork[.]kz/t

S’il ne peut établir de connexion avec aucun des serveurs C2 répertoriés, le botnet demeure inactif pendant cinq secondes puis fait un nouvel essai. Une fois une connexion établie, il télécharge deux DLL (libeay32.dll et ssleay32.dll) faisant partie du package OpenSSL et les implante en mémoire. Ces modules étant largement utilisés dans de multiples applications, ils sont stockés sur les serveurs C2 sous forme non cryptée.

Lorsque tout est en place, le botnet lance sa boucle principale d’exécution. Il tente d’entrer en relation avec trois messageries courantes (Google, Yahoo, Outlook) afin de vérifier si le port 25 est accessible, sachant que son utilisation est souvent interdite, en particulier dans les environnements d’entreprise. Si au moins deux messageries sur trois sont joignables, le botnet considère que SMTP est disponible et peut être utilisé.

Deux requêtes similaires sont envoyées au serveur C2 à une soixantaine de secondes d’intervalle. L’une est un rapport d’état qui contient également l’état du port 25, l’autre servant à solliciter des commandes. Si la réponse à la première est un simple accusé de réception, la seconde renvoie pour sa part un chiffre correspondant à un mode opératoire à exécuter.

Exemple de rapport d’état :

Destination : http://smart[.]cloudnetwork[.]kz/s

Contenu :

[bid]3[/bid][s]0[/s][v]3[/v][hwid]78e5ccb1846aff9b384f09eb581274ca[/hwid][t]EXE[/t]
Réponse : [RESULT]OK[/RESULT]

Exemple de requête de commande :

Destination : http://smart[.]cloudnetwork[.]kz/c

Contenu :

[bid]3[/bid][v]3[/v][hwid]78e5ccb1846aff9b384f09eb581274ca[/hwid][t]EXE[/t][status]0[/status]
Réponse :

[mode]0[/mode]

Note : [bid] est l’identifiant du botnet, [v] la version, [hwid] un identifiant distinctif du client, [t] le type et [s] l’état du port 25.

Communications

A l’exception du ping de départ adressé au serveur C2 et des téléchargements de DLL OpenSSL, toutes les communications ultérieures avec le serveur sont cryptées. Le contenu initial l’est au moyen d’une clé RC4 statique codée en dur dans le module Loader (« lkjertsd »). Ensuite y est superposé un codage Base64, assez courant dans les communications web. Cette combinaison de RC4 et Base64 est plutôt élémentaire mais suffisamment efficace pour empêcher la lecture en clair des commandes et données transmises. La clé RC4 est restée constante pour toutes les versions du botnet que nous avons examinées.

Modes opératoires

Mode 0 – Inactif (Idle)

Dans ce mode, aucune action supplémentaire n’est effectuée. Le botnet se borne à envoyer des requêtes d’état et de commande au serveur C2 toutes les soixante secondes environ, comme nous l’avons vu plus haut. Il s’agit d’un simple mode Keep Alive.

Mode 9 – Mise à jour (Updater)

Des mises à jour du botnet client sont constamment diffusées à quelques jours d’intervalle.

Celles-ci sont téléchargées directement depuis le serveur C2, décryptées (codage RC4 uniquement, cette fois), enregistrées sur disque et exécutées à l’aide d’un fichier batch généré par runtime. Il s’agit simplement du botnet client repackagé (Loader) avec le même exepacker, toujours et encore. Nous supposons que cela est volontaire de façon à ménager une fenêtre temporelle permettant de passer inaperçu avant que la majorité des scanners ne puissent détecter le botnet. L’utilisation d’un certificat valide devrait prolonger cette fenêtre dans le cas où des produits de sécurité sont configurés pour faire confiance aux applications correctement signées.

Exemple de requête de mise à jour : [mode]9[/mode][i]187[/i][f]http://smart.cloudnetwork.kz/lfd/5d7791f14743d.exe[/f]

Plug-ins

Les modes les plus intéressants sont 1, 2 et 3. Pour chacun d’entre eux, il existe un module complémentaire (plug-in), stocké sur le serveur C2. Loader télécharge ces modules, en décrypte le contenu (codé une fois encore en RC4 uniquement, comme les mises à jour du client) et les charge en mémoire sans les enregistrer sur disque. Tous ces modules sont également des DLL Delphi et comportent une fonction exportée appelée ShowMagic, utilisée par Loader pour exécuter le plug-in.

Mode 3 – Exploration (Finder)

A la réception d’une commande de mode 3, le module « 5c76acdb8964c.txt » est téléchargé et exécuté. Dans ce mode, le serveur C2 fournit une liste de noms de domaine susceptibles d’exploiter un service SMTP et il appartient au module nouvellement téléchargé de valider chacun d’entre eux et de renvoyer le résultat.

Référence Interne : Find.dll

Exemple de requête de plug-in en mode 3 : [mode]3[/mode][f]http://smart.cloudnetwork.kz/fd/5c76acdb8964c.txt[/f][ki]60[/ki]

Exemple d’interrogation en mode 3 : [domains]redacted[|][/domains][seller_id]99[/seller_id][task_id]99999[/task_id][threads_count]63[/threads_count][mode]3[/mode]

Exemple de réponse en mode 3 : [hwid]78e5ccb1846aff9b384f09eb581274ca[/hwid][good]redacted[/good][bad]redacted[/bad][seller_id]99[/seller_id][task_id]99999[/task_id]

Mode 2 – Vérification (Checker)

A l’instar du module précédent, le mode 2 interagit lui aussi avec des serveurs SMTP mais, en l’occurrence, afin de vérifier des identifiants de connexion, dont une grande quantité est fournie par le serveur C2. Notre analyse laisse penser que ces identifiants ont notamment pu être volés lors de récents piratages de données. Malheureusement, les nombreuses fuites qui se sont produites au cours des 12 à 18 derniers mois alimentent cette activité. Les champs [seller_id] (identifiant du vendeur) dans les requêtes servent également à identifier les sources, que ce soit à usage interne ou pour payer les données en fonction de leur qualité. Dans le cas où un identifiant de connexion valide est découvert, le module adresse souvent un e-mail de test à une boîte Gmail (qui varie constamment) en incluant les détails du compte valide et en ajoutant un bref marqueur (le champ [mark]) dans le corps du message.

Référence Interne : CheckDLL.dll

Exemple de requête de plug-in en mode 2 : [mode]2[/mode][f]http://smart.cloudnetwork.kz/fd/5c76ae7d1dff3.txt[/f][ki]60[/ki]

Exemple d’interrogation en mode 2 : [smtp_check][m]user@redacted.com[/m][l]login[/l][pas]password[/pas][s]redacted.com[/s][p]25[/p][i]12345678[/i][/smtp_check][threads_count]30[/threads_count][mode]2[/mode][mail_to]redacted@gmail.com[/mail_to][mark]ABCD[/mark][task_id]1[/task_id][seller_id]99[/seller_id][xmailer]Mozilla Thunderbird{1|2|3|4|5|6|7|8|9}{1|2|3|4|5|6|7|8|9|||||}.{1|2|3|4|5|6|7|8|9}{1|2|3|4|5|6|7|8|9
}{1|2|3|4|5|6|7|8|9}{1|2|3|4|5|6|7|8|9|||||}{1|2|3|4|5|6|7|8|9|||||}{1|2|3|4|5|6|
7|8|9|||||}{1|2|3|4|5|6|7|8|9|||||}{1|2|3|4|5|6|7|8|9|||||}{1|2|3|4|5|6|7|8|9|||
||}{1|2|3|4|5|6|7|8|9|||||}{1|2|3|4|5|6|7|8|9|||||}[/xmailer][from_name]Redacted
Name[/from_name]

Exemple de réponse en mode 2 : [hwid]78e5ccb1846aff9b384f09eb581274ca[/hwid][good]redacted[/good][bad]redacted[/bad][seller_id]99[/seller_id][task_id]9[/task_id][mark]ABCD[/mark]

Mode 1 – Spammer

Il s’agit du module le moins fréquemment employé des trois, pour la simple raison que c’est celui qui accomplit la mission principale du botnet : l’envoi de spam. Généralement ce module n’est pas téléchargé avant un temps assez long, parfois des jours. Lorsqu’il l’est finalement, un jeu de modèles de spam et une liste d’identifiants SMTP valides sont fournis par le serveur C2. Le corps du message est tantôt en texte, tantôt en HTML, le format changeant fréquemment

Référence Interne : SPamDLL.dll

Exemple de requête de plug-in en mode 1 : [mode]1[/mode][f]http://smart.cloudnetwork.kz/fd/5c76acdb4a262.txt[/f][ki]60[/ki]

Exemple de modèle de spam : [mode]1[/mode][plain_text]1[/plain_text][send_log]1[/send_log][send_smtp_limit]100[/send_smtp_limit][send_email_limit]300[/send_email_limit][email_part_id]123[/email_part_id][threads_count]63[/threads_count][messages_from_server]100[/messages_from_server][xmailer]Mozilla Thunderbird {1|2|3|4|5|6|7|8|9}{1|2|3|4|5|6|7|8|9|||||}.{1|2|3|4|5|6|7|8|9}{1|2|3|4|5|6|7|8|9}{1|2|3|4|5|6|7|8|9}{1|2|3|4|5|6|7|8|9|||||}{1|2|3|4|5|6|7|8|9|||||}{1|2|3|4|5|6|7|8|9|||||}{1|2|3|4|5|6|7|8|9|||||}{1|2|3|4|5|6|7|8|9|||||}{1|2|3|4|5|6|7|8|9|||||}{1|2|3|4|5|6|7|8|9|||||}{1|2|3|4|5|6|7|8|9|||||}[/xmailer][text]redacted[/text][subject][fname] [lname][/subject][reply_to][fromname]<{redacted@yahoo.com}&gt;[/reply_to][emails]email:name[|][/emails][email_rule]email:fname:lname[/email_rule][delimiter]:[/delimiter][attach_file][/attach_file][from_name]RedactedName[|][/from_name][camp_id]999[/camp_id]

E-mails

Une chose est restée constante pendant notre investigation : le spam diffusé par le botnet ne porte que sur de fausses offres d’emploi et ne l’est qu’à petite échelle. Il ne présente aucune des caractéristiques évidentes du spam classique : ni liens, ni tentatives de phishing, ni pièces jointes (même si les modèles offrent cette dernière possibilité), et les serveurs et comptes utilisés pour la diffusion sont légitimes. Les seuls éléments suspects tiennent à l’utilisation du nom du destinataire dans l’objet du message, à la fourniture d’une adresse e- mail Yahoo pour la réponse et à la mention de versions inexistantes de Thunderbird dans le champ X-Mailer. Tout cela rend ces fausses offres d’emploi difficiles à distinguer d’une vraie.

Piratage de comptes SMTP

Les serveurs C2 tiennent à jour une liste de noms de serveurs et d’identifiants SMTP valides, servant à l’envoi de spam. Les serveurs concernés opèrent à grande échelle et sont principalement liés à des opérateurs de messageries gratuites. Cela n’est guère surprenant dans la mesure où celles-ci sont plus faciles à pirater que des comptes d’entreprise généralement mieux protégés.

Historique et évolution

L’existence du botnet pourrait remonter à février 2018 lorsque la v1 a été repérée pour la première fois. Cette version initiale a été suivie d’une v1.1 au bout de quelques semaines et une v2 est apparue en mai de la même année. Cette version a duré près d’un an avant d’être remplacée par la v3 fin février 2019. Le module Loader actuel est daté du 2 avril 2019.

Avant 2018, il existait quelques échantillons partageant une base de code quasi identique à cette famille sous le nom interne de « Silent_SMTP_Bruter ». Leurs fonctionnalités étaient très similaires à la v1, à ceci près que la majorité du code se trouvait dans un seul exécutable, au lieu de la méthode plus récente à base de plug-ins. Des traces de ces échantillons ont été détectés dès janvier 2016. Nous pensons donc qu’ils étaient des précurseurs de cette famille. Il est à noter que la version peut être facilement déterminée à partir des champs [bid] (identifiant du botnet) et [v] (version) dans les diverses requêtes adressées au serveur C2.

Certificats

Depuis la première apparition du botnet en 2018, nous avons eu connaissance d’au moins neuf certificats différents utilisés pour les binaires. Ceux-ci étaient généralement valides pour une durée d’un an et la plupart d’entre eux sont aujourd’hui révoqués. L’emploi de certificats valides pourrait faciliter l’exécution du malware dans le cas où des produits de sécurité ont été configurés de façon à leur faire confiance. Les principaux émetteurs sont Sectigo (anciennement Comodo) et DigiCert.

Conclusion

A mesure que le télétravail gagnait du terrain ces dernières années, les cybercriminels ont suivi leurs cibles du bureau jusqu’au domicile, au risque d’accroître la responsabilité des victimes en cas d’activités illicites. Lorsqu’une personne trouve – dans sa messagerie ou sur un site web bien conçu – une offre d’emploi d’apparence sérieuse, elle est plus susceptible de s’y laisser prendre.

Ces nouvelles techniques ne sont guère différentes des « arnaques nigérianes » répandues au cours de la dernière décennie. Plutôt qu’un stratagème visant à extorquer directement de l’argent, elles font preuve d’un niveau supérieur de sophistication en incitant des particuliers à prendre part à du blanchiment… et à encourir les lourdes conséquences qui peuvent s’ensuivre. Pour atteindre leur objectif, les cybercriminels doivent recourir au piratage massif de milliers de comptes SMTP. La tenue à jour d’une telle liste n’est pas chose aisée car ces comptes ne sont exploitables que pendant une durée limitée, le temps que leurs propriétaires ou les opérateurs prennent conscience de leur piratage. Malheureusement, en raison de leur faible niveau de sécurité, certains webmails gratuits vont être les premiers à alimenter cette liste pendant un moment.

Nous conseillons donc à tous les utilisateurs de se montrer toujours vigilants lorsqu’ils reçoivent un message d’un expéditeur inconnu et de bien protéger leurs données personnelles, notamment leurs identifiants de connexion à des services gratuits. Le choix de mots de passe robustes et leur renouvellement fréquent peuvent grandement contribuer à éviter le piratage de comptes. En cas de suspicion d’activités frauduleuses, n’hésitez pas à contacter les autorités locales compétentes, telles que la DGCCRF , pour leur demander conseil.

Protection assurée par Forcepoint

Les clients de Forcepoint sont protégés contre cette menace aux stades suivants de l’attaque :

  • Etape 2 (appât) – Identification et blocage des e-mails malveillants liés à cette attaque.
  • Etape 5 (implantation du malware) – Blocage du téléchargement des fichiers malveillants.
  • Etape 6 (contact du serveur) – Blocage des tentatives de contact des serveurs C2.