
Une nouvelle méthode d’obscurcissement JavaScript utilisant des caractères Unicode invisibles pour représenter des valeurs binaires est activement utilisée de manière abusive dans les attaques de phishing ciblant les affiliés d’un comité d’action politique américain (PAC).
Juniper ThreatLabs qui a repéré l’attaque rapporte qu’elle a eu lieu début janvier 2025 et porte des signes de sophistication tels que l’utilisation de:
- Informations non publiques personnalisées pour cibler les victimes,
- Vérifications des points d’arrêt et de synchronisation du débogueur pour échapper à la détection,
- Liens de suivi de cachet postal enveloppés de manière récursive pour obscurcir les destinations finales de phishing.
Le développeur JavaScript Martin Kleppe a révélé pour la première fois la technique d’obscurcissement en octobre 2024, et son adoption rapide dans les attaques réelles met en évidence la rapidité avec laquelle les nouvelles recherches deviennent des armes.
Rendre les charges utiles JS « invisibles »
La nouvelle technique d’obscurcissement exploite des caractères Unicode invisibles, en particulier le Hangul demi-largeur (U + FFA0) et le Hangul pleine largeur (U + 3164).
Chaque caractère ASCII de la charge utile JavaScript est converti en une représentation binaire 8 bits, et les valeurs binaires (uns et zéros) qu’il contient sont remplacées par des caractères Hangul invisibles.
Le code obscurci est stocké en tant que propriété dans un objet JavaScript, et comme les caractères de remplissage Hangul sont rendus sous forme d’espace vide, la charge utile dans le script semble vide, comme le montre l’espace vide à la fin de l’image ci-dessous.

Un court script d’amorçage récupère la charge utile cachée à l’aide d’un piège get() du proxy JavaScript.’Lorsque la propriété cachée est accédée, le Proxy convertit les caractères de remplissage Hangul invisibles en binaire et reconstruit le code JavaScript d’origine.
Les analystes de Juniper rapportent que les attaquants utilisent des étapes de dissimulation supplémentaires en plus de ce qui précède, comme l’encodage du script avec base64 et l’utilisation de vérifications anti-débogage pour échapper à l’analyse.

« Les attaques étaient hautement personnalisées, y compris des informations non publiques, et le JavaScript initial tentait d’invoquer un point d’arrêt du débogueur s’il était analysé, détectait un retard, puis abandonnait l’attaque en redirigeant vers un site Web bénin », explique Juniper.
Les attaques sont difficiles à détecter car un espace blanc vide réduit la probabilité que même les scanners de sécurité le signalent comme malveillant.
Étant donné que la charge utile n’est qu’une propriété d’un objet, elle peut être injectée dans des scripts légitimes sans éveiller les soupçons; de plus, l’ensemble du processus d’encodage est facile à implémenter et ne nécessite pas de connaissances avancées.
Juniper indique que deux des domaines utilisés dans cette campagne étaient auparavant liés au kit de phishing Tycoon 2FA.
Si tel est le cas, nous verrons probablement cette méthode d’obscurcissement invisible adoptée par un plus large éventail d’attaquants à l’avenir.