SkullLocker est un ransomware Windows dont les premières traces remontent au 28 février 2023. Il s’agit d’une variante du ransomware Chaos découvert durant l’été 2021. SkullLocker est diffusé par l’intermédiaire de mails de phishing et de sites de torrent. Le langage des instructions de rançon semble indiquer que le malware vise la Pologne.

Le sample du ransomware SkullLocker

Voici les informations d’identification de l'échantillon étudié.

Fichier
$PE
Langage de compilation
$.NET
Architecture
$32 bits
Compilation
$27/02/2023 21:09:41 UTC
Obfuscation
$Aucune
md5
$62e53bc5aa5f2a70a54e328bff51505f
sha1
$e7deceee97a09d539d81eb91f988ece5e2a2ff51
sha256
$bb5ca9d8de51734dbd14dc081c7c892d819cd14fafd7ccd62849d70f9e679369
ssdeep
$6144:+B4mr9NzqHW7V5V9w/UIRZizI1aqebq/lsyp:+B40qHW7nU/pZmiXqy

Ransomware SkullLocker : analyse technique

Le sample est un exécutable PE écrit en .NET mais sans aucune couche d'obfuscation. Le sample étant de petite taille, il est possible de mener une analyse complète des fonctionnalités du malware.

Le sample présente une fonction Main qui décrit d'un point de vue macro toutes les actions du malware.

Voici la liste des actions effectuées par le ransomware :

  • vérification que le malware n'est pas déjà en exécution ;
  • élévation de privilèges et déplacement de l'exécution dans %AppData% ;
  • mise en place de la persistance ;
  • chiffrement des fichiers ;
  • désactivation des mécanismes de récupération des données ;
  • propagation ;
  • mise en place des instructions de rançon ;
  • mise en place d'un mécanisme de détournement de transactions bitcoin.

Nous allons rentrer dans le détail de chacune de ces actions dans les paragraphes suivants.

Vérification que le malware n'est pas déjà en exécution

Le malware vérifie qu’il n’est pas déjà lancé sur le poste. Pour cela, il liste les noms des exécutables des autres processus du système et s’arrête s’il est déjà présent.

Élévation de privilèges et déplacement de l'exécution dans %AppData%

Le malware effectue une élévation de privilèges de manière très basique : il copie son propre exécutable à l'emplacement %AppData%\svchost.exe puis demande son lancement avec les droits administrateur.

Selon la configuration du système, un prompt UAC va apparaitre. Il est possible pour un utilisateur averti de remarquer l’attaque car le svchost.exe de Microsoft est un exécutable signé, ce qui n’est pas le cas de celui déclenché par le malware. Si l'utilisateur refuse la demande, le malware réitère la requête en boucle jusqu'à ce que l'utilisateur accepte.

Une fois le process privilégié lancé, le processus originel s'arrête. Toutes les autres étapes seront réalisées par le processus privilégié.

Si l’élévation de privilèges échoue, le malware effectue tout de même le déplacement de l’exécutable vers %AppData%.

Mise en place de la persistance

Pour assurer une persistance sur le système, le malware s'inscrit dans le dossier « Startup » en écrivant un fichier à l'emplacement %AppData%\Microsoft\Windows\Start Menu\Programs\Startup\svchost.url. En renseignant son exécutable dans le fichier, le malware s'assure d'être démarré automatiquement par Windows à chaque ouverture de session de cet utilisateur. MITRE catégorise cette technique sous l’identifiant T1547.001.

Voici le contenu du fichier svchost.url :

[InternetShortcut]
URL=file:///C:\Users\admin\AppData\Roaming\svchost.exe
IconIndex=0
IconFile=C:/Users/admin/AppData/Roaming/svchost.exe

L’image ci-dessous montre le code du malware réalisant cette action :

Chiffrement des fichiers

Le malware liste les dossiers dans lesquels il va chiffrer récursivement les fichiers. On y retrouve :

  • les disques montés autres que C: ;
  • ces dossiers du profil de l'utilisateur courant ;
    • Desktop ;
    • Links ;
    • Contacts ;
    • Documents ;
    • Downloads ;
    • Pictures ;
    • Music ;
    • OneDrive ;
    • Saved Games ;
    • Favorites ;
    • Searches ;
    • Videos ;
  • le dossier %AppData% ;
  • ces dossiers communs à tous les utilisateurs (par défaut, présents dans C:\Users\Public) :
    • Documents ;
    • Pictures ;
    • Music ;
    • Videos ;
    • Desktop.

Voici le code listant les différents dossiers à chiffrer :

Chiffrement d’un dossier

Dans chaque dossier parcouru, le malware vérifie que les fichiers soient dans la liste de ceux ciblés pour le chiffrement :

Pour cela, le malware se base sur l'extension. Si le fichier a une extension présente dans cette liste, il sera traité par le malware :

.txt .jar .dat .contact .settings .doc .docx .xls .xlsx .ppt .pptx .odt .jpg .mka .mhtml .oqy .png .csv .py .sql .mdb .php .asp .aspx .html .htm .xml .psd .pdf .xla .cub .dae .indd .cs .mp3 .mp4 .dwg .zip .rar .mov .rtf .bmp .mkv .avi .apk .lnk .dib .dic .dif .divx .iso .7zip .ace .arj .bz2 .cab .gzip .lzh .tar .jpeg .xz .mpeg .torrent .mpg .core .pdb .ico .pas .db .wmv .swf .cer .bak .backup .accdb .bay .p7c .exif .vss .raw .m4a .wma .flv .sie .sum .ibank .wallet .css .js .rb .crt .xlsm .xlsb .7z .cpp .java .jpe .ini .blob .wps .docm .wav .3gp .webm .m4v .amv .m4p .svg .ods .bk .vdi .vmdk .onepkg .accde .jsp .json .gif .log .gz .config .vb .m1v .sln .pst .obj .xlam .djvu .inc .cvs .dbf .tbi .wpd .dot .dotx .xltx .pptm .potx .potm .pot .xlw .xps .xsd .xsf .xsl .kmz .accdr .stm .accdt .ppam .pps .ppsm .1cd .3ds .3fr .3g2 .accda .accdc .accdw .adp .ai .ai3 .ai4 .ai5 .ai6 .ai7 .ai8 .arw .ascx .asm .asmx .avs .bin .cfm .dbx .dcm .dcr .pict .rgbe .dwt .f4v .exr .kwm .max .mda .mde .mdf .mdw .mht .mpv .msg .myi .nef .odc .geo .swift .odm .odp .oft .orf .pfx .p12 .pl .pls .safe .tab .vbs .xlk .xlm .xlt .xltm .svgz .slk .tar.gz .dmg .ps .psb .tif .rss .key .vob .epsp .dc3 .iff .onepkg .onetoc2 .opt .p7b .pam .r3d

Traitement des fichiers

Le malware effectue un traitement différent suivant la taille du fichier. Si le fichier fait moins de 2 Mo, il sera chiffré (cf prochaine partie). S'il est plus grand, il sera écrasé par des données aléatoires.

Important à noter : il est donc impossible de retrouver les fichiers d'origine faisant plus de 2 Mo, même en payant la rançon...

Chiffrement d’un fichier

Le chiffrement des fichiers s'effectue en AES, alors que la clé secrète est, elle, chiffrée en RSA. Plus précisément, voici la procédure appliquée pour le chiffrement :

Un mot de passe unique est généré par fichier. Il est constitué de 20 caractères tirés aléatoirement dans l’ensemble de caractères suivant : abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890*!=&?/. Ce mot de passe est ensuite utilisé pour dériver la clé de chiffrement AES avec la fonction PBKDF2 (Base sur HMAC et SHA1). Le mot de passe est tout d’abord chiffré via RSA en utilisant une clé publique de 1 024 bits, stockée dans les données du binaire.

Voici le code d’initialisation de la clé publique RSA :

Le contenu du fichier est chiffré via AES 256 en mode CBC, puis codé en base64. Dans le détail, le malware écrase les données du fichier en commençant par le mot de passe chiffré et encodé entre des balises <EncryptedKey>, avant de placer les données originelles du fichier chiffrées et encodées.

Voici par exemple le début d'un fichier une fois chiffré :

Du fait de l'encodage en base64 et de l'ajout du header, les fichiers vont prendre plus de place sur le disque qu'avant le chiffrement. Les fichiers prennent environ 33% d’espace en plus.

Les fichiers chiffrés sont renommés en leur ajoutant l'extension ".skull".

Voici une vue d'un dossier et du bureau après la procédure de chiffrement :

Désactivation des mécanismes de récupération des données

Le malware désactive des mécanismes de Windows permettant la récupération des fichiers qu’il a modifiés.

Action
Commandes utilisées
Suppression des Shadow Copies
$vssadmin delete shadows /all /quiet
Suppression des Shadow Copies
$wmic shadowcopy delete
Désactivation de la partition de récupération
$bcdedit /set {default} bootstatuspolicy ignoreallfailures
Désactivation de la partition de récupération
$bcdedit /set {default} recoveryenabled no
Suppression du catalogue de sauvegardes
$wbadmin delete catalog -quiet

Propagation

Le malware cherche également à se propager à travers les différents disques montés par le système. Il copie son exécutable sous le nom skull.exe à la racine de tous les disques n'étant pas C:.

Le malware cherche ainsi à se propager sur d'autres postes avec des capacités d’air gap (propagation vers un autre poste sans l’intermédiaire de connexions réseau) en copiant son exécutable sur les supports USB.

Mise en place des instructions de rançons

Le malware place un fichier texte d’instructions de rançon dans chaque dossier qu’il a parcouru et dans le dossier %AppData%. Il demande ensuite l'ouverture d’un de ces fichiers texte afin que les instructions soient affichées à l'utilisateur.

Ces instructions sont écrites en polonais.

Une fois traduites en français, les instructions sont les suivantes :

Bonjour,

Vos fichiers ont été chiffrés par le ransomware SkullLocker. Pour y accéder à nouveau, vous devez payer la rançon dans les 72 heures. Sinon, vos données seront définitivement perdues.
Pour plus d'informations sur la manière de payer la rançon et de récupérer vos fichiers, consultez le site web ci-dessous.
U6cQ2nV4KzL3H8jxSdGhTfMlR0N1wX7eJbO9mZyIaP5pgqWvEoBkYtAxDsFi.onion

Si vous avez des questions, vous pouvez nous contacter par courriel à l'adresse [email protected].

N'essayez pas de supprimer le ransomware ou de récupérer vos données à l'aide d'un logiciel antivirus. Vous risqueriez d'endommager définitivement vos fichiers.

N'oubliez pas que le temps est un facteur essentiel. Plus vous tardez, moins vous avez de chances de récupérer vos fichiers.

Salutations,
L'équipe du ransomware

Mise en place d'un mécanisme de détournement de transactions bitcoin

Le malware reste ensuite actif et tente de détourner des transactions bitcoin en se mettant en écoute des modifications du presse papier (mécanisme de copier/coller).

Le malware utilise une regex à chaque changement du contenu du presse papier pour vérifier la présence d'une adresse de wallet bitcoin. Si le ransomware trouve une adresse, il la remplace par une adresse fixe contenue dans le binaire. Les auteurs du malware semblent ainsi chercher à remplacer l'adresse destinatrice d'une transaction par l’adresse d’un wallet détenu par les cyber-criminels et récupérer les bitcoins envoyés.

Les deux adresses de wallets bitcoins utilisées par le sample sont les suivantes :

  • bc1qw0ll8p9m8uezhqhyd7z459ajrk722yn8c5j4fg
  • 17CqMQFeuB3NTzJ2X28tfRmWaPyPQgvoHV

Synthèse

SkullLocker est un ransomware rustique, n'effectuant aucune communication réseau pour contacter un serveur C2 et écrasant purement et simplement une bonne partie des fichiers de données lors de la procédure de chiffrement. Il n'y a aucune confiance à avoir vis-à-vis de la possible récupération des fichiers en payant la rançon. Le chiffrement des fichiers les moins volumineux ne semble être mis en place que pour "prouver" lors des négociations que les fichiers peuvent être récupérés.

Pour aller plus loin, les équipes d’un autre acteur de cybersécurité ont publié un article sur le malware Chaos en fournissant des vues du builder (l’outil permettant aux cyber-criminels de créer des exécutables du malware).

Le sample étudié durant notre analyse est une variante de Chaos dont seule la configuration change par rapport aux autres samples du malware. Les configurations possibles du malware permettent par exemple de changer :

  • l’extension des fichiers chiffrés ;
  • le nom de l’exécutable utilisé pour l’élévation de privilège ;
  • le texte des instructions de rançon ;
  • l’activation du chiffrement (sinon les fichiers de moins de 2 Mo sont aussi purement écrasés).

Ransomware SkullLocker et moyens de protection Stormshield

Breach Fighter

Le service de sandboxing Breach Fighter, disponible en option dans les firewalls Stormshield Network Security (sur le flux SMTP/HTTP/FTP) et également proposé en API, détecte et bloque le malware.

Indice de confiance de la protection proposée par Stormshield

Indice de confiance de l’absence de faux positif

Stormshield Network Security

Les firewalls Stormshield Network Security détectent également le transport du malware avec l’option Advanced Antivirus, même sans la présence de l’option Breach Fighter.

Indice de confiance de la protection proposée par Stormshield

Indice de confiance de l’absence de faux positif

Stormshield Endpoint Security Evolution

La solution SES Evolution est capable de détecter et de bloquer le malware lors de son exécution, avant même le commencement du chiffrement.

La protection anti ransomware détecte et bloque le malware durant deux étapes : lors du chiffrement des fichiers et lors de la désactivation des fonctionnalités Windows de récupération de fichiers.

Indice de confiance de la protection proposée par Stormshield

Indice de confiance de l’absence de faux positif

SkullLocker & IOC

SkullLocker IOCs : retrouvez ici les références des échantillons étudiés pour cette analyse.

Hashes

  • Executable
    • MD5: 62e53bc5aa5f2a70a54e328bff51505f
    • SHA1: E7DECEEE97A09D539D81EB91F988ECE5E2A2FF51
    • SHA256: BB5CA9D8DE51734DBD14DC081C7C892D819CD14FAFD7CCD62849D70F9E679369
  • Instructions de rançon
    • MD5: A23E76CE33ADF72409FB0C43393D3087
    • SHA1: 502620245BE1D0912AB9C4FB5390AB14E27778A8
    • SHA256: 88702C38B8BEA9555A13AE747CBFDF2947FFF6060F4FEF75486025E0152DDF3A

Paths

  • .skull
  • read_it.txt
  • %AppData%\Microsoft\Windows\Start Menu\Programs\Startup\svchost.url
  • %AppData%\svchost.exe
  • X:\skull.exe

Processes

  • vssadmin delete shadows /all /quiet
  • wmic shadowcopy delete
  • bcdedit /set {default} bootstatuspolicy ignoreallfailures
  • bcdedit /set {default} recoveryenabled no
  • wbadmin delete catalog -quiet

Portail Breach Fighter

Partager sur

[juiz_sps buttons="facebook, twitter, linkedin, mail"]
Un besoin de précision sur les protections Stormshield ? Les équipes du Support Technique sont à votre disposition pour vous accompagner au mieux. Contactez-les par le biais du gestionnaire d’incidents situé dans l’espace privé MyStormshield. Pour y accéder, sélectionnez le menu « Support technique / Rapporter un incident / Suivre un incident ».
L’équipe de Threat Intelligence de Stormshield remplit deux missions principales : étudier les menaces cyber pour les comprendre et améliorer en continu les protections des produits de Stormshield. Le tout, dans l’optique de contribuer à l’effort de la communauté de la cybersécurité pour faire face aux menaces cyber.
À propos de l'auteur
Cyril Cléaud Ingénieur Cybersécurité, Stormshield

Enfant curieux, Cyril cherchait à comprendre comment utiliser le microprocesseur Motorola 68000 directement en code machine. Plus tard, passionné en sécurité informatique et en développements "proches de la machine", il raffole toujours autant des défis techniques. Surtout quand il s'agit de manipuler un désassembleur ou de se frotter aux dernières cyber-menaces. Après 12 ans de carrière dans une grande ESN française, il s'adonne désormais à ses activités favorites chez Stormshield pour proposer des réponses à ces menaces.