Aller au contenu
← Retour au blog

Malware dans les fichiers LNK : comment les raccourcis Windows sont militarisés

· 5 min de lecture

Les fichiers raccourcis sont un vecteur de livraison de malware Windows fiable depuis quinze ans et plus. Ils sont petits, ils paraissent inoffensifs dans Explorer, l'extension est cachée par défaut, et le format leur permet de lancer n'importe quel exécutable avec n'importe quels arguments sous n'importe quelle icône. Les rapports de CISA, Mandiant, Trellix et SentinelOne à partir de 2023 continuent de signaler le même motif : .lnk est de retour en tête du kit d'outils d'accès initial. Le changement est réel, et l'astuce est qu'il n'y a rien à patcher, l'abus utilise des champs légitimes exactement comme spécifiés.

Deux saveurs d'abus de LNK

Exploitation du parser

Un petit nombre de CVE ont permis à un Shell Link d'exécuter du code simplement parce qu'Explorer l'a rendu.

  • CVE-2010-2568, le bug d'analyse que Stuxnet a utilisé pour se propager via les clés USB. Explorer chargeait automatiquement une DLL malveillante en dessinant l'icône du raccourci. Aucun clic nécessaire.
  • CVE-2017-8464, même famille, plus large. Patché, mais les systèmes non patchés sont restés des cibles pendant des années.
  • CVE-2020-0729, CVE-2022-37969, problèmes côté parser ultérieurs avec un rayon d'impact plus petit.

Les Windows modernes patchent le parser, donc cette classe est rare en 2026. La menace active est tout ce qui suit dans la section suivante.

Militarisation des champs légitimes

La spec Shell Link permet à un raccourci de lancer n'importe quoi avec n'importe quels arguments sous n'importe quelle icône. Les campagnes actuelles abusent exactement de cela, sans exploit requis :

  • Target pointe vers C:\Windows\System32\cmd.exe, powershell.exe, mshta.exe, rundll32.exe, regsvr32.exe, ou un binaire living-off-the-land récemment populaire. Rarement l'application que l'icône prétend être.
  • Arguments porte une ligne qui télécharge ou décode une charge utile, -enc <base64>, iex (iwr http://...), mshta http://..., rundll32 .\loader.dll,Entry, ou des chaînes de bypass AMSI.
  • WorkingDirectory pointe vers la racine de l'ISO/ZIP ou %TEMP% / %APPDATA%, de sorte qu'une DLL ou un script sidecar se résout avec un chemin relatif.
  • IconLocation se résout vers une DLL système, imageres.dll,-187 est l'icône PDF, imageres.dll,-3 est Word, pour correspondre au nom de fichier du leurre. Invoice_April.pdf.lnk rendu avec une icône PDF.

Depuis 2022, lorsque Microsoft a commencé à bloquer les macros VBA dans les docs Office tagués Mark-of-the-Web, c'est le motif de phishing dominant : conteneurs ZIP ou ISO, .lnk à l'intérieur, charge utile sidecar que le LNK invoque. Qakbot, Bumblebee, IcedID, les renaissances d'Emotet, et la plupart des admissions d'affiliés ransomware de 2023-2025 l'ont utilisé.

À quoi ressemble un LNK malveillant sous le capot

Analysez un vrai .lnk de phishing (déposez-le dans le parser de la page d'accueil, pas de téléversement, pas d'exécution) et vous verrez typiquement :

  • LinkInfo → LocalBasePath = C:\Windows\System32\cmd.exe ou powershell.exe. Pas le fichier que l'icône prétend être.
  • StringData → COMMAND_LINE_ARGUMENTS contenant -enc, -EncodedCommand, iex, IEX, Invoke-Expression, mshta, rundll32.exe, regsvr32.exe, des URLs, ou des blobs base64 plus longs que ce que le LNK original est plausiblement autorisé à porter.
  • StringData → WORKING_DIR pointant vers la racine de l'ISO/ZIP ou %TEMP% / %APPDATA%.
  • StringData → ICON_LOCATION pointant dans imageres.dll ou shell32.dll, pas un vrai fichier.
  • ShellLinkHeader → ShowCommand = 7 (minimisé). Garder la fenêtre cmd hors de vue.
  • Blocs ExtraData assez riches pour divulguer la machine de build de l'attaquant via le nom NetBIOS et le GUID droid du TrackerDataBlock. Plusieurs victoires d'attribution publiques sont venues exactement de cela, les rapports Lazarus, APT37, APT41 le citent explicitement.
  • LinkFlags avec HasArguments et HasIconLocation activés, souvent avec IsUnicode et HasExpString pour le EnvironmentVariableDataBlock qui résout les chemins %USERPROFILE% ou %TEMP% à l'exécution.

Les motifs de détection se superposent naturellement à la sortie d'un parser. Le format CSV de LECmd d'Eric Zimmerman est ce que la plupart des règles de détection ciblent ; lnkparse3 et lnkinfo de libyal émettent des données équivalentes dans des schémas différents.

Checklist de triage

Avant d'ouvrir tout .lnk que vous n'avez pas créé vous-même :

  1. Confirmez que le fichier est ce qu'il prétend. Windows cache .lnk par défaut. Invoice.pdf peut en réalité être Invoice.pdf.lnk. Affichez les extensions, ou faites un hex-dump des 20 premiers octets, un vrai LNK s'ouvre avec 4C 00 00 00 suivi du LinkCLSID 00021401-0000-0000-C000-000000000046.
  2. Lisez le LocalBasePath. Si ce n'est pas l'application à laquelle vous vous attendriez pour l'icône, arrêtez.
  3. Lisez les COMMAND_LINE_ARGUMENTS. Toute commande encodée, URL incorporée ou référence à un fichier sidecar dans la même archive est un drapeau rouge.
  4. Lisez l'ICON_LOCATION. Un chemin dans imageres.dll alors que la cible est cmd.exe est le masque classique.
  5. Lisez les blocs ExtraData. Le nom NetBIOS et le GUID droid du TrackerDataBlock vous remettront parfois la machine de build. Utilisez-les pour regrouper les échantillons.
  6. Détonez ailleurs. Si vous devez comprendre la charge utile, faites-le dans une VM isolée avec le réseau verrouillé. Jamais sur votre machine de travail.

Garde-fous défensifs

  • Affichez les extensions de fichiers dans Explorer. Contrôlé par politique si vous ne pouvez pas faire confiance aux utilisateurs.
  • Utilisez les règles Attack Surface Reduction : "Bloquer l'exécution de scripts potentiellement obfusqués" et "Bloquer le vol d'identifiants de LSASS" émoussent toutes deux la chaîne LNK typique.
  • Appliquez Mark-of-the-Web aux conteneurs ISO et IMG téléchargés (cela a changé dans Windows 11 22H2 ; vérifiez votre build).
  • Déployez une règle de détection basée sur parser qui signale les raccourcis dont la cible est cmd.exe / powershell.exe / mshta.exe / rundll32.exe / regsvr32.exe en dehors d'une allowlist connue.
  • Assurez-vous que l'audit de ligne de commande EVTX (4688 avec lignes de commande, ou Sysmon EventID=1) est activé. Le LNK est le déclencheur ; le processus engendré est où vous attrapez réellement la chaîne.

Pour aller plus loin

  • La spécification [MS-SHLLINK] de Microsoft, les champs que ces campagnes abusent sont documentés là.
  • CISA, avis sur les fichiers LNK malveillants à partir de 2023, détails au niveau campagne.
  • Eric Zimmerman, LECmd, parser hors ligne dont le schéma de sortie est ciblé par la plupart des règles de détection.
  • Pour les artefacts corroborants quand un LNK s'exécute : Prefetch, AmCache, EVTX, parser Jumplist pour la ligne DestList correspondante, parser MFT.