Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Aprile! Scopri di più
Ogni volta che Word o Excel si avvia, il primo gesto silenzioso dell'applicazione è caricare un template di base — un file che definisce stili, layout e, potenzialmente, codice VBA. La tecnica Office Template Macros sfrutta esattamente questo meccanismo: un avversario inserisce una macro malevola nel template predefinito dell'applicazione, ottenendo così l'esecuzione automatica di codice a ogni apertura del programma.
La tecnica si colloca nella fase di Persistence (TA0003), quella in cui l'attaccante ha già conquistato l'accesso iniziale e lavora per mantenerlo attraverso riavvii, logoff e aggiornamenti. Il vettore è elegante nella sua semplicità: Word carica sempre Normal.dotm, Excel può essere configurato per caricare PERSONAL.XLSB dalla directory XLSTART, e un registro di sistema — la chiave GlobalDotName — permette di redirigere il caricamento verso un file arbitrario, anche remoto.
L'impatto pratico è documentato: 1 gruppo APT noto, 2 famiglie di malware associate e 2 mitigazioni raccomandate. Si tratta di numeri contenuti che non devono ingannare: la superficie d'attacco coincide con la base installata di Microsoft Office, presente in centinaia di milioni di endpoint aziendali. La persistenza tramite template è particolarmente insidiosa perché non richiede privilegi elevati, non genera servizi o task pianificati visibili e sopravvive ai normali cicli di aggiornamento del software.
Il modo più diretto per simulare questa tecnica in laboratorio è lavorare direttamente sul file Normal.dotm di Word. L'obiettivo è iniettare una macro VBA nel template in modo che venga eseguita automaticamente all'avvio dell'applicazione, replicando il comportamento documentato per MuddyWater.
La prima fase consiste nel localizzare il template. Su un sistema Windows con Office installato, il percorso standard è C:\Users\<username>\AppData\Roaming\Microsoft\Templates\Normal.dotm. Per Excel, la directory di riferimento è C:\Users\<username>\AppData\Roaming\Microsoft\Excel\XLSTART\ — se il file PERSONAL.XLSB non esiste, basta crearlo.
Per l'iniezione manuale, apri Word, premi Alt+F11 per accedere all'editor VBA, seleziona il progetto Normal nel riquadro di sinistra e inserisci un modulo con una subroutine AutoExec() o AutoOpen(). Un proof-of-concept sicuro per il lab:
Sub AutoExec()
Salva, chiudi e riapri Word: la calcolatrice comparirà, confermando la persistenza.
Per un approccio red team più realistico, Cobalt Strike (a pagamento) offre un workflow integrato: il modulo Office macro genera payload VBA che possono essere inseriti in un template Excel con trust delle macro forzato a livello di registro. La chiave da impostare è:
reg add "HKCU\Software\Microsoft\Office\16.0\Excel\Security" /v VBAWarnings /t REG_DWORD /d 1 /f
Il valore 1 indica "abilita tutte le macro senza notifica", disattivando di fatto il prompt di sicurezza per l'utente corrente.
Per simulare l'hijack tramite GlobalDotName, la modifica è altrettanto diretta:
reg add "HKCU\Software\Microsoft\Office\16.0\Word\Options" /v GlobalDotName /t REG_SZ /d "C:\Temp\evil.dotm" /f
Questo forza Word a caricare il template dalla posizione specificata. In ambiente di test, posiziona un .dotm contenente la macro di PoC nel percorso indicato e verifica che Word lo carichi al prossimo avvio.
Un'alternativa open source è EvilClippy (open source), un tool .NET che consente di manipolare documenti Office a livello binario, nascondendo il codice VBA dal visualizzatore macro standard. Per il nostro scenario, è utile per iniettare macro in un template pre-esistente da riga di comando senza aprire Office:
EvilClippy.exe -s hidden_macro.vbs Normal.dotm
Ricorda di ripristinare il template originale e le chiavi di registro al termine dell'esercizio. Un file Normal.dotm pulito può essere rigenerato semplicemente rinominando quello corrente e riavviando Word.
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo