CLSID: a rischio anche gli allegati di testo e grafica

© 2001-2006 by Paolo Attivissimo. Some rights reserved (alcuni diritti riservati).

Prima versione: 6/5/2001. Ultimo aggiornamento: 16/10/2006.

In breve: è possibile mascherare la vera estensione del nome di un file anche se l'utente ha attivato la visualizzazione delle estensioni. In questo modo, per esempio, un file apparentemente dotato dell'estensione txt viene trattato da Windows come un file eseguibile. Questo agevola notevolmente la disseminazione di virus e simili sui sistemi Windows.

Sistemi colpiti: Microsoft Windows 95, 98, ME, NT, 2000. Alcuni lettori segnalano che Outlook 5.5 e altri programmi rivelano il trucco (mostrando il CLSID, come spiegato più avanti), ma anche così ci vuole un utente esperto per capire il pericolo.

Il problema

Mai fidarsi degli allegati ai messaggi, anche se sono file di testo.

E' consuetudine, anche fra gli utenti più prudenti, ritenere che un file di testo (identificato in genere dall'estensione txt) sia innocuo e non possa contenere virus. Di conseguenza, anche chi installa e usa un antivirus tende a non sottoporre alla sua verifica gli allegati che arrivano, o i file scaricati da Internet, se hanno l'estensione txt. Lo stesso discorso vale per i file che hanno l'estensione gif o jpeg: siamo abituati a ritenere che i file di grafica non possano contenere virus, per cui difficilmente li verifichiamo con l'antivirus prima di aprirli.

Tuttavia in Windows esiste un modo molto semplice per rendere pericolosi anche questi tipi di file. Il "trucco" sta nel dare a un file infettante (per esempio uno script in Visual Basic, come il celeberrimo loveletter.vbs) un'estensione fittizia, in coda alla quale si aggiunge un codice particolare, chiamato CLSID.

Faccio un esempio per chiarire il concetto.

Supponiamo di avere un virus scritto in Visual Basic, che chiamerò virus.vbs. Se un utente lo riceve come allegato, difficilmente lo aprirà cliccandovi sopra due volte, dato che è noto (ma forse non abbastanza) che i file con l'estensione vbs vengono eseguiti, non semplicemente aperti, da Windows e quindi possono iniettare nel sistema operativo ogni sorta di virus e simili.

Ma l'aspirante intruso può usare due tecniche per scavalcare questa reticenza.

Il metodo classico

Una delle soluzioni più classiche (diversa da quella di cui mi occupo qui) è dare al file una doppia estensione, per cui il file viene mandato come allegato dandogli il nome virus.txt.vbs oppure virus.jpg.vbs. Naturalmente nessuno chiama virus un file che deve infettare una macchina altrui, per cui è molto più probabile che al file verrà dato un nome che stimoli il destinatario ad aprirlo, tipo calendario_ferilli.jpg.vbs o il ben noto iloveyou.txt.vbs (questa era infatti la tecnica usata dal virus-worm Iloveyou).

L'uso della doppia estensione inganna facilmente chi lascia le impostazioni standard di Windows, che nascondono le estensioni dei file. Infatti un utente che lascia impostata in questo modo la propria macchina vede il file come se avesse il nome iloveyou.txt, perché l'ultima parte del nome (vbs), che è la vera estensione del nome del file, viene mascherata da Windows.

Se l'utente ha una vaga infarinatura d'informatica, sa che txt è l'estensione che identifica i file di testo, notoriamente incapaci di trasportare virus, e quindi è facile che si fidi del file e lo apra senza prima controllarlo con l'antivirus aggiornato. Se lo fa, la sua macchina viene infettata. Sembra banale, ma questo semplice accorgimento è stato sufficiente a causare la vastissima epidemia del virus Iloveyou e di tutti i suoi cloni (dal 1999 in poi).

Il metodo evoluto: CLSID

La soluzione classica al trabocchetto dell'estensione nascosta è semplice: basta impostare Windows in modo che visualizzi le estensioni dei nomi dei file. La procedura è descritta nella Guida in linea di Windows e può anche essere richiesta al servizio di assistenza tecnica di Microsoft o a quello del produttore del vostro computer.

Purtroppo questo rimedio non è più sufficiente. E' infatti possibile mascherare la vera estensione di un nome di file anche se avete attivato la visualizzazione delle estensioni. Questo problema è stato segnalato da Georgi Guninski (http://www.guninski.com) nella sua newsletter del 16 aprile 2001, dopo essere stato notificato da Guninski stesso a Microsoft alcuni giorni prima.

Oltre alle estensioni dei file tradizionali (txt, vbs, jpeg e simili), infatti, Windows usa anche delle estensioni chiamate CLSID, che sono numeri di 128 bit, scritti in esadecimale e racchiusi tra parentesi. Ciascun CLSID identifica un tipo di file diverso (eseguibile, spreadsheet, documento Word, file audio, eccetera).

