Dans une publication de recherche, l’auteur explore et étend la technique d’obfuscation par caractères Unicode invisibles popularisée par GlassWorm, en l’appliquant à de nouveaux contextes comme les lignes de commande et les journaux de sécurité, avec POC, simulations et détection.
L’étude part d’observations sur des « faux » répertoires Windows utilisant des espaces intégrés, puis se penche sur GlassWorm, qui dissimule des charges utiles dans le code via des caractères Unicode ressemblant à des espaces. L’auteur élargit l’inventaire des caractères invisibles/près-invisibles, teste leur rendu dans PowerShell et les journaux Windows Defender, et constate que certains restent totalement invisibles en télémétrie, compliquant la détection.
🧪 POC et technique: un encodeur convertit chaque octet du payload en 8 bits, mappés sur deux caractères Unicode invisibles (ex. U+FEFF et U+0020). Un décodeur PowerShell reconstruit la charge et l’exécute via Invoke-Expression (IEX). Variantes: invocation de powershell.exe dans une session existante avec -Args et ScriptBlock, aboutissant à des -EncodedCommand et -EncodedArguments (XML Base64), qui paraissent « vides » à l’analyse superficielle, tout en restant valides.
🖥️ Windows et 🐧 Linux: sur Windows, un reverse shell minimal en C# est compilé via csc.exe, servi en HTTP, puis récupéré et chargé en mémoire via Invoke-WebRequest, avec une commande PowerShell obfusquée en Unicode invisible et encodée en Base64 (-EncodedCommand). Résultat: pas de processus enfant significatif et des lignes de commande « vides » en apparence. Sur Linux, un reverse shell Bash utilisant /dev/tcp est exécuté après décodage d’une séquence Unicode invisible, sans afficher de ligne de commande claire; des outils comme pspy ne révèlent pas d’activité lisible.
🛡️ Détection: l’auteur propose une règle KQL (DeviceProcessEvents) qui repère des séquences longues de caractères Unicode invisibles (jeu étendu de code points), avec un filtre de ratio (>95% d’un même caractère) pour réduire les faux positifs (ex. grandes séries d’espaces/tabulations). Conseils: surveiller les événements « vides » ou scripts manipulant des variables « vides », repérer une barre de défilement horizontale anormalement petite dans le navigateur, et analyser les logs bruts avec un éditeur hex/Unicode. L’article est une publication de recherche visant à documenter la technique, prouver sa faisabilité et fournir des pistes de détection.
IOC(s):
- Caractères Unicode notables dans les POC: U+FEFF, U+0020, U+0009 (TAB)
TTPs (MITRE ATT&CK):
- T1027.010 — Obfuscation de commandes via Unicode invisible (Defense Evasion)
- T1059.001 — PowerShell (exécution via IEX, -EncodedCommand)
- T1059.004 — Bash (reverse shell en shell natif)
- T1127 — Utilities de développement de confiance (usage de csc.exe)
- T1105 — Transfert d’outils (récupération via Invoke-WebRequest)
- T1071 — C2 sur protocoles web (reverse shell sur TCP/80)
🔗 Source originale : https://reggia.xyz/posts/invisible-unicode-obfuscation-beyond-glassworm.html