[da GNOSIS, rivista italiana di intelligence, a cura del Sisde, numero 1/2005]
Il fatto che il computer, in senso lato, sia uno strumento di comunicazione valido e flessibile è ormai evidente a tutti. Se ci si ferma a riflettere sulla quantità di dati quotidianamente elaborati e trasmessi da un qualunque sistema informativo risulta chiaro come l’infrastruttura informatica sia diventata indispensabile: le informazioni memorizzate nei sistemi, la connettività tra questi e la continuità del servizio sono diventate preziose e irrinunciabili. Il valore dell’informazione di cui parliamo è quasi sempre legato alla riservatezza e all’integrità dei dati, problemi di sicurezza che accomunano i “dati sensibili” e che sono stati finalmente recepiti in ambiente tecnico e legale. Il dato informatico, per la sua natura “non fisica”, oltre a godere di innumerevoli vantaggi in termini di gestione è soggetto ad una serie di rischi elevati, ad esempio la sua sottrazione (copia) non lascia alcuna traccia. Inoltre esiste sempre la possibilità che un dato residente su un sistema interconnesso ad altri sia osservato attraverso mezzi puramente logici non tracciabili.
Al di là della possibilità di trafugare documenti o dati strutturati da sistemi preposti unicamente al relativo trattamento, esiste anche la possibilità del controllo remoto di singole postazioni di lavoro. Con l’evoluzione dell’hardware e del software, infatti, i terminali sono stati sostituiti da personal computer con intelligenza e memorie di massa autonome. Questi sono impiegati dagli utenti per compiere una vasta gamma di operazioni che risultano essere in una mole di informazioni di grande valore per un eventuale malintenzionato.
Il tracciamento delle operazioni compiute su un personal computer è il tema che intendiamo trattare.
Intercettazione dei dati in transito sulla rete
La più semplice minaccia alla privacy delle attività compiute su un personal computer collegato ad Internet è la possibilità di analizzare il traffico generato da questo in rete.
Per poter intercettare i dati scambiati da un PC in rete è sufficiente:
– Controllare, potendo manipolare fisicamente, la connessione del PC ad Internet (es. connessioni telefoniche PSTN (1) e ISDN (2) o connessioni a banda larga come ADSL (3) , etc.);
– Controllare a livello logico un nodo di routing impiegato nella comunicazione del PC con internet (es. il RAS (4) o un router (5) dell’ISP (6) , il firewall (7) della struttura entro la quale è collegato il PC, etc.);
– Controllare, a livello logico, un dispositivo in grado di catturare “passivamente” il traffico di rete del PC che possa operare come "sniffer" (8) (es. un PC connesso in LAN (9) “non-switched” con il PC che si intende intercettare).
Con uno qualunque dei sistemi esposti è possibile memorizzare tutti i pacchetti inviati e ricevuti sulla rete da una determinata postazione. Tutto quanto transita su Internet, per ovvie ragioni di interoperabilità, è strutturato in base a protocolli standard e di norma pubblici e ben conosciuti. Chi intenda quindi decodificare le comunicazioni dovrà:
– Catalogare i pacchetti catturati secondo i criteri dello Stack ISO/OSI (10)
– Raccogliere i pacchetti deframmentandoli e ricomponendo le sessioni TCP/IP (11)
– Attivare un parser specifico per ciascuna sessione TCP/IP ricomposta. Molti dei protocolli più diffusi utilizzano un set di comandi e stringhe di controllo ASCII (12) assolutamente human-friendly (intelligibile senza una ulteriore decodifica), ad esempio i protocolli SMTP (13) , POP3 (14) e IMAP (15) della posta elettronica e HTTP della navigazione su WEB (16) .
Superati alcuni aspetti tecnici di minore importanza è pertanto semplice, per un “ascoltatore passivo” esterno al personal computer, ricostruire quanto questo comunichi in rete.
Tutto ciò che non ricade sotto il nostro diretto controllo fisico e logico deve, pertanto, essere ritenuto untrusted (non-fidato) e trattato come tale.
Per bloccare questo tipo di minaccia non esistono stratagemmi o accortezze realmente efficaci: l’unico sistema che può proteggere le comunicazioni è l’impiego di crittografia end-to-end, che, quindi, preveda che i dati (messaggi completi o singoli pacchetti) siano cifrati dal mittente dell’informazione e decifrati direttamente e soltanto dal legittimo destinatario.
Per assolvere a questo compito esistono numerosissimi software:
– Applicativi in grado di cifrare file e messaggi, basati sia su crittografia asimmetrica (17) (adatta al modello di comunicazione della posta elettronica), sia su crittografia simmetrica (18) (per conservazione di dati personali, anche in file-system completamente cifrati);
– Moduli software che permettono di realizzare connessioni cifrate in tempo reale, sia di singole sessioni TCP/IP (SSL (19) o equivalenti), sia dell’intero stack IP (tecnologie VPN (20) , IPSEC (21) o equivalenti).
Sorveglianza attraverso sistemi “Hardware”
È semplice intuire come un PC, “predisposto” ad hoc da un punto di vista hardware, possa consentire un totale controllo su quanto vi venga elaborato e trasmesso.
Allestire un PC inserendovi dei “moduli di raccolta dati” che catturino le informazioni elaborate in maniera completa e intellegibile per chi poi ne fruirà non risulta un compito banale.
La varietà degli applicativi software utilizzabili dall’utente e delle periferiche, che questo potrebbe impiegare, potrebbero vanificare un modulo di raccolta dati.
Ad esempio:
Tecnica di sorveglianza adottata |
Problemi connessi
|
Se si impiega un “keylogger (22) ” hardware,in grado di memorizzare i messaggi inviati dalla tastiera all’unità centrale ( gli scancode (23) )… |
…l’utente può utilizzare una tastiera “virtuale” (sul display del pc, controllata via mouse, inclusa di serie nel sistema operativo) o un altro dispositivo di input, vanificando completamente il modulo di raccolta dati.
|
Se si intende registrare tutti i dati inviati e ricevuti dalla rete utilizzando una scheda di rete progettata ad hoc… |
si dovrà tenere presente che la quantità di “rumore di fondo”, rispetto alle comunicazioni davvero interessanti da parte dell’utente, è enorme. Si richiederà, pertanto, una grande capacità di memoria non volatile (difficilmente occultabile) per memorizzare tutto il traffico e successivamente si dovrà impiegare un analizzatore di traffico per decodificare quanto registrato. Si consideri anche che le comunicazioni cifrate non potranno essere decodificate.
|
Se si intende catturare quanto viene visualizzato sul display del PC… |
… si dovrà considerare che la memorizzazione in qualunque formato digitale di qualità adeguata richiederà una enorme capacità di memoria non volatile da integrare nel display o un canale di trasmissione remoto ad alte prestazioni (presumibilmentewireless) verso un sistema ricevente.
|
Se si intendono catturare i dati memorizzati sulle unità di memoria di massa del PC… |
… si deve considerare che una unità di memoria è un dispositivo in continua trasformazione. Pertanto si dovrà effettuare la registrazione di tutte le modifiche ai file-system (24) completa delle informazioni temporali per ricostruire lo stato del file-system stesso in un determinato momento, altrimenti i dati catturati potrebbero risultare corrotti. La registrazione richiederà in ogni caso una enorme quantità di memoria non volatile da occultare, sufficiente a dare un quadro completo delle attività svolte.
|
Sorvegliare un PC con moduli di raccolta dati implementati in hardware è quindi un’attività costosa, sia per l’hardware impiegato sia per i costi di gestione dell’attività di sorveglianza, che si configura come un compito ben diverso dal semplice impiego di una generica “microspia ambientale”.
Ipotizzando che i moduli di raccolta dati siano stati realizzati in maniera impeccabile, in modo da non alterare minimamente le funzionalità e le prestazioni del PC, l’unico modo che ha l’utente per difendersi da questa minaccia è l’analisi minuziosa del proprio PC; ad esempio operando periodicamente un confronto di verifica tra macrofotografie scattate alle parti e alle schede interne del PC al momento del suo acquisto o in una situazione considerata trusted (di totale fiducia) e quanto effettivamente si trova all’interno del PC con il passar del tempo.
Sebbene da un punto di vista teorico sia possibile clonare l’aspetto di una motherboard o di altre schede del PC alterandone le funzionalità, ben difficilmente sarà possibile occultare la quantità di memoria non volatile richiesta per la registrazione dei dati (es. memoria flash per un minimo di svariati gigabyte) e la sua logica di controllo con le interfacce per i vari moduli di raccolta dati in modo che il tutto risulti completamente invisibile ad una analisi attenta.
Sorveglianza attraverso sistemi Software
La sorveglianza di un PC basata sul software è un’attività salita di recente agli onori della cronaca per la sempre maggiore diffusione di programmi denominati “Spyware”. Esistono numerosissimi “Spyware” e moltissimi sono distribuiti dai propri autori ad un gran numero di utenti casuali tramite spam (25) , worm (26) , trojan horse (27) , exploit (28) di vulnerabilità dei browser (29) , o altre tecniche. Questi Spyware sono di solito molto grezzi e il loro fine è di raccogliere informazioni presenti sul sistema “infetto” che siano facilmente sfruttabili a fini di lucro, ad esempio numeri di carte di credito. Per il loro vettore di infezione e per i loro meccanismi di comunicazione, questi Spyware sono accomunabili a:
– software differenti. I software detti “ad-ware” che hanno lo scopo di raccogliere informazioni sui sistemi infetti a fini pubblicitari e/o di infastidire l’utente visualizzando, frequentemente, messaggi pubblicitari con l’intento di disorientarlo, forzandolo a visitare determinati siti web;
– software detti “dialer” che hanno lo scopo di configurare il PC infetto in modo che questo si colleghi ad internet automaticamente utilizzando un RAS con tariffa speciale (es. numeri internazionali, o nel caso dell’Italia, i cosiddetti "servizi in decade" 144, 166, etc.) truffando l’utente con l’addebito in bolletta di un servizio che egli non ha richiesto volontariamente. Quasi tutti i software di queste categorie, per quanto estremamente fastidiosi, sono identificati, disattivati e rimossi, al pari dei virus, da appositi software di sicurezza specializzati. Inoltre, essi non adottano tecniche evolute di raccolta dati o di comunicazione, dato che sono destinati ad aver vita breve, e non rappresentano una vera minaccia per gli utenti.
Alcuni Spyware sono prodotti “commerciali”, sviluppati, pubblicizzati e commercializzati dalle ditte produttrici come software per il controllo “legittimo” di proprie postazioni di lavoro, con il pretesto di sorvegliare l’operato dei familiari sul PC o tracciare le attività compiute da colleghi sul PC che si usa al lavoro.
Anche alcuni software di amministrazione remota possono essere considerati Spyware, per quanto solitamente si tratti di software che rendono ben manifesta la propria presenza nel sistema controllato e non impiegano alcun offuscamento delle proprie attività, pertanto dovrebbero risultare piuttosto evidenti all’utente del sistema.
Alcuni Spyware sono prodotti più o meno “artigianali”, opera di specialisti di sicurezza informatica (o di hacker), nati con l’obiettivo di controllare un ristretto numero di obiettivi ritenuti di alto valore strategico.
Molti di questi Spyware non vengono analizzati pubblicamente poiché vengono scoperti e rimossi a mano o disattivati remotamente quando cessano di essere utili.
Da sempre questa “utenza” impiega backdoor (30) di vario tipo per continuare ad accedere illegittimamente ad un sistema server dopo averlo violato. I principali requisiti per una backdoor sono principalmente la sua “introvabilità” e la sua affidabilità: analoghe qualità saranno caratteristiche di questi Spyware.
Gli Spyware di questa ultima categoria rappresentano sicuramente la minaccia più sofisticata per la sicurezza di un PC. Il controllo locale a livello logico del sistema consente ad uno Spyware di:
– Registrare tutti i dati inseriti con qualunque dispositivo di input utente, come tastiera, mouse e altri dispositivi, connessi con qualunque interfaccia o anche virtuali.
– Registrare tutto quello che viene visualizzato sullo schermo del PC, catturando le chiamate alle API (31) del sottosistema grafico oppure la memoria della scheda video.
– Registrare tutti i suoni riprodotti o registrati dalla scheda audio del PC, eventualmente attivando un microfono o una webcam qualora questi fossero disponibili.
– Registrare tutto quanto viene elaborato dai vari applicativi, sia che questo venga salvato su disco, sia che venga trasmesso sulla rete. Operando in modalità “event driven” o con “polling”, catturare aree di memoria contenenti dati volatili in uso da applicativi di qualunque natura (ad esempio buffer di memoria utilizzati da applicativi che si avvalgono di crittografia, prima che i dati in essi contenuti vengano cifrati).
– Memorizzare localmente tutto quanto viene registrato, eventualmente rendendo invisibili i file utilizzati.
– Inviare remotamente i dati acquisiti, disabilitando tutti i meccanismi di sicurezza eventualmente presenti nel sistema (firewall, policy di logging, etc.) in modo da non essere rilevato.
– Controllare attivamente il sistema, ad esempio prendendo il controllo di mouse e tastiera, eseguendo processi o manipolando file e chiavi di registro senza che l’utente possa intervenire.
Per difendersi da Spyware di questo tipo, gli utenti dovrebbero utilizzare sistemi operativi intrinsecamente sicuri oppure rinforzati con apposite procedure e strumenti di terze parti, in particolare dotati di:
– controlli di integrità su tutti i file di sistema e i file di configurazione;
– un sistema antivirus e antispyware, costantemente aggiornato;
– capacità di definire utenti con un profilo di accesso alle risorse limitato (naturalmente l’utente dovrà sempre utilizzare un profilo ristretto, quando possibile,per compiere le sue attività ordinarie);
– un sistema di aggiornamento automatico del sistema operativo stesso;
– un personal firewall e un personal IDS (32) , costantemente aggiornati.
Tuttavia, nel caso di Spyware particolarmente sofisticati le generiche raccomandazioni di sicurezza potrebbero non essere sufficienti: in questa “guerra virtuale” è avvantaggiato colui il quale conosce il maggior numero di informazioni sul nemico e, dato che gli strumenti di difesa sono pubblicamente noti, chi scrive un nuovo Spyware può concepirlo in modo che non sia rilevato automaticamente.
Uno Spyware, infatti, può impiegare una tecnica chiamata “hooking” per intercettare le API ritenute interessanti al fine della registrazione dei dati, catturando un buffer di informazioni mentre passa ad esempio da un applicativo a una funzione di sistema.
Questa stessa tecnica consente allo spyware di alterare “al volo” il buffer di informazioni intercettato, il che permette in alcuni casi di occultare l’esistenza dello spyware stesso.
Ad esempio, ammesso che l’API intercettata sia“findfirst – findnext” del sistema operativo Microsoft Windows o “opendir – scandir” di BSD, che permettono entrambe di effettuare la scansione di una directory al fine di enumerare i file che vi sono presenti, tramite la manipolazione dei valori di ritorno sarà possibile far “saltare” la visualizzazione di uno o più file che si intendono nascondere, indipendentemente da quale sia l’applicativo che sta effettuando la scansione.
La “tecnica dell’hooking”, come molte altre utilizzate dagli Spyware, non può essere disabilitata a livello di sistema operativo perché è indispensabile per il corretto funzionamento di molti driver e alcuni applicativi legittimi (in primis gli stessi software di sicurezza, in particolare gli antivirus).
In alcuni casi è estremamente difficile trovare uno Spyware evoluto in un sistema “vivo”.
Se questo prevede comunicazione verso l’esterno per l’esportazione dei dati raccolti nel sistema infetto, il momento della comunicazione è anche il suo punto debole: uno sniffer sarà in grado di registrare i dati trasmessi evidenziando la presenza di un software anomalo nel sistema, ma la ricerca dei file che lo costituiscono e lo studio dei suoi meccanismi interni di funzionamento dovrà essere effettuato manualmente.
Se lo Spyware si rivelasse particolarmente resistente ai tentativi di identificazione e rimozione, potrebbe essere necessario analizzare i filesystem del sistema infetto su un PC differente, non avviando quindi il sistema operativo contaminato dallo Spyware, bensì un esemplare certamente “pulito”. In questa condizione nessuno Spyware è in grado di attivarsi e nascondersi.
Da questa breve panoramica emerge come esistano differenti tecniche di controllo di un PC, nessuna delle quali è in grado di garantire la raccolta di dati completi e coerenti e allo stesso tempo risulti impossibile da scoprire.
Allo stesso modo, non esiste uno strumento di difesa che metta completamente al riparo dalla minaccia.
(1)PSTN: “Public Switched Telephone Network” è la rete telefonica analogica tradizionale (2)ISDN: “Integrated Services Digital Network” è la rete digitale per telefonia e servizi (3)ADSL: “Asymmetrical Digital Subscriber Line” è la tecnologia per connessioni a banda larga più diffusa in Italia e sfrutta il normale doppino telefonico come mezzo trasmissivo (4)RAS: “Remote Access Server” (o Service) (5)Router: dispositivo preposto allo smistamento dei pacchetti tra differenti segmenti di rete (6)ISP: “Internet Service Provider” (7)Firewall: dispositivo, o modulo software, preposto all’applicazione di regole di sicurezza su un flusso dati in transito sulla rete. Il firewall può bloccare o consentire il passaggio di pacchetti e sessioni attraverso il nodo di rete che controlla oppure le schede di rete del PC su cui è installato. Normalmente un firewall è in grado anche di avvertire l’utente dell’esistenza di pacchetti e sessioni che violino le regole di sicurezza impostate. (8)Sniffer: dispositivo o modulo software in grado di registrare i dati in transito attraverso le interfacce di rete controllate. Spesso è dotato di una interfaccia utente in grado di visualizzare i dati acquisiti in un formato utile alla loro analisi da parte dell’utente. (9)LAN: “Local Area Network” è la generica definizione delle reti locali presenti all’interno di una struttura informatica. La tecnologia più diffusa per la realizzazione delle LAN è chiamata “Ethernet”. (10)Stack ISO/OSI: in italiano “Pila ISO/OSI”, è il modello architetturale che descrive i protocolli impiegati in una rete telematica come una pila. Al livello più basso vi sono i protocolli di minor livello di astrazione, più vicini quindi allo strato “fisico” del trasporto dei dati. Al livello più alto vi sono i protocolli applicativi, che consentono il dialogo tra software ad elevato livello di astrazione. Questo modello è nato per assicurare la massima interoperabilità tra dispositivi e applicativi differenti ma non è detto che tutti i sistemi informativi vi siano conformi o che tutti gli applicativi sfruttino esplicitamente tutti i livelli della pila. (11)TCP/IP: Protocollo per il trasporto dati impiegato su Internet. Il protocollo IP “Internet Protocol” (livello 3 della pila ISO/OSI) assicura la consegna dei pacchetti (anche detti datagrammi) tra due sistemi (anche detti host) collegati ad Internet. Il TCP, “Transmission Control Protocol” è un protocollo di livello 4 che viene trasportato all’interno dei pacchetti IP e consente di stabilire una connessione virtualmente diretta tra due sistemi, assicurando che tutte le informazioni trasmesse arrivino a destinazione nello stesso ordine con il quale sono state trasmesse. (12)ASCII: American Standard Code for Information Interchange. Lo standard che definisce la corrispondenza tra simboli alfanumerici e codici numerici, così come vengono elaborati i caratteri all’interno dei computer. (13)SMTP: “Simple Mail Transfer Protocol”, basato su TCP, serve per spedire posta elettronica da un client verso un server e tra server e server. (14)POP3: “Post Office Protocol version 3”, basato su TCP, è il protocollo più utilizzato per prelevare posta elettronica da un server. (15)IMAP: “Internet Message Access Protocol”, basato su TCP, permette di prelevare posta elettronica da un server. Nella versione 4 è sensibilmente più flessibile ed evoluto del protocollo POP3, permettendo ad esempio di compiere ricerche sui messaggi ricevuti senza doverli prelevare interamente dal server, tuttavia non è largamente diffuso. (16)WWW/WEB: “World Wide Web” l’insieme dei server che distribuiscono documenti tramite una tecnologia ipertestuale multimediale denominata HTML (HyperText Markup Language) e il protocollo HTTP (HyperText Transfer Protocol). (17)Crittografia asimmetrica o a chiave pubblica: è un tipo di crittografia relativamente giovane (inventata circa 30 anni fa, ma che ha visto una ampia diffusione solo in tempi più recenti). Permette la cifratura di un messaggio con la chiave del destinatario dell’informazione (detta chiave pubblica) e la decifratura dello stesso messaggio con una chiave differente, (detta chiave privata) che è legata algoritmicamente alla chiave pubblica ma non è derivabile da questa. Il vantaggio della crittografia asimmetrica è quello di poter instaurare comunicazioni cifrate tra due punti senza dover preventivamente scambiare e condividere una chiave segreta tra questi. Gli algoritmi crittografici a chiave pubblica sono anche alla base delle tecnologie di firma digitale. (18)Crittografia simmetrica: è la crittografia più “tradizionale”, che fa uso di algoritmi in grado di elaborare blocchi o sequenze di informazioni utilizzando la medesima chiave per le operazioni di cifratura e decifratura. (19)SSL: “Secure Socket Layer” è una tecnologia che integra, tramite apposite API, cifratura su connessioni TCP. È impiegata anche nell’HTTPS, ossia il protocollo HTTP con estensioni crittografiche trasparenti all’utente finale. (20)VPN: “Virtual Private Network” è il termine generico per definire le tecnologie che consentono l’instaurazione di un canale crittografico che incapsuli il traffico di rete a livello 3 (IP). Grazie a queste tecnologie è possibile trasportare protocolli nativamente non sicuri attraverso un canale cifrato senza dover modificare gli applicativi esistenti né richiedere alcun tipo di intervento da parte dell’utente. (21)IPSEC: “IP Security” è una tecnologia diventata lo standard tecnologico per la realizzazione di VPN che richiedano interoperabilità tra dispositivi e software differenti. (22)Keylogger: un dispositivo hardware o un modulo software in grado di registrare quanto viene digitato sulla tastiera di un PC. (23)Scancode: è il singolo messaggio inviato dalla tastiera verso l’unità centrale che lo interpreta convertendolo in un codice alfanumerico o in un simbolo, in funzione degli applicativi e del linguaggio impostato nel sistema. (24)File-system: è l’insieme della struttura in base alla quale sono organizzati i file e le directory su una unità di memoria di massa e il software necessario a gestirla. Alcuni filesystem di larga diffusione sono FAT (File Allocation Table, del DOS e Windows 95/98/ME), NTFS (New Technology File System, di Windows NT, 2000, XP, 2003, etc.), Ext2/3 (Linux) e anche ISO9660 e Joliet (entrambi standard per file-system dei CDROM). (25)Spam: Messaggi di posta elettronica “spazzatura”. Tipicamente si tratta di messaggi pubblicitari non richiesti che sovente “infestano” le caselle di posta elettronica. (26)Worm: un particolare tipo di software che si diffonde autonomamente tra i sistemi interconnessi, sfruttando specifici errori di programmazione o di configurazione del software presente in essi. Gli attuali worm attaccano principalmente sistemi Microsoft Windows e si diffondono tramite exploit dei browser o dei client di posta elettronica. (27)Trojan horse: è un oggetto software che appare inoffensivo e viene attivato deliberatamente dall’utente. Questo software esegue una procedura più o meno maligna, danneggiando il sistema o installando backdoor, dialer, spyware o altro. (28)Exploit: procedura o strumento in grado di trarre vantaggio da una vulnerabilità di un software. Tipicamente l’Exploit è il modulo software che consente ad un worm o un utente maligno di violare un sistema e di installare successivamente una backdoor. (29)Browser: con il nome di browser si definiscono genericamente i client per la “navigazione” nel World Wide Web, ossia i client del protocollo HTTP, con annesso interprete e visualizzatore HTML. (30)Backdoor: è un sistema di accesso “non ufficiale” alle risorse di un sistema. Spesso è costituito da un piccolo software nascosto nel PC, a volte può trattarsi anche di una configurazione del sistema operativo tale da consentire un accesso amministrativo non controllato. Le backdoor più sofisticate conosciute integrano meccanismi di cancellazione delle tracce dell’utente maligno che le utilizza, occultazione dei processi avviati illegittimamente e altre utility, a volte anche definite collettivamente “rootkit” (da “root” che è il nome dell’account da amministratore del sistema in UNIX). (31)API: “Application Program Interface” è l’insieme di routine, funzioni di sistema o chiamate di libreria che consente la creazione delle applicazioni. Spesso si parla di API riferendosi all’interfacciamento a specifiche funzionalità (es. API crittografiche, API multimediali, API di rete, etc.). (32)IDS: Intrusion Detection System, un dispositivo hardware o strumento software in grado di individuare attività sospette, potenzialmente riconducibili ad attacchi informatici, esaminando i dati in transito sulla rete (Network IDS, che opera come uno sniffer) o le attività del sistema operativo. |