Se un file ha come estensione uno di questi CLSID, verrà trattato come un file del tipo corrispondente a quel CLSID, ma l'estensione CLSID non verrà visualizzata da Internet Explorer o Esplora Risorse, anche nei computer in cui l'utente ha attivato la visualizzazione delle estensioni dei file in Windows. Questo consente di inviare alla vittima un file apparentemente innocuo (perché sembra avere un'estensione non pericolosa) che in realtà viene eseguito senza esitazioni da Windows, eventualmente prendendo il controllo del computer.

Faccio un esempio pratico ma innocuo per chiarire il pericolo. Prendiamo il solito virus, virus.vbs. Rinominiamolo in modo più accattivante, moglienuda.vbs. Ovviamente pochi saranno così incoscienti da aprire un file con l'estensione vbs: per cui lo rinominiamo ancora, usando un'estensione "rassicurante", come jpg, e aggiungendogli in coda un CLSID.

Il nome vero del file diventa dunque:

moglienuda.jpg.{00020C01-0000-0000-C000-000000000046}

Tuttavia Windows lo visualizzerà senza mai mostrare il CLSID: sfogliando le directory con Internet Explorer o Windows Explorer/Esplora risorse, tutti gli utenti Windows lo vedranno come moglienuda.jpg, anche se hanno attivato la visualizzazione delle estensioni. La cosa interessante (e pericolosa) è che però Windows tratterà questo file non come un file di grafica JPEG, ma (in questo esempio innocuo) come file audio.

Capito dove sto andando a parare? Usando un CLSID opportuno, si può inviare alla vittima un file che Windows visualizza con un nome e un'estensione del tutto innocui, ma che in realtà è un virus, scritto ad esempio in Visual Basic: cliccandovi sopra, il file verrà eseguito, infettando la macchina.

Ecco una schermata di esempio: è tratta da un computer sul quale è stata attivata la visualizzazione delle estensioni.

schermata di explorer

Guardate il file questo_non_e_un_documento_word.txt. L'estensione è, almeno apparentemente, txt, eppure Windows lo considera come documento Word. Nella schermata trovate anche un finto Cestino (il file not_a_recycle_bin.txt), un finto documento Wordpad, un finto file WAV e un finto collegamento (shortcut).

Tutti questi file hanno l'estensione txt, o almeno così sembrerebbe anche all'utente più smaliziato, eppure ciascuno è considerato da Windows come file di tipo differente. Le applicazioni pericolose di questa tecnica sono evidenti.

Rimedi

Di rimedio, purtroppo, ce n'è uno solo: l'accortezza dell'utente. A differenza dei file normali, i file che hanno un CLSID nascosto hanno un'icona che non corrisponde all'estensione. Ad esempio, come mostrato qui sopra, il file questo_non_e_un_documento_word.txt non ha la solita icona dei file di testo. Inoltre è descritto come Microsoft Word Document, non come Text document (qui mi riferisco alla versione inglese di Windows, ma il concetto è analogo anche in italiano).

Di conseguenza, l'utente può accorgersi del pericolo notando che icona e estensione non corrispondono.

Ma quanti utenti sono così accorti?

Soprattutto, è giusto che un utente debba essere così attento? Non è, piuttosto, colpa di un sistema operativo progettato in modo insicuro?

L'accortezza dell'utente può anche consistere in un atteggiamento più paranoico ma ragionevolmente efficace: controllare sempre e comunque qualsiasi file ricevuto come allegato o scaricato da Internet, qualunque sia la sua estensione, usando un antivirus aggiornato. Non è un bel modo di lavorare, ma con Windows c'è poco da fare.

Dove trovare i CLSID

Questa tecnica di intrusione non richiede competenze particolarmente sofisticate. Ho realizzato l'esempio mostrato in figura usando esclusivamente i normali programmi allegati a Windows. Se ce l'ho fatta io, ce la può fare qualsiasi altro dilettante.

I CLSID, fra l'altro, non sono certo codici segreti. Sono ben documentati sullo stesso sito Microsoft, per esempio qui oppure qui.

Quest'ultimo link spiega addirittura come andarli a trovare: molti CLSID sono già presenti sul vostro computer, nel Registro di Windows, che si può spulciare con il programma Regedit allegato a Windows. Andate nella cartella HKEY_CLASSES_ROOT del Registro: vi trovate tutti i CLSID corrispondenti alle applicazioni che avete installato (e anche a quelle che avete rimosso... il Registro non butta via niente). Ecco alcuni esempi volutamente innocui:

E uno un po' meno innocuo:

Usando queste stringhe tra parentesi graffe come estensione di un file, il file viene gestito da Windows come se si trattasse di un file del tipo corrispondente al CLSID utilizzato, qualunque sia il suo contenuto.

Nota: non chiedetemi di darvi i CLSID più potenti. Non voglio fare il presuntuoso, ma se non sapete come procurarveli da soli, probabilmente non siete ancora all'altezza di maneggiarli senza farvi male o senza far del male a qualcun altro. Ricordate Topolino apprendista stregone? Appunto. Studiate ancora un po', e

Provare per credere

Potete verificare voi stessi, senza alcun pericolo, il funzionamento di questo trabocchetto. Al termine degli esperimenti è sufficiente cancellare tutto per ripristinare la situazione di partenza.

Primo esperimento

Secondo esperimento

Terzo esperimento: l'impossibile

Come ben sapete, in Windows non si possono avere due file omonimi nella stessa directory. Eppure guardate questa schermata:

file omonimi

Ci sono sei file tutti omonimi. O almeno così sembra. In realtà ho creato sei file di nomi diversi, poi ho dato a ciascun file un CLSID differente (che è invisibile) e infine li ho rinominati tutti prova.txt.

Se vi interessa replicare questo semplice esperimento e stupire gli amici mostrando loro una directory piena di file omonimi, potete scaricare qui un file ZIP contenente i sei file "omonimi" mostrati qui sopra.

Avvertenze

In questo articolo ho omesso intenzionalmente quasi tutti i CLSID che possono essere usati per rendere eseguibili i file. Non voglio aiutare aspiranti pirati a commettere danni; voglio però informare gli utenti onesti del pericolo che corrono. Usate queste informazioni in modo responsabile.

Commenti dei lettori

Un lettore (augsca) segnala che Wincommander, un programma simile per interfaccia a quella del rimpianto Norton Commander, mostra tranquillamente la doppia estensione nella forma del CLSID, come mostrato dall'immagine qui sotto.

wincommander