Exécution, injection, infection, identification et… téléphone maison !

Magazine
Marque
MISC
Numéro
82
|
Mois de parution
novembre 2015
|
Domaines


Résumé
Que se passe-t-il lors de l'exécution d'un malware ? Cet article a pour objectif de parler des premières phases de l'infection d'une machine, en prenant Emotet comme exemple pratique, depuis l'arrivée du logiciel malveillant sur la machine cible, en passant par son intégration dans le système, jusqu’à sa première connexion à son serveur de commande et de contrôle.

Body

1. Introduction

Dès leur installation, les logiciels malveillants, ou malwaresanalysent et catégorisent le client nouvellement infecté. Cela permet, une fois ces informations transmises au serveur de commande et de contrôle, ou CnC server,d'opérer l'attaque prévue de manière plus ciblée. En effet, due à la grande disparité de systèmes ainsi que de versions, et il est dans en premier temps important de savoir à qui l'on se frotte.

Les premières phases sont très importantes pour le malware, car cela va déterminer le succès ou nom de l'infection. Cela signifie qu'une intégration propre et rapide dans le système est une priorité dans un premier temps. La collection d'informations sera aussi abordée à savoir comment réaliser un bon fingerprinting de la victime.

Emotet fait très bon usage de la cryptographie ainsi que des fonctions de hachage : en combinant le chiffrement symétrique et asymétrique pour l'ensemble de ses communications, il s'assure d'une confidentialité et d'une intégrité pour la transmission de données vers un serveur distant via un canal sécurisé.

La suite de l'article ne contiendra pas une analyse détaillée et en profondeur du malware, mais se concentrera sur le début de l'infection jusqu’au call home ou téléphone maison, c'est-à-dire la période entre son implémentation réussie dans le système jusqu'à la première communication du logiciel malveillant vers un serveur de commande et de contrôle.

2. Emotet

2.1 Présentation

Une nouvelle version d'Emotet est apparue de manière active dès le début de l'année. Distribué à grande échelle via notamment une vague de spam, le malwaresemble cibler les pays germanophones ainsi qu'une partie de l'Europe de l'Est.

Successeur dans la grande lignée des banking trojanetpassword stealer, son action principale est de voler des informations bancaires lors de la connexion du client à sa banque, ainsi que de dérober des mots de passe dans une moindre mesure.

L'échantillon utilisé pour mon analyse provient d'un faux e-mail de DHL contenant un lien censé rediriger l'utilisateur vers le suivi de sa livraison. À la place, l'utilisateur se voit proposer le téléchargement d'un fichier ZIP contenant une « facture » au format exécutable arborant l'extension exe, mais utilisant l'icône d'un fichier PDF.

dhl_small

Fig. 1 : Vecteur d'infection via un spam DHL.

La longueur de ce fichier exécutable est de soixante-dix caractères, et ce n'est pas juste pour faire joli. Ce procédé est même relativement malin, car la fin du nom ainsi que l'extension (exe) du fichier seront tronquées dans la plupart des modes d'affichage avec l'explorateur de fichiers, rendant plausible le fait de disposer d'une facture PDF si l'on se fie uniquement à l'icône du programme.

2.2 Packer & Loader

Emotet dispose de multiples mécanismes pour tenter de passer inaperçu, ce qui est aussi à double tranchant, car cela donne des pistes concernant la nature du programme. L'exécutable est obfusqué à l'aide d'un packer, ce qui rend son code illisible de manière statique.

De même que les strings ou la table des imports, rien n'est lisible en clair dans l'état initial et tout sera chargé et déobfusqué de manière dynamique dans la mémoire. Bien que cela lui permette de passer les tests de signature de la plupart des antivirus, cela le rend aussi suspect par la même occasion.

Au démarrage du malware, le packer charge dans un premier temps les librairies (dll) dont il a besoin et copie son exécutable depuis le répertoire ou il s'est exécuté à destination de %LocalAppData%. Cela va, en addition d'une clé de registre, garantir la persistance du malware après le redémarrage de la machine infectée.

L'ajout dans le registre est inscrit dans la ruche, ou hiveHKEY_CURRENT_USER, en y ajoutant une valeur contenant le nom de l'exécutable et son emplacement sur le disque dans la clé :

Software\Microsoft\Windows\CurrentVersion\Run

Après avoir assuré sa pérennité, le packer cherche à savoir s'il s'exécute au sein d'une machine virtuelle VirtualBox ou VMWare, si tel est le cas, le programme se termine. Ce mécanisme essaie d'éviter au malware d'être étudié ou son exécution dans un environnement d'analyse automatisé reposant sur des machines virtuelles.

Si l'environnement répond à ses attentes, la dernière étape consiste en l'exécution d'un nouveau processus avec comme état de création CREATE_SUSPENDED. Cet état du cycle de vie d'un processus permet de mettre en pause le thread principal du nouveau processus lors de sa création jusqu'à ce que la combinaison de méthodes SetThreadContext et ResumeThread soit appelée.

child_process

Fig. 2 : Création d'un processus enfant dans un état suspendu.

Cette technique permet d'injecter du code dans le processus nouvellement créé, avec la combinaison de VirtualAlloc et de WriteProcessMemory. Cela va donc démarrer une nouvelle application sans laisser de trace sur le disque.

Dès la reprise de l'exécution du nouveau processus qui contient maintenant du code décompressé, le processus actuel se termine sur un faux message d'erreur nous indiquant qu'Adobe Reader n'a malheureusement pas pu ouvrir notre facture au format PDF ;)

fake_pdf

Fig. 3 : Faux message d'erreur affiché par le malware.

2.3 Injection

La fonctionnalité de ce nouvel exécutable maintenant actif en mémoire va principalement être d'injecter du code dans le processus explorer.exe. L'injection du cœur du malware Emotet dans un processus système permet une très bonne dissimulation ainsi qu'une profonde intégration. En effet, plus aucun processus lié au fichier d'origine n'est actif, et arrêter ce processus résultera en la fermeture de toutes les fenêtres de l'explorateur de fichiers.

Pour réaliser cette opération, Emotet va lister l'ensemble des processus en activité sur la machine et en calculer leur hash via une cuisine maison. Si cette valeur est égale à 0xB316A779, le processus désiré a été trouvé ainsi que son PID, valeur nécessaire pour réussir l'injection.

open_process

Fig. 4 : Gain d'accès en lecture, écriture et exécution du processus explorer.exe.

L'accès à explorer.exe se fait avec la valeur 0x438 comme demande de droit d'accès. Ce nombre est une addition des flags ci-dessous, et permet entre autres l'accès en lecture et écriture de l'exécutable rendant possibles l'injection et l'exécution de code dans ce dernier.

PROCESS_QUERY_INFORMATION(0x400) Retrieve process token, exit code, priority, ...

PROCESS_VM_OPERATION(0x008)Perform an operation on the address space of a process

PROCESS_VM_READ(0x010) Read memory in a process using ReadProcessMemory

PROCESS_VM_WRITE(0x020) Write to memory in a process using WriteProcessMemory

Dernière subtilité de cette injection, elle ne suit pas le schéma classiqueà savoir OpenProcessWriteProcessMemeoryCreateRemoteThread, mais modifie le code de l'API ZwClose pour démarrer le code injecté à la fermeture du handle.

Cette technique permet de ne pas avoir à démarrer de remote thread et de compliquer encore un peu plus l'étude de son injection. De ce fait il faut redoubler de prudence lors de l'analyse, car l'on ne s'attend pas au premier abord à ce que du code soit exécuté lors de la fermeture d'un handle.

2.4 Payload

Après avoir passé les obstacles de l'obfuscation, des nouveaux processus ainsi que de l'injection, nous voici maintenant prêts à analyser le coeur du malware. En effet, la partie de code injectée dans explorer.exe contient les fonctionnalités d'Emotet, les étapes précédentes ne servant qu'à la dissimulation et le chargement en mémoire du programme.

Au démarrage du code injecté, Emotet charge deux librairies additionnelles, wininet.dll pour la création de connexions réseau et de transferts de fichiers, et crypt32.dll pour la gestion des certificats et de la cryptographie.

2.4.1 Récupération d'informations

Pour identifier le client infecté, Emotet va collecter toute une série d'informations à propos du système et de l'utilisateur. Cela lui servira par la suite à opérer des attaques suivant la langue ou la position géographique de l'utilisateur. Il va récupérer :

