Introduzione alla sicurezza delle reti
In questa pagina 6
Minacce, attacchi e obiettivi
Definizione (minaccia e attacco). Una minaccia (threat) in una rete di comunicazione è qualsiasi evento o sequenza di azioni che possa portare alla violazione di uno o più obiettivi di sicurezza. La realizzazione di una minaccia si chiama attacco.
Esempio. Un hacker che si introduce in un computer, la divulgazione di e-mail in transito, un'entità malevola che modifica dati (per esempio finanziari): sono tre attacchi.
Gli obiettivi dipendono dall'applicazione. In una banca si vuole proteggere dalle modifiche fraudolente delle transazioni e dalla divulgazione dei PIN; per un governo, dalla divulgazione di informazioni sensibili; per un ISP, limitare l'accesso al personale autorizzato, proteggere la privacy degli abbonati e garantire l'unicità e la qualità del servizio.
Definizione (obiettivi di sicurezza). Sono le caratteristiche desiderabili di comunicazioni e reti:
obiettivo significato Riservatezza (confidentiality) l'informazione è disponibile solo al destinatario previsto (detta anche anonimato) Integrità (integrity) l'informazione è ricevuta esattamente come è stata spedita; se cambia, deve essere possibile scoprirlo, e quindi identificare chi ha creato il dato Disponibilità (availability) il servizio è sempre disponibile e operativo anche se qualcuno cerca di disturbare la rete Responsabilità (accountability) è sempre possibile identificare il responsabile di ogni azione (per esempio dell'invio di un'informazione sul canale) Privacy l'informazione è usata ma non rivelata a nessuno, tranne alle entità autorizzate (detta anche accesso controllato)
Esempio. Un sito di home banking deve garantire riservatezza (nessuno legge il saldo), integrità (nessuno cambia l'importo di un bonifico), disponibilità (il sito risponde anche sotto attacco) e responsabilità (si sa quale utente ha ordinato il bonifico).
Le minacce
Gli attacchi mettono in pericolo gli obiettivi. Le minacce principali:
| minaccia | scopo |
|---|---|
| Intercettazione (eavesdropping) | venire a conoscenza di informazioni riservate |
| Analisi del traffico (traffic analysis) | conoscere origine, destinazione, lunghezza e frequenza delle comunicazioni (non il contenuto) |
| Falsificazione (forgery) | costruire un messaggio falso, fingendo che l'abbia mandato qualcun altro |
| Mascheramento (masquerade) | dichiararsi un altro in un singolo messaggio |
| Ripudio (repudiation) | negare di aver spedito o ricevuto un messaggio |
| Profilazione (profiling) | raccogliere informazioni su un singolo utente |
| Fingerprinting | identificare l'utente associato a un messaggio |
| Disturbo (jamming) | causare interferenza a una comunicazione |
Servizi e meccanismi
I servizi proteggono le comunicazioni e i protocolli di rete dagli attacchi, perseguendo gli obiettivi di sicurezza.
| servizio | scopo |
|---|---|
| Segretezza (secrecy) | rendere il messaggio incomprensibile a chi intercetta |
| Protezione dell'integrità | scoprire se un messaggio è stato intercettato o modificato |
| Autenticazione del messaggio | scoprire i messaggi falsificati |
| Autenticazione dell'entità | proteggere dai mascheramenti |
| Non ripudio | impedire il ripudio da parte di sorgente o destinazione |
| Anonimizzazione | impedire l'associazione messaggio-utente |
| Gestione delle chiavi | servizi ausiliari alla crittografia |
| Controllo degli accessi | proteggere dalla negazione del servizio |
I meccanismi sono i modi per realizzare i servizi:
| meccanismo | descrizione |
|---|---|
| Cifratura (encryption) | il messaggio viene trasformato e solo il destinatario previsto può invertire la trasformazione |
| Firma digitale | una stringa che solo la sorgente legittima può creare è aggiunta al messaggio; chiunque può verificarla |
| Rilevamento delle intrusioni | individuare le caratteristiche di un comportamento malevolo (la signature) o anomalie in un comportamento legittimo |
| Codici di autenticazione del messaggio (MAC) | una stringa che solo il trasmettitore o il ricevitore legittimi possono creare è aggiunta al messaggio |
| Randomizzazione | eventi permutati a caso per spezzare le dipendenze |
| Accordo sulla chiave (key agreement) | gli agenti cooperano per produrre una chiave distribuita |
La cifratura è in Funzioni hash e crittografia simmetricaLa crittografia trasforma un messaggio in chiaro (plaintext) in un testo cifrato (ciphertext) con una chiave: C = E_ke(P), P = D_kd(C); può dare riservatezza, integrità e autenticazione. Attacchi: solo testo cifrato, testo in chiaro noto, testo in chiaro scelto, forza bruta. Funzione hash: mappa dati di qualsiasi lunghezza in un digest di lunghezza fissa; one-way (dato h è difficile trovare m con hash(m) = h) e resistente alle collisioni; famiglie MD (MD5 rotto per le collisioni nel 2004) e SHA (SHA-0 e SHA-1 rotti, SHA-2 il più usato, SHA-3); costruzione di Merkle-Damgård; usi: integrità e password. Crittografia simmetrica: stessa chiave segreta per cifrare e decifrare; Cesare (E_n(x) = x + n mod 26), Vigenère, Enigma; DES (blocchi da 64 bit, chiave da 56) e AES (blocchi da 128 bit, chiavi da 128, 192, 256); modi ECB (insicuro), CBC, CFB, OFB, CTR. Scambio della chiave con Diffie-Hellman: K = g^(xy) mod p. MAC e HMAC: autenticazione con chiave condivisa.Funzioni hash e crittografia simmetrica → e Crittografia asimmetrica, RSA e TLSCrittografia asimmetrica (a chiave pubblica): chiave di cifratura pubblica v_B, chiave di decifratura privata s_B, matematicamente legate; C = E_vB(P), P = D_sB(C); dà riservatezza. I certificati digitali, emessi da una Certificate Authority e firmati con la sua chiave privata, legano un'identità a una chiave pubblica. Firma digitale: hash del messaggio cifrato con la chiave privata; garantisce autenticità, integrità e non ripudio. RSA: si scelgono due primi grandi p e q, N = pq, phi(N) = (p-1)(q-1), e coprimo con phi(N), d = e^(-1) mod phi(N); chiave pubblica (N, e), segreta (N, d); cifratura c = m^e mod N, decifratura m = c^d mod N con m < N (teorema di Eulero); sicura finché la fattorizzazione è difficile (N di almeno 2048 bit); il padding casuale (PKCS#1 v1.5: 00 02 [casuale] 00 [m]) difende da malleabilità e determinismo. La firma RSA è s = m^d mod N, verificata con s^e mod N. TLS (su TCP) autentica gli estremi con il certificato, cifra i dati con una chiave di sessione simmetrica e garantisce l'integrità con i MAC; da TLS 1.0 a 1.3 la chiave si ricava con Diffie-Hellman e l'handshake si accorcia. DTLS è la versione per UDP.Crittografia asimmetrica, RSA e TLS →; il controllo degli accessi è in parte realizzato dal FirewallUn firewall è un componente (hardware, software o entrambi) che blocca il traffico non autorizzato da una rete verso un'altra: filtra i dati, reindirizza il traffico, protegge dagli attacchi. Requisiti: tutto il traffico tra due zone di fiducia deve passare dal firewall, passa solo il traffico autorizzato, il firewall stesso deve essere immune alle intrusioni. L'amministratore configura le politiche (controllo di utente, di servizio, di direzione); un pacchetto può essere accettato, negato o rifiutato (negato più messaggio ICMP alla sorgente). Il firewall decide con le informazioni di intestazione dei livelli 2-4 (indirizzi, protocollo, porte, flag SYN/ACK/FIN). Packet filter: senza stato, filtra in ingresso e in uscita con regole su indirizzi, protocollo, porte, flag (esempi SMTP, Telnet, X11 e correzioni con porte sorgente e flag ACK). Stateful firewall: tiene traccia delle connessioni (NEW, ESTABLISHED, RELATED, INVALID), limita connessioni al secondo, timeout. Firewall applicativo/proxy: ispeziona il livello applicazione, apre una connessione separata verso la destinazione; sicuro ma lento. Linux: netfilter con 5 hook IPv4 e 5 verdetti, iptables (tabelle e catene), connection tracking nf_conntrack.Firewall →.
In quale livello si mette la sicurezza
Definizione (protocollo di sicurezza di livello N). Un meccanismo (o una combinazione di meccanismi) che offre uno o più servizi di sicurezza per proteggere l'informazione contenuta nelle PDU di livello N e dei livelli superiori, ma non di quelli sotto (Modello ISO-OSI e pila TCP-IPUna comunicazione tra due calcolatori è un problema troppo vario (segnali, errori, accesso al mezzo, instradamento, controllo di flusso, rappresentazione dei dati) per un solo protocollo, quindi si divide in strati (layer). Il modello ISO/OSI ha 7 livelli (fisico, collegamento, rete, trasporto, sessione, presentazione, applicazione); la pila TCP/IP riunisce gli ultimi tre in un solo livello applicazione, quindi ne ha 5. Ogni livello offre un servizio a quello sopra e parla solo con il livello pari dell'altro nodo tramite PDU; scendendo si aggiunge un'intestazione (PCI): incapsulamento. Indirizzi: MAC (collegamento, locale), IP (rete, globale).Modello ISO-OSI e pila TCP-IP →).
Esempio (livello applicazione). Si protegge solo il dato applicativo: la cifratura end-to-end (come in WhatsApp) e l'autenticazione a livello applicazione (HTTPS). Esempio (livello 3). Tutti i dispositivi di livello 4 e 3 (tipicamente i router) devono realizzare il protocollo di sicurezza: instradamento anonimo, instradamento sicuro, IPsec (VPNUna VPN (Virtual Private Network) è una rete privata costruita sopra una rete pubblica (Internet): i nodi comunicano in sicurezza come se fossero in una rete privata, ottenendo autenticazione, riservatezza e integrità senza trovarsi fisicamente nella rete. Architettura: un host designato, il server VPN, ammesso dal firewall; chi sta fuori deve passare dal server e autenticarsi. Un pacchetto IP protetto (cifrato) viene incapsulato come carico di un altro pacchetto IP (IP tunneling). Due modi: IPsec (livello rete, nel kernel; protocolli AH ed ESP, modo tunnel o trasporto, Security Association unidirezionale identificata da SPI) e tunnel SSL/TLS (fuori dal kernel, in un'applicazione su TCP o UDP, il più popolare). Il client e il server VPN stabiliscono il tunnel, vi inoltrano i pacchetti IP destinati all'altro lato e, in ricezione, li rilasciano nella rete privata, usando un'interfaccia virtuale TUN (livello 3) o TAP (livello 2). Autenticazione reciproca: il client autentica il server con un certificato, il server il client con una chiave condivisa (per esempio la password). Una VPN nasconde anche l'indirizzo IP reale e permette di aggirare le restrizioni geografiche.VPN →).
I tipi di attacco
- Attacchi fisici: si attacca a mano il sistema bersaglio. Sostituzione o clonazione di un nodo, danneggiamento fisico, creazione di misure sbagliate (per esempio l'accendino davanti a un sensore di temperatura), ostacolo a una misura (un foglio di carta davanti a una telecamera di sicurezza).
- Attacchi software: producono comportamenti alterati (per esempio cambiano il modo in cui un attuatore interagisce con il mondo fisico). Virus e worm; trojan; code injection (comandare all'attuatore azioni pericolose); e-mail di phishing; nodi configurati con combinazioni di nome utente e password scelte dall'attaccante.
- Attacchi di rete: avvengono sul canale di comunicazione. Gli esempi sono nelle sezioni seguenti.
Sniffing e spoofing
Molti attacchi di rete usano due concetti semplici per accedere al traffico Internet o manipolarlo.
Definizione (sniffing e spoofing). Lo sniffing è l'intercettazione del traffico per accedere a intestazioni e dati e leggerli; non è necessariamente un'azione fraudolenta, può servire per la diagnostica (un sniffer l'abbiamo usato in laboratorio: Wireshark, Katharà - emulare una reteKatharà è un emulatore di rete: ogni dispositivo (host, router, server) è un container Docker, e i container sono collegati da "domini di collisione" virtuali (reti locali). Un laboratorio è una cartella con
lab.conf(topologia), un file<dispositivo>.startupper ogni macchina (comandi eseguiti all'avvio) e, se serve, una cartella per dispositivo con i file da copiare nel suo filesystem. Si avvia conlstart, si ferma conlclean; le macchine si configurano conifconfig, si provano conpinge si osservano contcpdump(file.pcapda aprire con Wireshark).Katharà - emulare una rete →). Lo spoofing è la manipolazione di (una parte del) traffico, di solito un'azione non legittima.
Sniffing e spoofing servono a lanciare i due tipi di attacco più diffusi: Denial-of-Service (DoS) e Man-In-The-Middle (MITM).
Denial-of-Service (DoS)
Nel DoS lo scopo dell'attaccante è solo interrompere il servizio, cioè colpire la disponibilità. Esempi: saturare un canale cablato, disturbare (jam) un canale wireless. È il più semplice dei due, ma può causare danni enormi all'attività di un ISP, di un servizio web, di una banca, perfino di un governo (server di WhatsApp, Google o di una banca fermi per attacchi informatici).
Esempio: l'attacco Smurf (ICMP). ICMP (Protocollo ICMPIPv4 non ha meccanismi per segnalare o correggere gli errori né per interrogare host e router: li fornisce l'ICMP (Internet Control Message Protocol), un protocollo di rete i cui messaggi viaggiano dentro datagrammi IP con campo Protocol $=1$. I messaggi sono di errore (destination unreachable, tipo 3; time exceeded, tipo 11; redirect, tipo 5; parameter problem, tipo 12), sempre inviati alla sorgente originale e con l'intestazione IP più i primi 8 byte del datagramma che ha causato l'errore, oppure di interrogazione (echo request 8 e reply 0, timestamp 13-14). ICMP segnala ma non corregge. Con l'echo si fanno ping (RTT) e scoperta dell'MTU (bit D, codice 4, payload massimo $1500-20-8=1472$ byte); con time exceeded e port unreachable si fa traceroute ($n+1$ messaggi con TTL crescente). Attacchi: smurf e redirect.Protocollo ICMP →) può essere usato per un attacco di negazione del servizio, sfruttando i pacchetti inviati all'indirizzo di broadcast di una rete.
- L'attaccante manda un echo request ICMP all'indirizzo di broadcast della rete (l'indirizzo con tutti i bit dell'host a , che raggiunge tutti gli host della rete, Livello di rete e indirizzamento IPIl livello di rete (network layer) porta i datagrammi da host a host attraverso i router: incapsula (framing), sceglie il percorso (routing) e sposta il pacchetto da un ingresso a un'uscita del router (forwarding); in Internet lascia ai livelli superiori controllo d'errore, di flusso e di congestione. Un indirizzo IPv4 è di 32 bit, diviso in prefisso (rete, $n$ bit) e suffisso (host, $32-n$ bit). L'indirizzamento a classi (A, B, C, D, E) è obsoleto; oggi si usa quello senza classi (CIDR): data una notazione $a.b.c.d/n$ si ricavano $N=2^{32-n}$ indirizzi, indirizzo di rete (suffisso tutto 0) e di broadcast (suffisso tutto 1), oppure con la netmask: rete $=$ indirizzo AND maschera, broadcast $=$ indirizzo OR (NOT maschera).Livello di rete e indirizzamento IP →).
- Nel pacchetto l'indirizzo IP di origine è quello della vittima (e non il proprio): è spoofing.
- Tutti gli host della rete mandano un echo reply all'indirizzo falsificato, cioè alla vittima.
- La vittima è sommersa dalle risposte ICMP: prestazioni degradate o guasto completo per il traffico eccessivo.
Esempio numerico. Un ping ha 56 byte di dati: con intestazione ICMP (8 byte) e IP (20 byte, senza opzioni) il pacchetto è lungo byte, cioè bit. L'echo reply ha le stesse dimensioni (rimanda indietro gli stessi dati). Se la rete ha 200 host, un solo pacchetto di 84 byte dell'attaccante produce 200 risposte, cioè byte verso la vittima: il fattore di amplificazione è , quindi l'attacco amplifica di il traffico. Conseguenza sulla banda: se l'attaccante invia Mbit/s di echo request, alla vittima arrivano Mbit/s di risposte, più di un collegamento Fast Ethernet da Mbit/s (e l'attaccante ha speso solo Mbit/s, e non si vede, perché l'origine è falsificata). Oggi lo Smurf è raramente usato, perché le infrastrutture di rete sono state migliorate (i router di solito non inoltrano i broadcast diretti).
Man-In-The-Middle (MITM)
Il MITM aumenta il danno del DoS cambiando l'informazione dentro il pacchetto intercettato: può danneggiare riservatezza, integrità, responsabilità e privacy. Esempio tipico: l'avvelenamento delle cache (cache poisoning): le tabelle ARP (da IP a MAC, Protocollo ARPUn host ha tre «nomi»: nome DNS, indirizzo IP (rete) e indirizzo MAC (collegamento). Per spedire un datagramma IP in un frame serve il MAC del prossimo nodo, che si ottiene da quel nodo con ARP: richiesta in broadcast (MAC destinazione FF:FF:FF:FF:FF:FF, contiene IP e MAC del mittente e l'IP cercato) e risposta unicast con il MAC richiesto, memorizzata nella cache ARP. ARP risolve sempre il prossimo salto (host di destinazione o router), non la destinazione finale. Un broadcast non esce dalla sottorete: il proxy ARP del router risponde con il proprio MAC.Protocollo ARP →) e le cache DNS (da nome a IP, Livello applicazione - DNSIl DNS (Domain Name System) traduce i nomi (www.amazon.com) negli indirizzi IP, perché le persone preferiscono i nomi e i protocolli TCP/IP usano gli indirizzi. È un database distribuito e gerarchico: albero rovesciato con radice, domini di primo livello e sottodomini (al più 128 livelli); le informazioni sono su tanti server (13 server radice) e i nuovi domini si registrano presso un registrar accreditato ICANN. Ogni ISP ha un DNS locale, il cui indirizzo l'host riceve con DHCP: l'host (resolver) gli manda la richiesta, di solito su UDP, e il DNS locale interroga radice, dominio di primo livello e server dell'organizzazione. Ogni server che impara un'associazione la tiene in cache, marcando la risposta non autoritativa, e la scarta dopo il TTL. Record (nome, tipo, valore, classe, TTL). Con il NAT il DNS deve restituire l'indirizzo pubblico. Quattro attacchi: macchina compromessa, risposta falsa all'host, avvelenamento della cache del DNS locale, server DNS malevolo.Livello applicazione - DNS →).
Esempio 1: ICMP redirect. I router aggiornano continuamente le loro informazioni di instradamento, gli host no: non partecipano ai protocolli di instradamento.
- L'host H vuole mandare un pacchetto a T, e la sua tabella dice di inoltrarlo al router R1.
- R1 ha informazioni aggiornate: ora deve inoltrare a R2 per raggiungere T.
- R2 e H sono nella stessa rete, quindi H potrebbe mandare direttamente a R2.
- R1 deve avvisare H di aggiornare la tabella con un messaggio ICMP redirect.
L'attacco: si può fare spoofing dei messaggi ICMP redirect e deviare i pacchetti della vittima verso un router malevolo che ne modifica i dati. Il gateway legittimo manda il redirect alla vittima; l'attaccante lo falsifica cambiando l'indirizzo del gateway in quello di un router malevolo; ora la vittima usa il falso gateway per raggiungere una certa destinazione.
Esempio 2: avvelenamento della cache ARP in una sessione Telnet. Tre macchine sulla stessa rete: A (10.9.0.5), B (10.9.0.6) e l'attaccante M (10.9.0.105). A e B hanno una sessione TCP Telnet; M vuole far passare i pacchetti da sé per modificarli, e il suo scopo è cambiare ogni carattere s in Z.
- Avvelena la cache ARP di A, in modo che l'IP di B corrisponda al MAC di M.
- Avvelena la cache ARP di B, in modo che l'IP di A corrisponda al MAC di M.
M ottiene lo scopo falsificando le risposte ARP tra A e B (le richieste ARP sono sempre in broadcast, Protocollo ARPUn host ha tre «nomi»: nome DNS, indirizzo IP (rete) e indirizzo MAC (collegamento). Per spedire un datagramma IP in un frame serve il MAC del prossimo nodo, che si ottiene da quel nodo con ARP: richiesta in broadcast (MAC destinazione FF:FF:FF:FF:FF:FF, contiene IP e MAC del mittente e l'IP cercato) e risposta unicast con il MAC richiesto, memorizzata nella cache ARP. ARP risolve sempre il prossimo salto (host di destinazione o router), non la destinazione finale. Un broadcast non esce dalla sottorete: il proxy ARP del router risponde con il proprio MAC.Protocollo ARP →). Se l'attacco riesce, quello che A scrive (per esempio s) arriva a B come Z. Considerazioni:
- M deve continuare l'attacco, mandando falsi aggiornamenti ARP; altrimenti A e B correggono la loro cache.
- Secondo ICMP, poiché A, B e M sono sulla stessa rete, M dovrebbe mandare ad A un redirect che avvisa che c'è un percorso migliore verso B (direttamente a B). M deve spegnere i messaggi ICMP redirect, altrimenti annulla il proprio attacco.
- M deve anche spegnere l'inoltro IP automatico, per avere il tempo di modificare il pacchetto. La modifica si fa con uno sniffer, che salva una copia del pacchetto ricevuto (altrimenti M scarterebbe il pacchetto, che non è per lui).
- Dopo la modifica, M deve ricalcolare i checksum di IP e di TCP, altrimenti B scarta i pacchetti (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →, TCP - connessione, affidabilità e controllo di flussoTCP (Transmission Control Protocol) è il protocollo di trasporto con connessione e affidabile: trasforma il servizio senza connessione e inaffidabile di IP in un flusso di byte ordinato, senza errori né duplicati. La connessione si apre con l'handshake a tre vie (SYN, SYN+ACK, ACK) e si chiude con tre o quattro segmenti (FIN). I byte sono numerati: il numero di sequenza è quello del primo byte del segmento, il numero di ACK (cumulativo) è il prossimo byte atteso. Il mittente può inviare $\min(\text{rwnd},\text{cwnd})$ byte non ancora confermati; rwnd (finestra del ricevitore, in un campo di 16 bit) è il controllo di flusso. L'errore si gestisce con checksum, ACK, timeout di ritrasmissione (RTO) e ritrasmissione rapida dopo tre ACK duplicati. Per usare tutto il canale la finestra deve valere almeno il prodotto banda-ritardo (BDP); il throughput massimo è $\text{MSS}\cdot W_{\max}/\text{RTT}$.TCP - connessione, affidabilità e controllo di flusso →).
Altri attacchi notevoli
- Sinkhole (instradamento): un nodo dichiara di avere risorse e potenza eccezionali, e i vicini lo scelgono come tappa di instradamento. Funziona con i pacchetti di annuncio (Protocolli di instradamento - RIP, OSPF e BGPIn Internet l'instradamento non si può fare con un solo protocollo, per scalabilità (tabelle troppo grandi) e per autonomia amministrativa: ogni ISP è un sistema autonomo (AS) con il proprio algoritmo. All'interno di un AS si usano i protocolli IGP: RIP (distance vector, numero di salti, massimo 15, aggiornamenti ogni circa 30 s, su UDP porta 520) e OSPF (link state con Dijkstra, aree collegate all'area 0, cinque tipi di LSA, messaggi direttamente in IP). Tra AS si usa BGP4 (path vector, su TCP porta 179, eBGP tra AS e iBGP dentro l'AS, scelta del percorso per politica: preferenza locale, AS-PATH più corto, origine; i cicli si evitano scartando i cammini che contengono già il proprio AS; quattro messaggi: Open, Keepalive, Notification, Update).Protocolli di instradamento - RIP, OSPF e BGP →). Quando il nodo malevolo diventa un punto di passaggio può scartare i pacchetti (negazione del servizio), modificare i dati, analizzare il traffico (intercettazione).
- Wormhole (instradamento): due nodi malevoli A e B dichiarano di essere a un solo salto e deviano su di sé il traffico. Creano tra loro un collegamento privato veloce e a bassa latenza (il "tunnel del wormhole"); A cattura i pacchetti attorno a sé e li manda a B nel tunnel; B li rimette (replay) nel suo vicinato. Ai nodi intorno sembra esistere un percorso brevissimo attraverso il tunnel, e instradano il traffico lì: gli attaccanti possono scartare, alterare o osservare.
- Ping of death: pacchetti malformati mandati ripetutamente a un sistema, che si blocca, va in crash o si riavvia. Un normale echo request ICMP è lungo al più 65 535 byte; l'attaccante manda un ping malformato o troppo grande (oltre 65 535 byte, spesso frammentato in più pacchetti). Quando il bersaglio li riassembla in un solo pacchetto grande può traboccare i buffer di memoria.
- DDoS (Distributed DoS): un attaccante usa una botnet (molti dispositivi compromessi) per inondare la rete o il sito del bersaglio con una quantità di traffico schiacciante. L'attaccante manda i comandi a tutti i dispositivi della botnet, che mandano grandi quantità di traffico al server. Tre famiglie: attacchi volumetrici (consumano la banda con un'inondazione), di protocollo (consumano risorse del protocollo, come il ping of death), a livello applicazione (HTTP flood per esaurire le risorse del server).
Esempio numerico (ping of death). L'intero pacchetto IP non può superare byte: il campo lunghezza totale ha 16 bit, quindi il valore massimo è (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →, Sistemi di numerazione posizionaliNotazione posizionale in base b; conversioni tra base 10, 2, 8 e 16 per interi (divisioni successive) e per parti frazionarie (moltiplicazioni successive); numeri periodici in binario.Sistemi di numerazione posizionali →). Tolte l'intestazione IP (20 byte) e quella ICMP (8 byte) restano al massimo byte di dati. Se l'attaccante manda un ping con byte di dati, il carico IP (ICMP + dati) è byte e il pacchetto intero , cioè 3 byte oltre il massimo (il carico IP massimo sarebbe ). In rete viaggia spezzato in frammenti da byte di carico ciascuno (MTU meno di intestazione IP, Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →; è multiplo di perché lo spostamento dei frammenti si misura in unità da byte): frammenti, i primi da byte () e l'ultimo da byte. Un riassemblaggio che non controlla la lunghezza totale copia byte in un buffer pensato per : trabocca.
Esempio numerico (DDoS). L'attacco a GitHub del 2018 raggiunse Tbit/s: dato che byte bit e T , sono byte/s GB/s di traffico. Con una botnet in cui ogni dispositivo manda Mbit/s ( bit/s) servono , cioè milioni di dispositivi (il numero di dispositivi è il rapporto tra il traffico totale e quello di uno solo). L'infrastruttura di GitHub ebbe interruzioni intermittenti e rallentamenti.
Errori comuni
- Confondere minaccia (evento possibile) e attacco (minaccia realizzata).
- Dire che lo sniffing è sempre illegale: è anche uno strumento diagnostico (Wireshark).
- Pensare che il MITM serva solo a leggere: serve soprattutto a modificare.
- Dimenticare che nello Smurf l'indirizzo di origine è quello della vittima, e che le risposte vanno a lei, non all'attaccante.
- Scordare, nell'esempio ARP, che M deve spegnere ICMP redirect e inoltro IP, e ricalcolare i checksum.
- Credere che un protocollo di sicurezza di livello N protegga anche i livelli sotto di N.
Versione ripasso
- Minaccia e attacco. Una minaccia è qualsiasi evento o sequenza di azioni che può violare uno o più obiettivi di sicurezza; la sua realizzazione è un attacco. Esempi di attacchi: un hacker che entra in un computer, la divulgazione di e-mail in transito, la modifica di dati finanziari.
- Obiettivi. Riservatezza (solo il destinatario previsto legge); integrità (il dato arriva come è partito, e se cambia deve essere possibile scoprirlo); disponibilità (il servizio resta operativo anche sotto attacco); responsabilità (accountability: si identifica chi ha fatto un'azione); privacy (il dato è usato ma non rivelato a chi non è autorizzato).
- Esempio home banking. Riservatezza (nessuno legge il saldo), integrità (nessuno cambia l'importo di un bonifico), disponibilità (il sito risponde anche sotto attacco), responsabilità (si sa quale utente ha ordinato il bonifico).
- Minacce. Intercettazione (eavesdropping); analisi del traffico (origine, destinazione, lunghezza e frequenza, non il contenuto); falsificazione (messaggio falso con mittente altrui); mascheramento (dichiararsi un altro in un messaggio); ripudio (negare l'invio o la ricezione); profilazione; fingerprinting; disturbo (jamming).
- Servizi. Segretezza, protezione dell'integrità, autenticazione del messaggio e dell'entità (contro i mascheramenti), non ripudio, anonimizzazione, gestione delle chiavi, controllo degli accessi (contro la negazione del servizio).
- Meccanismi. Cifratura, firma digitale, rilevamento delle intrusioni (firma nota del comportamento malevolo o anomalie), MAC, randomizzazione, accordo sulla chiave. Vedi Funzioni hash e crittografia simmetricaLa crittografia trasforma un messaggio in chiaro (plaintext) in un testo cifrato (ciphertext) con una chiave: C = E_ke(P), P = D_kd(C); può dare riservatezza, integrità e autenticazione. Attacchi: solo testo cifrato, testo in chiaro noto, testo in chiaro scelto, forza bruta. Funzione hash: mappa dati di qualsiasi lunghezza in un digest di lunghezza fissa; one-way (dato h è difficile trovare m con hash(m) = h) e resistente alle collisioni; famiglie MD (MD5 rotto per le collisioni nel 2004) e SHA (SHA-0 e SHA-1 rotti, SHA-2 il più usato, SHA-3); costruzione di Merkle-Damgård; usi: integrità e password. Crittografia simmetrica: stessa chiave segreta per cifrare e decifrare; Cesare (E_n(x) = x + n mod 26), Vigenère, Enigma; DES (blocchi da 64 bit, chiave da 56) e AES (blocchi da 128 bit, chiavi da 128, 192, 256); modi ECB (insicuro), CBC, CFB, OFB, CTR. Scambio della chiave con Diffie-Hellman: K = g^(xy) mod p. MAC e HMAC: autenticazione con chiave condivisa.Funzioni hash e crittografia simmetrica → e Crittografia asimmetrica, RSA e TLSCrittografia asimmetrica (a chiave pubblica): chiave di cifratura pubblica v_B, chiave di decifratura privata s_B, matematicamente legate; C = E_vB(P), P = D_sB(C); dà riservatezza. I certificati digitali, emessi da una Certificate Authority e firmati con la sua chiave privata, legano un'identità a una chiave pubblica. Firma digitale: hash del messaggio cifrato con la chiave privata; garantisce autenticità, integrità e non ripudio. RSA: si scelgono due primi grandi p e q, N = pq, phi(N) = (p-1)(q-1), e coprimo con phi(N), d = e^(-1) mod phi(N); chiave pubblica (N, e), segreta (N, d); cifratura c = m^e mod N, decifratura m = c^d mod N con m < N (teorema di Eulero); sicura finché la fattorizzazione è difficile (N di almeno 2048 bit); il padding casuale (PKCS#1 v1.5: 00 02 [casuale] 00 [m]) difende da malleabilità e determinismo. La firma RSA è s = m^d mod N, verificata con s^e mod N. TLS (su TCP) autentica gli estremi con il certificato, cifra i dati con una chiave di sessione simmetrica e garantisce l'integrità con i MAC; da TLS 1.0 a 1.3 la chiave si ricava con Diffie-Hellman e l'handshake si accorcia. DTLS è la versione per UDP.Crittografia asimmetrica, RSA e TLS →; il controllo degli accessi è in parte realizzato dal FirewallUn firewall è un componente (hardware, software o entrambi) che blocca il traffico non autorizzato da una rete verso un'altra: filtra i dati, reindirizza il traffico, protegge dagli attacchi. Requisiti: tutto il traffico tra due zone di fiducia deve passare dal firewall, passa solo il traffico autorizzato, il firewall stesso deve essere immune alle intrusioni. L'amministratore configura le politiche (controllo di utente, di servizio, di direzione); un pacchetto può essere accettato, negato o rifiutato (negato più messaggio ICMP alla sorgente). Il firewall decide con le informazioni di intestazione dei livelli 2-4 (indirizzi, protocollo, porte, flag SYN/ACK/FIN). Packet filter: senza stato, filtra in ingresso e in uscita con regole su indirizzi, protocollo, porte, flag (esempi SMTP, Telnet, X11 e correzioni con porte sorgente e flag ACK). Stateful firewall: tiene traccia delle connessioni (NEW, ESTABLISHED, RELATED, INVALID), limita connessioni al secondo, timeout. Firewall applicativo/proxy: ispeziona il livello applicazione, apre una connessione separata verso la destinazione; sicuro ma lento. Linux: netfilter con 5 hook IPv4 e 5 verdetti, iptables (tabelle e catene), connection tracking nf_conntrack.Firewall →.
- Livello di un protocollo di sicurezza. Un protocollo di sicurezza di livello protegge le PDU di livello e superiori, non quelle sotto (Modello ISO-OSI e pila TCP-IPUna comunicazione tra due calcolatori è un problema troppo vario (segnali, errori, accesso al mezzo, instradamento, controllo di flusso, rappresentazione dei dati) per un solo protocollo, quindi si divide in strati (layer). Il modello ISO/OSI ha 7 livelli (fisico, collegamento, rete, trasporto, sessione, presentazione, applicazione); la pila TCP/IP riunisce gli ultimi tre in un solo livello applicazione, quindi ne ha 5. Ogni livello offre un servizio a quello sopra e parla solo con il livello pari dell'altro nodo tramite PDU; scendendo si aggiunge un'intestazione (PCI): incapsulamento. Indirizzi: MAC (collegamento, locale), IP (rete, globale).Modello ISO-OSI e pila TCP-IP →). Esempi: a livello applicazione la cifratura end-to-end (come in WhatsApp) e HTTPS; a livello 3 IPsec, instradamento sicuro e anonimo, realizzati dai router (VPNUna VPN (Virtual Private Network) è una rete privata costruita sopra una rete pubblica (Internet): i nodi comunicano in sicurezza come se fossero in una rete privata, ottenendo autenticazione, riservatezza e integrità senza trovarsi fisicamente nella rete. Architettura: un host designato, il server VPN, ammesso dal firewall; chi sta fuori deve passare dal server e autenticarsi. Un pacchetto IP protetto (cifrato) viene incapsulato come carico di un altro pacchetto IP (IP tunneling). Due modi: IPsec (livello rete, nel kernel; protocolli AH ed ESP, modo tunnel o trasporto, Security Association unidirezionale identificata da SPI) e tunnel SSL/TLS (fuori dal kernel, in un'applicazione su TCP o UDP, il più popolare). Il client e il server VPN stabiliscono il tunnel, vi inoltrano i pacchetti IP destinati all'altro lato e, in ricezione, li rilasciano nella rete privata, usando un'interfaccia virtuale TUN (livello 3) o TAP (livello 2). Autenticazione reciproca: il client autentica il server con un certificato, il server il client con una chiave condivisa (per esempio la password). Una VPN nasconde anche l'indirizzo IP reale e permette di aggirare le restrizioni geografiche.VPN →).
- Tre famiglie di attacchi. Fisici (sostituzione o clonazione di un nodo, misure sbagliate, ostacolo a una misura); software (virus, worm, trojan, code injection, phishing, password scelte dall'attaccante); di rete, sul canale di comunicazione.
- Sniffing e spoofing. Lo sniffing intercetta il traffico per leggere intestazioni e dati: non è sempre illegale, è anche diagnostica (Wireshark, Katharà - emulare una reteKatharà è un emulatore di rete: ogni dispositivo (host, router, server) è un container Docker, e i container sono collegati da "domini di collisione" virtuali (reti locali). Un laboratorio è una cartella con
lab.conf(topologia), un file<dispositivo>.startupper ogni macchina (comandi eseguiti all'avvio) e, se serve, una cartella per dispositivo con i file da copiare nel suo filesystem. Si avvia conlstart, si ferma conlclean; le macchine si configurano conifconfig, si provano conpinge si osservano contcpdump(file.pcapda aprire con Wireshark).Katharà - emulare una rete →). Lo spoofing manipola il traffico, di solito in modo non legittimo. Da questi due nascono DoS (colpisce la disponibilità) e MITM (cambia l'informazione nel pacchetto). - DoS e smurf. Il DoS satura un canale o disturba un canale wireless. Nello smurf (ICMP, Protocollo ICMPIPv4 non ha meccanismi per segnalare o correggere gli errori né per interrogare host e router: li fornisce l'ICMP (Internet Control Message Protocol), un protocollo di rete i cui messaggi viaggiano dentro datagrammi IP con campo Protocol $=1$. I messaggi sono di errore (destination unreachable, tipo 3; time exceeded, tipo 11; redirect, tipo 5; parameter problem, tipo 12), sempre inviati alla sorgente originale e con l'intestazione IP più i primi 8 byte del datagramma che ha causato l'errore, oppure di interrogazione (echo request 8 e reply 0, timestamp 13-14). ICMP segnala ma non corregge. Con l'echo si fanno ping (RTT) e scoperta dell'MTU (bit D, codice 4, payload massimo $1500-20-8=1472$ byte); con time exceeded e port unreachable si fa traceroute ($n+1$ messaggi con TTL crescente). Attacchi: smurf e redirect.Protocollo ICMP →): 1) echo request all'indirizzo di broadcast della rete; 2) origine falsificata con l'IP della vittima; 3) tutti gli host rispondono alla vittima; 4) la vittima è sommersa.
- Esempio numerico smurf. Un
pingha 56 byte di dati: con ICMP (8) e IP (20) il pacchetto è byte. Su una rete di 200 host un pacchetto dell'attaccante produce byte verso la vittima: amplificazione . Oggi è raro, perché i router di solito non inoltrano i broadcast diretti. - MITM con cache poisoning. Si avvelenano le tabelle ARP (da IP a MAC, Protocollo ARPUn host ha tre «nomi»: nome DNS, indirizzo IP (rete) e indirizzo MAC (collegamento). Per spedire un datagramma IP in un frame serve il MAC del prossimo nodo, che si ottiene da quel nodo con ARP: richiesta in broadcast (MAC destinazione FF:FF:FF:FF:FF:FF, contiene IP e MAC del mittente e l'IP cercato) e risposta unicast con il MAC richiesto, memorizzata nella cache ARP. ARP risolve sempre il prossimo salto (host di destinazione o router), non la destinazione finale. Un broadcast non esce dalla sottorete: il proxy ARP del router risponde con il proprio MAC.Protocollo ARP →) e le cache DNS (da nome a IP, Livello applicazione - DNSIl DNS (Domain Name System) traduce i nomi (www.amazon.com) negli indirizzi IP, perché le persone preferiscono i nomi e i protocolli TCP/IP usano gli indirizzi. È un database distribuito e gerarchico: albero rovesciato con radice, domini di primo livello e sottodomini (al più 128 livelli); le informazioni sono su tanti server (13 server radice) e i nuovi domini si registrano presso un registrar accreditato ICANN. Ogni ISP ha un DNS locale, il cui indirizzo l'host riceve con DHCP: l'host (resolver) gli manda la richiesta, di solito su UDP, e il DNS locale interroga radice, dominio di primo livello e server dell'organizzazione. Ogni server che impara un'associazione la tiene in cache, marcando la risposta non autoritativa, e la scarta dopo il TTL. Record (nome, tipo, valore, classe, TTL). Con il NAT il DNS deve restituire l'indirizzo pubblico. Quattro attacchi: macchina compromessa, risposta falsa all'host, avvelenamento della cache del DNS locale, server DNS malevolo.Livello applicazione - DNS →).
- ICMP redirect. Il gateway R1 avvisa l'host H con un redirect che esiste un percorso migliore tramite R2. L'attaccante falsifica il redirect e devia la vittima verso un router malevolo.
- Esempio Telnet. A (
10.9.0.5) e B (10.9.0.6) hanno una sessione Telnet; M (10.9.0.105) avvelena le cache ARP di A e di B e cambia ognisinZ. Per riuscirci M deve: rinnovare il avvelenamento (altrimenti A e B correggono la cache); spegnere gli ICMP redirect (altrimenti annullano l'attacco); spegnere l'inoltro IP automatico; sniffare e salvare una copia del pacchetto; ricalcolare i checksum di IP e TCP, altrimenti B scarta il pacchetto (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →, TCP - connessione, affidabilità e controllo di flussoTCP (Transmission Control Protocol) è il protocollo di trasporto con connessione e affidabile: trasforma il servizio senza connessione e inaffidabile di IP in un flusso di byte ordinato, senza errori né duplicati. La connessione si apre con l'handshake a tre vie (SYN, SYN+ACK, ACK) e si chiude con tre o quattro segmenti (FIN). I byte sono numerati: il numero di sequenza è quello del primo byte del segmento, il numero di ACK (cumulativo) è il prossimo byte atteso. Il mittente può inviare $\min(\text{rwnd},\text{cwnd})$ byte non ancora confermati; rwnd (finestra del ricevitore, in un campo di 16 bit) è il controllo di flusso. L'errore si gestisce con checksum, ACK, timeout di ritrasmissione (RTO) e ritrasmissione rapida dopo tre ACK duplicati. Per usare tutto il canale la finestra deve valere almeno il prodotto banda-ritardo (BDP); il throughput massimo è $\text{MSS}\cdot W_{\max}/\text{RTT}$.TCP - connessione, affidabilità e controllo di flusso →). Laboratorio: Attacco man-in-the-middleLaboratorio 7 (LAB7). Telnet trasmette utente e password in chiaro: chi può leggere il traffico le ruba. Con un hub (scenario 1) basta untcpdumpsull'attaccante, perché l'hub ripete ogni frame su tutte le porte. Con uno switch (scenario 2) l'attaccante non vede nulla: serve un attacco man-in-the-middle con avvelenamento della cache ARP (ARP spoofing): l'attaccante invia di continuo risposte ARP false, dicendo al client che l'IP del router corrisponde al proprio MAC e al router che l'IP del client corrisponde al proprio MAC; poi inoltra i pacchetti e legge tutto. Wireshark, con Follow TCP stream, ricostruisce la sessione telnet e le credenziali.Attacco man-in-the-middle →. - Sinkhole. Un nodo dichiara risorse eccezionali e i vicini lo scelgono come tappa; poi può scartare, modificare o analizzare il traffico (Protocolli di instradamento - RIP, OSPF e BGPIn Internet l'instradamento non si può fare con un solo protocollo, per scalabilità (tabelle troppo grandi) e per autonomia amministrativa: ogni ISP è un sistema autonomo (AS) con il proprio algoritmo. All'interno di un AS si usano i protocolli IGP: RIP (distance vector, numero di salti, massimo 15, aggiornamenti ogni circa 30 s, su UDP porta 520) e OSPF (link state con Dijkstra, aree collegate all'area 0, cinque tipi di LSA, messaggi direttamente in IP). Tra AS si usa BGP4 (path vector, su TCP porta 179, eBGP tra AS e iBGP dentro l'AS, scelta del percorso per politica: preferenza locale, AS-PATH più corto, origine; i cicli si evitano scartando i cammini che contengono già il proprio AS; quattro messaggi: Open, Keepalive, Notification, Update).Protocolli di instradamento - RIP, OSPF e BGP →).
- Wormhole. Due nodi malevoli si dichiarano a un salto di distanza e collegano i propri punti con un tunnel privato veloce; i nodi vicini instradano lì, e gli attaccanti possono scartare, alterare o osservare.
- Ping of death. Pacchetti malformati o troppo grandi (oltre 65 535 byte) che mandano in crash o riavviano il bersaglio. Numero: IP massimo , dati ICMP massimi byte. Con byte di dati: carico IP , pacchetto , cioè 3 byte in più; in frammenti da 1480 byte sono frammenti (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →).
- DDoS. Una botnet di dispositivi compromessi inonda il bersaglio. Tre famiglie: volumetrici (consumano la banda), di protocollo (come il ping of death), a livello applicazione (HTTP flood).
- Esempio DDoS. L'attacco a GitHub del 2018 arrivò a Tbit/s GB/s. Con dispositivi da 1 Mbit/s servono milioni di dispositivi.
- Errori tipici: confondere minaccia e attacco; dire che lo sniffing è sempre illegale; credere che il MITM serva solo a leggere (serve a modificare); dimenticare che nello smurf la risposta va alla vittima; dimenticare, nell'esempio ARP, di spegnere redirect e inoltro e di ricalcolare i checksum; credere che un protocollo di livello protegga anche i livelli sotto.