Auteur: Lefebvre Fabien (CTI)
Relecture: Antoine Mevel (CTI), Justine Guyot (CTI)
Points clés
- Qilin est un groupe de ransomware présent depuis près de 3 ans et qui est un des groupes les plus actifs depuis le début de l’année.
- Qilin s’attaque à tous les secteurs, y compris celui de la santé et les organisations à but non lucratif.
- Les États-Unis sont le plus le plus ciblés.
- Le groupe utilise du spear phishing comme vecteur d’infection.
- Les samples sont protégés par un mot de passe, ce qui empêche leur exécution dans les sandbox.
- Chaque sample est spécifique à la cible.
- L’extension des fichiers chiffrés est unique à la cible.
Le groupe Qilin
Qilin est un groupe cyber-criminel russe repéré pour la première fois en octobre 2022, qui a depuis gagné en popularité pour devenir l’un des groupes les plus actifs, avec 73 victimes le mois dernier et 530 au total.

Les Etats-Unis sont de loin le pays le plus ciblé, avec plus de 300 victimes. Le groupe est particulièrement dangereux dû à son activité dans tous les secteurs, mais la plupart de leurs victimes sont dans les services, la manufacture, la santé et la technologie, avec la moitié de leurs victimes venant d’un de ces secteurs.
sdkmhdl


Le groupe a un blog en .onion pour lister ses victimes, et pour leaker les informations des victimes qui refusent de payer la rançon.

D’après Group-IB, Qilin infecte ses victimes avec du spear-phishing.
Analyse du ransomware
Cette section se concentre sur l’analyse technique du ransomware.
Configuration
Qilin utilise deux sources de configuration, la première étant intégrée dans l’exécutable et la seconde passée en argument.
Configuration intégrée
La configuration intégrée dans l’exécutable contient les champs suivant:
public_rsa_pem
private_rsa_pem
: videdirectory_black_list
: une liste de noms de dossiers à ne pas chiffrer.file_black_list
: une liste de noms de fichiers à ne pas chiffrer.file_pattern_black_list
: a list of keyword for which the file should not be encrypted if it is contained in the name ?process_black_list
: ?win_services_black_list
: ?company_id
: an identificator for the company generated by Qilin. It is used as the extension for encrypted files ?n
p
fast
skip
step
accounts
: a mapping of leaked accounts and associated cleartext password.note
: the ransom note.password_hash
: the password used by the operator to run the executable
The malware seems to be able to handle the following configurations that were not used:
white_symlink_dirs
white_symlink_subdirs
The RSA public key has been tested for vulnerabilities with RsaCtfTool
, but none were found.
Arguments
Qilin propose un grand nombre d’arguments pour paramétrer son exécution:
password
: mot de passe nécessaire à l’exécution du ransomware.paths
: les chemins vers les dossiers à chiffrer.ips
: chiffrer les machines à ces adresses.timer
: retarde le chiffrement (en secondes).no-sandbox
: désactive la détection de sandbox.no-escalate
: désactive l’escalade de privilèges.impersonate
: SID de l’utilisateur à impersonnifier.safe
: redémarre la machine en mode safe (change le mot de passe de l’utilisateur et active la connexion automatique).no-priority
: ne pas augmenter les priorités IO/CPU.no-admin
: désactive le besoin d’être lancé en administrateur.no-local
: désactive le chiffrement de la machine locale.no-domain
: désactive le chiffrement des autres machines sur le réseau.no-mounted
: désactive le chiffrement des dossiers montésno-network
: désactive le chiffrement des dossiers partagés sur le réseau.no-ef
: désactive les filtres sur les extensions.no-ff
: désactive les filtres sur les fichiers.no-df
: désactive les filtres sur les dossiers.no-autostart
: désactive la persistance par registre.no-proc
: désactive le tueur de processus.no-services
: désactive le tueur de service.no-vm
kill-cluster
: active le cluster killer.no-extension
: désactive l’ajout de l’extension pour les fichiers chiffrés.no-wallpaper
: désactive le changement de fond d’écran.no-note
: désactive le message de rançon.no-delete
no-destruct
no-zero
print-image
print-delay
force
debug
: afficher les logs dans la console pendant toute l’exécution.no-logs
no-delete
fde
spread
: utilisePsExec
pour se propager aux autres machines du domaine.spread-vcenter
: propage une payload sur les machines de l’ESXi en passant par vCenter.dry-run
logs
escalated
parent-sid
spread-process
Mécanismes de défense
Qilin utilise de nombreuses techniques de défense pour éviter d’être détecté et pour éviter d’être exécuté dans le mauvais environnement ou la mauvaise personne.
Packing (T1027.002, T1055.002)
L’exécutable est packé, et utilise une boucle pour s’unpacker en utilisant des opérations XOR et AND avec les valeurs codées en brut.

Qilin copie ensuite chaque section dans un buffer en mémoire avec memcpy
.

Les sections sont ensuite rendues exécutables et l’exécutable fait appel aux tls_callback_0, tls_callback_1 et tls_callback_2 de Qilin, avant d’appeler son point d’entrée.


Mot de passe (T1497)
The second layer of protection is a password. The operator must provide this password to the executable using –password. The input is then hashed with SHA256 and compared to a password hash stored in the malware configuration. If the hashes don’t match, the executable logs an error and then exits.

Vérification administrateur
Le malware vérifie que le processus est exécuté avec des privilèges élevés avec les APIs GetCurrentProcess
, OpenProcessToken
et GetTokenInformation
.

Détection de sandbox (T1497.001)
Le malware récolte des informations sur l’hôte afin de déterminer s’il tourne dans une machine virtuelle.
Il vérifie les informations sur le processeur avec l’instruction cpuid
avec EAX=1
.
Une seconde vérification est effectuée avec cpuid
et EAX=0x40000000
, cette fois pour chercher la présence des Ids Microsoft Hv,
VMwareVMware
, VboxVboxVbox
, KVMKVMKVM
, XenVMXenVM
ou lrpepyv vr
, indiquant la présence d’un hyperviseur. Si Microsoft Hv est détecté, il vérifie également la présence de la clé de registre HKLM\SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters
afin de s’assurer que ce n’est pas un faux positif.
Un délai peut être spécifié avec l’option –delay pour retarder la majorité des capacités du ransomware, ce qui peut aider à bypass la détection des sandbox même si le ransomware est lancé avec le bon mot de passe. Par défaut, il n’y a pas de délai.
Mutex (T1480.002)
Pour éviter un duplicat d’exécution, Qilin utilise un mutex avec le hash du mot de passe de l’exécutable en nom.

Escalade de privilèges
Manipulation des access tokens (T1134)
Qilin fait de l’escalade de privilège avec SeDebugPrivilege, SeImpersonatePrivilege et SeIncreaseBasePriorityPrivilege avec une boucle.


Impersonification
Un SID peut être donné avec l’option –impersonate pour impersonifier un utilisateur durant les opérations de chiffrement.
Impact
Changement du mot de passe de l’utilisateur (T1098)
Avec le mode --safe
, Qilin change le mot de passe de l’utilisateur à celui passé par l’argument --password
en utilisant NetUserSetInfo
avec level=1003
(« specifies a user password »), puis active l’autologin en modifiant HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
(AutoAdminLogon, DefaultUserName, DefaultPassword).


Affaiblissement des défenses (T1562)
Le changement des liens symboliques est changé avec les commandes fsutil behavior set SymlinkEvaluation R2R:1
et fsutil behavior set SymlinkEvaluation R2L:1
, ce qui permet le chiffrement des dossiers partagés sur le réseau en suivant les liens symbolique pour accéder au dossier partagé distant.
Désactivation de VSS (T1490)
Les shadow copies sont désactivées et supprimées avec la commande vssadmin.exe delete shadows /all /quiet
et le service est désactivé avec wmic service where name='vss' call ChangeStartModeDisabled
et net stop vssem32.
Suppression des logs (T1562.002)
Les logs sont supprimées continuellement avec un script powershell qui utilise le module Get-WinEvent.

Chiffrement (T1486, T1491.001)
Avant le processus de chiffrement, le malware collecte des informations sur le système, telles que les dispositifs de stockage (type, DASD), les volumes (points de montage, volume système), les dossiers partagés et les raccourcis sur le bureau et dans les dossiers partagés.
Pour améliorer ses performances, Qilin monte la priorité du processus à Realtime
, ce qui est permis par le privilège SeIncreaseBasePriority
.
Qilin réalise deux tours de chiffrement, un premier avec Chacha20 et le second avec AES256.

