Indice dei contenuti
Dopo aver dedicato due guide al glossario delle principali minacce informatiche e alle varie tipologie di phishing, concludiamo questa serie di articoli con un approfondimento sulle principali tipologie di malware in cui è possibile imbattersi (in gran parte veicolate tramite tecniche di social engineering come il phishing) e sugli attacchi informatici più comuni.
L'obiettivo, come sempre, è aumentare la nostra consapevolezza sulle caratteristiche e peculiarità di queste minacce al fine di renderci più equipaggiati per evitarle ovvero di mitigare i rischi di caderne vittima: si tratta di un bagaglio informativo estremamente prezioso per la tutela non soltanto della nostra esperienza di navigazione, ma anche per quella dei colleghi, collaboratori e familiari con cui andremo a condividere questo know-how.
Tipologie di Malware
Il termine Malware è una crasi di malicious software, che significa letteralmente “software malevolo” e quindi “colpevolmente dannoso”. Si tratta dunque di una macro-definizione, all’interno della quale rientrano tutti i programmi informatici usati per disturbare intenzionalmente le operazioni svolte da un utente di un computer: virus, trojan, rootkit, ransomware, worm, botnet, script, etc.
La caratteristica distintiva comune a tutti i malware è il loro essere dei software informatici, quindi strumenti di attacco high-tech: inoltre, salvo rari casi in cui possono essere “auto-eseguiti” da remoto sfruttando delle falle - fortunatamente piuttosto rare - nei sistemi operativi o in taluni software esposti a internet, necessitano sempre di una esecuzione manuale da parte della vittima.
Al tempo stesso, il loro principale vettore di diffusione è a tutt’oggi costituito da messaggi di posta elettronica e/o altre tecniche di ingegneria sociale atte a persuadere le loro vittime ad eseguirli e/o a diffonderli ulteriormente: un perfetto esempio è dato da quei malware che vengono veicolati tramite e-mail sotto forma di false fatture o documenti fiscali inviate da mittenti pensati per essere “verosimili” (agenzia delle entrate, operatori di pubblica amministrazione, studi di avvocati e/o commercialisti, clienti o fornitori, provider internet, banche etc.).
Le finalità ultime di un malware sono spesso legate al furto di dati e/o somme di denaro (account PayPal, numeri di carte di credito, credito telefonico, etc.), cosa che li rende non di rado lo strumento utilizzato da numerosi messaggi di phishing o di scam, sotto forma di “allegati” urgenti e necessari da aprire.
Backdoor
Con il termine backdoor (letteralmente “porta sul retro”) si intende un metodo per scavalcare le procedure standard per l'autenticazione tramite una connessione ad una rete o su internet. Può essere dunque immaginato come un “ponte” di comunicazione tra un sistema e l’altro, costruito per “oltrepassare” i comuni meccanismi di protezione informatica normalmente previsti.
Le backdoor possono essere installate tramite trojan, worm o altri metodi: una volta che il sistema è caduto preda di un malware, installare una o più backdoor è una operazione relativamente facile, ed una delle prime cose che vengono effettuato qualora lo scopo del malware sia quello di favorire o facilitare l’accesso dell’attaccante.
Grayware
Grayware è una definizione generica che si riferisce a tutte quelle applicazioni che presentano un comportamento molesto, indesiderabile o nascosto: non vengono classificate come malware, ma possono diminuire le prestazioni del sistema e possono causare problemi di sicurezza.
Le applicazioni grayware non rientrano in nessuna delle categorie delle principali minacce (virus, trojan, worm etc.) poiché non sovvertono il sistema, ma si limitano ad utilizzarne le funzionalità di base per appesantirlo e/o per mettere in atto comportamenti molesti: si tratta quindi di vere e proprie applicazioni che, invece di aiutare l’utente, ne sfruttano o ne spiano i comportamenti per svolgere i loro scopi. Più che di un virus, dunque, nel caso dei grayware è più corretto parlare di un “parassita”.
In alcuni casi i grayware svolgono funzioni particolarmente moleste, che li rende affini e talvolta sovrapponibili a malware più pericolosi (spyware, adware, dialer fraudolenti, keylogger, backdoor, tool di accesso remoto e altre funzionalità potenzialmente pericolose o comunque indesiderate): per questo motivo, pur non essendo dei virus veri e propri, vengono spesso segnalati come malware dai software anti-virus, che ne consigliano la rimozione. Si tratta di suggerimenti che è quasi sempre opportuno seguire, specialmente per aziende che si occupano di informazioni sensibili e che dovrebbero quindi evitare l’utilizzo di qualsivoglia software che preveda funzionalità di raccolta dati, controllo del comportamento e analisi del sistema.
Rabbit
Il rabbit (“coniglio) è un tipo di malware che attacca le risorse del sistema duplicando in continuazione la propria immagine su disco, o attivando nuovi processi a partire dal proprio eseguibile, in modo da consumare tutte le risorse disponibili sul sistema in pochissimo tempo. Si tratta quindi di un attacco che punta al Denial-of-Service, ovvero alla messa fuori uso del sistema (o del network): a differenza dei comuni più noti cyber-attacchi DoS e DDoS, che operano a livello di porte TCP e protocolli di rete, i rabbit sono dei software installati e/o eseguiti localmente, ovvero direttamente sulle macchine interessate.
Spyware
I programmi malware con lo scopo di monitorare la navigazione web, di mostrare a video pubblicità indesiderate o di reindirizzare i ricavi di Affiliate Marketing, vengono chiamati Spyware. Uno spyware non si diffonde come un normale virus: nella maggior parte dei casi, viene installato come “funzionalità aggiuntiva” di un software di tipo grayware o sfruttando debolezze di altri software o del sistema operativo.
Un classico esempio è dato dagli spyware che vengono distribuiti sottoforma di plugin di browser come Google Chrome o Mozilla Firefox, promettendo funzionalità appetibili (navigazione più veloce o anonima, accesso a servizi non disponibili nel proprio paese, download di file pirata, etc.) che hanno il compito di occultare l’obiettivo reale: una tecnica di diffusione del tutto analogo a quello dei Trojan.
Trojan
In informatica, un Trojan (semplificazione di Trojan Horse, letteralmente “Cavallo di Troia”) è un software apparentemente innocuo che nasconde al suo interno un malware di altro tipo: il suo obiettivo è quello di occultare l’identità del malware così da superare i controlli operati dagli utenti e/o dagli anti-virus fino a quando non riesce ad installarsi sul sistema e rilasciare così il suo contenuto malevolo.
Il termine deriva dalla storia greca del Cavallo di Troia che venne usato dalle truppe greche per invadere la città di Troia di nascosto.
La maggior parte dei trojan vengono diffusi facendo uso di tecniche di ingegneria sociale, ovvero attraverso canali di comunicazione che rivestono una certa fiducia da parte dell’utente (app di instant messaging, e-mail, social network, link con titoli invitanti, etc.).
La maggior parte dei malware basati su macro e veicolati mediante file Word ed Excel è tecnicamente definibile come trojan in quanto sfrutta un file e un applicativo percepiti come innocui e “sicuri”, ma che di fatto vengono utilizzati per installare sul sistema malware anche molto pericolosi. Una discreta percentuale di malware di qualsiasi genere - rootkit, worm, backdoor e ransomware - sono di fatto veicolati all’interno di trojan.
Virus
Il termine “virus” identifica una particolare tipologia di malware che si diffonde “copiandosi” o integrandosi all’interno del codice eseguibile di un altro software: una volta compiuta questa operazione, il virus viene eseguito unitamente all’avvio dell’eseguibile infetto, come se si trattasse di un processo aggiuntivo.
Si tratta di una tecnica di diffusione particolarmente efficace perché, nella maggior parte dei casi, il software “infetto” continuerà a funzionare correttamente, senza destare allarmi particolari.
Una volta eseguito, il virus può effettuare operazioni malevole analoghe a quelle di qualsiasi altro malware (eliminazione di file, apertura di backdoor, acquisizione di dati, etc.); cercherà inoltre di duplicarsi creando nuove copie di sé stesso all’interno di altri eseguibili adatti, così da poter entrare nuovamente in circolo anche dopo essere stato scoperto e/o eliminato dalla memoria del sistema.
Le caratteristiche sopra elencate rendono il virus un malware estremamente insidioso e quindi molto pericoloso in termini di sicurezza.
Worm
Un worm è una particolare categoria di malware in grado di auto-replicarsi: ha un comportamento simile a quello di un virus ma, a differenza di questo, non necessita di essere “eseguito” insieme al suo programma ospite per diffondersi. Trattandosi di un software “autonomo” e a sé stante, può diffondersi in due modi:
- Sfruttando vulnerabilità del sistema bersaglio.
- Sfruttando tecniche di social engineering per invogliare gli utenti ad eseguirlo
- Sfruttando l’operato di altri malware (ad es. trojan).
La maggior parte dei worm, una volta eseguito, si replica in modo simile a quello di un virus: tuttavia, mentre quest’ultimo tende a privilegiare file locali e/o presenti sul sistema infetto (hard-disk, penne USB, etc.), il worm cerca di infettare altri sistemi attraverso protocolli di rete, collegamenti LAN/WAN e/o altre tecniche di connessione, comunicazione e trasferimento dati avanzate.
Rootkit
I rootkit sono dei malware particolarmente insidiosi perché alterano il kernel del sistema operativo, ovvero il software avente il compito di fornire ai processi in esecuzione sul computer un accesso sicuro e controllato alle varie componenti hardware. Questa tecnica consente loro di potersi occultare in modo estremamente efficace, in quanto vengono eseguiti in una fase precedente a quella dei principali software anti-virus e anti-malware, che possono così controllare e/o eludere nei loro processi di scansione.
Il termine rootkit deriva dalla concatenazione di due termini: "root", che indica, tradizionalmente, l'utente con i maggiori permessi nei sistemi Unix, e "kit", che si riferisce al software che implementa lo strumento.
Ransomware
I Ransomware (acronimo di ransom, ovvero “riscatto”, e software) sono malware creati con lo scopo di rendere indisponibili i file contenuti all’interno del sistema che attaccano, per poi richiedere un “riscatto” alla vittima in cambio del ripristino dell’accessibilità ai suddetti: nella maggior parte dei casi, l’indisponibilità dei file è ottenuta sovrascrivendo questi ultimi con una versione criptata degli stessi (un vero e proprio data-encryption at-rest) effettuato con chiavi di cifratura estremamente complesse e note solo a colui che ha costruito il ransomware stesso. Una volta che il ransomware ha finito la sua attività, si “palesa” alla vittima mediante un messaggio a video, nel quale spiega brevemente quanto è accaduto e comunica le modalità di pagamento (quasi sempre tramite Bitcoin o altra criptovaluta).
Tipologie di Cyber Attack
Il termine Cyber Attack (in italiano Attacco Informatico) è utilizzato nella sicurezza informatica per descrivere una qualunque manovra, impiegata da individui o organizzazioni, che colpisce sistemi informativi, infrastrutture, reti di calcolatori e/o dispositivi elettronici personali tramite atti malevoli, provenienti generalmente da una fonte anonima, finalizzati al furto, alterazione o distruzione di specifici obiettivi mediante la violazione di sistemi.
Si tratta dunque di una definizione estremamente generica, che include qualsiasi tipo di attacco basato su e-mail, malware o tecniche di hacking di qualsivoglia tipo.
Gli attacchi informatici sono convenzionalmente suddivisi in due categorie:
- Attacchi Sintattici: tecniche di attacco diretto mediante utilizzo di tecniche informatiche avanzate (hacking) ovvero software malevolo (malware).
- Attacchi Semantici: tecniche di attacco indiretto mediante la modifica di informazioni corrette e nella diffusione di informazioni errate (es. fake news).
In questo articolo ci dedicheremo a sviluppare il concetto di Attacco Sintattico, approfondendo alcune delle principali fonti di rischio a cui è opportuno fare attenzione.
Concetti generali
Una caratteristica comune a tutte le tipologie di attacco informatico di tipo sintattico è che, per essere portate a termine con successo, richiedono che l’attaccante sia in possesso di conoscenze approfondite e infrastrutture adeguate: in altre parole, si tratta di attacchi generalmente definibili come high-tech.
Questo assunto, pur restando sostanzialmente valido nella maggior parte dei casi, si è ammorbidito negli ultimi anni per via della diffusione di vere e proprie “piattaforme” che consentono persino a operatori poco esperti di pianificare e portare a termine con buone probabilità di successo attacchi sintattici di vario tipo: è il caso del phishing, un tipo di attacco che oggi può essere condotto con un investimento assolutamente modesto e un singolo operatore con competenze analoghe a quelle richieste da una normale attività di data-entry. Analogo discorso può essere fatto per una “campagna di diffusione” della maggior parte dei malware elencati nei paragrafi precedenti, che – come abbiamo potuto constatare – vengono diffusi facendo uso di tecniche relativamente semplici.
Poiché queste tipologie di attacchi sintattici sono già state approfondite nei paragrafi precedenti, nei prossimi paragrafi ci dedicheremo a quelle modalità che richiedono una preparazione tecnica più specifica e competenze “informatiche” più approfondite da parte dell’attaccante: la buona notizia è che si tratta generalmente di minacce meno frequenti; la cattiva è che sono decisamente più complesse da comprendere e, di conseguenza, da contrastare.
Man in the Middle
L’attacco man in the middle (spesso abbreviato in MITM, MIM, MIM attack o MITMA, in italiano "uomo nel mezzo") è una terminologia impiegata nella crittografia e nella sicurezza informatica per indicare un attacco informatico in cui qualcuno segretamente ritrasmette o altera la comunicazione tra due parti che credono di comunicare direttamente tra di loro.
Un tipico esempio di attacco man in the middle è l'eavesdropping (ovvero l’atto di “origliare”), in cui l'attaccante crea connessioni indipendenti con le vittime e ritrasmette i messaggi del mittente al destinatario facendo credere loro che stiano comunicando direttamente tramite una connessione privata, mentre in realtà ogni messaggio viene da lui “intercettato”; un altro tipo di attacco man-in-the-middle è lo spoofing, nel quale l’attaccante si “spaccia” per qualcosa di diverso da quello che è in modo da convincere la vittima a comunicare direttamente con lui anziché con il destinatario originale: nella maggior parte dei casi l’attaccante trasmette effettivamente le informazioni ricevute (dopo averle lette o acquisite) al destinatario, così da rendere gli interlocutori inconsapevoli della sua presenza.
L'attacco infatti basa il suo funzionamento sul presupposto che nessuna delle due parti è in grado di sapere che il collegamento che li unisce reciprocamente è stato compromesso.
La maggior parte dei protocolli di crittografia include meccanismi appositi, basati su una doppia autenticazione degli end-point, al fine di prevenire attacchi MITM: ad esempio, il Transport Layer Security (TLS), alla base della maggior parte delle odierne connessioni TCP, si basa sull’autenticazione di una o entrambe le parti mediante una Certificate Authority (CA) reciprocamente attendibile.
Esempio di attacco
Il presente esempio di attacco, disponibile sull’edizione italiana di Wikipedia, spiega in termini molto semplici in cosa consiste un attacco Man in the Middle di tipo eavesdropping.
Supponiamo che Alice voglia comunicare con Bob e che Mallory voglia spiare la conversazione e, se possibile, consegnare a Bob dei falsi messaggi. Per iniziare, Alice deve chiedere a Bob la sua chiave pubblica. Se Bob invia la sua chiave pubblica ad Alice, ma Mallory è in grado di intercettarla, può iniziare un attacco Man in the middle. Mallory può semplicemente inviare ad Alice una chiave pubblica della quale possiede la corrispondente chiave privata. Alice poi, credendo che questa sia la chiave pubblica di Bob, cifra i suoi messaggi con la chiave di Mallory ed invia i suoi messaggi cifrati a Bob. Mallory quindi li intercetta, li decifra, ne tiene una copia per sé, e li re-cifra (dopo averli alterati se lo desidera) usando la chiave pubblica che Bob aveva originariamente inviato ad Alice. Quando Bob riceverà il messaggio cifrato, crederà che questo provenga direttamente da Alice.
- Alice invia un messaggio a Bob chiedendo la sua chiave pubblica.
- Il messaggio viene intercettato da Mallory, che decide di iniziare un attacco Man in the Middle.
- Mallory ritrasmette il messaggio a Bob. Poiché il messaggio proviene da Alice contiene comunque metadati e informazioni pertinenti alla conversazione; di conseguenza, Bob non può sapere che non si tratta realmente di Alice.
- Bob risponde ad Alice comunicando la propria chiave pubblica.
- Mallory sostituisce la chiave di Bob con la propria e la ritrasmette ad Alice, spacciandola per la chiave di Bob.
- Alice cripta un messaggio con quella che crede essere la chiave pubblica di Bob, pensando che solo Bob potrà leggerlo.
- Mallory è in condizione di poter decriptare il messaggio, visto che la sua chiave pubblica è stata (inconsapevolmente) utilizzata da Alice al posto di quella di Bob.
- Mallory legge il messaggio e lo modifica, quindi lo cripta con la chiave di Bob e lo invia a Bob.
- Bob riceve il messaggio e lo legge, credendo che si tratti di una comunicazione sicura proveniente da Alice.
… e così via.
Attacchi di questo tipo sono generalmente possibili contro ogni comunicazione che utilizzi la tecnologia a chiave pubblica: per questo motivo è fondamentale che Alice e Bob abbiano un modo per verificare che le chiavi pubbliche utilizzate siano effettivamente le proprie, e non quelle di un ignoto attaccante. E’ proprio per questo motivo che il Transport Layer Security utilizza una terza parte “attendibile” (la Certification Authority) che ha il preciso compito di garantire la validità delle suddette chiavi: ovviamente si tratta di una soluzione che presenta dei costi aggiuntivi, in quanto il certificato emesso dalla terza parte – così come la sua attività di convalida – hanno dei costi che sia Alice che Bob dovranno necessariamente sostenere.
Cross-Site Scripting (XSS)
Il cross-site scripting (XSS) è una vulnerabilità che affligge siti web dinamici che impiegano un insufficiente controllo dell'input nei moduli (form) utilizzati per acquisire testo da parte dei loro utenti, ad esempio tramite messaggi (forum), commenti agli articoli, parole chiave (query) di ricerca, e così via.
Un XSS permette a un hacker/cracker di inserire o eseguire codice lato client al fine di attuare un insieme variegato di attacchi quali, ad esempio, raccolta, manipolazione e reindirizzamento di informazioni riservate, visualizzazione e modifica di dati presenti sui server, alterazione del comportamento dinamico delle pagine web, ecc.
Nell'accezione odierna, la tecnica descrive attacchi basati sull’inoculazione, nel server bersaglio, di un codice che esegue script lato client (JavaScript, VBScript, Flash) ospitati su un altro server, solitamente sotto il controllo dell’attaccante: lo scopo è quello di fare in modo che il codice malevolo venga inserito dal sito bersaglio all’interno di una o più pagine, così da entrare a far parte del codice della pagina stessa.
Gli attacchi XSS possono essere di due tipi:
- Reflected, quando il codice malevolo non viene memorizzato sul server del sito bersaglio ma inserito nella pagina unicamente in risposta a una azione effettuata dall’attaccante, ad esempio in risposta a una query di ricerca confezionata in modo tale da nascondere al suo interno uno script. In questi casi il codice malevolo viene eseguito solo sul client (browser) dell’attaccante, senza compromettere la sicurezza di qualsiasi altro utente o visitatore del sito.
- Persistent, quando il codice malevolo viene memorizzato sul server del sito bersaglio, ad esempio sotto forma di un post su un forum o un commento a un articolo. In questi casi il codice malevolo viene inserito all’interno di pagine potenzialmente visionabili anche da altri utenti e, di conseguenza, eseguito su tutti i client (browser) degli utenti che visitano quella pagina.
L’effetto di questi script dipende dalle finalità dell’attacco e può variare da un piccolo fastidio “simbolico” (ad es. il defacing del sito bersaglio tramite manipolazione del DOM) a un significativo rischio per la sicurezza, a seconda dei dati presenti sul sito e dalle strategie di sicurezza implementate dai proprietari del sito web. Nella maggior parte dei casi, gli attacchi di tipo reflected vengono utilizzati per acquisire informazioni sul sito bersaglio e/o predisporre il sito per attacchi ulteriori; gli attacchi di tipo persistent hanno invece lo scopo di utilizzare il sito bersaglio per colpire i suoi utenti attraverso l’esecuzione di script malevoli sui loro client (browser). Il sito diventa dunque una sorta di “cavallo di troia”, ovvero un vettore (per di più inconsapevole) di un potenziale malware.
Secondo un rapporto di Symantec nel 2007, l'80% di tutte le violazioni odierne è dovuto ad attacchi XSS.
Cross-Site Request Forgery
Il Cross-site Request Forgery, abbreviato CSRF o anche XSRF, è una vulnerabilità a cui sono esposti i siti web dinamici quando sono progettati per ricevere richieste da un client senza meccanismi per controllare se la richiesta sia stata inviata intenzionalmente oppure no. Diversamente dal cross-site scripting (XSS), che sfrutta il livello di trust tra l’utente e il sito bersaglio, il CSRF sfrutta il livello di trust di un sito nei confronti dei suoi utenti.
Nella maggior parte degli attacchi di tipo CSRF, l’attaccante fa in modo che un utente vittima (che si suppone infettato da un malware o comunque sotto il controllo dell’attaccante), dopo essersi autenticato presso il sito o servizio bersaglio, invii una o più richieste HTTP involontarie. Poiché queste richieste provengono dal suo browser, che risulta regolarmente autenticato, il sito o sistema vittima – se vulnerabile al CSRF – tenderà a considerarle legittime e ad eseguirle, senza sapere che in realtà la richiesta è frutto di un’azione pensata e voluta dall’attaccante della quale la vittima è totalmente ignara. In questo modo l’attaccante può disporre operazioni come trasferimento di fondi, transazioni bancarie, acquisti presso siti di e-commerce, richieste di dati, inserimento di contenuti malevoli, e qualsiasi altra funzione offerta dall'applicazione vulnerabile.
Server-Side Request Forgery
Il Server-side Request Forgery, abbreviato SSRF, è una tecnica di attacco che sfrutta il livello di trust di un sito o sistema nei confronti di altri servizi web con cui è programmato per interagire. A differenza del CSRF, il cui vettore di attacco è tipicamente un client (browser) sotto il controllo totale o parziale dell’attaccante o da questi simulato, il SSRF viene spesso condotto utilizzando server non sicuri all’interno del network del sistema bersaglio e/o simulando il loro comportamento.
Conclusioni
Per il momento è tutto: ci auguriamo che questa serie di articoli possa essere di aiuto per aumentare la consapevolezza di tanti utenti che rischiano quotidianamente di entrare in contatto con questo tipo di minacce durante la loro esperienza di navigazione online.