Questi tipi di virus informatici infettano solamente i file di dati (e non i programmi) e precisamente quei file di documenti al cui interno possono essere contenute le macro definizioni. Le macro sono delle sequenze di istruzioni (i famosi script) scritti in linguaggio VBA (Visual Basic for Application) utilizzate nei programmi della suite Office, come Word ed Excel, allo scopo di automatizzare certe operazioni sui documenti ed aumentarne quindi la flessibilità e le potenzialità.
Questi processi di automazione, però, possono venire sfruttati dai virus di macro. Generalmente, per assicurarsi di venire eseguiti il più spesso possibile, essi vanno ad infettare i modelli standard (nel caso di Word il file Normal.dot), cioè quei documenti nuovi e vuoti che ci vengono presentati all’apertura di un programma di Office. In questo caso ogni nuovo documento creato sarà automaticamente infetto.
Altra tecnica usata da questi virus è quella di andare a modificare le macro associate alle voci di menù (ad esempio Apri, Salva, Salva con nome, ecc.); quando si andrà a scegliere una di queste voci sarà eseguito anche il codice virale e potranno così essere infettati nuovi documenti. Esistono moltissimi virus di macro poiché sono solitamente più semplici da realizzare rispetto ai virus delle tipologie precedenti; se creati adeguatamente, inoltre, possono colpire anche sistemi operativi completamente diversi tra di loro (considerato che esiste Office per Macintosh…). Considerato che lo scopo di un virus è quello di infettare più programmi e più sistemi possibili, esso deve necessariamente prolungare il più possibile la sua esistenza, nascondendo la sua presenza. Tanto più piccolo è un oggetto, tanto più grandi sono le possibilità che esso passi inosservato: la dimensione di tali programmi maligni infatti generalmente non supera le poche decine di KB, grazie anche alla codificazione di molti di loro in linguaggio Assembly. Ma non è tutto: alcuni virus “intelligenti” utilizzano altre tecniche per cercare di rendersi invisibili e di passare inosservati ai software antivirus: la tecnica stealth e la tecnica del polimorfismo. La tecnica stealth (propria dei virus stealth) consente al virus di monitorare, grazie ad una parte di esso che rimane costantemente in memoria, le chiamate dei programmi ad alcune funzioni del sistema operativo. In questo modo, ad esempio, un virus di boot può “accorgersi” del tentativo di un’applicazione di leggere dal settore di boot o dall’MBR, ripulendo preventivamente quel settore dal suo codice, per poi reinfettarlo nuovamente a lettura conclusa. In maniera del tutto analoga i virus di file possono ripulire temporaneamente i programmi infetti.
Il rovescio della medaglia è che i software antivirus possono facilmente rilevare la parte di codice virale costantemente presente in memoria. Una delle prime operazioni che un virus effettua prima di infettare un oggetto è quello di controllare che in quell’oggetto non sia già presente una copia di se stesso: una duplice infezione, infatti, potrebbe compromettere la sua funzionalità e quindi la sua esistenza. Per svolgere questa azione, il virus cerca nell’oggetto in questione la presenza o meno di una stringa che lo caratterizza. Se la stringa viene trovata, significa che l’oggetto è già infetto; nel caso opposto, viene effettuata l’infezione. Se da una parte questa tecnica assicura la sopravvivenza al virus, dall’altra lo rende vulnerabile: la stringa rappresenta infatti la sua firma, che sta alla base delle definizioni utilizzate dai software antivirus per il riconoscimento dei codici virali. La tecnica del polimorfismo, propria dei virus detti polimorfici (nonché anche più evoluti), permette loro di superare questa vulnerabilità utilizzando la crittografia: un codice criptato è infatti difficilmente analizzabile se non se ne conoscono l’algoritmo tramite il quale è stato criptato e la relativa chiave. I virus polimorfici hanno al loro interno diverse funzioni di cifratura, o addirittura un generatore di cifratura casuale, usati per criptare ogni loro copia attraverso algoritmi sempre differenti. Solo la conoscenza di tutte queste funzioni di cifratura può permettere ad un antivirus di riconoscere il codice virale.