- Le numéro de série du volume logique sur lequel le système est installé. Peut être trouvé via la commande vol sous Windows :

C:\Users\Jack>vol C:

 Volume in drive C has no label.

 Volume Serial Number is 4D5A-5045

- Le SID de l'utilisateur, ce qui identifiera l'utilisateur, les groupes dont il fait partie ainsi que ses privilèges. Un hash sera dérivé de cette valeur : 26D64F4E.

- Le nom de l'ordinateur, en remplaçant tous les caractères non compris dans la classe [a-zA-Z0-9] par un X, et en transformant la chaîne en majuscule. Cela lui évite les problèmes d'accents, tirets, caractères spéciaux et autres : tyrell-pc transformé en TYRELLXPC.

- Le pays configuré dans le système au format court de deux lettres : US.

Les données concernant le disque et le SID seront encore obfusquées par deux opérations XOR consécutives provenant de nombres codés en dur dans le malware.

(4D5A5045 XOR 9C53E54D) XOR F6F65777 = 27FFE27F (DISK)

(26D64F4E XOR 875E6F4E) XOR 1CBD4547 = BD356547 (SID)

Toutes ces données seront ensuite mises ensemble dans une chaîne de caractères au format %s_%s_%x%x. Les deux premières sous chaînes %s contenant le nom de l'ordinateur et le pays seront séparés du reste par un underscore.

Les données restantes obfusquées du numéro de série du disque ainsi que de l'indicateur de sécurité seront ajoutées en fin de chaîne au format hexadécimal %x.

Correctement formaté, en résultera finalement une chaîne du type :

-TYRELLXPC_US_27FFE27FBD356547

Réinterprété côté CnC server, ces informations pourtant courtes ont malgré tout une importance capitale pour la suite des fonctionnalités du malware.

2.4.2 Cryptographie

Pour garantir la confidentialité et l'intégrité de ses communications, Emotet combine intelligemment la cryptographie symétrique, asymétrique ainsi que le hachage des données. La transmission des données entre le malware et son CnC server repose sur une utilisation mixte de la cryptographie.

Les informations devant être envoyées seront chiffrées de manière symétrique par une clé aléatoire RC4, et cette clé nouvellement générée sera elle aussi chiffrée à son tour de manière asymétrique avec une clé publique RSA contenue dans le malware.

Le serveur destinataire de ces informations pourra, à l'aide de sa clé privée correspondante, déchiffrer la clé de session et l'utiliser pour pouvoir lire les informations reçues. Cette technique rend très difficile le déchiffrement des requêtes réseau de manière automatisée, car une clé RC4 est générée de manière aléatoire avant chaque envoi de données.

La clé publique RSA de 1024 bits contenue dans le malware peut être extraite de la mémoire au moment de son importation par Emotet. Il est ensuite possible de la manipuler avec openssl. Cela permet par exemple outre de l'afficher, de la convertir, de l'exporter, ou encore de l'utiliser dans des scripts prenant en charge cette librairie.

➜ openssl rsa -pubin -inform DER -in pub.key -text

Public-Key: (1024 bit)

Modulus:

    00:df:c3:55:38:1e:61:2e:32:c6:6b:7b:b5:6b:8a:

    32:18:36:4f:ea:c9:d6:8f:33:78:ce:32:77:e5:eb:

    e2:c3:08:14:a8:c1:a8:47:7b:4a:e5:a9:f4:b5:10:

    4c:6c:25:cb:d3:72:29:38:da:17:3a:69:26:17:b7:

    ca:a2:a2:11:3b:47:00:13:53:fb:07:d4:d3:73:a0:

    50:08:b4:5d:d1:ea:90:b7:a5:9f:6f:f0:64:8e:fe:

    20:1e:0e:c8:0e:9e:97:64:57:b9:e8:fa:d9:16:5b:

    58:99:16:5b:a1:94:98:a6:b8:f6:3e:35:09:a3:c3:

    96:86:8c:53:97:fa:70:90:2f

Exponent: 65537 (0x10001)

writing RSA key

-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfw1U4HmEuMsZre7VrijIYNk/q

ydaPM3jOMnfl6+LDCBSowahHe0rlqfS1EExsJcvTcik42hc6aSYXt8qiohE7RwAT

U/sH1NNzoFAItF3R6pC3pZ9v8GSO/iAeDsgOnpdkV7no+tkWW1iZFluhlJimuPY+

NQmjw5aGjFOX+nCQLwIDAQAB

-----END PUBLIC KEY-----

Du côté de la clé de session symétrique RC4, elle est générée de manière aléatoire avec une longueur de 128 bits. Ces deux clés seront utilisées au moment de la création de la requête POST envoyée au CnC server. Cette requête possède une longueur de 202 Bytes et est composée des éléments suivants :

- La clé RC4 aléatoire chiffrée par le biais de la clé publique RSA.(128 Bytes)

- Le hashSHA1 des données utilisateur récupérées sur la machine infectée. (20 Bytes)

- Le chiffrement avec la clé symétrique RC4 des informations utilisateurs. (54 Bytes)

request_bg

Fig. 5 : Différentes composantes de la requête.

2.4.3 Envoi des données

Après avoir récupéré et chiffré les informations de l'utilisateur, Emotet essaie une première fois de les envoyer vers son serveur de commande et de contrôle. Si aucune réponse n'est reçue, l'opération va se réitérer chaque minute, et ce, jusqu'à ce qu'une réponse positive revienne en retour.

Si tel est le cas, la méthode libère les librairies wininet.dll et crypt32.dll dont la présence en mémoire n'est plus requise. La figure 6 illustre les différents appels, le temps d'attente, ainsi que la libération des librairies de manière limpide.

main_loop

Fig. 6 : Récupération et envoi des informations vers le CnC server.

Lors de chaque essai, une nouvelle clé RC4 est générée de façon aléatoire, et douze adresses IP différentes sont contactées. Les informations sont envoyées via une requête POST avec http://%u.%u.%u.%u:%u/%d/%d.php comme format de destination sur le port 8080. L'envoi des données se fait sur une adresse PHP qui arbore comme nom de répertoire et de page, une valeur numérique %d dérivée du SID pouvant être négative, au contraire des composantes %u de l'adresse IP qui elles, sont non signées.

Voici un exemple des adresses contactées :

- http://64.207.148.216:8080/912327956/1921447554.php

- http://203.151.94.120:8080/912327956/1921447554.php

- http://31.192.211.140:8080/912327956/1921447554.php

-...

Comme user-agent, le malware dispose de :

- Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0).

Les adresses IP, le port, ainsi que le user-agent sont écrits en dur dans le malware obfusqué par un mécanisme de XOR. Il est « regrettable » de ne pas avoir fait recours à un algorithme de génération de domaine (DGA), ou à une dérivation temporelle des adresses, car le blocage de ces dernières se fait souvent très rapidement, rendant par la suite le malware inopérant. À ce stade, Emotet attend une réponse de la part de son CnC server pour continuer son infection.

Conclusion

L'étude d'Emotet a permis de mettre en lumière la réalisation du fingerprinting d'un utilisateur avec un cas pratique. Le rapatriement des données ainsi extraites combiné à l'emploi d'un canal sécurisé montre les capacités évoluées que peut posséder un tel malware.

La compréhension et le déjouement de l'obfuscation ont été une composante non négligeable pour la compréhension du malware. En effet, il fait usage de packer, crée de nouveaux processus, threads, et s'injecte au cœur du système. De plus, il accroît sa discrétion en ne faisant qu'un usage limité du disque, le reste prenant place en mémoire.

L'implémentation d'une cryptographie mixte alliant RSA et RC4 rend très difficile un déchiffrement systématique des conversations comme cela est possible dans d'autres cas dès lors que la clé de session entre les deux parties a été trouvée.

Le fait de ne disposer que de douze adresses pour la communication entre lui et son CnC server laisse penser que de multiples versions existent avec dans chacune d'elles des IP différentes. Diffusée à large échelle notamment via e-mail, l'attaque a de grandes chances de réussir malgré le blocage rapide et systématique des adresses.


Sur le même sujet

Zero Trust : anti-SOC, tu perds ton sang froid ?

Magazine
Marque
MISC
Numéro
110
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Les security operation centers, au sens large, sont aujourd’hui au cœur des systèmes d’information des entreprises. En revanche, beaucoup adoptent encore et toujours une approche traditionnelle de la sécurité du SI. Comment le paradigme Zero Trust va-t-il impacter nos supervisions ? Repensons un peu à toutes ces années de service pour voir ce que Zero Trust peut apporter au SOC, et réciproquement comment ces derniers peuvent accompagner la transition.

