AbaddonPOS : Une nouvelle menace sur les points de vente liée à Vawtrak

1
107

Le logiciel malveillant Point of sale (PoS) a été récemment impliqué dans quelques-unes des plus grandes violations de données qui ont frappé les détaillants, les restaurants, les services hôteliers et les organisations d’un panel d’industries, et qui ont eu fréquemment pour cible les consommateurs américains.

Autrefois considérées trop difficiles à réaliser pour être pratiques pour les cybercriminels, les violations des commerces de détail de fin 2013 ont démontré que ces attaques sont à la fois réalistes et très profitables pour les cybercriminels, et le logiciel malveillant Point of sale (POS) n’a depuis cessé d’évoluer et de grandir tant en termes de variété et que de sophistication.

Les chercheurs de menace au sein de Proofpoint ont récemment détecté un nouvel ajout au paysage du logiciel malveillant PoS. Nommé AbaddonPOS par les chercheurs de Proofpoint, cet échantillon a d’abord été découvert lors de son téléchargement au cours d’un processus d’infection par Vawtrak. Cette utilisation des données utiles supplémentaires pour renforcer les capacités d’attaque offre un autre exemple des efforts déployés par les acteurs de la menace pour élargir leurs champs d’action cibles grâce à la distribution de multiples données utiles dans une campagne unique, dans le cas présent, en incluant les terminaux PoS potentiels. Le présent article analysera le logiciel malveillant AbaddonPOS, envisagera les vecteurs d’infection observés et exposera les informations du programme de téléchargement utilisées pour appeler ce nouveau logiciel malveillant PoS. Nous allons également vous fournir des preuves pour démontrer que le logiciel malveillant du programme de téléchargement et le logiciel malveillant PoS sont étroitement liés, peut-être même écrits par la ou les mêmes personnes.

Vecteurs d’infection connus

Le 8 octobre, les chercheurs de Proofpoint ont observé Vawtrak (ID de projet 5) téléchargeant TinyLoader, un programme de téléchargement qui utilise un protocole personnalisé pour le téléchargement de fichiers de données utiles exécutable à partir de son serveur de commande et contrôle (C2). TinyLoader a ensuite été utilisé pour télécharger un autre programme de téléchargement sous la forme d’un shellcode, qui a ensuite téléchargé AbaddonPOS. Bien que ce vecteur d’infection fût initialement spécifique à l’ID de projet 5 de Vawtrak, nous avons également observé depuis qu’il touchait les ID de projet 6, 9, 10, 12, et 13. Les ID de projet sont plus faciles à observer avec le trafic sur le C2 de Vawtrak, étant donné qu’ils sont stockés dans la valeur du fichier témoin PHPSESSID. L’utilisation de la valeur du fichier témoin, que nous avons fourni en exemple dans notre recherche sur Vawtrak, nous permet de le voir dans un état décodé (fig. 1). Les octets 4-7 contiennent l’ID de projet dans l’ordre petit boutiste (little-endian) des octets. 

fig1

Figure 1 : Fichier témoin de Vawtrak décodé affichant l’ID de projet/ de campagne

En plus d’observer AbaddonPOS étant donné qu’il a été livré par une infection d’Angler EK à BedepàVawtrak (Cyphort) et d’Angler EKàBedep (en contournant Vawtrak), les chercheurs de Proofpoint ont également observé ce comportement d’infection à partir de documents Microsoft® utilisés comme armes qui téléchargent Pony à Vawtrak (fig. 2).

fig2

Figure 2 : Chaîne d’infection d’AbaddonPOS

TinyLoader

L’unique objectif de TinyLoader dans cette chaîne d’infection est d’extraire des instructions exécutables à partir de C2, ce qui permet aux attaquants d’exécuter leur propre shellcode personnalisé sur les machines infectées en plus de télécharger et exécuter d’autres données utiles de logiciel malveillant. Fidèle à son nom, TinyLoader respecte généralement une taille de 2 à 5 Ko. L’une des caractéristiques remarquables de TinyLoader est qu’avant de communiquer avec son unique adresse IP sur C2 codée en dur, le logiciel malveillant commence par vérifier s’il s’exécute comme un processus x64 ou x86 en utilisant l’API Windows IsWow64Processus (fig 3.). TinyLoader sélectionne une valeur basée sur le résultat de l’appel de cet API et le résultat est ensuite utilisé pour informer le C2 du code exécutable qu’il doit télécharger sur le client infecté.

fig3

Figure 3 : Appel d’API TinyLoader pour vérification de x86 ou x64

Comme illustré dans la figure 3 ci-dessus, 0x84 est utilisé avec les processus x86 alors que le 0xBA est utilisé avec les processus x64; toutefois, les valeurs utilisées pour chaque architecture varient en fonction de la variante. Une fois l’architecture correcte sélectionnée, TinyLoader construit un paquet à envoyer à C2 pour lancer le processus de téléchargement du fichier de données utiles. Avant de récupérer le programme de téléchargement qui télécharge AbaddonPOS, nous avons observé que TinyLoader extrait d’abord une copie de lui-même (cette étape peut varier légèrement), qui est ensuite utilisée comme une méthode de persistance par l’ajout d’une clé de registre HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run (fig. 4). TinyLoader peut également télécharger une version DLL de lui-même, auquel cas la clé de registre observée est similaire à la clé suivante : regsvr32.exe /s “C:\PROGRA~2\[a-zA-Z0-9]+\.dll”

fig4

Figure 4 : Exemple de clé de registre de persistance de TinyLoader

Une fois que les données utiles persistantes sont écrites sur le disque, un autre fichier de données utiles est téléchargé par TinyLoader sous la forme d’un shellcode (fig. 5), dont le but est d’élaborer manuellement une requête HTTP qui sert ensuite à télécharger un fichier de données utiles d’AbaddonPOS (fig. 6). 

fig5

Figure 5 : Protocole binaire de TinyLoader récupérant un shellcode

fig6

Figure 6 : Requête HTTP récupérant une variante d’AbaddonPOS élaborée par le shellcode

AbaddonPOS

AbaddonPOS est un autre ajout à la catégorie des logiciels malveillant de PoS, qui, au cours des années, a attisé l’attention des auteurs de logiciels malveillants. Semblable à TinyLoader, AbaddonPOS est un paquet relativement petit, avec la plupart des échantillons d’une taille de 5 Ko. Bien que la fonctionnalité de base de ce nouvel ajout soit assez simple, elle contient plusieurs fonctions qui méritent une analyse et une discussion plus approfondie : anti-analyse, brouillage du code, persistance, localisation des données de carte de crédit et protocole personnalisé pour exfiltrer des données.

Anti-analyse et brouillage

AbaddonPOS met en place plusieurs anti-analyses de base et brouillages techniques pour entraver les techniques d’analyse manuelles et automatisées. Par exemple, AbaddonPOS utilise une instruction « CALL » afin de pousser un paramètre de fonction sur la pile plutôt que de simplement utiliser, par exemple, l’instruction plus courante « PUSH ». Une instruction « CALL » pousse l’adresse suivante sur la pile ; cette adresse est généralement utilisée comme adresse de retour après une instruction « RETN ». Dans ce cas, l’instruction « CALL » est utilisée pour pousser l’adresse contenant une chaîne de caractères (fig. 7) : plus précisément, l’adresse contenant la chaîne « devil_host » est poussée sur la pile ; cette adresse est ensuite utilisée comme mutex.

fig7

Figure 7 : Abaddon POS utilisant l’instruction « CALL » pour entraver l’analyse statique

La grande partie du code d’AbaddonPOS n’est pas brouillée ou en paquet, à l’exception du code utilisé pour coder et transmettre les données de carte de crédit volées. Ce shellcode est codé à l’aide d’une clé XOR à 4 octets ; cependant la clé n’est pas codée en dur. Au lieu de cela, l’utilisation des 4 premiers octets du shellcode codé permet au logiciel malveillant d’effectuer une itération sur toutes les clés XOR à 4 octets jusqu’à ce que la clé correcte soit trouvée et de confronter le résultat obtenu aux instructions codées en dur : 0x5589E58B (fig. 8). Lorsque le résultat XOR correspond aux instructions codées en dur, la clé correcte est trouvée et le logiciel malveillant continue à décoder le shellcode au moyen de cette clé.

fig8

Figure 8 : Shellcode d’AbaddonPOS décodant une routine

Localiser les données de carte de crédit

AbaddonPOS recherche les cartes de crédit par la lecture de la mémoire de tous les processus, à l’exception de la sienne par la mise de son propre PID sur liste noire grâce à l’API GetCurrentProcessId. Pour trouver les données de carte de crédit, AbaddonPOS suit à peu près ce processus :

  1. Recherche de 3, 4, 5 ou 6 caractères de chaîne, qui indiquent le premier numéro d’une carte de crédit potentielle
  2. Longueur du numéro de carte de crédit >= 13 et <= 19
  3. Délimiteur de piste valide (piste 1: “^”, piste 2: “=”, or “D”)
  4. Longueur max. piste 1 : 120, piste 2 max length:  60
  5. Vérifications supplémentaires basées sur le fait de savoir si les délimiteurs de la piste 1 ou de la piste 2 ont été trouvés
  6. Vérification du numéro de carte de crédit avec l’algorithme de Luhn

L’échantillon d’AbaddonPOS avec l’algorithme de hachage md5: F63e0a7CA8349e02342c502157EC485D a été analysé pour le processus ci-dessus. La version légèrement plus ancienne d’AbaddonPOS peut contenir des fonctionnalités légèrement modifiées, notamment ne permettant pas “D” comme délimiteur de piste 2.

Exfiltrer des données de carte de crédit volées

Bien que plusieurs des différentes familles de logiciels malveillants PoS s’appuient sur l’HTTP pour exfiltrer des données, AbaddonPOS, lui, utilise un protocole binaire personnalisé. La communication et l’exfiltration de données de carte de crédit sont effectuées par le shellcode décodé dont nous avons parlé ci-dessus. Une seule adresse IP codée en dur est utilisée comme adresse de C2 tout comme la routine de codage utilisée pour brouiller les données exfiltrées. La figure 9 illustre un exemple du trafic réseau généré lors d’une tentative d’exfiltration de données d’une seule carte de crédit. À la suite de cette analyse, Proofpoint a créé et publié, le 30 octobre, des signatures ET Pro IDPS (ID 2814677-2814680) pour détecter les tentatives d’exfiltration.

fig9

Figure 9 : Exfiltration de données de carte de crédit d’AbaddonPOS vers C2

Les quatre premiers octets du trafic réseau représentent la longueur des données codées, tandis que les quatre octets suivants représentent la valeur de traitement de processus renvoyée par OpenProcess. Les octets suivants représentent les données exfiltrées codées, qui, dans un état décodé, se présentent sous le format suivant : [données de carte de crédit] ***[nom de processus].

Pour coder les données, le logiciel malveillant applique d’abord la fonction XOR aux quatre octets du texte clair avec le traitement de processus, suivi par une deuxième application de la fonction XOR avec une clé de 4 octets codés en dur. La figure 10 représente, dans son état en texte clair, le trafic réseau de l’exfiltration repris sous la figure 9. 

fig10

Figure 10 : Données de carte de crédit exfiltrées en texte clair et nom de processus

Le script suivant, appelé Python, peut être utilisé pour décoder le trafic réseau, à condition qu’il ait été codé en utilisant la technique décrite ci-dessus : 

import sys,struct,hexdump

filename = sys.argv[1]

with open(filename, ‘rb’) as f:

        c2_traffic = f.read()

encoded_size = struct.unpack(‘<I’,c2_traffic[:4])[0]

openprocess_handle = c2_traffic[4:8]

encoded = c2_traffic[8:]

key = [0x22,0x11,0xAA,0xFF]

decoded = ”

for i in range(encoded_size):

        decoded +=

chr((ord(encoded[i])^key[i%4])^ord(openprocess_handle[i%4]))

print ‘Decoded AbaddonPOS exfiltration network traffic:’

hexdump.hexdump(decoded)

Variantes d’AbaddonPOS

Parmi les échantillons que les chercheurs de Proofpoint ont découverts et analysés jusqu’à présent, il semble que très peu d’entre eux aient eu une quelconque fonctionnalité ajoutée ou supprimée. Alors que « devil_host » est le principal mutex utilisé par ce logiciel malveillant, nous avons également trouvé un échantillon qui utilise « devil_kor » (md5, a55843235cd8e36c7e254c5c05662a5b) et un autre qui utilise « DeviL_Task » (md5, ac03e0e9f70136adede78872e45f6182). Nous avons également observé une version légèrement modifiée d’AbaddonPOS (voir Contrôleurs d’entrée-sortie) dans laquelle presque toutes les fonctionnalités ont été transférées vers le shellcode codé. Dans ces exemples actualisés, le mutex « MD_REX » a été utilisé et l’algorithme de recherche de carte de crédit a également été modifié par l’ajout de « D » comme délimiteur de piste 2 valide.

Relier les points

TinyLoader est en cours de développement depuis maintenant au moins un an, avec une première observation signalée le 16 janvier 2015. Au cours de la dernière année, TinyLoader a subi plusieurs changements quant à son développement, qui comprennent :

  • le passage d’un protocole UDP vers un TCP ;
  • le retrait de rapport de processus et d’UUID ;
  • l’ajout de différentes anti-analyses ;
  • l’ajout de brouillage et codage.

Avec l’apparition d’AbaddonPOS, il est vite ressorti qu’AbaddonPOS et TinyLoader sont étroitement liés et pas simplement parce que TinyLoader a été utilisé comme le programme de téléchargement. Le code d’AbaddonPOS et celui de TinyLoader partagent quelques similitudes importantes, notamment :

  • l’anti-analyse (« CALL » pour pousser des chaînes de caractères sur la pile) ;
  • le brouillage (le shellcode codé utilise la même routine codée exacte).

Les similitudes avec des extraits de code y compris un calendrier en fonction des données de Proofpoint sont disponibles ci-dessous.

fig11

Figure 11 : Comparaison d’historique de code pour TinyLoader et AbaddonPOS

Conclusion

L’exploitation d’une seule campagne pour distribuer plusieurs données utiles est désormais une pratique bien établie des acteurs de menace qui veulent étendre leurs champs d’action cibles. Alors qu’il est moins commun d’utiliser cette technique pour répandre les programmes malveillants de point de vente, l’approche des achats pendant la période des fêtes aux États-Unis donne aux cybercriminels toutes les bonnes raisons de maximiser le retour sur leurs campagnes en distribuant un nouveau logiciel malveillant de PoS puissant qui peut capturer les transactions par carte de débit et de crédit d’acheteurs en cette période propice aux achats de fête.

 

Tribune de Charles Rami, Responsable Technique chez Proofpoint.

1 COMMENTAIRE

  1. Le malware abaddonpos est une menace de securite de plus dans le monde des virus.Il faut dire qu’il est assez sophistiqué.Dire qu’il est sorti pendant la période des fêtes.Il faut à tout prix s’en protéger.

Les commentaires sont fermés.