BcryptGenRandom est utilisé pour générer les clés, l’algorithme utilisé pour la génération du nombre aléatoir est choisi par le système (BCRYPT_USE_SYSTEM_PREFERRED_RNG
). Si BcryptGenRandom échoue, RtlGenRandom est utilisé à sa place.

ChaCha20 est utilisé pour le premier tour de chiffrement des données, ce qui peut être reconnu par la présence d’une constante utilisé par la compression de Brotli, des opérations spécifiques à ChaCha20 et un counter de 32 bits.


AES est utilisé pour le deuxième tour de chiffrement. Les opérations semblent correspondre à l’implémentation d’AES par OpenSSL.

Files are renamed using the MoveFileExW API, by adding the company ID embedded in the configuration to the file name and a ransom note is dropped in each directory.

Une fois le processus de chiffrement terminé, Qilin change le fond d’écran des utilisateurs et l’écran de verrouillage avec des instructions.

Auto-suppression (T1070.004)
Qilin se supprime lui-même une fois que les opérations de chiffrement et de nettoyage de logs sont terminées, ce qui gêne les capacités de récupération.
Persistance
Registry (T1547.001)
Une entrée dans SOFTWARE\Microsoft\windows\CurrentVersion\Run
est ajoutée pour exécuter le ransomware automatiquement au démarrage de la machine.

Mouvement latéral
ESXi (T1098, T1021.004; T1210, T1623)
Avec l’option spread-vcenter activée, Qilin est capable de propager une payload à un ESXi avec les identifiants vCenter. Qilin désactive ensuite HA et Drs sur tous les clusters, change le mot de passe de l’utilisateur et active SSH sur tous les hôtes. Il termine en envoyant et exécutant la payload sur ces machines. Le chemin vers la payload et les identifiants sont donnés par l’opérateur en utilisant la ligne de commande.

Un commentaire dans le script Powershell montre la frustration d’un développeur avec Powershell.