Anti-leurrage et anti-brouillage de GPS par réseau d’antennes

Magazine
Marque
MISC
Numéro
110
|
Mois de parution
juillet 2020
|
Domaines
Résumé

La localisation, la navigation et le transfert de temps (PNT) par constellation de satellites, et notamment le Système de Positionnement Global (GPS), sont devenus omniprésents dans notre quotidien. Le brouillage – volontaire ou non – et le leurrage de ces signaux très faibles sont désormais accessibles à tout le monde, mais les subir n’est pas une fatalité : nous allons aborder les méthodes pour se protéger de tels désagréments afin de retrouver les services d’origine en annulant ces interférants par une approche multi-antennes.

Découverte et scan de réseaux

Magazine
Marque
MISC
HS n°
Numéro
21
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Ce réseau est trop vaste à surveiller, l’administrateur ne s’y retrouvait plus entre toutes ces plages d’adresses, ces serveurs, imprimantes et autres webcams éparpillés dans tous les coins des locaux ; sans parler du Cloud situé on ne sait où. Et s’il avait quelques outils et méthodes sous la main pour avoir une cartographie à peu près complète de son réseau et des différents services disponibles ? Essayons de l’aider dans sa tâche en complétant sa panoplie.

Exploitations de collisions MD5

Magazine
Marque
MISC
HS n°
Numéro
21
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Vous trouvez un système indexant des fichiers via MD5. À quel point est-il vulnérable ? Depuis l'attaque [1] en 2008 qui a généré un faux certificat SSL, la fonction d'empreinte MD5 est considérée comme inutilisable par les experts, car vulnérable en pratique. Cela dit, elle est encore souvent utilisée, et parfois à bon escient. Par exemple en juillet 2019, on apprenait que le système de censure de WeChat [2] était basé sur une liste noire indexée avec MD5. Cet article a pour but de clarifier les attaques par collisions contre MD5.

Introduction au dossier : Zero Trust : avenir de la sécurité ou chimère marketing ?

Magazine
Marque
MISC
Numéro
110
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Derrière ce titre modéré, il aurait été trop facile d’être provocateur, se cache une référence que nos lecteurs historiques auront relevée. Il y a plus de dix ans maintenant, au SSTIC 2008, Cédric Blancher donnait une conférence dont le titre était : « Dépérimétrisation : Futur de la sécurité ou pis aller passager ? ». Les constats de l’époque, qui ne doivent pas être loin pour de nombreuses entreprises encore aujourd’hui, sont que les paradigmes de sécurité des réseaux informatiques ont des limites importantes : difficulté à mettre en place du contrôle d’accès ainsi qu’une segmentation et un filtrage réseau efficace.

Sécurité de l'implémentation standard de VXLAN

Magazine
Marque
MISC
Numéro
110
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Cet article de sensibilisation met en avant une faiblesse de la RFC 7348 permettant de réaliser une attaque du type « homme du milieu ». Il décrit d'abord le fonctionnement de VXLAN, explique ensuite le mécanisme exploité et les dangers associés, puis propose des recommandations ainsi qu'une alternative.

Par le même auteur

Pleased to meet you, my name is Petya !

Magazine
Marque
MISC
Numéro
86
|
Mois de parution
juillet 2016
|
Domaines
Résumé
Les ransomwares : ces logiciels malveillants prenant en otage vos données personnelles contre remise d'une rançon nous rendent immédiatement la vie pénible si l'on a le malheur de se faire avoir. Très actif depuis le début de l'année, le cas étudié ci-après a la particularité de se loger juste après le BIOS, empêchant alors même le système de démarrer après avoir chiffré le disque.

Exécution, injection, infection, identification et… téléphone maison !

Magazine
Marque
MISC
Numéro
82
|
Mois de parution
novembre 2015
|
Domaines
Résumé
Que se passe-t-il lors de l'exécution d'un malware ? Cet article a pour objectif de parler des premières phases de l'infection d'une machine, en prenant Emotet comme exemple pratique, depuis l'arrivée du logiciel malveillant sur la machine cible, en passant par son intégration dans le système, jusqu’à sa première connexion à son serveur de commande et de contrôle.