Overview
Depuis plusieurs années, les chercheurs de Proofpoint suivent l’utilisation des téléchargeurs de première étape, utilisés par les acteurs de la menace pour installer d’autres formes de logiciels malveillants pendant et après leurs campagnes d’e-mails malveillants. En particulier, au cours des deux dernières années, ces téléchargeurs sont devenus de plus en plus robustes, offrant des capacités de profilage et de ciblage avancées.
Plus important encore, les téléchargeurs et d’autres logiciels malveillants comme les botnets et les chevaux de Troie bancaires ont remplacé les ransomwares comme charges utiles primaires, donnant aux acteurs de la menace la flexibilité de déployer une gamme de logiciels malveillants dans les infections secondaires. Par exemple, l’un des plus répandus, Smoke Loader, a été largement utilisé pour déposer des charges utiles telles que les chevaux de Troie bancaires Ursnif et The Trick, ainsi que pour utiliser ses propres modules pour le vol de crédentiels et d’autres informations et données, entre autres fonctions malveillantes.
Depuis la fin août 2019, les chercheurs de Proofpoint ont suivi le développement et la vente d’un nouveau chargeur modulaire nommé Buer par ses auteurs. Buer présente des fonctionnalités très concurrentielles par rapport à Smoke Loader, est activement vendu sur des marchés souterrains de premier plan et est destiné aux acteurs d’utilisation qui recherchent une solution clé en main, prête à l’emploi.
Campagnes
28 août 2019
Le 28 août, les chercheurs de Proofpoint ont observé des messages électroniques malveillants qui semblent répondre à des conversations électroniques légitimes antérieures. Ils contenaient des pièces jointes Microsoft Word qui utilisent des macros Microsoft Office pour télécharger la charge utile de l’étape suivante.
Figure 1 : Exemple de pièce jointe Microsoft Word utilisée dans la campagne du 28 août 2019
Nous avons observé que la charge utile de l’étape suivante était téléchargée à partir d’URL comprenant :
hxxp://jf8df87sdfd.yesteryearrestorationsnet/gate.php
hxxp://93345fdd.libertycolegioscom/gate.php
La charge utile déposée était nommée verinstere222.xls ou verinstere33.exe (une convention de dénomination que l’acteur utilisait à cette période). Au lieu de la variante Dreambot d’Ursnif associée à cet acteur, la charge utile était un chargeur non documenté qui n’avait pas été observé auparavant dans la nature.
Dans les semaines suivantes, en septembre et octobre, les chercheurs de Proofpoint et d’autres membres de la communauté infosec ont observé plusieurs campagnes du même acteur déposant soit la variante Dreambot d’Ursnif, soit ce nouveau chargeur.
10 octobre 2019
Le 10 octobre, les chercheurs de Proofpoint ont observé une campagne de malvertising en Australie redirigeant vers le kit d’exploitation (EK) Fallout larguant le nouveau chargeur.
Figure 2 : Trace de trafic réseau HTTP avec l’EK Fallout exploitant des navigateurs vulnérables
Le chargeur a ensuite déposé plusieurs charges utiles de logiciels malveillants de deuxième étape, notamment KPOT stealer, Amadey et Smoke Loader.
Le 21 octobre 2019
Depuis le début du mois de juillet, les chercheurs de Proofpoint ont observé environ 100 campagnes impliquant Ostap chargeant presque exclusivement plusieurs instances de The Trick. Le 21, cependant, les chercheurs de Proofpoint ont observé des messages électroniques malveillants avec des lignes d’objet telles que « Penalty Notice # PKJWVBP » contenant des pièces jointes Microsoft Word. Les documents contenaient des macros qui, si elles étaient activées, exécutaient Ostap. Nous avons observé qu’Ostap téléchargeait ce chargeur à partir de
hxxps://185.130.104187/nana/kum.php?pi=18b&
qui, à son tour, chargeait The Trick « ono22 » à partir de son C&C : garrisontxus
Figure 3 : Trafic réseau observé une fois la macro des documents malveillants activée.
Figure 4 : Exemple de pièce jointe Microsoft Word utilisée dans la campagne du 21 octobre
Marché & Analyse des fonctionnalités
Parce que nous avons commencé à observer ce nouveau chargeur utilisé dans de multiples campagnes distinctes, nous nous attendions à ce qu’il soit vendu sur un marché souterrain à de multiples acteurs. De plus, nous avons découvert une publicité du 16 août sur un forum clandestin décrivant un chargeur nommé « Buer » qui correspondait aux fonctionnalités du malware observé dans les campagnes ci-dessus.
Les fonctionnalités ajoutées et annoncées dans les semaines suivantes correspondent exactement à l’évolution du chargeur trouvé dans ces campagnes.
Nous avons récupéré le texte d’une publication sur un tableau d’affichage par l’auteur, en russe, demandant un paiement de 400 $ pour le malware, et offrant leurs services pour configurer le logiciel pour les clients potentiels afin de le rendre opérationnel. L’auteur indique également que les mises à jour et les corrections de bogues sont gratuites, mais qu’il y a un supplément de 25 $ pour la » reconstruction vers de nouvelles adresses « .
Le texte suivant, que Proofpoint a également extrait du marché clandestin et qui est présumé avoir été écrit par l’auteur du malware, est un résumé de la fonctionnalité du chargeur telle qu’elle est décrite dans le russe original :
Figure 5. Texte d’un post de forum clandestin décrivant les fonctionnalités du bot Buer Loader
De même, la publicité énumère également les fonctionnalités du panneau de contrôle. L’auteur note que le bot modulaire est entièrement écrit en C, à l’aide d’un panneau de contrôle écrit en .NET Core, mettant l’accent sur des performances plus élevées à la fois sur le client et le serveur en raison du choix du langage de programmation.
- Selon la description, le bot a une charge utile totale de 55 à 60 kilo-octets, fonctionne comme un exécutable Windows natif et une bibliothèque de liens dynamiques, s’exécute entièrement dans la mémoire résidente et est compatible avec les systèmes d’exploitation Microsoft Windows 32 bits et 64 bits.
- Le bot communique via une connexion HTTPS et peut être mis à jour à distance depuis le panneau de contrôle après le décryptage ainsi que la reconstruction.
- L’auteur note également que le chargeur s’exécute comme un processus de substitution d’une application de confiance, et fonctionne en utilisant les privilèges du niveau Utilisateur.
- Plus particulièrement, le logiciel ne fonctionnera pas dans la CEI (anciens États soviétiques, comme la Russie).
L’annonce décrit les caractéristiques suivantes pour le serveur et le panneau de contrôle :
- Le panneau de contrôle est annoncé comme étant également écrit en .NET Core, notant une installation facile sur les systèmes de serveur Ubuntu / Debian Linux.
- Le serveur fournit un large éventail de statistiques, y compris des compteurs pour les bots en ligne, vivants, morts et totaux ; une mise à jour en temps réel pour la liste des bots ; un compteur de téléchargement de fichiers ; et une capacité à filtrer les systèmes par type de système d’exploitation, les droits d’accès des bots installés, et le nombre de cœurs de CPU logiques.
- Les fichiers téléchargés depuis les systèmes infectés sont stockés sous forme cryptée sur le serveur, l’accès étant accordé par un jeton.
- Plus important encore, comme les bots eux-mêmes, l’auteur note que le serveur ne traite pas les requêtes API envoyées depuis les pays membres de la CEI.
Le post du forum comprenait également des notes de version technique pour le chargeur Buer et le panneau de contrôle (version 1.1.2). Dans l’introduction, l’auteur a noté que le lancement du chargeur comprend désormais trois étapes — si les deux premières étapes échouent sur le système infecté, et que l’injection dans le processus de substitution échoue (par exemple, en raison d’une incompatibilité avec la crypte elle-même), le chargeur s’exécutera sous son propre processus à la place.
Les notes de mise à jour font état des éléments suivants pour le chargeur :
- Le chargeur utilise une architecture FastFlux.
- Le chargeur fonctionne depuis sous un processus de confiance au sein de Microsoft Windows. Le processus MemLoadEx prend désormais en charge x64 exe en tant qu’application de confiance.
- MemLoad a été mis à jour et prend désormais en charge x32 exe natif.
Les notes de mise à jour font état des fonctionnalités suivantes pour le panneau de contrôle :
- L’accès à l’API est accompli en utilisant HTTPS avec le support des certificats auto-signés.
- Prise en charge de l’édition des tâches dans le panneau. L’utilisateur peut arrêter la tâche pendant l’exécution et modifier la charge utile et le nombre d’exécutions.
- Ajouté la possibilité de créer une tâche par ID de bot. Très approprié pour les charges ponctuelles.
- Une fenêtre étape par étape pour la création de tâches.
- Une notification qui permet de connaître les bots nécessaires en ligne.
- L’unicité de l’ID du bot a été augmentée.
- Des étiquettes ont été ajoutées au panneau, permettant de trier les bots pour des actions ultérieures avec eux.
- Affiche le nom de l’ordinateur dans le tableau.
- Amélioration de la compatibilité cryptographique.
- Ajout d’un historique des bots.
- « Le panneau s’étend maintenant à Docker » (prise en charge des conteneurs Docker).
- Note du chercheur Proofpoint : Nous présumons que cette fonctionnalité est destinée à faciliter l’intégration dans les hôtes Docker loués, simplifiant l’installation, bien que potentiellement le panneau/C&C pourrait être installé sur un hôte Docker compromis.
- Validation du fichier sur le panneau. Maintenant, le panneau ne manquera pas le fichier que le chargeur ne pourra pas télécharger et en informera le client.
- Les tâches peuvent maintenant être répétées.
Enfin, l’auteur a décrit les changements techniques suivants pour la version 1.1.9. Celles-ci sont dignes d’intérêt car elles démontrent que le malware fait l’objet d’un développement actif et professionnel.
- Le chargeur a acquis une nouvelle méthode pour lancer External pour les fichiers locaux. Les avantages de la méthode sont l’unicité et l’absence de CreateProcess / ShellExecute par le chargeur. Le lancement produit un processus de confiance sans aucune commande pour lui.
- Le panneau a la capacité de marquer tous les bots qui ont effectué une tâche spécifique. Cela permettra à l’utilisateur de distribuer la charge utile à certains groupes de bots.
- Implémentation de l’API d’intégration. Documentation disponible pour celle-ci.
- Ajouté la possibilité d’envoyer un fichier par référence en mode proxy. Le fichier est transféré au bot sous forme cryptée.
- Le bug du comptage des bots par pays a été corrigé et d’autres améliorations ont été ajoutées.
Captures d’écran du panneau de contrôle
Les captures d’écran du panneau de contrôle suivantes ont été incluses dans la publicité souterraine, montrant certaines des capacités back-end disponibles pour les clients, y compris la surveillance de la télémétrie, le filtrage des hôtes, et plus encore.
Figure 6 : UX de connexion au panneau de contrôle pour le chargeur Buer C&C
Figure 7 : écran de surveillance de la télémétrie du bot pour le panneau de contrôle Buer.
Figure 8 : Écran de surveillance de la télémétrie des bots en mode sombre pour le panneau de contrôle Buer.
Figure 9 : Vue du filtre du panneau de contrôle représentant les bots distants filtrés par l’architecture Microsoft Windows.
Figure 10 : Vue du panneau de contrôle décrivant la gestion des fichiers pour les tâches du chargeur
Figure 11 : Vue du panneau de contrôle des bots distants triés par droits d’utilisateur.
Figure 12 : Vue du panneau de contrôle, état des tâches
Figure 13 : Vue du panneau de contrôle, création d’une tâche
Analyse de malware
Buer Loader est un nouveau malware téléchargeur qui télécharge et exécute des charges utiles supplémentaires.
Fonctions d’anti-analyse
Le chargeur contient quelques fonctionnalités d’anti-analyse de base :
- Vérification de la présence de débogueurs en inspectant le drapeau NtGlobalFlag dans le bloc d’environnement de processus (PEB) et le bloc d’environnement de threads (TEB)
- Vérification de la présence de machines virtuelles à l’aide des mécanismes Red Pill , No Pill , et d’autres mécanismes connexes
- Vérification de la locale pour s’assurer que le logiciel malveillant ne s’exécute pas dans des pays spécifiques (figure 14)
Figure 14 : Vérification du logiciel malveillant pour s’assurer qu’il ne s’exécute pas dans des pays spécifiques
Persistance
La persistance est mise en place en configurant une entrée RunOnce du registre. Selon la version, l’entrée de registre exécutera le malware directement ou planifiera une tâche pour l’exécuter.
Chaînes chiffrées
Cet échantillon contient une fonction pour chiffrer les chaînes de caractères.
Figure 15 : Séquence de décryptage pour les chaînes
La fonction suivante est un exemple de la façon de décrypter les chaînes cryptées dans Ghidra en utilisant Jython:
Figure 16 : Séquence de décryptage des chaînes de caractères (version Python)
Figure 17 : Exemple de décryptage de chaînes de caractères
Appels d’API Windows
Cet échantillon utilise un algorithme de hachage pour résoudre la plupart de ses appels d’API Windows. L’algorithme de hachage s’assure que chaque caractère du nom de l’API est une majuscule. Il effectue ensuite une rotation vers la droite (ROR) de chaque caractère par 13 et les additionne.
Figure 18 : Algorithme de hachage pour résoudre les appels d’API Windows
La fonction suivante est un exemple de la façon dont Python peut être utilisé pour aider à résoudre les appels d’API.
Figure 19 : Exemple de script Python utilisé pour aider à résoudre les appels d’API Windows hachés
Le tableau suivant contient une liste de quelques hachages sélectionnés utilisés et leur nom d’API Windows correspondant :
CreateMutexW |
0xed619452 |
OpenMutexW |
0x7bffe25e |
CreateProcessW |
0xb4f0f46f |
WinHttpOpen |
0xaf7f658e |
WinHttpCrackUrl |
0x8ef04f02 |
WinHttpConnect |
0x9f47a05e |
WinHttpOpenRequest |
0x1dd1d38d |
Tableau 1 : Appels d’API Windows avec hachages sélectionnés
Commande et contrôle
Les fonctions de commande et de contrôle (C&C) sont traitées via des requêtes GET HTTP(S). Un exemple de balise de commande ressemble à la figure 20:
Figure 20 : Exemple de balise de commande
Ces demandes vont à l' »API de mise à jour » et contiennent un paramètre crypté. Ce paramètre peut être décrypté par :
- Décodage Base64
- Décodage Hex
- DécryptageRC4 (la clé utilisée dans les échantillons analysés était « CRYPTO_KEY »)
Un exemple de paramètre en clair est :
88a5e68a2047fa5ebdc095a8500d8fae565a6b225ce94956e194b4a0e8a515ae|ab21d61b35a8d1dc4ffb3cc4b75094c31b8c00de3ffaaa17ce1ad15e876dbd1f|Windows 7|x64|4|Admin|RFEZOWGZPBYYOI
Il contient des données délimitées par pipe-Il contient des données délimitées par des tubes et consistant en :
- Identification du robot (condensé hexagonal SHA-256 de divers paramètres système tels que le GUID et le nom du profil matériel, le nom de l’ordinateur, le numéro de série du volume, et CPUID)
- Un hachage SHA-256 de sa propre image exécutable
- Version de Windows
- Type d’architecture
- Nombre de processeurs
- Privilèges d’utilisateur
- Nom de l’ordinateur
Un exemple de réponse à une balise de commande est présenté dans la figure 21 :
Figure 21 : Exemple de réponse de balise de commande
Elle peut être déchiffrée de manière similaire au paramètre de requête ci-dessus, sauf que les octets codés en hexadécimal sont séparés par des caractères tirets. Un exemple de réponse en texte clair est présenté dans la Figure 22:
Figure 22 : Réponse de balise de commande en texte clair
Le texte décrypté est un objet JSON contenant diverses options sur la façon de télécharger et d’exécuter une charge utile :
- type – il existe deux types :
- update – mise à jour de soi
- download_and_exec – téléchargement et exécution
- options – spécifie les options pour la charge utile à télécharger :
- Hash – uniquement applicable au type « update » pour déterminer si une nouvelle mise à jour est disponible
- x64 – si le payload est 64-bit
- FileType – non utilisé dans les échantillons analysés
- AssemblyType -. non utilisé dans les échantillons analysés
- AccessToken – utilisé pour télécharger la charge utile (voir ci-dessous)
- External – indique si la charge utile est téléchargée depuis le C&C ou une URL externe
- method – méthode d’exécution :
- exelocal – créer un processus
- memload – injecter et charger manuellement la charge utile
- memloadex – injecter et charger manuellement la charge utile
- loaddllmem – injecter et charger manuellement la charge utile
- paramètres – paramètres à passer sur la ligne de commande
- pathToDrop -… non utilisé dans les échantillons analysés
- autorun – indique s’il faut configurer la persistance RunOnce du registre pour le payload
- modules – voir la section Modules ci-dessous
- timeout – non utilisé dans les échantillons analysés
Les payloads téléchargés depuis le serveur C&C se font via des requêtes à l' »API de téléchargement » comme vu dans la Figure 23 :
Figure 23 : Téléchargement de charges utiles depuis le C&C
Un exemple de paramètre de requête en texte clair est présenté ci-dessous :
88a5e68a2047fa5ebdc095a8500d8fae565a6b225ce94956e194b4a0e8a515ae|58007044-67d4-4963-9f5f-400dfbc69e74
Il contient l’ID du bot et le « AccessToken » de la réponse de la balise de commande. Si la charge utile est téléchargée depuis le C&C, elle est chiffrée avec RC4. Dans les échantillons analysés, la clé était « CRYPTO_KEY ».
Modules
La réponse à la balise de commande contient une liste de « modules ». Les chercheurs de Proofpoint n’ont pas encore observé l’utilisation de modules Buer dans la nature, mais d’après le code, cette liste contiendra des AccessTokens de module. Le nom du fichier du module est interrogé en envoyant un AccessToken à l' »API module » du C&C. Le module sera ensuite téléchargé en utilisant l’API « downloadmodule ». Une fois téléchargé et décrypté, il est chargé à l’aide de la méthode « loaddllmem ».
Conclusion
Un nouveau téléchargeur, Buer, est apparu récemment dans diverses campagnes, via de la malvertising menant à des kits d’exploitation ; comme charge utile secondaire via Ostap ; et comme charge utile primaire téléchargeant des malwares tels que le cheval de Troie bancaire The Trick.
Le nouveau chargeur possède des fonctions robustes de géociblage, de profilage du système et d’anti-analyse et est actuellement commercialisé sur des forums clandestins avec des services d’installation à valeur ajoutée. Le(s) auteur(s) russophone(s) développe(nt) activement le téléchargeur avec des panneaux de contrôle sophistiqués et un riche ensemble de fonctionnalités, ce qui rend le malware compétitif sur les marchés souterrains.
Le téléchargeur est écrit en C tandis que le panneau de contrôle est écrit en .NET core, ce qui indique une optimisation pour les performances et une faible empreinte de téléchargement, ainsi que la possibilité d’installer facilement le panneau de contrôle sur des serveurs Linux — la prise en charge intégrée des conteneurs Docker facilitera encore plus sa prolifération sur les hôtes loués utilisés à des fins malveillantes, et potentiellement, les hôtes compromis également. Cette dernière capacité est incluse dans ses fonctionnalités annoncées et ses notes de mise à jour.
Got it, but I don't know what this is. Downloaded Word doc: https://t.co/Y8tX8wTsOa – Follow-up EXE persistent on the infected Windows host: https://t.co/sowNIRDPbI pic.twitter.com/4isqbsMAa9
— Brad (@malware_traffic) October 11, 2019
https://www.cert.pl/en/news/single/ostap-malware-analysis-backswap-dropper/
https://www.proofpoint.com/us/threat-insight/post/ostap-bender-400-ways-make-population-part-with-their-money
https://www.aldeid.com/wiki/X86-assembly/Instructions/sidt
https://www.aldeid.com/wiki/X86-assembly/Instructions/sldt
Indicateurs de compromission (IOC)
IOC |
IOC Type |
Description |
fa699eab565f613df563ce47de5b82bde16d69c5d0c05ec9fc7f8d86ad7682ce |
sha256 |
|
http[ ://45.76.247[.177 :8080/api/update/ |
URL |
Buer C&C callback |
6c694df8bde06ffebb8a259bebbae8d123effd58c9dd86564f7f70307443ccd0 |
sha256 |
|
197163b6eb2114f3b565391f43b44fb8d61531a23758e35b11ef0dc44d349e90 |
sha256 |
|
https[ ://173.212.204[.171/api/update/ |
URL |
Buer C&C callback |
9e8db7a722cc2fa13101a306343039e8783df66f4d1ba83ed6e1fe13eebaec73 |
sha256 |
(Fallout Drop) |
http[ ://134.0.119[.53 :8080/api/update/ |
URL |
Buer C&C callback |
ab21d61b35a8d1dc4ffb3cc4b75094c31b8c00de3ffaaa17ce1ad15e876dbd1f |
sha256 |
(Ostap drop) |
https[ ://garrisontx[.us/api/update/ |
URL |
Buer C&C callback |
https[://185.130.104[.187/nana/kum.php?pi=18b |
URL |
Ostap instance dropping Buer – 2019-10-21 |
753276c5887ba5cb818360e797b94d1306069c6871b61f60ecc0d31c78c6d31e |
sha256 |
Buer 2019-11-28 |
ffload01[.top|185.125.58[.11 ffload01[.top|185.186.141[.129 |
domaine|IP |
Buer C&C 2019-11-28 |
Signatures ET et ETPRO Suricata/Snort
2029077 || ET TROJAN Buer Loader Update Request
2029079 || ET TROJAN Buer Loader Response
2029078 || ET TROJAN Buer Loader Request Download
2839684 || ET TROJAN Buer Loader Successful Payload Download
2029080 || SSL/TLS Certificate Observed (Buer Loader)