Machines du domaine (T1588.002, T1021.002)
Qilin est également capable de se propager sur d’autres machines en passant par PsExec
avec l’option --spread
et les identifiants de l’utilisateur.
IOC
SHA256
d628914c72a4294d6b67126eb8b5a08fa4974d05469852cb7ef872721b207498
5b358f7cb6c2f16badbb476f7fa7515d4c142a1c1c47e22ab058155aa3120ba1
5acd1ff8da9958a032cf63fb27d5e4b71c201612461e039f44eb07b2cc6735c0
381c3ed7a3b3d3017faaacb917c911aa266c2fb3e648f0e659222ec38148ee3c
1e52d9f04f99be66d5bc13db767c6acb5f0515906633f76e5c713681af9454df
1455a215def8fe3c7053a21e748d20bcef586014b3d000b9f8e64be6ed99addd
033b4d28791b318fee5017e79c87c974ee621bae3b137d78ff11e2623ecf78a5
02835451193c2232094b591b7ef52a18786bae3232330839e63631f077f4946b
f52567ef22018ee7ef696ec1b28b99f019552827445425dd08e98195f6ac56fe
f17c9c6b1f1e4434e2688fc0d25d0bca1efb89582c03028f787fa2b9f765c17a
db7b88dfbc16f4798b30c135a1e305d11b201ca3d9b600f2b2f3306f0ad32b18
c3fec6dd70f15fdf0683473539f1bde4c24e1aa25d97555c3d330f77b1edc3f1
a58adc18c13c4c357039ee5cf5fa5e886a7efc6026350cb7087466d667b87263
9983e9559790c6df67dc78157f65ee42320a9914c0b2cb7eb4b210e50266268c
96de53f71a914113dd1e0ab030b3e0707101af10bd6de3c894ee328d6f175e94
90bf9700d267b34aef7963ca51623daab9f4725253735a66e0a56c532f6b32c4
906f88817e3bf1bd4e800cf798650f3a309c81ee9b78c2a37d9118ce2567ae3d
8410f85c1710bfefccf0517cbbc91c0019073ced28d66539eeb596a9de8be1a9
78b6552fe4e7afbd21d8494dd19c056e16316b7aabdbaf746f5511a2dc2c542c
76dfbf622b6846653eff769e047efedc7a9fdbb00c939965d555da7aef460a5d
690d584bb489f5de42077147b13d5431ef3cd36e429a90fcdfe02bc97fdbec85
57e93d498dd91aebb7473950c12d8dc414aec39f6e3baa2a0b249649adf2ddc9
340351639863a1c01eb0f8e34aafa2a5f36a7ee378c3cb112827ce3e9bfd7a87
147ad250400bb8c5ec2f7542afc82491fd23d665b070db03c17022ec969024a6
6316417fcd979c39a4da672ba3521f62081ff4dfebb868ef65a1f2dff9a738ea
Fichiers écrits
%TEMP%/QLOG/ThreadId(1).LOG
Message de rançon
-- Qilin
Your network/system was encrypted.
Encrypted files have new extension.
-- Compromising and sensitive data
We have downloaded compromising and sensitive data from your system/network.
Our group cooperates with the mass media.
If you refuse to communicate with us and we do not come to an agreement, your data will be reviewed and published on our blog and on the media page (https://31.41.244.100)
Blog links:
http://kbsqoivihgdmwczmxkbovk7ss2dcynitwhhfu5yw725dboqo5kthfaad.onion
http://ijzn3sicrcy7guixkzjkib4ukbiilwc3xhnmby4mcbccnsd7j2rekvqd.onion
Data includes:
- Employees personal data, CVs, DL , SSN.
- Complete network map including credentials for local and remote services.
- Financial information including clients data, bills, budgets, annual reports, bank statements.
- Complete datagrams/schemas/drawings for manufacturing in solidworks format
- And more...
-- Warning
1) If you modify files - our decrypt software won't able to recover data
2) If you use third party software - you can damage/modify files (see item 1)
3) You need cipher key / our decrypt software to restore you files.
4) The police or authorities will not be able to help you get the cipher key. We encourage you to consider your decisions.
-- Recovery
1) Download tor browser: https://www.torproject.org/download/
2) Go to domain
3) Enter credentials
Please note that communication with us is only possible via the website in the Tor browser, which is specified in this note.
All other means of communication are not real and may be created by third parties, if such were not provided in this note or on the website specified in this note.
-- Credentials
Extension: neYfIA2niC
Domain: <CENSORED>
login: <CENSORED>
Commande ESXCLI
esxcli system settings advanced set -o /User/execInstalledOnly -i 0
Commandes Windows
fsutil behavior set SymlinkEvaluation R2R:1
fsutil behavior set SymlinkEvaluation R2L:1
net use
wmic service where name='vss' call ChangeStartMode Manual
net start vss
vssadmin.exe delete shadows /all /quiet
net stop vss
wmic service where name='vss' call ChangeStartMode Disabled
Blog de Qilin
http://kbsqoivihgdmwczmxkbovk7ss2dcynitwhhfu5yw725dboqo5kthfaad.onion
http://ijzn3sicrcy7guixkzjkib4ukbiilwc3xhnmby4mcbccnsd7j2rekvqd.onion
Règle de détection
Règle YARA
import "pe"
rule QilinRansomware : ransomware qilin {
meta:
author = "TEHTRIS - Lefebvre Fabien"
description = "Detects Qilin ransomware"
sha256 = "['d628914c72a4294d6b67126eb8b5a08fa4974d05469852cb7ef872721b207498']"
strings:
$sections = {
// @loop
8b 72 10 // mov esi, [edx + 0x10]
8b 42 0c // mov eax, [edx + 0xc]
8d 7c 05 00 // lea edi, [ebp + eax]
01 f0 // add eax, esi
85 f6 // test esi, esi
0f 44 c7 // cmovz eax, edi
39 c3 // cmp ebx, eax
0f 42 d8 // cmovc ebx, eax
83 c1 01 // add ecx, 1
83 c2 28 // add edx, 0x28
39 4c 24 24 // cmp [esp + 0x24], ecx
75 de // JNZ @loop
}
condition:
pe.is_pe and all of them
}