Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli

Dispensa del corso di Cybersecurity, Dispense di Sicurezza delle reti

La dispensa espone in maniera chiara e dettagliata gli argomenti del corso che sono: monitoraggio e network analysis, politiche di sicurezza e controllo accessi, firewall di nuova generazione, sistemi IDS e IPS, attacchi in rete (network e port scanning, DDOS, Hijaching, Botnets, etc...), anonimato in rete (Tor e Freenet), e-mail security, web security (TLS, HTTPS, buffer-overflow, sql injection, cross-site scripting), Gestione degli incidenti e cooperazione per il tracciamento a ritroso.

Tipologia: Dispense

2019/2020
In offerta
30 Punti
Discount

Offerta a tempo limitato


Caricato il 07/06/2020

Gianmarco594
Gianmarco594 🇮🇹

4.6

(15)

2 documenti

1 / 180

Toggle sidebar
Discount

In offerta

Spesso scaricati insieme


Documenti correlati


Anteprima parziale del testo

Scarica Dispensa del corso di Cybersecurity e più Dispense in PDF di Sicurezza delle reti solo su Docsity! Dispensa del corso di Cybersecurity Università degli Studi di Salerno Dipartimento di Informatica Corso di laurea Magistrale in Informatica Anno Accademico 2019-2020 A cura del Prof. Francesco Palmieri fpalmieri@unisa.it Gianmarco Beato e Alfredo Biagio Sarno Versione 1.0 i INDICE Indice Introduzione ..................................................................................................................................................... 1 1. Monitoraggio e network analysis ........................................................................................................... 4 1.1 Architettura di base ............................................................................................................................ 5 1.1.1 Il flusso ...................................................................................................................................... 6 1.1.2 Osservare il traffico: lo sniffing ................................................................................................. 6 2. Politiche di sicurezza e controllo accessi .............................................................................................. 12 2.1 I punti di intervento ......................................................................................................................... 12 2.1.1 Border router............................................................................................................................ 12 2.1.2 Firewall .................................................................................................................................... 13 2.1.3 Filtraggio sul bordo: controlli sul border router ...................................................................... 14 2.1.4 Filtraggio sul bordo: controlli sul firewall ............................................................................... 15 2.1.5 Controllo accessi a livello utente ............................................................................................. 16 2.2 Il modello di access control ............................................................................................................. 17 2.2.1 La sintassi delle ACL .............................................................................................................. 19 2.3 Spoofing dell’indirizzo IP ............................................................................................................... 22 2.4 Esempio di definizione di una semplice politica di controllo accessi ................................................. 22 2.5 Strategie per il controllo degli accessi ............................................................................................. 25 2.6 Architetture per il controllo degli accessi ........................................................................................ 25 2.7 Network Access Control .................................................................................................................. 30 2.7.1 Le principali funzionalità del NAC ......................................................................................... 30 2.7.2 I concetti di base del NAC ....................................................................................................... 30 2.7.3 I componenti di un NAC ......................................................................................................... 32 2.7.4 Esempio di transazione NAC .................................................................................................. 34 3. Next Generation Firewalls e Intrusion Detection/Prevention Systems ................................................ 35 3.1 Next Generation Firewalls ............................................................................................................... 35 3.1.1 Funzionalità fondamentali ....................................................................................................... 36 3.1.2 Classificazione del traffico ...................................................................................................... 36 3.1.2.1 NBAR ................................................................................................................................... 37 ii INDICE 3.2 Intrusion detection ........................................................................................................................... 39 3.2.1 Differenza tra IDS e Firewalls ................................................................................................. 40 3.3 Intrusion Prevention System ............................................................................................................ 40 3.3.1 Vantaggi e svantaggi di un IDS e di un IPS ............................................................................ 41 3.4 Componenti architetturali di un IDS/IPS ......................................................................................... 42 3.5 Approcci e implementazioni ............................................................................................................ 43 3.5.1 Implementazioni Host-Based .................................................................................................. 43 3.5.2 Implementazioni Network-Based ............................................................................................ 44 3.5.3 Approccio Misuse detection .................................................................................................... 44 3.5.4 Approccio Anomaly detection ................................................................................................. 45 4. Attacchi in rete ....................................................................................................................................... 51 4.1 Classificazione degli attacchi .......................................................................................................... 51 4.2 Networking scanning: tecniche di network mapping e port scanning ............................................. 53 4.2.1 Tecniche di network mapping ................................................................................................. 53 4.2.2 Tecniche di port scanning ........................................................................................................ 57 4.3 Denial of Service: tassonomia e analisi delle principali tecniche di attacco ................................... 61 4.3.1 Bandwidth saturation DDoS .................................................................................................... 62 4.3.1.1 Botnets come vettori di attacco: modelli e attacchi ............................................................ 67 4.3.2 Resource starvation DDoS ....................................................................................................... 75 4.4 Hijacking ......................................................................................................................................... 83 4.4.1 Hikacking del protocollo di routing BGP ................................................................................ 88 4.4.2 MPLS: il paradigma di base .................................................................................................... 95 5. Worms e Botnets .................................................................................................................................... 97 5.1 Worms ............................................................................................................................................. 97 5.1.1 Le strategie di infezione dei worms ....................................................................................... 101 5.1.2 I modelli di diffusione dei worms .......................................................................................... 102 5.2 Botnets ........................................................................................................................................... 105 5.2.1 I meccanismi di controllo remoto .......................................................................................... 106 6. Anonimato in rete ................................................................................................................................ 111 6.1 Onion routing ................................................................................................................................. 112 6.2 The Onion Router (TOR) .............................................................................................................. 113 6.2.1 Funzionamento del protocollo Onion .................................................................................... 115 iii INDICE 6.2.2 Hidden Services ..................................................................................................................... 120 6.2.3 Attacchi alla rete Tor ............................................................................................................. 125 6.3 La rete Freenet ............................................................................................................................... 127 6.4 Le Reti Private Virtuali (VPN) ...................................................................................................... 132 7. E-Mail Security .................................................................................................................................... 137 7.1 Tecniche Antispam ........................................................................................................................ 138 8. Web Security ........................................................................................................................................ 143 8.1 TLS/SSL ........................................................................................................................................ 143 8.1.1 HTTPS ................................................................................................................................... 145 8.2 Vulnerabilità lato sito web ............................................................................................................. 148 8.2.1 Buffer overflow ..................................................................................................................... 148 8.2.2 SQL injection ......................................................................................................................... 153 8.2.3 Cross-site scripting ................................................................................................................ 156 9. Gestione degli incidenti e cooperazione per il tracciamento a ritroso ............................................ 162 9.1 Il tracciamento a ritroso ................................................................................................................. 162 9.2 Computer Security Incident Response Team ................................................................................ 163 LINK UTILI PER L’ APPROFONDIMENTO ........................................................................................ 166 2 DISPENSA DEL CORSO DI CYBERSECURITY - INTRODUZIONE soluzioni di Cybersecurity arriverà a ben 133,7 miliardi di dollari. I governi di tutto il mondo hanno risposto a questo aumento delle minacce informatiche pubblicando indicazioni per aiutare le aziende a implementare procedure di Cybersecurity efficaci. Negli Stati Uniti, il National Institute of Standards and Technology (NIST) ha creato un framework di Cybersecurity. Per contrastare la proliferazione del codice malevolo e agevolarne l'individuazione precoce, questo framework raccomanda il monitoraggio continuo e in tempo reale di tutte le risorse elettroniche. La Cybersecurity ha lo scopo di contrastare tre diversi tipi di minacce: • Cybercrimine: include attori singoli o gruppi che attaccano i sistemi per ottenere un ritorno economico o provocare interruzioni nelle attività aziendali. • Cyberattacchi: hanno spesso lo scopo di raccogliere informazioni per finalità politiche. • Cyberterrorismo: ha lo scopo di minare la sicurezza dei sistemi elettronici per suscitare panico o paura. Ma come fanno questi malintenzionati a ottenere il controllo di un sistema informatico? Di seguito sono illustrati alcuni dei metodi comunemente utilizzati per minacciare la Cybersecurity: • Malware: il termine Malware è la contrazione di "malicious software" (software malevolo). Il malware, una delle minacce informatiche più comuni, è costituito da software creato da cybercriminali o hacker con lo scopo di danneggiare o provocare il malfunzionamento del computer di un utente legittimo. Spesso diffuso tramite allegati e-mail non richiesti o download apparentemente legittimi, il malware può essere utilizzato dai cybercriminali per ottenere un guadagno economico o sferrare cyberattacchi per fini politici. Esistono numerosi tipi di malware, tra cui: • Virus: è un programma capace di replicarsi autonomamente, che si attacca a un file pulito e si diffonde nell'intero sistema informatico, infettandone i file con il suo codice malevolo. • Trojan: è un tipo di malware mascherato da software legittimo. I cybercriminali inducono gli utenti a caricare Trojan nei propri computer, dove possono causare danni o raccogliere dati. • Spyware: è un programma che registra segretamente le azioni dell'utente, per consentire ai cybercriminali di sfruttare tali informazioni a proprio vantaggio. Ad esempio, lo spyware può acquisire i dati delle carte di credito. • Ransomware: malware che blocca l'accesso ai file e ai dati dell'utente, minacciandolo di cancellarli se non paga un riscatto. • Adware: software pubblicitario che può essere utilizzato per diffondere malware. • Botnet: reti di computer infettati da malware, utilizzate dai cybercriminali per eseguire task online senza l'autorizzazione dell'utente. • Immissione di codice SQL: l'immissione di codice SQL (Structured Language Query) è un tipo di cyberattacco con lo scopo di assumere il controllo di un database e rubarne i dati. I cybercriminali sfruttano le vulnerabilità nelle applicazioni data-driven per inserire codice malevolo in un database tramite un'istruzione SQL dannosa, che consente loro di accedere alle informazioni sensibili contenute nel database. 3 DISPENSA DEL CORSO DI CYBERSECURITY - INTRODUZIONE • Phishing: in un attacco di phishing, i cybercriminali inviano alle vittime e-mail che sembrano provenire da aziende legittime, per richiedere informazioni sensibili. Gli attacchi di phishing hanno solitamente lo scopo di indurre gli utenti a fornire i dati della carta di credito o altre informazioni personali. • Attacco Man-in-the-Middle: un attacco Man-in-the-Middle è una minaccia informatica in cui un cybercriminale intercetta le comunicazioni fra due persone allo scopo di sottrarre dati. Ad esempio, su una rete Wi-Fi non protetta, l'autore dell'attacco può intercettare i dati scambiati fra il dispositivo della vittima e la rete. • Attacco Denial of Service: in un attacco Denial of Service i cybercriminali impediscono a un sistema informatico di soddisfare le richieste legittime, sovraccaricando reti e server con traffico eccessivo. In questo modo il sistema risulta inutilizzabile, impedendo all'azienda di svolgere funzioni vitali. 4 DISPENSA DEL CORSO DI CYBERSECURITY - MONITORAGGIO E NETWORK ANALYSIS 1. Monitoraggio e network analysis Mostriamo, adesso, come mettere in sicurezza un qualcosa che noi dobbiamo gestire, come un’organizzazione, come e dove intervenire, cosa ci serve e quali sono le logiche che in qualche modo possiamo applicare. Questa cosa da un lato è abbastanza codificata, dall’altra parte no, nel senso che esistono delle regole generali da tener conto e che aiutano a fare certe scelte; quindi ci sono architetture abbastanza codificate che possono guidare il nostro operato (le nostre scelte). Però queste regole valgono solo al 50%, perché quell’altro 50% dipende dalla nostra capacità di vedere le cose, perchè le architetture con cui avremo a che fare non sono omogenee, non sono le stesse. Quindi la rete è molta vasta, e le minacce da fronteggiare sono abbastanza eterogenee, alcune, infatti, sono abbastanza strutturate (cioè sappiamo da dove vengono e come si possono comportare) ed esiste una disciplina che ci guida abbastanza bene nella controreazione. Altri tipi di minacce, invece, sono non-strutturate, abbastanza poliforme, con comportamenti non codificati di cui non conosciamo praticamente nulla (un esempio sono i fenomeni 0-day) e non siamo nemmeno in grado di capire se siamo di fronte a delle minacce vere e proprie oppure a delle attività normali. Dobbiamo, quindi, essere anche capaci di saper distinguere. Immaginiamo ad esempio di avere una organizzazione che di notte non fa nulla e quindi ci aspettiamo un traffico di rete normale, ma ad un certo punto notiamo dei picchi di traffico, e subito ci allertiamo. Però potrebbe anche essere che c’è un utente che da remoto sta facendo un backup generando un violento file-transfer; quindi ci troviamo di fronte ad un comportamento che non siamo in grado di classificare come minaccia oppure come un uso legittimo delle infrastrutture di rete che stiamo proteggendo. Quindi dobbiamo essere in grado di decidere! Se scegliamo male le conseguenze sono negative. Altro aspetto delicato è che molti amministratori di sicurezza tendono a dividere il mondo in due categorie: quelli che stanno fuori e quelli che stanno dentro, con il concetto che quelli che stanno dentro sono buoni, mentre quelli che stanno fuori sono tutti cattivi. Questa scelta può essere giusta su certi aspetti oppure totalmente sbagliata, perché nessuno esclude che abbiamo minacce delicate che provengono dall’interno. Abbiamo un doppio compito quando gestiamo la sicurezza di una organizzazione: 1. Dobbiamo proteggere la nostra organizzazione da minacce esterne; 2. Dobbiamo proteggere anche le organizzazioni all’esterno dalle minacce che possono provenire dalla nostra organizzazione. La gestione della sicurezza deve essere assolutamente cooperativa, e non dobbiamo pensare solo alla nostra salvaguardia. Le minacce provenienti dall’interno (insider threats) hanno conseguenze, in termine di immagine, peggiori di quelle che provengono dall’esterno. Introduciamo, adesso, alcuni importanti concetti: • “dominio di sicurezza”: un dominio di sicurezza è un insieme di risorse che devono essere gestite in un certo modo per quanto riguardo la sicurezza, cioè sono caratterizzate da un politica comune di gestione dal punto di vista della security (regole di security enforcement). • “perimetro di sicurezza”: un perimetro di sicurezza è il confine protetto tra il lato esterno e quello interno d un dominio di sicurezza, e può essere protetto da diversi dispositivi. • “superficie di attacco”: la superficie di attacco di un dominio di sicurezza è la somma dei diversi punti (“vettori di attacco”) in cui un’entità non autorizzata (“attaccante”) può tentare di inserire o estrarre dati o svolgere qualsiasi tipo di attività non autorizzata o ostile. Figura 1 7 DISPENSA DEL CORSO DI CYBERSECURITY - MONITORAGGIO E NETWORK ANALYSIS strumento ha capacità limitata. Per fare sniffing (e deep packet inspection) serve hardware molto dedicato. Con uno strumento semplice rischiamo di non farcela, cioè di perdere i pacchetti (cioè di non catturarli tutti ed analizzarli tutti). Il router di frontiera è il primo controllo che abbiamo a disposizione per proteggere la nostra rete, ma non è l’unico. Se questo viene compromesso, il danno è abbastanza significativo. Dobbiamo configurarlo bene, anche se la sua principale funzionalità è quello di routing e non di sicurezza! I controlli di sicurezza per proteggere la nostra organizzazione non devono essere concentrati solo in un unico punto (punto di confine). E qui introduciamo una delle regole generali da tenere sempre ben presenti: il punto di controllo va messo sempre il più vicino possibile all’entità da proteggere. E’ sconveniente dal punto di vista prestazionale proteggere tutto in un unico punto, ma, viceversa, dal punto di vista gestionale è molto comodo; ricordiamoci sempre che la sicurezza è un tradeoff (compromesso) tra l’ usabilità, costo, e varie prestazioni. Quindi c’è bisogno della possibilità di osservare il traffico che attraversa una organizzazione per prendere delle decisioni. Come riportato precedentemente, abbiamo varie entità come lo sniffing, e vediamo come di capire come funziona questa osservazione del traffico che attraversa una linea di comunicazione. Il modo più semplice è avere un PC con una scheda di rete (NIC, network interface card) ovvero hardware dedicato, con la caratteristica di lavorare in modalità promiscua, promiscuous mode (cioè mista, mescolanza di cose diverse), cioè non vengono controllati i pacchetti destinati solo ad un determinato indirizzo MAC (filtro MAC disabilitato), ma vengono controllati tutti i pacchetti che vi transitano. Quindi i dati tirati fuori dal controllo, vengono passati ad una applicazione che li va ad interpretare e possiamo capire molte cose, come il tipo di protocollo di trasporto coinvolto, il tipo di indirizzi di rete, cosa succede al livello datalink, etc…, che mi permette di osservare il traffico in grande dettaglio. Quindi lo sniffer intercetta il traffico di rete; ma come si fa questa intercettazione? Non è semplice catturare tutti i pacchetti in transito, e dipende da come si organizza fisicamente l’intercettazione, cioè mettersi su una singola porta di uno switch ed ascoltare non basta. Sniffare permette anche di effettuare una analisi statistica (automatica) per capire quello che sta succedendo ed una analisi delle anomalie per scoprire eventuali problemi all’interno delle reti, come ad esempio perché il pc A non può comunicare con il pc B. Inoltre permette anche di effettuare una analisi di performance per capire come sta funzionando la mia infrastruttura (colli di bottiglia). Permette anche di rilevare possibili attacchi o minacce. Un'altra importante applicazione è la registrazione del traffico di rete: chi gestisce una organizzazione deve essere in grado di fornire agli organismi inquirenti (magistratura, polizia etc..) di produrre evidenze di certi aspetti; se, ad esempio, la rete universitaria viene utilizzata a scopo terroristico o per effettuare un attacco ad una banca, bisogna essere in grado di fornire informazioni agli inquirenti sul traffico di rete, cioè andrebbero conservati, per un certo periodo di tempo, i log delle transazioni in rete. Ma questa cosa è difficoltosa perché richiede, par grandi organizzazioni che hanno tanti collegamenti, una enorme quantità di spazio per memorizzare i log; quindi andrebbero stabilite delle policy, per esempio, conservare i log di un solo giorno, settimana etc… Quindi i dati devono essere messi a disposizione a questi organi competenti che ne richiedono. Quali strumenti abbiamo a disposizione per effettuare lo sniffing? Possiamo usare 1. Un ripetitore (strumento abbastanza lento e vecchio, oggi non si usa più per fare sniffing). 2. Per le reti non-switched si può impostare, come scritto precedentemente, l’interfaccia di rete in modalita promiscua. 3. Per le reti-switched si può usare una porta di uno switch che opera in modalità mirroring (SPAN o Mirrored Ports), ovvero lo switch deve effettuare il mirroring (la copia), su una determinata porta, del traffico che viene, ad esempio, dalla porta 1 ed esce dalla porta 3, ed in questo abbiamo piena visibilità del traffico di rete. 4. Soluzione più avanzata, avere un TAP (Traffic Access point) ovvero un punto di accesso al traffico, che è in grado di effettuare una intercettazione. 8 DISPENSA DEL CORSO DI CYBERSECURITY - MONITORAGGIO E NETWORK ANALYSIS Uno sniffer, quindi, è un programma/applicazione che deve catturare pacchetti al livello datalink (traffico di rete). Oltre a catturare, lo sniffer deve anche permettere di interpretare/analizzare in maniera intelligente e di avere una finestra fruibile che ci permette facilmente di fare spotting (ovvero “individuare”, “riconoscere”…) di specifichi problemi. Come specificato precedentemente lo sniffing permette di fare tante cose: tra le varie cose troviamo l’accounting, la registrazione del traffico di rete, la rilevazione di intrusione etc.. Tipicamente lo sniffing viene effettuato su reti switched (cioè dotate di switch), ma su queste reti non sempre si ha la possibilità di vedere tutto il traffico che passa perché la singola porta su cui si può agganciare lo sniffer riceverà esclusivamente il traffico di broadcast ed il traffico destinato sulla porta stessa, mentre tutto il resto non è visibile, quindi si ha una visibilità limitata poichè su reti switched il traffico viene instradato secondo l’associazione MAC address e Porta, escludendo i teminali non interessati al traffico. Esiste una soluzione a questa situazione? Si, ed è il PORT MIRRORING (o anche chiamato SPAN). Lo switch deve essere configurato in modo particolare, cioè la porta su cui viene attestato lo sniffer va configurata in una modalità di copia, cioè il traffico proveniente e destinato da un insieme di porte, deve essere ricopiato sulla porta di nostro interesse. Questa operazione va implementata in hardware, e serve hardware opportuno per far si che non si perdano pacchetti. (Ad esempio uno switch che ha un certo numero di porte giga e deve mirrorare ad esempio 50 porte su una porta a 1giga, non ce la farà, perderà pacchetti). Non tutti gli switch, però, permettono di effettuare il port mirroring. Dove ma messo lo sniffer? E quale interfaccia si usa per intercettare? La macchina che fa da sniffer deve avere almeno 2 interfacce: una interfaccia dove essa viene tipicamente acceduta (interfaccia con cui raggiungo lo sniffer ed usufruisco dei servizi) e l’interfaccia usata per analizzare il traffico. Tipicamente la macchina potrebbe essere molto protetta dal punto di vista dell’indirizzamento all’interno di un dominio di sicurezza estremamente riservato ed avere un’interfaccia non configurata (cioè lavora solo al livello datalink) ed agganciata allo switch in modalità port spanning. Cioè da questa interfaccia non posso raggiungere la macchina (non è configurata in modalità IP) e la uso solo per catturare il traffico. Se non si dispone di uno switch che permette di fare il port mirroring come si fa? Ci sono varie soluzioni: 1. Utilizzo di un ripetitore/hub, ma questa soluzione è molto vecchia e non si usa più, 2. Utilizzare un TAP hardware (Traffic Access Port), ovvero una particolare sonda hardware dedicata. Questo dispositivo fa una copia del traffico su una tratta (molti di questi dispositivi non richiedono alimentazione elettrica) e permette di avere una grande visibilità del traffico di rete oltre a verificare se ci sono degli errori sulla tratta di interesse – specifichiamo che lo sniffer è posto subito dopo il TAP, cioè riceve i dati dal TAP. A differenza dei TAP, le tradizionali interfacce di rete/schede di rete, dette anche NIC-Network Interface Card, scartano dei frame se sono malformati, nascondendo quindi eventuali attività malevoli, quindi con una NIC agendo al livello 2 non si può vedere tutto il traffico di rete, invece con un TAP, che agisce al livello fisico, si ha una visione di tutto, anche degli errori. Tipicamente come funziona un TAP in rame? Quando si fa il tapping bisogna fare in modo che chi è Figura 5 Figura 6 9 DISPENSA DEL CORSO DI CYBERSECURITY - MONITORAGGIO E NETWORK ANALYSIS intercettato non se ne deve accorgere; un tapping può essere rilevato mediante tecniche riflettometriche, utilizzate soprattutto nei cavi in fibra ottica. 3. Effettuare un attacco come un ARP poisoning (chiamato anche ARP Spoofing) che veicola forzatamente il traffico di rete ottenendo lo stesso effetto del port mirroring. Quando gli switch non permettono di effettuare il port mirroring, possiamo forzare mettendoci in logica man-in-the-middle su uno switch su cui transitano dati tra varie entità, in cui vogliamo sniffare. Ad esempio abbiamo 2 macchine che comunicano attraverso uno switch, e noi siamo una terza macchina e vogliamo forzare la ridirezione del traffico sulla terza porta dove siamo noi, sfruttando il protocollo ARP. ARP serve per convertire/tradurre gli indirizzi IP in indirizzi fisici (MAC), ed agisce in maniera richiesta-risposta, ovvero viene inviata una richiesta (ARP Request) in broadcast e la risposta (ARP Replay) viene inviata in maniera unicast. Ma questo protocollo ha una forte debolezza (debolezza su cui funziona l’attacco di ARP Spoofing), cioè agisce in maniera stateless- senza stato, ovvero non ha percezione, non ricorda le richieste fatte precedentemente, ogni richiesta è completamente indipendente da tutte le altre, e l’ultima richiesta che arriva è quella utile. Tutto cioè è stato fatto per rendere efficiente il protocollo; ma un’altra cosa aggiuntiva fatta per renderlo ancora più efficiente è che viene evitato di fare continuamente le richieste (limitare il traffico di rete) memorizzando i risultati della traduzione degli indirizzi in una cache presente in ogni macchina, il cui contenuto viene refreshato/aggiornato ogni determinato intervallo di tempo. L’attacco funziona in questo modo: l’attaccante spoofa (cioè falsifica) la replay ARP (cioè la risposta ARP ad una determinata richiesta ARP) anche se non c’è stata una richiesta, e chi riceve questa risposta la accetta senza problemi e se la carica nella sua cache fino a quando la cache non viene aggiornata. Osserviamo la figura 7 sottostante: abbiamo uno switch e 2 host (host A ed host B), ognuno con una propria ARP cache, che comunicano attraverso lo switch; poi abbiamo un attaccante che in logica man-in-the- middle è localizzato sullo stesso switch. Per realizzare l’attacco ARP poisoning l’attacker invia delle ARP reply opportunamente costruite/modificate: all’host A invia una reply ARP che ha come IP quello del’host B, ma come MAC address il proprio; e all’host B invia una reply ARP che ha come indirizzo IP quello dell’host A e come MAC address il proprio. Per protrarre l’attacco è necessario inviare delle ARP reply ogni intervallo di tempo poiché spesso i sistemi operativi cancellano sistematicamente le voci dell’ARP cache dopo un certo periodo di tempo. Quando le due vittime (host A ed host B) instaureranno una comunicazione tra loro, crederanno di comunicare reciprocamente, ma in realtà comunicano con l’attacker il quale, per mostrare trasparenza e regolarità nella comunicazione tra i due host e continuare a sniffare il relativo traffico, inoltrerà (fa da inoltro, forwarder) il traffico proveniente da host A verso host B (e viceversa), realizzando così un attacco man-in-the-middle ottenendo lo stesso effetto del port mirroring. Per effettuare questo attacco è possibile utilizzare dei programmi disponibili sia su linux che su Mac che su Windows, come ARP-SPOOF. Esistono, però anche degli strumenti con cui è possibile accorgersi di un attacco di questo tipo. Figura 7 12 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI 2. Politiche di sicurezza e controllo accessi Teniamo ben presente l’architettura di riferimento descritta precedentemente e ne riportiamo qui l’immagine per comodità: 2.1 I punti di intervento Vediamo adesso i punti di intervento su cui poter effettuare i controlli: router di bordo e firewall. 2.1.1 Border router Uno dei primi elementi su cui si può cominciare ad applicare dei controlli sul traffico che fluisce attraverso la rete è il router di frontiera, detto anche router di bordo. Esso rappresenta un primo sbarramento di una rete e quindi può essere visto come un primo punto di intervento su cui centralizzare un buon numero di controlli di sicurezza, anche se va attentamente valutato se è il punto più opportuno e dipende innanzitutto in che modalità implementa i meccanismi di controllo degli accessi (che saranno descritti nel seguito), nel senso che quanto più questo oggetto permette di implementare certe politiche in hardware, tanto più può diventare efficiente intervenire su di esso, altrimenti non è il posto deputato per fare uno screening del traffico. Oltretutto, il router di accesso non è detto che controlli tutti i domini di sicurezza nella nostra rete, ma potrebbe essere l’unico punto di demarcazione verso i domini interni, poi il lavoro di segmentazione interna viene effettuato da eventuali firewall. In ogni caso sul router di frontiera andrebbero fatti dei primi controlli di base sul fatto che entri del traffico realmente ammissibile oppure esca del traffico ammissibile ed è fondamentale la sua protezione in quanto una sua compromissione può aprire l’accesso alla LAN ed esporla ad attacchi. Se si posizionano i giusti controlli sul bordo, tutta l’infrastruttura diventa più sicura, ma bisogna tener presente di non eccedere nei controlli, nel senso che, avere un eccesso Figura 9 Figura 10 13 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI di politiche applicate su un dispositivo che non ha le prestazioni per poterlo fare, potrebbe il tutto tradursi in un collo di bottiglia. 2.1.2 Firewall Il firewall (termine inglese che vuol dire “muro tagliafuoco”) è il principale componente passivo di difesa perimetrale; per passivo si intende che esso non ha un ruolo attivo nella difesa, non ha una reazione proattiva nei confronti di un attacco ma si comporta passivamente bloccando, eventualmente, l’attacco. Perché installare un firewall? Un firewall viene installato principalmente per implementare una politica di sicurezza, è in grado cioè, di permettere l’accesso controllato ai sistemi o ai servizi di una rete protetta e non protetta Quali sono i vantaggi di un firewall? Il principale vantaggio del firewall è che esso è in grado di percepire il concetto di flusso e di sessione operando, quindi, in maniera stateful. Il firewall, man mano che gestisce un flusso di pacchetti, e autorizza il singolo pacchetto a passare o non passare, ha comunque traccia che quel pacchetto fa parte di un flusso (quindi ha traccia di uno stato), ed è in grado di percepire se per esempio c’è stato un three-way-handshake, cosa che un router non percepisce per nulla perché tratta un singolo pacchetto alla volta. Un altro vantaggio è il fatto che un firewall può centralizzare le politiche di sicurezza (però può tradursi anche in uno svantaggio rappresentando un single point of failure) e può ispezionare il traffico fino al livello di applicazione. Quali sono gli svantaggi di un firewall? Anche un firewall ha i suoi svantaggi, innanzitutto, è vero che è in grado di lavorare anche fino al livello applicativo, ma con protocolli artificiosi e complessi, un’ispezione di questo tipo potrebbe diventare addirittura fuorviante. Il problema principe dei firewall è quello delle prestazioni. Un altro problema è come un utente percepisce il firewall stesso, se le politiche che applico sul firewall sono eccessive, l’utente potrebbe percepirle come una violazione della privacy. Un altro possibile svantaggio è la complessità insita nella configurazione di un firewall. Un altro problema è che spesso il firewall dà troppa fiducia all’amministratore di sicurezza. L’ultimo svantaggio del firewall è che in caso di firewall che devono controllare un throughput di molti gigabit, abbiamo a che fare con apparati molto costosi. I firewall vanno sempre in coppia e, solitamente, lavorano in modalità bilanciamento di carico o in logica attivo/standby. Quali sono le funzioni di un firewall? La funzione principale di un firewall è quello di fare security enforcement delle politiche del controllo accessi fra i domini di sicurezza che esso ha il compito di individuare e separare, e che si traducono in segmenti di rete differenti, essi infatti sono segmenti fisici separati, ognuno individuato da un’interfaccia separata e che eventualmente indicherà una VLAN separata (un firewall è un network device con almeno due interfacce di rete ed ogni interfaccia individua un dominio di sicurezza). Un firewall ha il compito semaforico di regolare gli accessi (filtraggio) tra un dominio e l’altro, cioè è in grado di controllare il traffico di rete che vi transita facendo passare o non passare certi pacchetti specifici a seconda Figura 11 14 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI delle regole definite dall’amministratore di rete (tramite le ACL che verranno discusse a breve); è in grado di rilevare e segnalare eventuali tentativi di violazione o pattern di traffico anomalo che ne attirano l’attenzione; può fare anche da punto di logging, cioè può segnalare il verificarsi di vari eventi, può segnalare lo stabilirsi di eventuali connessioni, può quindi essere il punto in cui si ha una traccia completa di tutte le transazioni che passano da un dominio di sicurezza all’altro. Un firewall può anche fare da router e ripetitore, oltre ad effettuare un remapping degli indirizzi IP (tecnica NAT, Network Address Translation). Inolte un firewall può mediare l’accesso a specifiche applicazioni per poter controllare ed ispezionare il traffico, cioè il firewall può avere funzionalità di proxy ma anche di content filtering cioè effettuare un filtraggio su base contenuti, che è fattibile tramite specifiche applicazioni di content filtering. Una risorsa del genere categorizza le risorse internet a cui accediamo: inizialmente la categorizzazione è manuale, la prima volta che si accede ad un URL, il firewall verifica se è già classificata in un suo database o in uno esterno, decide poi in base alla categoria se può passare o meno. Se invece non esiste una sua corrispondenza, la prima volta viene fatta passare ma va a finire ai classificatori, che manualmente vedono di che si tratta e gli attribuiscono la categoria. La classificazione solitamente viene fatta con tecniche automatiche di intelligenza artificiale, se la classificazione automatica non funziona, passa il compito ad un operatore. Il firewall può fare anche una deep packet inspection, cioè entra fino a dentro la struttura del payload, ricercando così stringhe, protocolli, pattern specifici. Infine, un firewall può, introdurre delle limitazioni di banda. I tipi di firewall Esistono due tipi di firewall: firewall hardware e firewall software. Un firewall hardware è un componente passivo che opera una difesa perimetrale basandosi su specifici dispositivi di inspection e filtraggio. Un firewall software, invece, è un software che viene installato direttamente su hardware general purpose e offre prestazioni drasticamente inferiori rispetto ai firewall hardware; inoltre un firewall software è estremamente flessibile e facile da configurare oltra ad eseguire un controllo fino al livello di programma. Le modalità operative di un firewall Un firewall può lavorare essenzialmente in due modalità: in modalità di livello 3 o routed, oppure in modalità di livello 2 o trasparente. Un firewall che lavora in modalità routed si presenta come un dispositivo di livello 3 e segmenta reti diverse su base indirizzi IP e ha bisogno di un indirizzo IP su ogni interfaccia instradando il traffico da un netblock all’altro, effettuando gli opportuni controlli di sicurezza e quindi facendo enforcing delle opportune politiche. Un oggetto del genere è visibile sull’intera rete poiché ha un indirzzo su ciascuna interfaccia. Quando un firewall lavora in modalità trasparente, significa che questo oggetto lavora esclusivamente al livello 2 ed è completamente trasparente nella rete nonostante ogni interfaccia individua comunque un segmento VLAN differente anche se associate alla stessa rete IP. Quando lavoriamo in modalità trasparente, router e macchine devono essere sulla stessa subnet; inoltre l’IP del firewall non deve essere configurato come un default gateway per i dispositivi connessi che a loro volta devono puntare al router che sta avanti al firewall (attraversamento trasparente). Infine un firewall in modalità trasparente tipicamente non supporta le funzionalità di NAT, routing, DHCP relay etc.. 2.1.3 Filtraggio sul bordo: controlli sul border router Il modo più semplice di implementare dei controlli è fare un filtraggio sul router di bordo. Tipicamente un router o uno switch di livello 3 mettono a disposizione dei meccanismi di controllo che però sono stateless, e sono limitati al controllo di indirizzi IP e porte TCP/UDP. Però man mano che i controlli diventano sempre più complessi, si verifica un certo aggravio prestazionale a carico della CPU del nostro oggetto di demarcazione, quindi, inserire questi controlli diventa accettabile soltanto se il dispositivo scelto implementa questi controlli in hardware, altrimenti potrebbe diventare troppo rischioso. Quando si effettua il filtraggio su un router, il filtraggio è completamente stateless, cioè significa ogni Figura 12 Figura 13 17 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI 2.2 Il modello di access control Illustriamo, adesso, cosa significa implementare una politica di accessi e quali sono i meccanismi che abbiamo a disposizione: partiamo da un modello di sicurezza molto conosciuto, che è il modello di Lampson. Mediante tale modello si può controllare e proteggere una risorsa/insieme di risorse, e, stabilendo la modalità di controllo e protezione, si va a realizzare quello che è una politica. Quello che si fa è andare a modellizzare ogni controllo con una tripla, il primo componente della tripla sono le entità che interagiscono con una serie di elementi/oggetti che dobbiamo proteggere (questi ultimi sono il secondo elemento), e poi abbiamo un insieme di regole che definiscono “chi fa cosa”, cioè come i soggetti possono avere accesso ai singoli oggetti da proteggere. Nel nostro caso gli oggetti possono essere le interfacce (nei sistemi operativi sono i file) mentre i soggetti possono essere gli indirizzi IP (nei sistemi operativi sono i singoli utenti). Tutto ciò si traduce in una matrice di controllo degli accessi (matrice di Lampson), e tale matrice ha sulle righe i soggetti, sulle colonne gli oggetti, e le entry sono le regole, i permessi, le attribuzioni, quello che il soggetto può fare su un oggetto. Nel caso in cui l’oggetto è una interfaccia allora possiamo avere due diversi tipi di controllo sull’interfaccia stessa; dato che un indirizzo su di una interfaccia può o passare tramite essa oppure non passare, allora possiamo avere due possibili modalità di controllo: allow (permettere, passa) e deny (negare, non passare). In questo modello, quindi, ogni entry esprime una relazione tra soggetto e oggetto. La matrice, quindi, rappresenta il modo per implementare la politica di controllo degli accessi e deve essere rappresentata in maniera furba. Infatti dato che i soggetti sono gli indirizzi IP e tali soggetti rappresentano le righe della matrice, teoricamente dovremmo avere 2^32 righe (quindi una riga per ogni indirizzo IP dell’intero spazio di indirizzamento IPv4 che è grande 2^32), il che è assolutamente insensato ed impraticabile; le colonne, invece, rappresentano tutte le interfacce di un router e/o firewall, ognuna delle quali definisce un dominio di sicurezza. Quindi dobbiamo rappresentare tale matrice in una modalità ragionevole/furba, come, per esempio, raggruppare le cose in categorie, nel senso che alcuni indirizzi da trattare esplicitamente li posso raggruppare in blocchi ed in inserirli Figura 19 Figura 18 18 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI nella matrice sotto forma di netblock; quindi la matrice avrà tante righe quante sono le entità che devo controllare direttamente (i netblock notevoli), ma dato che devo essere in grado di reagire a qualsiasi tipo di indirizzo presente su Internet, il modo più furbo per realizzare ciò è utilizzare delle righe che rappresentano dei gruppi, delle categorie, andando a limitare in questo modo la quantità di righe della matrice. Detto tutto ciò, come si fa ad implementare questa matrice? Ci sono due possibilità: 1. Access control list: tramite le liste di controllo accesso (ACL, access control list) usate nel 99% dei casi nei sistemi di sicurezza attuali, che rappresentano le colonne della matrice. Quindi abbiamo una lista di elementi, in cui ogni elemento rappresenta una regola associata ad un oggetto. Gli elementi trattati nella regola sono i soggetti. 2. Capability lists: tramite le capability lists ogni utente ottiene un “ticket” o diritto di accesso per ogni risorsa; queste vengono rappresentate mediante le righe della matrice e ogni riga rappresenta la capacità di un utente di fare una certa operazione su un oggetto. Ma questa modalità non è più implementata. Tra le due possibilità è migliore quella della Access Control Lists. Un aspetto interessante è che è possibile anche definire e lavorare su dei ruoli. Un ruolo è un insieme di utenti con specifiche attribuzioni e rappresentano un livello intermedio tra soggetti e oggetti. Per esempio su un sistema operativo i ruoli potrebbero essere gli amministratori, gli utenti avanzati, gli utenti base e gli ospiti. Nei ruoli è possibile anche stabilire una gerarchia tra ruoli, in cui ogni gruppo (ruolo) ha tutti i permessi dei gruppi di gerarchia inferiore. Questo permette di definire delle politiche di RBAC (Role-Based Access Control), cioè il controllo degli accessi non lo si fa più sui singoli utenti ma lo si fa sui gruppi/ruoli (ognuno ha delle certe attribuzioni su dei domini di sicurezza). Ma come si implementa tutto ciò sui router/firewall? Tutti i dispositivi che abbiamo di security enforcement (cioè dispositivi che devono far rispettare dei criteri) devono obbligatoriamente supportare il meccanismo principe del controllo degli accessi, ovvero, le ACL (le capability list NO, non si usano più!). A che servono le ACL su un firewall? Servono a proteggere gli oggetti/interfacce che sono i punti di ingresso ai domini di sicurezza, verificando le attribuzioni (passare o non far passare), così che si effettua un vero e proprio filtraggio dei pacchetti (che diventano, così, i nostri soggetti). Quindi questa situazione la posso implementare come ACL su tutti i dispositivi di security enforcement (come sugli switch - ma sugli switch è poco comune - ,sui router e sui firewall). L’insieme di tutte le ACL costituisce la matrice di Lampson, cioè la politica di controllo degli accessi. Cosa succede quando un pacchetto arriva su un’interfaccia di un firewall (cioè quando Figura 20 19 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI arriva su di un oggetto)? Viene effettuata una ricerca nella ACL, vedendo se esiste una regola, e se c’è una regola che metcha questo soggetto, si decide cosa fare: lo si fa passare o non lo si fa passare. Questo controllo, però, lo si può applicare in due differenti direzioni (quindi ho due diverse ACL) cioè quando il pacchetto entra nell’oggetto (interfaccia) o quando esce (esempio: nel passare da un dominio di sicurezza ad un altro). Le ACL possono essere implementate sia al livello di collegamento, sia al livello di rete, e sia al livello di trasporto (quindi si può effettuare un controllo su base MAC, IP o PORTA). Le politiche della ACL possono essere anche implementate a livello di data e orario (esempio: una organizzazione di notte decide di chiudere tutto il traffico in uscita…). 2.2.1 La sintassi delle ACL Le ACL (Access Control List) sono una lista di istruzioni da applicare alle interfacce di un router allo scopo di gestire il traffico, filtrando i pacchetti in entrata e in uscita. Una caratteristica importante delle ACL è la ricerca lunga, ovvero le ACL vengono elaborate dal router/firewall in maniera sequenziale in base all’ordine in cui sono state inserite le varie clausole (quando si scrivono le ACL è importante l’ordine). Appena un pacchetto soddisfa una delle condizioni, la valutazione si interrompe e il resto delle ACL non viene preso in considerazione. Il pacchetto viene quindi inoltrato o eliminato secondo l’istruzione eseguita (figura 21). Se il pacchetto non soddisfa nessuna delle condizioni viene scartato (si considera cha alla fine di un ACL non vuota ci sia implicitamente l’istruzione deny any any ovvero nega tutto). Per il modo in cui vengono eseguite le ACL (in sequenza) occorre inserire le condizioni più restrittive all’inizio. Esistono tanti venditori di apparati di rete, ed ognuno di essi implementa la sua interfaccia, ed è quindi difficile avere uno standard, anche se però esistono delle soluzioni di riferimento. Uno dei primi venditori, CISCO System, ha introdotta una sintassi che troviamo un po su tutti gli apparti (anche se con piccole varianti). Le ACL in tecnologia Cisco System hanno un nome oppure un numero. Quindi possiamo avere due diverse ACL per una interfaccia (una per l’entrata e una per l’uscita). Qual è la sintassi? Innanzitutto partiamo col dire che esistono due tipi di ACL: le ACL standard e le ACL estese. Entrami i tipi sono contraddistinti da un numero che raggruppa le sue istruzioni. ACL standard Le ACL standard possono venire identificate da un numero compreso tra 1 e 99 (access- list number). Come tutte le ACL, comprendono una parte descrittiva e una decisionale, ma le possibilità espressive sono molto limitate e vengono normalmente impiegate al fine di descrivere range di IP in istruzioni. La sintassi è la seguente: Figura 21 22 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI 2.3 Spoofing dell’indirizzo IP ll miglior modo per fare attacchi è anonimizzarsi; ma come ci si anonimizza? cambiando il proprio indirizzo IP con uno fasullo. Possiamo cambiare l’indirizzo IP nell’header di un pacchetto. C’è una soluzione per combattere lo spoofing dell’indirizzo IP? Si e No: quando ci arriva un pacchetto con un indirizzo IP è impossibile stabilire se quell’IP è falso, lo tratterò sempre come un IP autentico. L’unico modo per bloccare tutto ciò è a monte: cioè è compito dell’amministratore di sicurezza del dominio che è proprietario di quell’indirizzo. Ovvero l’amministratore essendo il proprietario del dominio conosce quali sono i suoi indirizzi e quindi nell’ottica di applicare una politica anti-spoofing dovrebbe bloccare gli indirizzi IP uscenti dalla propria rete che non appartengono al suo intervallo di IP noti applicando una semplice ACL (questa politica è definita da un RFC 2827 del 2000). Per combattere questo tipo di spoofing a livello globale tutti gli amministratori di rete dovrebbero applicare il filtro in uscita, ma basta che solo qualcuno non lo fa (come succede nella realtà) per rendere inutile questo tipo di difesa. Lo spoofing in ingresso può essere comunque applicato in questo modo: basta impostare una serie di regole che vieti il passaggio dall'esterno verso l'interno della rete aziendale di pacchetti IP che abbiano come indirizzo IP sorgente quello di una macchina interna. Ecco un esempio: scrivere una ACL che applica all’interno della rete avente netblock 165.21.0.0/16 un anti- spoofing in ingresso ed in uscita. Anti-Spoofing in ingresso // Blocca il traffico proveniente dall’esterno avente indirizzi sorgente interni, cioè appartenenti alla rete 165.21.0.0/16 (sono i miei indirizzi interni!): access-list 110 deny ip 165.21.0.0 0.0.255.255 any log access-list 110 permit ip any any Anti-Spoofing in uscita // Blocca il traffico uscente avente indirizzi IP sorgente che non appartengono alla mia rete 156.21.0.0/16: access-list 111 permit ip 165.21.0.0 0.0.255.255 any access-list 111 deny ip any any log 2.4 Esempio di definizione di una semplice politica di controllo accessi Creare una ACL che: 1. Consenta in uscita la fruizione di tutti i servizi TCP (www, e-mail, telnet, etc…). 2. Permetta in ingresso solo l’accesso ad un numero estremamente limitato di servizi TCP (e-mail, www, file). 3. Consenta in ingresso il solo traffico relativo alle sessioni aperte dall’interno (attenzione al protocollo FTP). 4. Consenta il “Ping” e il comando “Traceroute” dall’interno e non dall’esterno. 5. Consenta in maniera controllata i meccanismi DNS. 23 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI Il filtraggio tramite ACL è praticabile su qualsiasi dispositivo di confine. In questo esempio è efficace agire a livello del “border router”, che separa i due domini di sicurezza (inside ed outside) e su cui è possibile applicare in maniera centralizzata i flussi di traffico che attraversano i due domini. In questo esempio bastano solo due ACL (la AC 110 e la ACL 111) da applicare rispettivamente in ingresso ed in uscita. Per quanto riguarda il punto 1 bisogna fare in modo che qualsiasi connessione TCP in uscita dalla nostra rete interna è consentita senza nessuna restrizione. Per fare ciò la ACL sarà: access-list 111 permit TCP 192.168.1.0 0.255.255.255 any access-list 111 deny IP any any Per il punto 2 e 3 bisogna permettere l’accesso interno ai soli hosts erogatori di sevizi; inoltre va consentito il traffico in ingresso a ritroso (da outside a inside) solo se relativo a connessioni già aperte dall’interno (estabilished) facendo attenzione al protocollo FTP che ha un comportamento asimmetrico in quanto a differenza di altri protocolli come per esempio HTTP, utilizza due connessioni separate per gestire comandi e dati. Un server FTP generalmente rimane in ascolto sulla porta 21 TCP a cui si connette il client. La connessione da parte del client determina l'inizializzazione del “canale comandi” attraverso il quale client e server si scambiano comandi e risposte. Lo scambio effettivo di dati, però, (come per esempio un file) richiede l'apertura del “canale dati” da parte del server sulla porta 20. Per fare ciò la ACL sarà: // Applico, innanzitutto, un anti-spoofing in ingresso bloccando tutto il traffico proveniente dall’esterno avente indirizzi sorgente interni, cioè appartenenti alla rete 192.168.1.0/24 (sono i miei indirizzi interni!): access-list 110 deny ip 192.168.1.0 0.0.255.255 any log access-list 110 permit ip any any // Adesso concedo le connessioni TCP in ingresso solo verso i servizi ufficiali (HTTP, SMTP, FTP): access-list 110 permit TCP any host 192.168.1.1 eq 80 access-list 110 permit TCP any host 192.168.1.1 eq 20 access-list 110 permit TCP any host 192.168.1.1 eq 25 // ftp: access-list 110 permit TCP any eq 20 192.168.1.0 0.0.0.255 gt 1023 Figura 23 Rete interna 192.168.1.0/24 Ethernet1 Ethernet0 24 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI // Adesso consento solo il traffico TCP di ritorno da sessioni aperte precedentemente dall’interno: access-list 110 permit TCP 192.168.1.0 0.0.255.255 estabilished Per il punto 4 bisogna garantire la funzionalità del comando “ping” esclusivamente iniziato dall’interno consentendo in ingresso solo i messaggi ICMP di tipo echo reply in risposta a quelli ICMP di tipo echo request inviati dall’interno. Il ping iniziato dall’esterno, invece, deve essere inibito bloccando tutti i pacchetti ICMP di tipo echo request provenienti dall’esterno. Inoltre, sempre per il punto 4, bisogna garantire la funzionalità del comando “traceroute” che è esclusivamente iniziato dall’interno, consentendo, quindi, di far passare in ingresso i relativi messaggi ICMP di tipo time exceeded e di tipo port unreachable. Il “traceroute” iniziato dall’esterno è proibito. Per fare tutto ciò la ACL sarà: // Qui viene consentito l’ingresso dei pacchetti ICMP di tipo echo-reply, time-exceeded e unreachable access-list 110 permit icmp any 192.168.1.0 0.0.0.255 echo-reply access-list 110 permit icmp any 192.168.1.0 0.0.0.255 time-exceeded access-list 110 permit icmp any 192.168.1.0 0.0.0.255 unreachable // Qui vengono consentiti in uscita i pacchetti ICMP di tipo echo-request (ping) access-list 111 permit icmp 192.168.1.0 0.0.0.255 any echo-request // Qui viene consentito in uscita i pacchetti UDP (traceroute) access-list 111 permit udp 192.168.1.0 0.0.0.255 gt 1023 any gt 1023 Per il punto 5 bisogna garantire il funzionamento del DNS permettendo di far transitare (pacchetti UDP) sia le richieste DNS che le risposte DNS in entrambe le direzioni, sulla porta 53. Ecco le ACL: // Risposte o richieste DNS al resolver interno: access-list 110 permit udp any host 192.168.1.1 eq 53 // Zone transfers: access-list 110 permit tcp host 172.16.1.1 host 192.168.1.1 eq 53 //Server to server queries: access-list 111 permit udp host 192.168.1.1 eq 53 any eq 53 27 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI server per ogni tipo di servizio. Il proxy, però, introduce un delay non banale, che per servizi che richiedono una forte interattività diventa una limitazione. Il concetto di proxy dà una visione pressappochista della sicurezza, in quanto un server che opera in modalità proxy, non è in grado di proteggere il dominio di sicurezza interna da eventuali debolezze presenti a livello protocollare. ➢ Screening router: il secondo esempio di architettura single box è l’architettura screening router, in cui è possibile utilizzare utilizzare un router oppure un firewall che fan da screening (controllo) al posto dell’host. Questa soluzione, anche se è del tipo single box, ci garantisce l’istradamento di pacchetti da una rete all’altra, e le due reti si vedono realmente ma in maniera controllata bloccando o autorizzando il passaggio dei pacchetti in ragione delle specifiche policy di sicurezza implementate. Questo tipo di soluzione è quella più economica e comune possibile, in cui la sicurezza dell’intero dominio si basa su un singolo componente perimetrale ed è utile adoperarla quando la rete da proteggere ha già un buon grado di sicurezza. Uno dei maggiori problemi è che in architetture di questo tipo abbiamo un solo oggetto su cui realizzare i controlli (chocke pointe), quindi una volta che lo screening firewall o router viene compromesso, la sicurezza di tutto il dominio è messa in pericolo. • Tra le architetture multi-box troviamo: ➢ Screened host: l’architettura screened host si colloca in posizione intermedia tra lo screening router e il dual-homed host. Infatti in questa architettura lo screening router permette agli host esterni ed interni di comunicare solo con uno specifico host della rete interna che è reso particolarmente sicuro tale da poter essere esposto: esso è chiamato bastion host. Tutto l’enforcement delle politiche di sicurezza è affidato alla combinazione efficiente di bastion host e di screening router. Il ruolo del bastion host è strategico, infatti esso è l’unico nodo della rete interna in grado di fare traffico verso la rete esterna e ricevere traffico dalla rete esterna; inoltre gli host interni vedono la rete esterna solo attraverso i servizi proxy offerti dal bastion host che è in grado di realizzare meccanismi di caching. In questo tipo di Figura 25 Figura 26 28 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI architettura abbiamo due single point of failure, che sarebbero entrambi i security enforcement devices. L’architettura Screened Host diventa appropriata quando le macchine interne sono sicure e le connessioni dall’esterno che devono interessare il bastion host somo poche. Un bastion host, tipicamente, deve offrire solo i servizi necessari per accedere ad Internet e quelli che devono essere offerti dall’esterno, e niente altro. Può fornire servizi proxy come http, socks, e fare anche content filtering. Un’architettura screened host, in termini di vulnerabilità, presenta degli elementi critici, il più critico dei quali è il bastion host perché diventa la macchina più vulnerabile ed esposta ad attacchi. Il problema principale di questa architettura è che in architetture di questo tipo fra il bastion host e la rete interna non ci sono difese, quindi se si riesce ad attaccare il bastion host si riesce ad entrare nelle rete interna, rendendo necessario aumentare i punti di controllo e flitragio. ➢ Screened subnet: questa architettura aggiunge un livello extra di sicurezza all’architettura screened host creando una rete, detta rete perimetrale che avrà la funzione di isolare il dominio inside dal dominio outside e può essere considerata come una specie di DMZ. Questo tipo di architettura risolve completamente i problemi legati al fatto che possa essere compromesso o il bastion host o lo screening router esterno. Si hanno, dunque, due screening router, uno situato tra la rete perimetrale e la rete interna, mentre l’altro è situato tra la rete perimetrale e la rete esterna (per compromettere il dominio vanno compromessi entrambi i router). Le cose si complicano a livello di configurazione perché abbiamo due punti di enforcement delle politiche di sicurezza. Questo modello architetturale lo posso specializzare, potrei avere più reti interne, ognuna di queste avrà uno screening router indipendente che la protegge isolandole dall’esterno e che le fa affacciare a una rete perimetrale unica che funge da dorsale. Figura 27 Figura 28 29 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI Questa architettura la posso replicare andando a duplicare le reti perimetrali (ognuna avrà i suoi screening routers e bastion hosts) in modo da creare dei perimetri di protezione differenti. Si può anche avere una singola rete perimetrale che fa da dorsale per due reti esterne, e per ciascuna ci sarà uno screening router. Figura 29 Figura 30 32 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI è conforme allora viene inserito in una lista dei dispositivi certificati e da questo momento in poi l’accesso viene regolarmente consentito. Pro e contro di un NAC Implementato correttamente, il NAC è un sistema di sicurezza che dà all’organizzazione la sensazione di avere controllo completo sulla sicurezza, anche in uno scenario in evoluzione e diversificazione Non è comunque una panacea e per questo motivo il NAC dovrebbe essere utilizzato in sinergia con altri sistemi. Va evidenziata l’importanza di un’adeguata attività di monitoraggio in grado di rilevare se una specifica politica NAC è o meno in grado di soddisfare le esigenze di sicurezza di un’organizzazione, senza diventare eccessivamente intrusiva. 2.7.3 I componenti di un NAC I componenti di base di un’architettura NAC sono tre: la componente che richiede l’accesso, cioè i dispositivi terminali (Access Requestors), i dispositivi che effettuano l’enforcement delle politiche di controllo degli accessi stabilite dal NAC (Policy Enforcement Point) che può essere un router, un firewall, uno switch, etc… (dipende dove facciamo i controlli di ammissione), ma dato che questi dispositivi sono degli esecutori e non dei decisori, attuano le politiche sulla base delle decisioni che vengono prese da chi decide, ovvero la NAC console/manager (Policy Decision Point). Figura 31 Figura 32 33 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI Access requestors Gli access requestors sono rappresentati dalle nostre macchine finali che devono connettersi alla rete (laptops, mobile devise, voip phones, etc…). All’interno di ciascun richieditore di accesso c’è bisogno di almeno tre componenti: la prima è il Posture Collectors (PCS) che corrisponde all’agent che raccoglie informazioni sullo stato della sicurezza della macchina (ad es. controlla il software installato e aggiornato, la versione del sistema operativo, se c’è un fiewall, se c’è un antivirus ed è aggiornato, etc…); la seconda componente è il Client Broker (CB): dato che possiamo avere multipli PCS (i PCS sono gli agent) all’interno della macchina, ognuno deputato all’individuazione di determinate caratteristiche (ad es. ci può essere un agent che controlla la configurazione della rete, un agent che controlla l’antivirus, etc…) è necessaria la presenza di un broker che deve raccogliere tutte le informazioni e le deve consolidare, cioè prende le varie informazione che i vari PCS ricavano circa la macchina e le trasmette al Network Access Requestor (NAR) che ha la funzione di connettere i clients alla rete, di gestire l’autenticazione a livello utente e tutti i dati ottenuti dai vari PCS vengono mandati a qualcuno che deve validare i dati per capire se questa macchina è sicura o meno. Questi oggetti che valideranno e valuteranno i dati sono detti Posture Validators. Quando abbiamo chiarito di come vengono acquisite le informazioni circa le macchine, abbiamo specificato che esistono due opzioni di raccolta dati: agent-based o agentless. Nel caso in cui si lavora in modalità agentless i posture collectors possono essere componenti esterne che non sono situate sulla macchine, e potrebbero essere localizzate, ad esempio, sulla console del NAC ed effettuano delle scansioni per ricavare delle informazioni sulla macchina. Il posture agent (PA) funge da unico punto di contatto sull'host per aggregare le credenziali da tutti i plug-in di controllo e comunicare con la rete. Questo modulo garantisce anche una relazione di fiducia con la rete allo scopo di scambiare credenziali e informazioni necessarie al NAC. Funziona, inoltre, come un componente middleware che acquisisce le informazioni sulle politiche dell'host e le comunica in modo sicuro al server delle politiche NAC ed interagisce direttamente con le applicazioni "abilitate per NAC" in esecuzione sull'host senza l'intervento dell'utente. Policy Enforcement Points Un altro componente fondamentale in una architettura NAC è il policy enforcement points (PEP) che comprende vari Network Enforcement Point che garantiscono e controllano l’accesso alla rete (con le ACL) e questi possono essere degli switch, routers, firewall, etc… Il PEP può essere considerato come il braccio del NAC. Figura 33 Figura 34 34 DISPENSA DEL CORSO DI CYBERSECURITY - POLITICHE DI SICUREZZA E CONTROLLO ACCESSI Figura 35 Policy Decision Points Un altro componente fondamentale in una architettura NAC è il policy decision points (PDP). In questo componente, così come all’interno di un Access Requestors si possono avere multipli posture collector, possiamo avere multipli Posture Validator, che ricevono le informazioni dai corrispondenti posture collector e le validano rispetto alle policy da applicare. Anche qui è necessaria la presenza di un Broker (Server Broker) che raccoglie/consolida tutte le informazioni ricevute dai posture validators per poter determinare le decisioni di accesso ed invia tali decisioni al Network Access Authority (NAA). Il NAA valide le informazioni di autenticazione e di posture e passa il risultato di tali decisioni al PEP, che sarà quello che fisicamente butterà fuori o ammetterà il dispositivo che deve accedere alla rete. 2.7.4 Esempio di transazione NAC Adesso mostriamo tutto il meccanismo si un NAC: 1. I PCS raccolgono informazioni sullo stato della sicurezza dell'endpoint. 2. Il CB consolida i dati dell'endpoint ricevuti dai PCS e li passa al NAR. 3. Il NAR ottenuti tali dati di valutazione della sicurezza li invia al PEP. 4. Il PEP riceve tali dati e li invia al PDP. 5. La NAA riceve i dati dal AR tramite il PEP. Se è coinvolta l'autenticazione, la NAA verifica su un DB di autenticazione se l'utente ha credenziali valide. 6. Ogni PVS controlla le informazioni dal corrispondente PCS e trasmette il verdetto al SB. 7. Il SB consolida l'input del PVS in un'unica policy response. 8. La ‘ NAA invia la risposta e le istruzioni corrispondenti al PEP. Figura 36 37 DISPENSA DEL CORSO DI CYBERSECURITY - NEXT GENERATION FIREWALLS E IDS/IPS Obiettivi della classificazione Tra gli obiettivi della classificazione troviamo soprattutto di individuare e poter riconoscere i vari flussi che transitano sui punti di analisi allo scopo di implementare sia politiche di filtraggio, e di raggruppare gli utenti in vari profili in modo tale da associare trattamenti in ragione delle applicazioni che utilizzano. È utile classificare anche per acquisire informazioni sui dati che transitano su una rete anche per effettuare particolari tuning per un dato servizio o delle diversioni di traffico, cioè applicare una priorità più alta ad alcune applicazioni a discapito di altre che richiedono meno risorse e meno interattività. 3.1.2.1 NBAR Il Cisco NBAR (Network Based Application Recognition) è un motore di classificazione disponibile solo su firewall e router Cisco per la classificazione del traffico e permette di analizzare in tempo reale, tramite deep packet inspection e payload analysis, il traffico che fluisce lungo la rete in modo da poter riconoscere i protocolli che transitano. Ha la capacità di classificare le applicazioni che hanno: • Numeri di porta UDP o TCP staticamente assegnati; • Protocolli che non sono UDP o TCP; • Numeri di porta UDP o TCP assegnati dinamicamente durante la connessione; • Classificazione basata su una ispezione profonda del pacchetto: NBAR può guardare all’interno di un pacchetto per identificare le applicazioni; • Identificare traffico http via URL, nome dell’host o tipo MIME usando le espressioni regolari (*, ?, []), Citrix ICA Traffic, classificazione in base al tipo di payload RTP; • Attualmente supporta 88 protocolli/applicazioni. Configurazione NBAR È possibile arricchire la conoscenza del motore di classificazione del traffico attraverso un linguaggio, chiamato Protocol Description Language, che si può utilizzare per rilevare nuovi protocolli. La prima cosa da fare è applicare, su una specifica interfaccia, la funzionalità di protocol discovery: int ethernet 0 ip nbar protocol-discovery A questo punto, attraverso un costrutto di class map, che permette di fare un mapping tra una classe e delle espressioni di matching, viene individuata una specifica classe: class-map match-any classe-di-prova match protocol <espressione> Dopo aver definito le classi di interesse, viene creata una policy di gestione delle classi che permette di specificare la gestione del traffico associata ad esse. Viene, quindi, creata una policy map che va proprio ad associare un trattamento ad una data classe individuata nel flusso: policy-map map-di-prova class classe-di-prova <azione (es. set ip dscp XXX)> 38 DISPENSA DEL CORSO DI CYBERSECURITY - NEXT GENERATION FIREWALLS E IDS/IPS L’ultima operazione è quella di applicare la policy all’interfaccia: int ethernet 0 service-policy input mark-codered Ecco un questo esempio in cui viene presentata una possibile applicazione di NBAR per limitare in banda il traffico WWW. Viene prima creata una mappa chiamata HTTP, in cui il protocollo HTTP viene matchato, viene poi applicata la policy map che riconosce la classe e la limita in banda, alla fine la service policy viene applicata all’interfaccia specifica. ip nbar port-map http tcp 80 8080 ! class-map http match protocol http ! policy-map limitwebbw class http bandwith 256 ! interface serial 0/0 service-policy output limitwebbw È possibile ispezionare le transazioni HTTP alla ricerca di specifiche URL (o parte di essa, come prefissi, etc…) da matchare per poterle trattare in maniera differenziata. Si vanno ad ispezionare le HTTP request che contengono particolari stringhe host/URL, per poter gestire in maniera differenziata richieste e risposte, questo si fa definendo una opportuna class map in cui si va a matchare uno specifico nome di host oppure una specifica URL o anche un MIME-type. Figura 38 39 DISPENSA DEL CORSO DI CYBERSECURITY - NEXT GENERATION FIREWALLS E IDS/IPS Blocco Code Red Worm Il Code Red Worm fu un outbreak del 2003, esso cominciò a replicarsi sulla rete mondiale saturandola, ciò però dava la sensazione di un guasto fisico. Code Red utilizzava delle vulnerabilità di un server web Microsoft chiamato Microsoft IIS, cercando delle clausole presenti nelle match protocol riportate nel riquadro sottostante. Quando venivano fatte delle get che contenevano nell’URL uno di questi pattern, queste get contenevano tipicamente URL ostili lanciate dal worm nel contesto della propria attività di propagazione. Una soluzione fu individuare una classe, definita come codered, in cui venivano matchati i tre pattern caratterizzanti la propagazione dell’oggetto ostile. Definendo, poi, una policy map che marca i pattern, la classe codered viene riconosciuta e marcata con uno specifico dscp, e viene fatta una marcatura e non un blocco per non bloccare anche il traffico legittimo. A questo punto, viene abilitata la service policy sulle interfacce, iniziando a filtrare il traffico HTTP che contiene lo specifico pattern. Infine, si applica una access list sull’interfaccia che blocca tutto il traffico marcato con dscp e fa passare il resto: class-map match-any codered match protocol http url “*default.ida*” match protocol http url “*cmd.exe*” match protocol http url “*root.exe” policy-map mark-codered class codered set ip dscp 1 int serial0 ip nbar protocol-discovery service-policy input mark-codered int ethernet0 ip access-group 100 out access-list 100 deny ip any any dscp 1 access-list 100 permit ip any any 3.2 Intrusion detection Questi sistemi sono basati sul concetto di poter andare a rilevare tempestivamente un’attività anomala riconoscendola come intrusione. Per intrusione intendiamo un insieme di azioni mirate a creare problemi alla sicurezza di una risorsa o target, in particolare: integrità (danneggiamento o modifica), confidenzialità (violazione privacy ed esfiltrazione dati) e disponibilità (denial of service). Queste intrusioni vengono rilevate solo se un amministratore di rete, stia continuamente ad analizzare il traffico ed i relativi log. Ovviamente, un intervento umano è improponibile in questi casi perché con i tempi richiesti la soluzione di un’analisi umana non è scalabile, richiede troppo tempo rispetto ai tempi di reazione richiesti. È necessario, quindi, fare affidamento a strumento di rilevazioni automatici, che si dividono in due categorie: Intrusion detection, che si occupano di identificare l’evento senza poter intervenire; ed Intrusion prevention, che estendono i meccanismi di detection attraverso funzioni di controllo accessi avanzato per proteggere i target in tempo reale. È necessario, però, fare due assunzioni di base: la prima è che deve essere permessa la monitorabilità dei sistemi; e la seconda è che le attività normali e quelle a seguito di un’intrusione devono avere evidenze differenti. 42 DISPENSA DEL CORSO DI CYBERSECURITY - NEXT GENERATION FIREWALLS E IDS/IPS 3.4 Componenti architetturali di un IDS/IPS Dal punto di vista algoritmico, i due elementi fondamentali sono le evidenze che devono essere estratte dall’osservazione del traffico (audit data) che devono poi essere usate per poter evidenziare le intrusioni, e i modelli, cioè mettere insieme le evidenze e trasformarle in opportuni modelli che definiscono un comportamento del sistema che può essere legittimo o meno. Dal punto di vista architetturale, invece, si ha: • motore di packet inspection; • audit data processor; • knowledge base; • motore decisionale; • sistemi di alarm generation e response management. Si parte da un motore di packet inspection che mediante una tecnica di packet capture si estraggono i record di audit e con l’audit data processor si estraggono le caratteristiche che vengono date in input al motore di detection che le matcha con i modelli che conosce e sulla base di questi matching vengono fuori degli allarmi che poi si traducono in opportune azioni o opportuni report di allarme. Le caratteristiche delle componenti architetturali sono gli elementi descrittivi del traffico che permettono di capire come esso si comporta. Le caratteristiche possono essere raccolte non solo da un unico punto di osservazione ma si potrebbero avere più punti di osservazione per poi correlarli e prendere una decisione a riguardo. Le caratteristiche possono essere: la lunghezza dei pacchetti, i tempi di interarrivo, e le rate di invio. Operatività IDS/IPS Un IDS, o IPS, parte dai pacchetti catturati con la lib packet capture (libpcap), dopodichè estrae le features, poi le matcha con un modello, identificando uno specifico protocollo e fa una classificazione o matching di specifiche signature per prendere le proprie decisioni. Figura 41 Figura 42 43 DISPENSA DEL CORSO DI CYBERSECURITY - NEXT GENERATION FIREWALLS E IDS/IPS 3.5 Approcci e implementazioni I due possibili approcci, che caratterizzano le implementazioni di sistemi di intrusion e detection e prevention, sono quelli basati su: • Misuse detection system (o anche signature-based intrusion detection system), che usano pattern di attacchi ben conosciuti o di punti deboli del sistema per identificare le intrusioni • Anomaly detection system, che opera sulla base di variazioni statistiche delle caratteristiche matchate. Le implementazioni, invece, di un sistema IDS o IPS si distinguono per essere basate su: • Approccio orientato all’analisi del traffico di rete (network based); • Approccio orientato all’analisi dell’attività dei singoli processi sulle singole macchine coinvolte (host based). Dimensioni della detection La figura 43 mostra una tassonomia delle varie dimensioni della detection, cioè è possibile lavorare su varie dimensioni ortogonali tra loro: a livello di utente o di sistema, a livello di host o a livello di rete, a livello di signature o a livello di anomalia. 3.5.1 Implementazioni Host-Based Il principio di base su cui sono strutturate le implementazioni host-based è quello di effettuare monitoraggio, auditing (cioè, verifica, revisione) e analisi a livello di sistema operativo (o in generale su host) per riconoscere delle specifiche attività ostili di intrusione generate, ad esempio, da un malware che sta infestando la macchina. A questo livello è possibile eseguire un’analisi statica o dinamica di un programma e monitorare le system call e i comandi della linea di comando eseguite da specifiche applicazioni; Questi sistemi, però, richiedono informazioni molto accurate per poter fare una detection efficace. Queste applicazioni incorono in alcune problematiche; tra le principali troviamo che dipendono fortemente dall’intervento umano e che un attaccante dopo aver violato la macchina può modificare l’IDS al fine di truccare i log; inoltre la visione degli attacchi è esclusivamente locale. Figura 43 44 DISPENSA DEL CORSO DI CYBERSECURITY - NEXT GENERATION FIREWALLS E IDS/IPS 3.5.2 Implementazioni Network-Based Le implementazioni basate su network-based (Network Intrusion Detection System o NIDS) analizzano il traffico di rete per identificare intrusioni, permettendo quindi di monitorare non solo un singolo host ma una rete completa. Queste implementazioni sono basate su punti di osservazione multipli, localizzati in punti strategici della rete (in vari segmenti di rete), come ad esempio dei taps tramite cui poter raccogliere informazioni sul traffico (sniffer). Questi sistemi sono in grado di fare deep packet inspection sul traffico di rete, e sono in grado di riconoscere tracce di attacchi come la violazione dei protocolli e l’occorrenza di pattern non normali, relativi all’attività che l’host fa sulla rete, generando eventuali allarmi in presenza di intrusioni/violazioni. Queste implementazioni, però, presentano delle limitazioni. Tra di esse troviamo che non è possibile eseguire il payload per fare analisi statica o dinamica; la deep packet inspection dà solo informazioni semantiche, ma non dà informazioni in dettaglio; queste implementazioni devono gestire significative moli enormi di traffico; possono essere aggirati mediante tecniche crittografiche e in questo senso la deep packet inspection non ha più utilità. Questi sistemi, inoltre, non sono da considerare come una panacea per tutti i problemi e non basta avere un sistema di intrusion detection o prevention: essi non sostituiscono un firewall, non garantiscono che vengano effettuati degli audit di sicurezza, non sostituiscono una policy di sicurezza affidabile e seria, sono in grado di produrre un certo numero di falsi positivi, possono essere messi in condizioni di non operabilità da attacchi DoS e vanno in difficoltà con infrastrutture molto veloci, dove il packet capture non è realizzabile neanche con hardware dedicati. 3.5.3 Approccio Misuse detection Quando si lavora in logica misuse detection, gli IDS o IPS devono lavorare su una base di conoscenza, e questa base è costruita su una serie di regole che descrivono l’attività di intrusione sulla base di pattern di traffico specifico: questi pattern si chiamano signature (firme). Per descrivere questi pattern si usano dei linguaggi descrittivi che definiscono le espressioni di matching sia a livello di protocolli di rete che di payload. L’approccio misuse detection è, quindi, basato sulla costruzione di un database di conoscenza che viene utilizzato dal detection engine, quest’ultimo farà pattern matching sequenziali sulla base della sua conoscenza. Il vantaggio è che sono molto accurati, ma lo svantaggio è che queste soluzioni non sono in grado di riconoscere attacchi zero-day. Ogni signature è caratterizzata da almeno tre attributi distinti: il tipo, il trigger (allarme), ed una eventuale action. Per quanto riguarda il tipo, le signature possono appartenere a due categorie: le signature atomiche, rilevabili analizzando un singolo pacchetto; e le signature composte, rilevabili dopo aver analizzato una sequenza di pacchetti. I trigger, invece sono gli allarmi generati quando si verifica il match di una signature. Le action sono le azioni di risposta. Vediamo meglio in dettaglio i tipi di signature: • Signature atomiche: le signature atomiche rilevano le forme più semplici di attacco individuabile dall’analisi di un singolo pacchetto, attività o evento da esaminare per determinare la corrispondenza con un pattern noto. In tal caso, viene attivato un allarme e viene eseguita un'azione associata al pattern. Inoltre non è richiesta alcuna conoscenza di attività passate o future (non sono richieste informazioni di stato sul flusso di pacchetti). 47 DISPENSA DEL CORSO DI CYBERSECURITY - NEXT GENERATION FIREWALLS E IDS/IPS • Approccio supervisionato: nell’approccio supervisionato si parte da un training set pre-classificato, l’obiettivo è creare un classificatore in grado di costruire il proprio modello partendo dal set di supervisione e che riesca poi a classificare nuovi oggetti. Il training set è costituito da insiemi di coppie: vettori di caratteristiche, o istanze, e label di classificazione, e ad ogni evento normale viene assegnata un’etichetta ed un insieme di valori. A partire dal training set si costruisce il classificatore, che può essere testato su istanze non precedentemente viste; l’insieme di dati su cui viene testato si chiama testing set. Ovviamente ci sono dei problemi, uno di questi e capire se l’algoritmo di training utilizzato sia effettivamente efficace nella classificazione di nuovi oggetti. Un altro problema importante è capire se il sistema riesca a convergere, cioè se riesca a scalare sufficientemente con le dimensioni del traffico e sia in grado di dare una risposta in ogni caso. Un altro aspetto importante è la capacità di astrazione, cioè quanto un sistema sia in grado di prediligere soluzioni semplici e non troppo articolate. • Approccio non supervisionato: nell’approccio non supervisionato non si ha nessun campione pre- classificato, non c’è una categorizzazione sugli elementi da cui poter imparare. Il sistema deve essere in grado, da solo, di raggruppare gli elementi del training set sulla base di quanto siano simili tra loro. L’obiettivo del sistema è quello di fare una serie di clusterizzazioni (divisione in gruppi), esso non sa quali sono le categorie, deve unire gli elementi che per lui condividono una proprietà comune in cluster. Questo tipo di tecniche si basano sulla misura della distanza delle feature vector tra componenti per poter individuare eventuali anomalie. Tipicamente la suddivisione può essere di tipo semplice, normali e anomalie, oppure può essere effettuata una suddivisione più approfondita anche in base al tipo di attacchi (DoS, slowloris, ecc.). • Approccio semi-supervisionato Questo approccio è una modalità intermedia. Quando si lavora in modalità supervisionata c’è un esempio per ogni classe, ci sono esempi di anomalia ed esempi di normalità, il training set descrive entrambi i fenomeni e sulla base di essi viene costruito il modello. In questa modalità, però, non si dispone di esempi di anomalie ma solo di normalità, il learning system viene addestrato solo su campioni che descrivono il comportamento normale della struttura da analizzare. Il processo di detection Quando si lavora in logica di anomaly detection, tipicamente bisogna lavorare con un classificatore bi-classe, soprattutto quando si opera in modalità supervisionata, che utilizza tecniche di machine learning per valutare gli outlayer, questo tipo di logica si chiama inferenza induttiva. Si parte dai dati di training tramite cui un algoritmo impara, viene costruito il modello che poi viene provato sui dati di test, alla fine si ottiene un certo livello di accuratezza. Il processo di detection parte dall’analisi di dati di traffico puliti, e su questi si crea una baseline. A questo punto è necessario attendere un certo intervallo di tempo in modo da creare dei valori normali per la baseline che poi vengono confrontati con i valori attuali; se si riscontrano mancate corrispondenze viene lanciato un Figura 45 48 DISPENSA DEL CORSO DI CYBERSECURITY - NEXT GENERATION FIREWALLS E IDS/IPS allarme, altrimenti si estraggono i valori dalla baseline per confrontarli con i valori attuali facendo ricominciare il ciclo. Se la baseline deve cambiare si aggiorna il modello nel momento in cui diventa necessario. Il processo di training Il training viene fatto attraverso campioni pre-classificati che costituiscono la ground truth. Il training non è un processo statico, bensì può cambiare nel tempo, infatti, è necessario raffinarlo andando ad includere nuovi tipi di attacchi, eventualmente sarà necessario effettuare un riaddestramento del sistema. Sistemi di classificazione supervisionata I sistemi di classificazione supervisionata più comuni sono basati principalmente su: alberi decisionali, reti neurali e SVM (Support Vector Machines): • Alberi decisionali: gli alberi decisionali hanno lo scopo di rappresentare un’anomalia espressa proprio sotto forma di un albero, ciò che viene rappresentato sono i valori delle caratteristiche. Esso prende in input un elemento descritto come una coppia attributo-valore ed emette una decisione binaria (anomalo o non anomalo). Un albero di decisione viene espresso come un insieme di congiunzioni e disgiunzioni di implicazioni: sullo stesso ramo dell’albero ci saranno delle congiunzioni, il passaggio da un ramo ad uno parallelo sarà una disgiunzione. Le decisioni vengono costruite sulla base del training set, sia D l’insieme degli esempi che permettono di prendere una decisione, ogni elemento di D viene rappresentato da un vettore che rappresenta i valori degli attributi prescelti per descrivere le istanze del dominio 𝑥:< 𝑣1 = 𝑣𝑎𝑙𝑖 , 𝑣2 = 𝑣𝑎𝑙𝑗, … , 𝑣𝑛 = 𝑣𝑎𝑙𝑚 >, ad esempio si potrebbero avere dei valori booleani {0, 1} che indicano se una proprietà vale o meno. È importante considerare che un albero decisionale è in grado di descrivere qualsiasi funzione booleana, quindi permette di modellare qualsiasi tipo di processo. È opportuno utilizzare gli alberi decisionali quando tramite essi è possibile rappresentare gli esempi come coppia attributo-valore. Inoltre, funzionano molto bene quando hanno a che fare con insiemi discreti, d’altro canto sono meno affidabili quando lavorano con funzioni che assumono valori nel continuo. Un altro aspetto positivo è che sono molto affidabili quando bisogna definire processi di classificazione con risultati booleani, anche se non è detto che l’albero decisionale porti solo a risultati booleani, è infatti possibile lavorare in logica multi-classe. Tramite gli alberi decisionali è, inoltre, possibile rappresentare il concetto da apprendere mediante una forma normale disgiuntiva, cioè gli elementi sono rappresentati da congiunzioni e disgiunzioni. Come già detto, il training set D è un insieme completo di esempi che permettono al sistema l’apprendimento. Sarebbe semplice creare delle espressioni congiuntive per ogni esempio, per poi creare delle disgiunzioni tra di loro, in questo caso il sistema sarebbe molto bravo a classificare ciò che già conosce ma non avrebbe potere predittivo su esempi non visti. L’obiettivo, però, è quello di estrarre dal training set un modello (l’albero di decisione) che sia in grado anche di interpretare ciò che non conosce. Algoritmo di costruzione per alberi di decisione: la logica per la creazione dell’algoritmo è sempre quella di creare un sistema di decisioni quanto più semplice possibile, si basa sul principio del rasoio di Ockham: l’ipotesi più probabile è la più semplice che si possa verificare, purché sia consistente con tutte le osservazioni. L’obiettivo è, quindi, identificare l’albero più piccolo. l’idea è partire dall’analizzare dapprima gli attributi caratterizzanti, facendo una feature selection, cioè capire quali sono le feature più discriminanti. 49 DISPENSA DEL CORSO DI CYBERSECURITY - NEXT GENERATION FIREWALLS E IDS/IPS 1) Ad ogni passo viene scelto l’attributo più caratterizzante, che diventa la radice dell’albero, gli esempi vengono poi suddivisi. 2) Per ogni nodo successore: ➢ Se ci sono sia positivi che negativi, viene applicato ricorsivamente la stessa logica, partendo dall’insieme di attributi successivi; ➢ Se sono tutti esempi positivi, la foglia viene posta a positivo (anomalia); ➢ Se sono tutti esempi negativi, la foglia viene posta a negativo (non anomalia); ➢ Se non ci sono esempi viene restituito il valore di default calcolato sulla maggioranza del nodo progenitore; ➢ Se non ci sono più attributi ma sono presenti ancora esempi misti si ha una situazione di errore o di non determinismo. Gli alberi decisionali anche se sono molto primitivi, sono estremamente efficienti e sono quelli che convergono più rapidamente. • Reti neurali: le reti neurali hanno il vantaggio di essere sistemi di classificazione universali. Sono basate su una struttura a grafo orientato, in cui ciascun nodo (neurone) e ciascun arco (interazioni fra neuroni), rappresentano il modo di comportarsi di un cervello. Il tipo di collegamento tra neuroni ne caratterizza il comportamento. Ogni neurone ha una soglia specifica di attivazione. Una rete neurale lavora a livelli, in input vengono inseriti dei dati riguardanti la rete in esame; questi dati vengono passati attraverso i vari livelli della rete neurale, sul layer di output viene restituita la classificazione. • Support Vector Machines (SVM): una SVM è più primitiva rispetto alle reti neurali, può lavorare sia in logica binaria che in logica multi-classe. Il principio è andare ad imparare qual è il confine tra esempi che appartengono a classi diverse di campioni di addestramento. Funziona attraverso le proiezioni di esempi in uno spazio a n-dimensioni, in questo spazio si cerca di individuare un piano di separazione fra lo spazio degli eventi di una classe rispetto allo spazio degli eventi di un’altra. In uno spazio n-dimensionale non si parlerà più di linea di separazione ma di iperpiano di separazione. L’iperpiano di separazione tra eventi normali e anomali massimizza la sua distanza dagli esempi di training più vicini. Per usare una SVM bisogna scegliere una funzione di kernel che abbia la stessa valenza di una funzione di trasferimento nelle reti neurali. La funzione di Kernel caratterizza la capacità del SVM di risolvere un problema. Sia reti neurali che SVM necessitano di lavorare su una base di esempi pre-classificati, c’è bisogno di un esperto umano, o una macchina che certifichi dei campioni, che dica in maniera sicura che un campione appartiene a una classe o ad un’altra. Problemi nei modelli supervisionati Lavorare con un modello supervisionato non è semplice, perché bisogna avere una ground truth, cioè una pre-classificazione affidabile. È usanza comune andare a creare dei dati di anomalie in modo artificiale, ad esempio con una rete disconnessa dal mondo esterno in cui viene generato del traffico di attacco di proposito. Fare questo però è semplicistico, perché è un modello che risente dell’artificialità. Un altro problema importante è quello dell’underfitting e dell’overfitting, cioè avere uno sbilanciamento nel set di addestramento tra campioni che descrivono eventi normali e anomalie. Il risultato di tale sbilanciamento è che il modello sarà bravo a riconoscere un caso piuttosto che un altro. K-Nearest Neighbors Questa tecnica si basa sul concetto di avere un insieme di elementi pre- classificati ma non richiede una fase di addestramento del modello, perché nel momento in cui arriva un campione, calcola la distanza con i campioni noti e in ragione di una soglia rispetto alla distanza, lo classifica. Il parametro K sta ad indicare il numero di vicini da prendere in esame per la classificazione, va ad influenzare 52 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE influenzato/toccato/alterato il contenuto del traffico, ma compromette la privacy dello stesso. Quindi questa tipologia di attacchi sono orientati esclusivamente ad acquisire informazioni senza essere in nessun modo percepibili. Però nella stessa logica MITM si possono verificare degli attacchi che introducono una componente attiva, cioè piuttosto che basarsi solo sull’osservazione, viene messa in pratica quello che viene detto hijacking (ovvero dirottamento) che prevede di dirottare il traffico di una comunicazione end-to-end di due macchine che si parlano, su una componente di intervento che è il MITM (esempio: ARP spoofing). Questo prevede la compromissione del contenuto de traffico e alterare il flusso della comunicazione, compromettendone l’integrità. Evoluzione degli attaccanti I potenziali attaccanti potrebbero essere: hacker (cracker), criminali solitari, attaccanti interni, spie industriali, attivisti, organizzazioni criminali, terroristi, infowarrior e forze dell’ordine. In particolare le forze dell’ordine potrebbero legittimamente condurre un attacco, per esempio quando hanno la necessità di intercettare la comunicazione tra criminali (white hat). I profili degli attaccanti negli ultimi tempi hanno subito una evoluzione molto significativa, passano da attività semplici vandalistiche, attività di esplorare certe situazioni, fino ad un profilo tipicamente industriale o criminale con interesse che possono coinvolgere la sicurezza nazionale. I modelli di attaccanti Vediamo adesso come definire un modello di un attaccante. Il modello tradizionale è il modello Dolev-Yao (DY) in cui c’è un unico attaccante e le due parti che devono comunicare, e l’unico attaccante però può essere visto come un insieme di attaccanti collusi, come ad esempio un insieme di macchine che possono partecipare in maniera ostile nei confronti di una organizzazione che possiamo modellare come un unico attaccante con poteri maggiori. Un altro tipico modello di attaccante è il modello BUG (Bad, Ugly, Good), che si basa sul tipo di azioni che gli attaccanti intraprendono. Si può avere qualcuno che viola le regole, collusi o meno, qualcuno che si comporta in maniera diversa indipendentemente dal proprio interesse, e poi ci sono quelli che seguono le regole. Questo modello è più complesso rispetto al modello precedente e ci consente di avere maggiori sfumature nel caratterizzare il comportamento dei singoli personaggi coinvolti. Figura 46 53 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE 4.2 Networking scanning: tecniche di network mapping e port scanning Vediamo, adesso, gli attacchi più semplici, ovvero gli attacchi di network scanning. Quando si vuole effettuare una scansione della rete, che costituisce il primo passo per qualsiasi tipo di attacco, si parte da una operazione di mappatura della rete. Quindi il primo passo è scansionare la rete individuando quali e quante macchine sono presenti; successivamente si è in grado di andare più in dettaglio sulle singole macchine ed effettuare un vulnerability scan sulle macchine stesse. Questo può essere fatto con strumenti molto semplici come il ping oppure usando strumenti più complessi che permettono di effettuare una esplorazione più granulare del perimetro di rete ed individuare i punti di vulnerabilità. Quindi dall’esterno si cerca di capire non solo quanti e quali sono i soggetti coinvolti, ma si cerca di capire anche la struttura della rete individuando, per esempio, la presenza di eventuali subnet, router intermedi, firewall, etc… ed una volta che si ha un quadro topologico generale della rete in cui si individua la lista delle macchine da esplorare e come sono organizzate, si può andare più in dettaglio, macchina per macchina, con attività di port scan e vulnerability scan, per individuare quelli che sono i servizi attivi su ogni macchina e poi andare a esplorare quelle che sono le vulnerabilità di questi servizi. Queste attività si effettuano in due casi: il caso in cui si ha il compito di comportarsi in maniera ostile (attacco) nei confronti di una infrastruttura (black hat), ed il caso in cui si effettua una attività di scansione ma si informa precedentemente l’organizzazione coinvolta perché si vuole effettuare allo scopo benevole (white hat) un network security assestement, cioè il compito è quello di scoprire le potenziali vulnerabilità di una infrastruttura che chiede di essere analizzata per condurre una analisi dei rischi. Iniziamo, adesso, a vedere le più comuni tecniche di mappatura della rete (paragrafo 4.2.1), per poi passare alle tecniche di scansione delle porte (paragrafo 4.2.2). 4.2.1 Tecniche di network mapping UDP Network Mapping Una delle più note è quella che si basa sul servizio UDP, servizio ormai deprecato, in cui basta l’invio di pacchetti sulla porta 6 su una macchina qualsiasi e la macchina deve rispondere a ritroso. In questo modo si può esplorare, o in sequenza, o randomicamente, tutte le macchine che fanno parte di un certo netblock, e chi risponde vuol dire che la macchina relativa è presente, quindi se si manda un echo request ci si aspetta di ricevere un echo reply. Nell’immagine seguente è mostrata una cattura tcpdump dei pacchetti echo. Figura 47 54 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE ICMP Network Mapping Sullo stesso criterio si basa il protocollo ICMP, infatti tutte le macchine di default sono abilitate a rispondere al ping, a meno che un firewall non lo blocchi. Infatti un firewall può riconoscere questo tipo di attacco di scansione individuando una serie di echo-request che arrivano progressivamente (a cui, poi, dovranno corrispondere i rispettivi echo-reply), e le macchine possono essere configurate in maniera tale da bloccare le risposte, ovvero gli echo-reply. Nell’immagine seguente è mostrata una cattura tcpdump dei pacchetti echo. ICMP traceroute Network Mapping E’ possibile effettuare qualcosa di più interessante rispetto ad usare gli echo-request e gli echo-reply, cioè è possibile utilizzare il meccanismo su cui si basa il traceroute per effettuare delle scansioni verso tutti gli host della rete. Figura 48 Figura 49 57 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE 4.2.2 Tecniche di port scanning Queste viste fino ad ora sono tecniche di host scanning con cui si va a rilevare la presenza di uno specifico host sulla rete. Viceversa, quando si rileva la presenza di una macchina e si vuole conoscere/analizzare l’attività che questa svolge all’interno della propria rete di appartenenza, si ha la necessità di analizzare quali sono le porte aperte (TCP e UDP) per capire i servizi che essa offre: in questo caso si dice che si effettua una attività di port scanning. Tale attività serve non solo quali sono i servizi associati alle porte, ma anche per individuare eventuali vulnerabilità associate a tali servizi. Una porta si dice "in ascolto" ("listening") o "aperta" quando vi è un servizio, programma o processo che la usa. La progettazione ed il funzionamento di Internet si basa su una suite di protocolli internet, comunemente chiamato TCP/IP. In questo sistema gli hosts e i servizi di host utilizzano due componenti: un indirizzo IP e un numero di porta. Esistono 65536 numeri di porta distinti e utilizzabili. Molti servizi utilizzano una gamma limitata di numeri. Alcuni port scan scansionano solo i numeri di porta più comuni, o porte più comuni associate a servizi vulnerabili, su un determinato host. Inoltre TCP è un protocollo connection-oriented e tramite alcuni flag caratterizza i pacchetti che curano la connessione. Questi flag sono: SYN (richiesta di sincronizzazione), ACK (accusa di ricevuta), FIN (termine connessione), RST (rifiuto di connessione). Sfrutteremo tali flag allo scopo di sapere se un certo host è on line oppure se una certa porta è in listening. Il risultato della scansione di una porta rientra solitamente in una delle seguenti categorie: • aperta (accepted): l'host ha inviato una risposta indicando che un servizio è in ascolto su quella porta, • chiusa (denied): l'host ha inviato una risposta indicando che le connessioni alla porta saranno rifiutate (ICMP port-unreachable), • bloccata/filtrata (dropped/filtered): non c'è stata alcuna risposta dall'host, quindi è probabile la presenza di un firewall o di un ostacolo di rete in grado di bloccare l'accesso alla porta impedendo di individuarne lo stato. Ma come si fa ad effettuare un port scanning? Vediamo, adesso, alcune tecniche di port scanning: UDP port scanning Tipicamente ci si basa sul discorso che le porte che non hanno associate un’applicazione, rispondono normalmente (se non filtrate da un firewall/router) con un messaggio di notifica errore ICMP del tipo “porta non raggiungibile” e quindi aspettando tale messaggio e mandando un pacchetto di scansione verso la specifica porta (nel caso dell’esempio di cattura TCPdump in figura 53, si sta inviando un pacchetto UDP sulla porta 516), se arriva a ritroso un ICMP “porta non raggiungibile” è evidente che la porta non ha associata nessuna applicazione. Viceversa, se la porta è aperta, tipicamente non si riceve nessuno risposta, e questo vuol dire che c’è un processo che sta in ascolto ed è in attesa di informazione (si noti, però, che questa circostanza potrebbe anche significare che vi è un firewall che ha bloccato a ritroso il messaggio ICMP “porta non rggiungibile”). Ecco un esempio di cattura di questa situazione con TCPdump: Figura 53 Figura 54 58 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE Si consideri, però che il protocollo UDP è un protocollo “inaffidabile”, quindi le informazioni ottenute tramite un UDP port scanning, sono relativamente affidabili. TCP port scanning Se, invece, si vuole effettuare una scansione per rilevare servizi offerti al livello del protocollo TCP, allora il tipo di scansione più banale è cercare di aprire una connessione mediante un three- way handshaking, quindi se una porta è aperta, dopo il SYN iniziale inviato dall’attaccante, transita a ritroso un SYN + ACK da parte della vittima, ed infine una volta aperta la connessione essa viene chiusa immediatamente; quindi si aspetta solo l’apertura della connessione e poi c’è la doppia chiusura, una da un lato e una dall’altro, con i rispettivi FIN (mezza chiusura o chiusura four-way). Questo scenario permette di rilevare questo tipo di scansione, quindi se una porta è aperta allora essa risponderà al SYN con un SYN + ACK, e nel momento in cui viene inviato un ACK come conseguenza del SYN + ACK, si manda un FIN per chiudere il tutto. Se, invece, la porta è chiusa allora al SYN iniziale la macchina legittimamente risponde con RST. Da specificare che l’attaccante tipicamente effettua una scansione massiva, a tappeto, su tutte le 65535 porte possibili. Questa scansione lascia le sue tracce che sono facilmente rilevabili tramite logging con un IDS (ma anche a livello della singola macchina), tipicamente, infatti, una connessione aperta ed immediatamente terminata è un segnale che si è soggetti al TCP port scanning (Questo descritto è detto attacco TCP Connect scan). E’ possibile anche evitare lo stabilirsi di un three-way hanshaking per evitare che la connessione venga loggata, quindi si cerca di abortire la connessione in origine, evitando di completare l’handshaking iniziale; quindi se la porta è chiusa allora funziona come descritto precedentemente (invio di un RST), mentre se una porta è aperta, l’attaccante invia un SYN iniziale, poi riceve dalla vittima un SYN + ACK a ritroso, e poi l’attaccante stesso invece di inviare un ACK di risposta al SYN + ACK, invia un RST (reset) in modo tale che la connessione viene chiusa. Tipicamente questi tentativi con scansione non sono soggetti al logging perché non completano l’handshaking iniziale, ma sono comunque rilevabili da una analisi effettuata da un IDS, poiché esso percepisce una anomala attività in termini volumetrici in cui su una stessa macchina vengono scansite in sequenza oppure in ordine sparso (si può randomizzare) un numero elevato di parte, tipicamente 65535, e questo stesso processo viene ripetuto su più macchine, e quindi un IDS che ha una visione globale dell’intera rete può facilmente accorgersene (Questo descritto è detto attacco TCP SYN scan). Per bloccare facilmente questo tipo di scansioni viste basta applicare in una ACL la clausola ESTABILISHED, perché utilizzandola non viene ammesso nessun SYN in ingresso che non sia associato al ritorno relativo a connessioni che hanno già superato un three-way handshaking. In ogni caso per percepire questo tipo di attacco si può utilizzare TCPdump andando a vedere che ad eccezione dei server della rete interna c’è qualcuno che invia una grande quantità di SYN in ingresso (mediante un filtro TCPdump). Figura 55 Figura 56 59 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE Non SYN-ACK-RST scannings Infine, è possibile effettuare qualcosa di più pericoloso, sfruttando particolari meccanismi che non hanno bisogno di usare dei FYN degli ACK e dei RST, e quindi passano tranquillamente sui controlli che realizzano tutti i firewall basato sull’enforcing della clausola ESTABILISHED. Questi meccanismi vengono chiamati scansioni di non-SYN- ACK-RST, e sono una famiglia di scansioni che comprendono vari sottotipi di scansioni che cambiano nome in funzione del loro specifico comportamento e tutti si basano sulla logica di inviare dei pacchetti fuori sequenza; questa famiglia comprende: i FIN scan, che avvengono quando l’attaccante invia di pacchetti FIN direttamente su una determinata porta; se la porta è aperta allora non si hanno risposta in quanto il pacchetto FIN viene ignorato, mentre se la porta è chiusa allora si riceve un RST (questo è previsto dall’RFC-793)). La tecnica XmasTree scan, invece, prevede l’invio di un pacchetto con i bit FIN, URG e PUSH attivati, alla porta target. Secondo la RFC-793, il sistema obiettivo dovrebbe rispondere con RST per tutte le porte chiuse. Infine con la tecnica NULL scan vengono inviati dei pacchetti con tutti i flag disattivati. Secondo la RFC-793, il sistema obiettivo dovrebbe rispondere con RST per tutte le porte chiuse. Queste tipologie di scansioni possono essere rilevate con filtri TCPdump, individuando le relative posizioni dei flags TCP, così come mostrato nella figura seguente; da notare che anche questa volta la regola ESTABILISHED può bloccare questo tipo di scansioni. Figura 57 Figura 58 62 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE bot-master (colui a capo della legione), attraverso una gerarchia di host, è in grado di avviare la catena di command and control e, quindi, avviare l’attacco vero e proprio. Gli attacchi DDoS vengono divisi in due grandi tipologie: attacchi volumetrici, cioè attacchi caratterizzati da una grande capacità di generare pacchetti e sono facilmente individuabili, ed attacchi non volumetrici o stealth, caratterizzati dalla generazione di un numero più basso di pacchetti ma che sono in grado di poter bloccare la funzionalità dei loro target: • Gli attacchi volumetrici (bandwith saturation) prevedono la saturazione della banda con cui la vittima si collega alla rete allo scopo di negare le risorse principali. La saturazione di banda può essere fatta tramite due famiglie di attacchi: flood attack e amplification attack:  ➢ La prima famiglia comprende i flood attack che vengono a loro volta suddivisi in due sottocategorie: nella prima sottocategoria vengono generati flussi di pacchetti per saturare le risorse della vittima usando pacchetti UDP e ICMP, questo tipo di attacco è un attacco diretto, cioè l’origine genera il flusso direttamente verso la vittima (flood attack); nella seconda sottocategoria, invece, non c’è la generazione diretta del flusso, ma viene pilotato dall’attaccante ed erogato verso la vittima da una terza parte attraverso un effetto chiamato di “riflessione” (Reflection attack). ➢ La seconda famiglia di attacchi comprende gli amplification attack. Che si basano sull’amplificazion di un attacco DoS realizzata tipicamente sfruttando elementi di rete non correttamente configurati, ad esempio inviando messaggi di broadcast ad un’intera rete. A questi ultimi appartengono i broadcast amplification attack e i DNS Amplification Attack. I broadcast amplification attack utilizzano lo stesso meccanismo in cui vengono generati grandi flussi di traffico in grado di saturare la capacità di banda del target, però questa tipologia nasce con lo scopo di risolvere un preciso problema: sia i reflection attack che i flood attack hanno una potenza di attacco pari alla somma delle potenze di attacco della legione di host a disposizione. I broadcast amplification attack si basano sul fatto di sfruttare dei meccanismi tradizionali previsti dalla rete, come l’invio di pacchetti broadcast, per poter attaccare con una potenza X e ottenere un effetto pari a X moltiplicato il fattore di amplificazione. • Gli attacchi non volumetrici (resource starvation) si basano sul generare flussi di dimensioni limitate e, quindi, non sono facilmente percepibili da un sistema automatico di rilevamento (IDS e IPS). Questi flussi sono realizzati in maniera tale da saturare la capacità delle risorse di un server in modo tale da sfruttare delle vulnerabilità di livello protocollare o generare pacchetti malformati da mandare poi al sistema target per creare problemi sullo stack TCP/IP sfruttando dei bug o vulnerabilità. 4.3.1 Bandwidth saturation DDoS Nella dinamica della bandwith saturation c’è una vittima che viene raggiunta, attraverso l’infrastruttura dell’operatore che offre i servizi, da un attacco che proviene da una legione di attaccanti localizzati in punti diversi della rete internet. Un banale bandwith saturation attack si può effettuare con un ping o un ICMP flooding inviato da una singola macchina. Questi attacchi funzionano molto bene verso target con capacità limitate, e una vittima non ha nessun modo di difendersi da tali attacchi. Inoltre, per la vittima diventa impossibile distinguere il traffico legittimo da quello malevolo. Quando il traffico è 63 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE molto elevato anche l’infrastruttura dell’operatore potrebbe risentirne. Firewall, router, IPS, etc… possono essere utilizzati per implementare tecnologie e strumenti di difesa in grado di mitigare questo tipo di attacchi, ma non vengono utilizzati a livello della vittima ma vanno diffusi a livello dell’infrastruttura di rete che dà servizio al target. Strategie e strumenti di difesa Esistono diverse strategie di mitigazione; la prima è la mitigazione statica che permette di contrastare l’attacco con policy fissate staticamente (ACL), quindi si stabiliscono delle regole che operano il filtraggio a monte. L’IDS non offre nessuna mitigazione perché, come noto, esso è solo in grado di rilevare. Per eseguire la mitigazione statica è utile anche un firewall tradizionale che però è utilizzabile solo per attacchi con capacità limitata. Quando si arriva ad un traffico ai livelli di Gb il router è lo strumento ideale. Man mano che si sale di banda diventano utili i sistemi IPS o i firewall di nuova generazione. Con l’aumento del traffico degli attacchi ci si avvicina alla mitigazione dinamica, in questi casi si parla di reazione networkcentrica (o reazione coordinata in rete) cioè non sono solo i firewall, IPS o router che si oppongono all’attacco ma è l’intera rete che in maniera cooperativa reagisce, in accordo a una politica comune, implementando a ciascun livello delle opportune attività in grado di mitigare l’attacco. Sempre in ambito della reazione networkcentrica, la logica di controllo network-based deve essere in grado di realizzare meccanismi di early warning, cioè ci devono essere un insieme di componenti intelligenti che osservano il traffico alla ricerca di elementi ostili per poi avviare le specifiche attività di difesa. È necessario raccogliere su più punti della rete i dati nell’ottica di poter sviluppare modelli analitici predittivi. L’obiettivo è raccogliere i dati, analizzarli e applicare le regole di filtraggio per bloccare completamente la minaccia nel minor tempo possibile. La reazione coordinata in rete parte prevede una serie di fai: • Fase di detection: si parte da una fase di detection in cui vanno rilevati gli attacchi DDoS mediante le piattaforme di anomaly detection già viste in precedenza. • Fase di diversione del traffico: nella fase seguente, a partire dalla piattaforma di detection, bisogna avviare delle procedure per l’instradamento/diversione del traffico verso centri di analisi e filtraggio (centri di cleaning) per poter ripulire il traffico anomalo. • Fase di cleaning/filtraggio: quando il traffico arriva nei centri di cleaning, vengono applicati dei filtri al traffico interessato per poter eliminare la parte ostile e far passare il traffico legittimo. • Fase di reinjection/reinstradamento: infine, la piattaforma garantisce il corretto re-instradamento del traffico ripulito verso il target. 64 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE Nella fase di detection viene individuato un fenomeno di saturazione nelle vicinanze della vittima, nel punto in cui il router della vittima si connette al provider si inizia ad avere il DoS. Tipicamente, un detector si accorge del fenomeno di saturazione (i detector non sono altro che degli IDS evoluti sparpagliati sulla rete). Il detector sulla backbone è anch’esso in grado di riconoscere il traffico anomalo. A questo punto i detector iniziano a comunicare sia tra di loro e sia con il centro di coordinamento, a cui inviano informazioni di ciò che hanno rilevato, ma più precisamente inviano tali informazioni alla piattaforma di detection che è dotata di intelligenza artificiale e inizia ad effettuare analisi del traffico. La piattaforma di detection, dopo aver rilevato il problema, comincia a mandare degli ordini e ad innescare la contro-reazione comunicando con i router ed ordinando il cleaning del traffico. 67 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE • Codice ICMP; • Flag TCP; • Lunghezza del pacchetto; • DSCP; • Codifica specifica per frammento. Le azioni che si possono fare sono per esempio limitare in banda oppure specificare delle azioni di campionamento, si possono applicare delle ridirezioni oppure marcare il traffico per poi trattarlo successivamente con delle ACL. Con il Flowspec è possibile implementare un centro di controllo, detto scrubbing center, che si occupa di distribuire le regole di filtraggio via BGP. Il centro di controllo manda le regole da applicare ai vari router che devono gestire la policy.. 4.3.1.1 Botnets come vettori di attacco: modelli e attacchi Adesso vediamo come gli attacchi DoS vengono realizzati in una logica distribuita. Esiste un rapporto abbastanza sproporzionato, in termini di banda, tra la capacità di offesa dell’attaccante e quella della vittima. Un attaccante avente una banda molto limitata non sarà mai in grado di saturare una vittima che ha una capacità aggregata di banda molto elevata, a meno che non si avvalga di certi strumenti in grado di moltiplicare la propria capacità offensiva. Questa moltiplicazione può essere fatta in una determinata modalità: questa consiste nel reclutare una legione di altre macchine ognuna dotata di una capacita, anche minimale (l’unione fa la forza), e quindi avere tantissime macchine con capacità limitate che operano in maniera coordinata vuol dire ottenere una capacità di fuoco davvero impressionante; Quindi uno degli strumenti per distribuire/costruire questa logica di attacco sono le Botnets. Le botnets si basano su una logica di precedente scansione, analisi, e successiva compromissione, di un insieme molto grande di macchine su cui viene installato un agent di controllo che prende il nome di bot; tale bot consente, a chi controlla l’attacco, un meccanismo/logica di Command and Control (C&C) simultanea su tutte le macchine che hanno installato il bot stesso (per esempio per generare traffico ostile verso una determinata vittima, quindi si può partire da un banale ping flood fino ad avviare attacchi più sofisticati). Tipicamente il bot master, cioè l’entità che controlla la botnet e che è la vera origine dell’attacco, è nascosto attraverso una serie di macchine intermedie chiamate handler che interrompono, dal punto di vista dell’identificazione (e non dal punto di vista dei comandi), la catena di command & control, in modo tale che non sia direttamente il bot master a connettersi ai bot per impartirgli i comandi. Modelli DDoS Vediamo adesso i più comuni modelli di attacco DDoS: • Modello Agent-Handler: in questo modello gli agent sono i bot, ovvero le entità che realizzano fisicamente/direttamente l’attacco generando flussi di attacco verso i target. Poi ci sono degli host intermedi, chiamati handler, che schermano il bot master nel controllare direttamente gli agent/bot e che sono comunque delle macchine compromesse ed hanno lo scopo di controllare gli agent/bot facendo l’enforcing dei comandi ricevuti dal bot Figura 69 68 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE master, oltre a schermare il bot master stesso. La comunicazione tra gli handler e i bot/agent può avvenire in maniera cifrata così come è strategica la comunicazione tra gli handler e il bot-master, in maniera tale che se si riesce a catturare/compromettere un bot o un handler deve essere difficile risalire all’ideatore dell’attacco (cioè il bot-master). Numerosi sono gli attacchi basati su tale logica avvenuti molto tempo fa: Trin00, Tribe, Flood Network (TFN), TFN 2K, etc… (Da precisare che la logica/tecnologia di attacco sono sempre le stesse da tantissimi anni, ma quello che cambia è la dimensione della botnet utilizzata per realizzare l’attacco). Buona parte degli attacchi del tipo Agent-Handler sono caratterizzati da una serie di tool abbastanza noti che utilizzano, ad esempio, porte ben-note. Ad esempio TFN non utilizza flussi TCP/UDP ma utilizza il banalissimo meccanismo di base del ping. Nella figura sottostante vengono mostrati alcuni esempi: Tutte queste tecniche, quindi, si basano sul concetto di generare dei Denial-of-Service classici, la cui potenza offensiva è moltiplicata per la dimensione della botnet utilizzata per attaccare. Quindi un banale ICMP Flood potrebbe non portare nessun effetto, ma un ICMP Flood basato sulla potenza offensiva di 100.000 macchine può diventare interessante. Ma come ci si fa a difendere? Mediante l’applicazione di filtri in ingresso ed in uscita (ACL), ma adesso non più sulle macchine target, ma sulle macchine intermedie in accordo di una logica di gestione cooperativa. Vengono, in genere, applicati dei filtri anti-spoofing come prima contromisura da parte dei provider (ISP) poiché tutti questi attacchi sono generalmente basati sullo spoofing. Un’altra interessante contromisura è la seguente: laddove non si può filtrare, come a livello di provider/ISP (a differenza di una organizzazione terminale che invece può filtrare), è possibile, invece, limitare in banda, cioè verificare se determinati flussi superano una frequenza di interarrivo troppo elevata per poi tagliarli. Figura 70 Figura 71 69 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE La limitazione in banda permette di fare, se si è un provider/ISP, che un attacco non possa saturare le risorse; non si blocca un determinato traffico, ma lo si blocca in banda. • Modello IRC-Based: in questo modello, anzichè usare degli handler intermedi che schermano l’attaccante dalla legione di bot, si utilizza un canale IRC (canale chat, canale pubblico su cui tutti possono scrivere - anche se si può utilizzare una qualsiasi chat pubblica) per far sì che quando si scrive una determinata keyword i vari bot si attivano ed innescano una specifica azione. Esempio: in una chat dove si parla di linux si potrebbero scrivere delle determinate keywords, e le macchine con i bot bordo, che sono sempre collegate sulla chat, leggono tutto quello che viaggia scartando tutto tranne le keywords, e quando ricevono queste keywords innescano una certa predeterminata azione. Esempi di celebri attacchi basati su questo modello sono: Trinity, knight e Kaiten. Infine, questi attacchi oggi sono in disuso perché è difficile rilevare l’attaccante ma è facile rilevare il canale IRC utilizzato per portare le informazioni, e questo canale IRC utilizzato come catena di command & control diventa, quindi, un single point of failure. • Modello Web-Based: piuttoso che utilizzare degli handler classici è possibile utilizzare degli handler intermedi, invisibili, in cui gli handler sono normali web-server; gli agent in attesa di comandi si connettono periodicamente ad uno o più server legittimi e solo quando trovano una keyword specifica effettuano l’attacco. Anche in questo caso l’attaccante è ben nascosto dietri a dei server apparentemente legittimi. Esempio: l’attaccante potrebbe gestire un blog o insieme di blog su dei server specifici e i bot/agent sulle macchine compromesse della legione di host che adoperano l’attacco si connettono ai web server e leggono i contenuti dei blog e quando l’attaccante pubblica dei post particolari sul blog con una keyword specifica, questa keyword innesca un certo attacco. Esempi di attacchi noti sono: Dumador, Torpig, etc.. Questo modello di attacco è ancora oggi molto utilizzata. Figura 72 Figura 73 72 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE stesso (che nel mentre l’ha cambiato/spoofato), ma corrisponde a quello della vittima e si comportano (per quanto riguarda la risposta) in base al tipo di messaggio ricevuto. Per esempio se il bot/agent invia a queste macchine riflettori dei pacchetti echo request che hanno come indirizzo di origine quello della vittima, loro risponderanno con degli echo replay verso l’indirizzo della vittima saturandone le sue capacità (ecco quindi che si comportano da riflettori). Questo effetto, tipico dei echo request/echo reply lo si può fare anche con meccanismi protocollari che prevedono una risposta come il three-way handshaking (in questo caso si spoofa l’indirizzo di origine del pacchetto contenente il SYN iniziale con quello della vittima ed il SYN + ACK arriverà, quindi, alla vittima). Questo attacco è interessante perché disaccoppia il reale attaccante (il bot) da chi conduce realmente l’attacco. (Da notare, però, che questo meccanismo non permette, invece, di disaccoppiare la potenza di fuoco del bot, cosa che verrà raggiunta negli attacchi di amplificazione) Un tipo di attacco basato sulla riflessione è quello di Fraggle. Il fruggle invia flussi di traffico broadcast verso il servizio, ormai deprecato, chargen generator di una macchina attribuendosi come indirizzo sorgente quello della vittima e la macchina rispondera con pacchetti UDP verso la vittima, la quale si ritroverà inondata di un flusso UDP (si può bloccare questo attacco bloccando tutte le porte UDP inferiori a 20 con una semplice ACL). • Broadcast Amplification: essi rientrano nella categoria dei reflection attack e l’obiettivo è superare la capacità di potenza di fuoco, ovvero, si vuole ottenere attraverso il meccanismo della riflessione un meccanismo di amplificazione, così che la capacità di fuoco dell’agent/bot non sia il limite dell’attacco, ma il limite dell’attacco deve essere la capacità di fuoco aggregata dei soggetti che l’agent utilizza per realizzare un meccanismo di riflessione. Per effettuare ciò è necessario utilizzare un qualsiasi meccanismo di amplificazione, il più semplice dei quali è il meccanismo di broadcast amplification. Funziona in questo modo: l’attaccante utilizza sempre il meccanismo della riflessione (come descritto poco fa) ma con la differenza che i pacchetti vengono inviati ad un indirizzo di broadcast di una rete, quindi i pacchetti non vengono inviati ad ogni singolo indirizzo della rete ma lo si invia solo all’indirizzo di broadcast. Ricevuto questo pacchetto, il router della rete in questione effettua la propagazione diretta del broadcast, trasformando questo pacchetto in un broadcast di livello MAC (FF:FF:FF:FF:FF:FF, 48-bit tutti settai ad 1) che innesca una risposta da parte di tutte le macchine della rete, quindi con un solo pacchetto inviato si ottiene la riflessione da parte di tutte le macchine della rete; quindi adesso, rispetto al classico attacco di reflection, si disaccoppia anche potenza di fuoco dell’agent con quella dell’attacco che viene amplificata sulla base di un fattore di amplificazione che è la dimensione della rete target utilizzata per condurre l’attacco. Figura 80 Figura 79 73 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE Un tipo di attacco basato sulla broadcast amplification è lo Smurfing. Lo smarfing tipicamente utilizza dei pacchetti ICMP (la rete di amplificazione è la rete di smurfing). Per bloccare lo smurfing si hanno due possibilità: la prima è quella di bloccare i broadcast che provengono da reti esterne applicando dei filtri opportuni (applicati sempre a livello di provider/ISP e non sulla vittima). La seconda possibilità è attualmente attiva su tutti i router dei produttori che bloccano la propagazione dei pacchetti di broadcast a livello 2, cioè quando un router riceve da remoto un pacchetto di broadcast, non lo va a trasformare in un pcchetto di broadcast di livello 2. Infatti l’attacco di smufing non è più utile, ma filtrare il traffico broadcast è una buona pratica in generale. • DNS Amplification: morto lo smurfing sono state adoperate nuove tecniche, fatta la legge trovato l’inganno. Una nuova ed alternativa logica di amplificazione è quella basata sul meccanismo del DNS (è sempre basato sulla tecnica della riflessione): il bot invia una query DNS, con indirizzo sorgente spoofato con quello della vittima, al server DNS che consente query ricorsive e gli invia una query particolare, ovvero una query che prevede la possibilità di ottenere informazioni per una intera zona. Per esempio, vengono inviati pacchetti con dimensioni molto piccole (60 byte), e la risposta contiene circa 122 byte per i record di tipo A, 4000 byte per i record di tipo testo, e 222 byte per i record fi tipo SOA, quindi la risposta ad una banale query di 60 byte diventa una risposta di ben 4320 byte, ottenendo un fattore di amplificazione di 73. Quindi se si inviano 1000 pacchetti da 60 byte, il target riceve una pressione in termini di risposte UDP DNS pari a 1000 x 4320 byte (dimensione significativa). Quali sono le contromisure? Bisogna bloccare solo ceri tipi ti query consentendo query ricorsive solo a specifici hos fidati (host della rete interna) e configurando il server DNS in modo particolare. Figura 81 Figura 82 74 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE • NTP Amplification: un altro tipo di attacco è basato sull’uso del protocollo NTP (usato per sincronizzare il tempo delle macchine con dei time server mondiali, tutti i nostri PC hanno i clock sincronizzati in modo automatico). Qualche anno fa è stata scoperta una vulnerabilità dei server NTP in cui veniva inviato un pacchetto, con indirizzo di origine spoofato con quello del target, verso un server NTP con un comando particolare “monlist”; questo invio generava una risposta con una lista di altri server agganciati con l’effetto che una piccola richiesta (anche di 0.5 Mb) si traduce in 15 Mb di risposte, raggiungendo un fattore di amplificazione teorico di 30 Mb. Come si fa a bloccare questo tipo di attacco: come prima opzione si dovrebbero correggere i server NTP disabilitando il comando monlist non dando più la possibilità, ad esterni, di fare delle query per conoscere la lista dei provider da cui questi server si vanno a sincronizzare. La seconda opzione, dato che molti server NTP ancora devo disabilitare il comando monlist, prevede che si dovrebbero specificare delle ACLs per bloccare il servizio UDP porta 123 in ingresso, facendo in modo che solo i server fidati all’interno della nostra rete possano sincronizzarsi con server esterni e tutti gli altri per sincronizzarsi dovrebbero appoggiarsi a quest’ultimo (creando quindi una gerarchia). Figura 83 Figura 84 77 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE Il software LOIC Gli attacchi low-rate possono essere ingegnerizzati sul web attraverso comunità di hacktivist. Uno strumento per l’ingegnerizzazione degli attacchi è LOIC (Low Orbit Ion Cannon), esso è un tool di attacco che recluta attaccanti che parteciperanno a una botnet volontaria gestita in maniera coordinata attraverso azioni comunicate attraverso social. LOIC è un software open source, scritto in C#, per generare grandi quantità di traffico di rete (richieste) verso un sistema target e testare la sua risposta sotto carico. LOIC è stato sviluppato inizialmente da Praetox Technologies, ma successivamente è stato distribuito come software di pubblico dominio. Il nome Low Orbit Ion Cannon è stato ispirato da un'arma immaginaria inventata nella serie di videogiochi Command & Conquer. Nonostante le ottime prestazioni del software, oggi è difficile che da solo riesca a occupare le porte di un server fino a renderlo inagibile. Il tool effettua delle http GET (10 al secondo) di un percorso immagine randomizzato verso il server vittima che generale quindi un errore 404. La request prevede anche un campo id e msg dove viene scritta la dichiarazione di intenti di attacco. Figura 89 Figura 90 78 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE SSL/TLS Handshake attack Altri tipi di attacco sfruttano la differenza, in termini di peso computazionale, tra le operazioni di cifratura e decifratura in ambito RSA. La velocità di cifratura, infatti, è dieci volte quella di decifratura, quindi, un’operazione semplice lato client può diventare molto pesante lato server. In questo modo un singolo client può saturare decine di server. Landing Esistono attacchi che non si basano sul concetto di saturazione delle risorse, ma si basano sullo sfruttare una vulnerabilità a livello di implementazione, ad esempio di stack protocollare, che crea dei problemi fino ad arrivare al crash della macchina coinvolta. Uno degli esempi più semplici è il cosiddetto attacco landing o TCP loopback DoS, che si basa sull’attivare dei three-way handshake caratterizzati da indirizzo e porta sorgente falsificati e impostati in maniera identica a indirizzo e porta di destinazione, la macchina che riceve il pacchetto, e che non ha corretto un bug di questo tipo, comincia a rispondere a sé stessa causando il blocco totale della connettività. Tipicamente, un attacco del genere porta la macchina al totale crash. Individuare un tale attacco è abbastanza semplice perché basta bloccare i pacchetti che arrivano e partono dallo stesso host tramite un filtro tcpdump. Figura 91 Figura 92 79 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE Ping of Death Un altro tipo di attacco abbastanza noto che sfrutta le vulnerabilità nello stack protocollare è chiamato ping of death e si basa sul concetto della frammentazione dei pacchetti IP: nell’inviare pacchetti, il protocollo IP genera pacchetti frammentati (pacchetti figli) che trasportano un identificativo del frammento originario (frammento padre) e un offset del frammento frammentato stesso che permette di andare a collocare il frammento nella giusta posizione quando verrà riassemblato. È ben noto che un pacchetto non può superare la dimensione di 65535 bytes, ma se supera tale dimensione allora lo si può frammentare in più frammenti in maniera tale che, durante il processo di riassemblaggio, l’offset di alcuni di essi sia sbagliato e ciò permette di superare la dimensione massima di pacchetto portando così al crash dello stack IP bloccando completamente la macchina. Un attacco del genere è facilmente individuabile perché i pacchetti IP hanno il flag more-fragments settato e il campo fragment-offset a zero, e soprattutto perché la dimensione dei pacchetti riassemblati supera i 65535 bytes. Teardrop L’attacco teardrop si basa sempre sul concetto della frammentazione, però costruisce i pacchetti frammentati in maniera tale che le informazioni di costruzione, in particolare la spaziatura fra pacchetti, siano sbagliate così che una volta ricevuti e ricostruiti i pacchetti ci siano degli overlap (spazi vuoti/intervalli) tra i frammenti individuati, questi overlap mandano in difficoltà la macchina. Figura 93 Figura 94 82 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE Il SYN flooding è stato utilizzato per attaccare l’Estonia, definendo la prima cyber war ufficialmente censita, in questo periodo ci sono stati dodici attacchi in dieci ore che hanno saturato la capacità di banda dell’intero Paese. In questi casi la soluzione migliore è il filtraggio in banda in cui devono essere bloccate tutte le sessioni SYN lasciando passare solo le sessioni già established (Committed Access Rate). Purtroppo, ciò non basta perché grandi SYN flood diventano comunque impossibili da gestire, ed alcuni provider come Prolexic e CloudFlare offrono una soluzione che limita l’effetto di questi attacchi: essa è basata su una rete di proxy in logica reverse che fanno da intermediari per stabilire le connessioni TCP e per inviare al sito solo le connessioni che passano in stato established. Esistono altri attacchi di tipo flood che non possono essere bloccati, come ad esempio il TCP connection flood, in cui invece di generare un pacchetto SYN e lasciare la connessione in piedi, viene completata la connessione tramite three-way handshake e viene mandata una richiesta HTTP HEAD; a questo punto vengono aperte connessioni e mandati head all’infinito, e tutto ciò è in grado di bypassare anche i proxy di CloudFlare. In questo caso, però, l’attaccante non può usare IP spoofati a caso, il provider può, quindi, limitarne la banda o bloccarne le origini. Figura 99 Figura 100 83 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE 4.4 Hijacking Il termine hijacking (ovvero, “dirottamento”) indica una importante categoria di attacchi che non sono basati sulla logica di creare un disservizio in modo deciso (come fanno i DOS/DDOS), ma hanno come obiettivo quello di compromettere un canale di comunicazione inserendosi in una logica man-in-the-middle per inserirsi nel contesto di una comunicazione modificando l’integrità di quello che viene inviato in questa comunicazione con lo scopo di trarne notevoli vantaggi. Vediamo adesso i più comuni tipi di attacco Hijacking: DHCP spoofing Uno dei più semplici attacchi basati sulla logica dell’hijacking è orientato al noto protocollo DHCP. Il protocollo DHCP è utilizzato per l’assegnazione dinamica di una serie di parametri per la connettività di rete (IP, DNS, Default Gateway). Questo protocollo è molto debole dal punto di vista della sicurezza poiché non prevede nessun tipo di autenticazione ed è completamente stateless; per cui quando si percepisce/intercetta, sniffando su una rete, una macchina che invia una richiesta DHCP (sono richieste broadcast) e si riesce a rispondere a questa macchina prima che risponda il vero server DHCP, allora gli si può inviare una informazione fraudolenta in modo tale da modificare dolorosamente alcune informazioni fra cui informazioni relative al Default Gateway, DNS, etc… Per esempio, se l’attaccante si configura come default gateway della macchina vittima (assegnandogli il proprio IP) che richiede un indirizzo ed un accesso alla rete, allora tutto il traffico che la macchina vittima manderà verso l’esterno dalla rete LAN passerà attraverso esso che a sua volta sarà nella situazione agire in logica man-in-the-middle ed intervenire sull’integrità di tutte le comunicazioni; oppure l’attaccante potrebbe assegnare alla vittima il proprio indirizzo IP come DNS così che tutte le richieste di risoluzione dei nomi verranno dirette verso l’attaccante realizzando un meccanismo di DNS spoofing; ad esempio un utente che vuole connettersi al sito della propria banca può essere dirottato verso un sito analogo con lo scopo di rubarne le credenziali bancarie etc… Questi tipi di attacchi sono molto semplici ma possono avere effetti significativi. Figura 101 Figura 101 84 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE IRD spoofing Un altro protocollo oggetto di questo tipo di attacco è il protocollo IRDP (ICMP Router Discovery Protocol). Questo protocollo viene usato nel momento in cui un host non ha configurato un proprio default gateway o ne ha configurato uno errato, ed in questo caso la rete se ne rende conto e gli manda una informazione (Router Advertisement) che informa circa l’identità del corretto default gateway. I messaggi che questo protocollo gestisce sono di due tipi: i “router solicitations” con il quale il client chiede una informazione circa il proprio default gateway, ed i “router advertisements” che costituiscono gli annunci mediante i quali i router informano la propria volontà di essere il default gateway per un determinata rete. Questi advertisements vengono spediti periodicamente in multicast dai router della rete e contengono un “livello di preferenza” ed un “lifetime”; in accordo alla RFC 3344, quando un host riceve più advertisement da diverse sorgenti, esso dovrebbe scegliere quello con il livello più alto, rimuovendo, quindi, il default gateway rimpiazzandolo con la nuova indicazione (nuovo default gateway). Ovviamente queste informazioni hanno un “lifetime” che indica il tempo per cui l’host deve conservare questa nuova informazione. E’ molto facile andare a forgiare gli advertisement settando i campi “livello di preferenza” e “lifetime” al massimo valore consentito. Questo attacco funzionava bene nelle vecchie versioni di windows, mentre le nuove le ignorano, così come le nuove versioni di Linux. Numerosi tool, come IRPAS, permettono di effettuare questo tipo di attacco. L’unico strumento di difesa è disabilitare IRDP sugli hosts della LAN se il sistema operativo lo permette. ICMP redirect Un altro meccanismo di attacco che è molto utilizzato è quello che sfrutta i messaggi ICMP ridirezione. Il protocollo ICMP tra i vari tipi di messaggi di notifica degli errori che esso prevede vi è anche il messaggio “ridirezione”. A cosa serve questo tipo di messaggio? Quando, ad esempio, su una rete locale LAN esistono più router in grado di instradare verso l’esterno il traffico proveniente da una macchina, in certe situazioni la rete è in grado di individuare da sola quale è il miglior router per raggiungere una certa destinazione, ma quando ci si accorge che il defaul gateway assegnato ad una macchina non è la scelta migliore in quanto alcuni pacchetti potrebbero essere spediti verso altri router per poter raggiungere più velocemente la destinazione, allora il router che si accorge che la sorgente dovrebbe spedire i pacchetti verso un altro router invia un messaggio ICMP di “ridirezione” che fornisce tale informazione. Ad esempio, come riportato nella figura seguente, sia l’host1 che l’host2 hanno configurati come default gateway il router1 che a sua volta ha il router 2 come default gateway (che è sulla stessa LAN), quindi tutti i pacchetti inviati da host1 e host2 verso l’esterno raggiungeranno prima il router1 e poi il router2; osservando il traffico che fluisce sulla rete si capisce che questa situazione non è ottimale e quindi dopo un po di tempo il router1 manda un messaggio ICMP di ridirezione agli host 1 e 2 in cui li informa che i pacchetti li deve inviare al router2 e non ad esso stesso. Questo meccanismo è vulnerabile ad attacchi di tipo hijacking che si basano sulla falsificazione di questo meccanismo stesso: un attaccante può spoofare un messaggio ICMP ridirezione richiedendo di dirigere il traffico sulla propria macchina. L’unico modo per bloccare questo attacco è quello di filtrare/bloccare con una Figura 102 87 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE I, J, K, L, M) che sono distribuiti nel mondo, e questa replicazione/ridondanza viene fatta allo scopo di rendere sempre disponibile/affidabile il servizio: se si gusta/attacca un root server, ce ne sono altri 12 di riserva. I root server sono stati oggetti negli ultimi anni di innumerevoli attacchi, in quanto sono autoritativi per tutte le zone associate ai Top Level Domains o TLD (.org, .it, .edu, .net, etc…) e creando un problema ad un root server si può forzare la risoluzione relativo ad un intero albero oppure bloccare la risoluzione stessa. Gli attacchi più noti in questo ambito sono i cache poisoning e lo spoofing delle risposte. L’attaccante fa in modo che la risposta fornita da un DNS venga falsificata referenziando un target diverso da quello legittimo: una cache che viene compromessa o viene forzato l’inserimento in cache di entry fraudolente. Questo permette, ad esempio, di spoofare le credenziali nell’accesso a sistemi bancari, ai sistemi che prevedono l’immissione di credenziali, spoofing di pagine web, etc…; quando si effettuano attacchi di questo tipo, uno dei meccanismi più abusati è quello del Time To Live (TTL): cioè quando si riesce ad iniettare una entry fraudolenta all’interno di una cache DNS si fa in modo che il TTL di questa entry sia il più alto possibile così che questa entry rimanga al suo interno per quanto più tempo possibile. Un altro aspetto abusato nel contesto degli attacchi al DNS è l’invio di risposte DNS senza opportune sollecitazioni nel contesto di una query, cioè dato che anche il DNS è un protocollo stateless, se senza effettuare una query, un DNS riceve una risposta, esso la prende come legittima inserendo il contenuto all’interno della propria cache. Quindi le risposte non vengono validate. Come fare ad evitare lo spoofing al livello di DNS? L’unico modo è che le risposte fornite da una query provengano da una entità trusted, quindi andrebbero evitate tutte le risposte ad una query che arrivano da una entità non trusted. Ma come si fa a garantire che una entità diventi trusted? È necessaria la presenza di un meccanismo basato su logiche crittografiche per l’identifacazione in modo tale da verificare l’identità di chi ci fornisce l’informazionione. Andrebbero, inoltre, anche evitate le risposte a query non precedentemente effettuate. Il meccanismo per rendere il DNS sicuro è chiamato DNS Secure. Il Domain Name System Security Extensions (DNSSEC) è una serie di specifiche dell'IETF per garantire la sicurezza e affidabilità delle informazioni fornite dai sistemi DNS, comunemente usati sulle reti funzionanti tramite Internet Protocol. Queste estensioni permettono ai client DNS (detti resolver) di autenticare l'effettiva origine dei dati DNS e l’integrità dei dati ricevuti (ma non la riservatezza o la disponibilità). Il meccanismo alla base di DNSSEC è molto semplice e si basa sull’enforcing crittografico in tutte le fasi di una query DNS e di una risposta. Ad una query DNS corrisponde una risposta che contiene un record o un insieme di record (es. record di tipo A): il DNSSEC prevede che una risposta DNS deve essere accompagnata da una firma digitale (generata dal name server che sta rispondendo con la propria chiave privata) così che il destinatario (che a formulato la query) può verificare tramite la firma (con la Certification Authority) che il messaggio sia autentico/integro, confermando che chi ha inviato la risposta è effettivamente trused o non. Per fare ciò il DNSSEC introduce tre tipi nuovi di record: KEY (che rappresenta la chiave pubblica di un server DNS), SIG (contiene la firma digitale di una Figura 107 Figura 108 88 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE richiesta o risposta) e NXT (usato per autenticare risultati negativi, indicando la non esistenza di recor per la risposta). Attualmente il problema della sicurezza dell'infrastruttura DNS è cruciale per l'intera sicurezza di Internet, ma l'adozione del sistema DNSSEC è stata rallentata da diverse problematiche tecniche e logistiche, tra cui la necessità di metter mano a un protocollo che si adatti alla dimensione dell'intera Internet, senza rompere la retrocompatibilità, prevenire enumerazioni di zona non desiderate, sviluppare l'infrastruttura DNSSEC su una vasta gamma di server e client DNS diversi, sfatare il mito della complessità intrinseca e d'adozione dell'infrastruttura DNSSEC, raggiungere un accordo su chi debba avere il controllo delle chiavi dei domini di primo livello (TLD). 4.4.1 Hikacking del protocollo di routing BGP Le tecniche di hijaking possono anche colpire i meccanismi di routing, ovvero i protocolli utilizzati dai vari router per scambiarsi informazioni di raggiungibilità. Una delle peggiori minacce è quella di iniettare, nel contesto di una sessione di routing, una route inesistente, creando dei coni d’ombra sulla rete e rendendo non più visibili interi prefissi (come prefissi di grande dimensioni associati a realtà importanti, rendendo invisibile, ad esempio, tutto il blocco associato a Google). Altro rischio è quello di iniettare dei netblock falsi, nel senso che si possono iniettare delle informazioni relative a dei netblock che fanno creare delle diversioni fraudolente di traffico verso dei centri di intercettazione, ad esempio, oppure creare dei DOS, cioè instradare tutto il traffico verso delle destinazioni target. Lo scopo di questi attacchi è quello di rendere l’intera rete instabile. Ad esempio, come mostrato nella figura sopra, vi è una entità che inietta annunci black-hole verso un determinato target; quando questi annunci black-hole si propagano sulla rete, il traffico che dovrebbe arrivare verso quel determinato target viene bloccato da questi annunci black-hole ed il traffico non arriverà più verso quel target, ma verrà bloccato in transito dagli annunci fraudolenti; quindi il target non riceverà più traffico dalla rete; ovviamente questo impedirà al target anche di fare traffico. E’ possibile agire malevolmente anche nei confronti dei protocolli intradominio (detti anche interior gateway protocol – IGP ) come i potocolli RIP e OSPF creando danni all’interno di un singolo AS (Sistema Autonomo). Ma è possibile fare peggio ed agire al livello di protocolli interdominio (anche detti Exterior Gateway Protocol - EGP) come il protocollo BGP, che viene utilizzato universalmente come una colla che mantiene insieme tutto il traffico che transita tra i vari AS nella global Internet, per cui qualsiasi cosa annunciata tramite BGP si propaga worldwide; quindi compromettendo l’integrità del BGP si è in grado di creare instabilità nel routing globale di Internet per esempio forzando delle fluttuazioni della visibilità di certe Figura 109 89 DISPENSA DEL CORSO DI CYBERSECURITY - ATTACCHI IN RETE destinazioni (detto Route-flapping), oppure effettuare delle redirezioni fraudolente del traffico reinstradando il traffico verso un AS vittima saturandone completamente la capacità, oppure forzare l’uso di percorsi alternativi che possono essere più costosi o oggetti di intercettazione; inoltre anche con il BGP è possibile effettuare il blackholing. Quali sono i meccanismi di base che vengono utilizzati per attaccare il BGP? Il più semplice è l’AS- Path Padding: il BGP prende le proprie decisioni sulla base della lunghezza della AS-Path e facendo il padding della AS-Path aggiungendo più volte consecutivamente lo stesso AS-ID e si ottiene che il percorso diventa più lungo per rendere i percorsi più o meno attrattivi; un altro meccanismo, che è il duale del padding appena visto consiste nella riduzione della lunghezza dell’AS-Path, per attirare il traffico in maniera fraudolenta; un altro meccanismo è filtrare e/o bloccare determinati annunci: con il BGP ogni annuncio cattura traffico, ma se questo annuncio viene bloccato si ottiene l’effetto di non far fluire il traffico verso determinate destinazioni; viceversa, un altro meccanismo (duale a quello appena visto circa il filtraggio di certi annunci) prevede di creare ed iniettare degli annunci ad-hoc (fraudolenti) che rigirano dove si vuole interi flussi di traffico; infine, un altro meccanismo prevede di modificare l’AS-Path all’interno di un annuncio legittimo inserendo nella AS-Path un AS che già ricorre nella AS-Path, credo un loop fittizio nel’AS-Path così che il BGP scarti automaticamente questo annuncio (ottenendo quindi lo stesso effetto di bloccare determinati annunci). I punti che diventano i principali obiettivi per questo tipo di attacchi BGP sono i punti di peering. I punti di peering, chiamati anche, Internet Exchange Point (IXP), o punti di interscambio, detti anche NAP (Network Access Point), che non sono altro che delle infrastrutture fisiche che permettono a diversi Internet Service Provider (ISP) di scambiare traffico internet tra loro. Interconnettendo i propri sistemi autonomi (AS) attraverso accordi di peering generalmente gratuiti, ciò permette agli ISP di risparmiare una parte della banda che comprano dai loro upstream provider, e di guadagnare in efficienza e in affidabilità. Gli attacchi più comuni al BGP possono essere condotti mediane SYN Flood verso la porta 179 (BGP usa TCP) che viene utilizzata per fare in modo che l’altro lato del peering non sia in grado di aprire sessioni BGP. Si possono anche creare delle cadute di sessioni BGP effettuando l’invio di segmenti RST fraudolenti, oppure inviare dei messaggi fittizzi BGP come OPEN/KEEPLIVE, oppure si possono cambiare dei parametri di sessione BGP (capabilities, MED, communities, etc…); infine è possibile anche rigirare grandi volumi di traffico verso destinazioni blackhole. Un esempio di attacco BGP dovuto ad una configurazione sbagliata fu quello di YouTube nel 2008. Come si effettua un attacco basato sul BGP? Tipicamente si parte dal Probing in cui bisogna capire chi sono gli hosts che offrono i servizi BGP (questa cosa si fa con NMAP) effettuando una scansione sulla porta 179 verificando che ci sia uno speaker BGP che accetta sessioni; se la porta 179 è aperta vuol dire che quello è un potenziale target di attacco: La presenza, invece, di una porta filtrata ci indica che il target è in grado di resistere ad un eventuale attacco: Figura 110 (a) Figura 110 (b)
Docsity logo


Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved