Le 20 janvier 2026 à 18 h 03 UTC, notre système a commencé à nous alerter au sujet d'un nouveau paquet npm appelé flockialiEn l'espace de 26 minutes, l'attaquant a publié quatre versions. Deux jours plus tard, il s'est lancé dans une frénésie de publications : opresc, prndn, oprnm, et operniEn y regardant de plus près, nous avons découvert une campagne de spear phishing très ciblée visant les employés d'entreprises industrielles et énergétiques à travers l'Europe, le Moyen-Orient et les États-Unis.
Et le mécanisme de livraison ? npm + jsDelivr. Pourquoi héberger votre propre infrastructure de phishing alors que vous pouvez profiter gratuitement du CDN de quelqu'un d'autre ?
Ce que nous avons trouvé
Les paquets contiennent un seul fichier JavaScript qui, une fois chargé, remplace complètement la page Web par un kit de phishing. Mais voici ce qui rend cela intéressant : chaque version cible une personne spécifique.
Nous avons identifié cinq cibles dans cinq entreprises :
flockialiLa version 1.2.5 cible un employé de CQFD Composites, un fabricant français de composites.flockialiLa version 1.2.6 cible un employé d'Ingeteam, une entreprise espagnole spécialisée dans les éoliennes.oprescLa version 1.0.0 cible un employé d'Emagine, une entreprise de recharge de véhicules électriques basée aux Émirats arabes unis.prndnetoprnmles deux visent la même personne chez Amixon GmbH, une entreprise allemande spécialisée dans le mélange industriel.operniLa version 1.2.7 cible un employé de CMC America, une entreprise américaine spécialisée dans les équipements de boulangerie.
L'attaquant ne procède pas à des attaques aveugles. Il publie de nouveaux paquets pour chaque cible. Et lorsqu'une cible est particulièrement intéressante, il publie plusieurs paquets avec différents chemins de livraison.
Le déroulement de l'attaque
Voici ce qui se passe lorsqu'une victime clique sur le lien de phishing.
La page se charge et affiche une fausse interface de partage de fichiers « Micro-Share » :
📁 Micro-Share
partage sécurisé de fichiers
Pour sécuriser les documents partagés, veuillez vérifier votre adresse e-mail et continuer.
Les documents suivants ont été partagés de manière sécurisée avec [victim]@ingeteam.com
📄 Specification.pdf
- RFQ.pdf
- Project descriptions.pdf
- equipment's end destination.pdf
[ Télécharger ]
Les documents sont liés à l'ingénierie : appels d'offres, cahiers des charges, fichiers CAO. Exactement ce que l'on s'attendrait à recevoir dans une entreprise industrielle.
Lorsque la victime clique sur « Télécharger », la page affiche un écran de connexion Microsoft :
⊞Microsoft
Connectez-vous à
⚠ Authentification requise. Cliquez sur Suivant pour vous connecter et poursuivre le téléchargement.
┌────────────────────────────────────────┐
│ [victim]@ingeteam.com │ (lecture seule)
└────────────────────────────────────────┘
Vous n'avez pas de compte ? Créez-en un.
Vous ne parvenez pas à accéder à votre compte ?
[ Suivant ]
L'adresse e-mail de la victime est déjà renseignée et marquée comme étant en lecture seule. Lorsqu'elle clique sur « Suivant », elle est redirigée vers le serveur de collecte d'identifiants :
window.location.href = "https://login.siemensergy[.]icu/DIVzTaSF";Oui, siemensergy[.]icuIl s'agit d'un typosquat de Siemens Energy. L'attaquant a clairement fait ses recherches sur les partenaires commerciaux de ses cibles.
Astuces anti-bot
Le kit de phishing ne plaisante pas. Il comprend plusieurs techniques permettant d'éviter l'analyse automatisée.
Il vérifie la présence de WebDriver (navigator.webdriver), les listes de plugins vides et les dimensions d'écran nulles. Il filtre les agents utilisateurs correspondant à /bot|crawl|spider|headless|HeadlessChrome/i. Il comprend des champs de formulaire honeypot qui, s'ils sont remplis par des robots, déclenchent le kill switch. Et le bouton de téléchargement reste désactivé jusqu'à ce que la page détecte un mouvement de souris ou un événement tactile. Pas d'interaction, pas de phishing.
v1.2.5 va plus loin avec un analyseur de trajectoire de souris étonnamment sophistiqué :
isLegitimateTrajectory() {
if (this.mouseTrail.length < 20) return false;
const t = this.mouseTrail.slice(-10);
const variance = t.reduce((acc, p) =>
acc + Math.pow(p.x - t[0].x, 2), 0) / 10;
return variance > 100;
}
Cela calcule la variance des 10 dernières positions de la souris. Si votre curseur s'est déplacé de manière suspecte en ligne droite (comme le ferait un bot), la variance reste faible et le bouton ne s'active jamais. Les vrais humains bougent.
Quelqu'un a vraiment mis du cœur à l'ouvrage pour créer ce kit de phishing.
Cinq paquets, cinq cibles, deux modèles
Les versions de charge utile ne ciblent pas seulement des personnes différentes. Elles utilisent deux modèles de kits de phishing différents.
Le v1.2.5 La charge utile (ciblant CQFD Composites) utilise la marque « MicroSecure Pro » avec un dégradé violet et la police Inter. Elle affiche des fichiers CAO et des livrables d'ingénierie comme appât, dispose d'un analyseur sophistiqué de trajectoire de souris et envoie les identifiants à oprsys.deno[.]dev.
Le reste (v1.2.6, opresc, prndn, oprnm, operni) utilisent un design « Micro-Share » plus épuré, avec un fond blanc et la police Segoe UI. Ils affichent des appels d'offres et des spécifications de projet, utilisent des vérifications d'interaction de base et envoient des identifiants aux typosquatteurs de Siemens Energy.
Le v1.2.5 Le kit est plus tape-à-l'œil, avec des animations et des arrière-plans dégradés. Les kits plus récents sont plus minimalistes, plus proches de l'apparence réelle de Microsoft. Peut-être que l'attaquant a effectué des tests A/B et a constaté que les versions plus simples convertissaient mieux. Ou peut-être qu'il s'agit simplement d'itérations.
La charge utile CMC America (operni) a personnalisé des leurres documentaires pour l'industrie alimentaire : « Spécifications des produits et détails des ingrédients », « Objectifs de capacité de production et paramètres opérationnels ». L'attaquant adapte son appât.
Ce qui est intéressant, c'est le choix du C2. Toutes les cibles récentes sont redirigées vers des typosquats de Siemens Energy. Ce n'est pas un hasard. Ingeteam fabrique des éoliennes. Emagine développe des infrastructures de recharge pour véhicules électriques. Amixon et CMC America fabriquent des équipements de mélange industriels (Amixon travaille même avec des matériaux pour batteries). Toutes ces entreprises opèrent sur des marchés où Siemens Energy est un acteur majeur. L'attaquant a étudié les relations commerciales de ses cibles.
Remarquez l'évolution subtile : siemensergy[.]icu (sans trait d'union) est devenu siemens-énergie[.]icu (avec trait d'union). La deuxième variante est plus proche de la réalité. siemens-energy[.]com domaine. Nous avons confirmé via DNS que le domaine sans trait d'union ne contient aucune entrée. L'attaquant l'a abandonné.
L'infrastructure raconte une histoire
C'est là que ça devient intéressant. Nous avons utilisé les journaux de transparence des certificats pour déterminer quand l'infrastructure C2 a été mise en place. Le premier certificat SSL pour *.siemens-energy[.]icu a été émis le 24 octobre 2025. Il a ensuite été renouvelé les 14, 16 et 17 janvier. La campagne npm a débuté le 20 janvier.
L'attaquant a enregistré le domaine et obtenu les certificats SSL trois mois avant l'apparition des paquets npm. Réfléchissez-y bien. Il ne s'agit pas d'une action opportuniste. Quelqu'un a planifié cette opération, mis en place l'infrastructure en octobre 2025, puis attendu.
Le serveur C2 (163.123.236[.]118) est hébergé par RackGenius, un petit fournisseur d'hébergement situé à Muskegon, dans le Michigan. Parallèlement, l'ancien v1.2.5 utilisations de la charge utile oprsys.deno[.]dev, qui renvoie vers Cloud Google Cloud (Deno Deploy). Hébergement sans serveur gratuit pour le phishing. Classique. Nous avons informé l'équipe Deno de cette campagne lorsque nous l'avons remarquée, et ils l'ont très rapidement supprimée.
Pourquoi npm + jsDelivr ?
Le fichier package.json raconte l'histoire :
{
"keywords": ["jsdelivr", "cdn", "template"],
"main": "resp/template.min.js"
}
jsDelivr reflète automatiquement les paquets npm. Publiez sur npm, bénéficiez d'un hébergement CDN instantané sur cdn.jsdelivr[.]net/npm/flockiali@1.2.6/resp/template.min.js. Aucun serveur à entretenir, aucun hébergement à payer, et la victime voit une URL CDN d'apparence légitime au lieu d'un domaine de phishing douteux.
La chronologie
20 janvier (quatre versions en 26 minutes) :
- 18 h 03 UTC :
flockialiv1.2.3 (espace réservé vide) - 18 h 10 UTC :
flockialiv1.2.4 (mise à jour des métadonnées) - 18 h 15 UTC :
flockialiv1.2.5 (cible CQFD Composites) - 18 h 29 UTC :
flockialiv1.2.6 (cible Ingeteam)
22 janvier (cinq colis supplémentaires) :
- 09 h 52 UTC :
oprescv1.0.0 (cible Emagine) - 12 h 29 UTC :
prndnv1.0.0 (cible Amixon) - 12 h 49 UTC :
oprnmv1.0.0 (Amixon à nouveau) - 13 h 11 UTC :
operniv1.2.6 (cassé, vide) - 13 h 16 UTC :
operniv1.2.7 (cible CMC Amérique)
L'attaquant dispose d'une liste de cibles et la passe en revue. L'employé d'Amixon a reçu deux colis à 20 minutes d'intervalle (un peu exagéré, non ?). Le colis de CMC America comportait une faute de frappe (reps/ au lieu de resp/) et une première version défectueuse. Oups. Cet attaquant agit rapidement et commet des erreurs.
Que devriez-vous faire ?
Si vous travaillez dans l'une des entreprises ciblées, vérifiez si quelqu'un a reçu des liens vers des URL jsDelivr ou a cliqué sur quoi que ce soit en rapport avec le partage de documents « Micro-Share ».
Rechercher dans les journaux de messagerie les liens contenant cdn.jsdelivr[.]net/npm/flockiali, cdn.jsdelivr[.]net/npm/opresc, cdn.jsdelivr[.]net/npm/prndn, cdn.jsdelivr[.]net/npm/oprnm, ou cdn.jsdelivr[.]net/npm/operniBloquez les domaines IOC à votre périmètre. Si des identifiants ont été saisis, modifiez-les immédiatement.
Indicateurs de compromission
Domaines C2 :
login.siemens-energy[.]icu(163.123.236[.]118, RackGenius)login.siemensergy[.]icu(abandonné, pas de DNS)oprsys.deno[.]dev(34.120.54[.]55, Deno Deploy)
URL de phishing :
https://login.siemensergy[.]icu/DIVzTaSFhttps://login.siemens-energy[.]icu/DIVzTaSF
URL jsDelivr :
hxxps://cdn.jsdelivr[.]net/npm/flockiali@1.2.6/resp/template.min.jshxxps://cdn.jsdelivr[.]net/npm/flockiali@1.2.5/resp/template.min.jshxxps://cdn.jsdelivr[.]net/npm/opresc@1.0.0/resp/template.min.jshxxps://cdn.jsdelivr[.]net/npm/prndn@1.0.0/template.min.jshxxps://cdn.jsdelivr[.]net/npm/oprnm@1.0.0/resp/template.min.jshxxps://cdn.jsdelivr[.]net/npm/operni@1.2.7/reps/template.min.js
Forfaits :
flockiali(1.2.3-1.2.6)opresc(1.0.0)prndn(1.0.0)oprnm(1.0.0)operni(1.2.6-1.2.7)
Hachages de la charge utile (SHA256) :
3ceb182fb32a8fb0f0fcf056d6ab8de1cf6e789053f1aadc98ba315ae9a96f0c– flockiali 1.2.6fdb6c79a8d01b528698c53ebd5030f875242e6af93f6ae799dee7f66b452bf3e– flockiali 1.2.54631584783d84758ae58bc717b08ac67d99dee30985db18b9d2b08df8721348e– opresc211f88a55e8fe9254f75c358c42bb7e78e014b862de7ea6e8b80ed1f78d13add– prndn/oprnm7d7f795ac1fcb5623731a50999f518877fd423a5a98219d0f495c488564a1554– operni 1.2.7
Sécurisez votre logiciel dès maintenant.



.avif)
