Attacchi al modello ISO/OSI e ai servizi Flashcards

1
Q

Descrivere in dettaglio l’attacco basato su MAC flooding, conseguenze ed eventuali contromisure

A

Il MAC flooding consiste nell’inviare ad uno switch pacchetti appositamente costruiti per riempire la CAM table (Content Addressable Memory table) che permette di associare rapidamente un indirizzo MAC alla porta a cui è collegato il terminale dello switch, con indirizzi MAC fittizi.
Le tabelle degli indirizzi MAC hanno dimensioni limitate. Il MAC flooding fa uso di questa limitazione per inviare allo switch un intero gruppo di indirizzi MAC di origine falsa in modo da saturare la tabella. Quando la tabella è satura lo switch entra in fail-open mode e si comporta come un hub, ovvero invia i pacchetti che riceve a tutti i nodi collegati allo switch.
In un contesto di rete locale ogni volta che un host viene collegato ad uno switch in questo viene popolata una tabella chiamata CAM dove viene registrata l’associazione MAC address – porta dello switch. CAM è una tabella dinamica, limitata dimensionalmente e molto efficiente che funziona come traduttore a livello 2 di MAC di destinazione – porta dello switch. Nel caso lo switch non rilevi nella sua CAM il MAC di destinazione di un pacchetto che deve inviare procederà a inviare il pacchetto in broadcast a tutte le sue porta; solo l’host di destinazione accettara il pacchetto e fornirà il proprio MAC allo switch che lo inserirà in CAM. Essendo l’associazione implicita ogni volta che si collega un host allo switch ed essendo il MAC un identificativo che in teoria dovrebbe essere univoco ma in realtà è falsificabile con estrema semplicità è possibile “indondare” la tabella CAM di MAC per cui lo switch dovrà allocare una entry nella CAM. Una volta esaurita la capienza dalla CAM può sopraggiungere nello switch la modalità di fail open in cui lo switch, progettato per avere come direttiva appunto la permutazione e solo secondariamente per partizionare i domini di broadcast, si comporta come un HUB ritrasmettendo tutti i pacchetti che riceve su tutte le sue porte. Trascurando il degrado di prestazioni che induce, che è cmq un problema reale e che potrebbe portare ad un DDOS se il MAC floading viene propagato e persiste, il MAC Flooding permette all’attaccante di avere accesso a tutti i pacchetti in transito. L’unica contromisura possibile è l’utilizzo di tabelle CAM statiche, con lo svantaggio aumentare il costo di manutenzione della rete ogni volta che cambia la topologia.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Descrivere il funzionamento di un attacco con ARP poisoning e possibili contromisure.

A

Il protocollo ARP si occupa di associare un indirizzo fisico (MAC Address) a uno logico (IP Address). Per farlo ogni nodo all’interno di una rete invia dei messaggi in broadcast per segnalare la sua presenza, così che gli altri possano andare a popolare e\o modificare una tabella interna chiamata ARP cache table.
Questo genere di messaggi però può essere attaccato tramite il cosiddetto ARP Poisoning: un attaccante può creare dei pacchetti spoofati, cioè modificati per fingersi qualcun altro, inviando numerose richieste ARP, andando quindi a saturare la cache table degli altri nodi con informazioni false o non valide.
In questo modo si va a creare un denial of service, in quanto i nodi, non conoscendo a quale client inviare i messaggi, inviano in broadcast, causando anche la possibilità di fare sniffing del traffico, se un client avesse la scheda di rete di tipo promiscuo.
Una mitigazione del ARP poisoning, consiste nell’inserire dei record statici nelle ARP table, così da mantenere le informazioni necessarie e non doverle aggiornare, ma non è di facile implementazione e il protocollo ARP nasce proprio per gestire reti che possono essere dinamiche.

Contromisure: Utilizzare tabelle ARP statiche con conseguente riduzione della flessibilità e semplicità di manutenzione. L’ARP poisoning ha anche usi legittimi, come per esempio convergere il primo collegamento di una connessione verso un server di autenticazione.

Il protocollo di ARP va ad associare un indirizzo fisico (MAC) a un indirizzo logico (IP): ogni client possiede una tabella cache in cui vengono inserite le associazioni già attive. Se non fosse presente una voce, viene fatta una richiesta in broadcast a tutti i nodi della LAN (viene chiesto chi ha un certo indirizzo IP).
Questo genere di messaggi è vulnerabile ad attacchi di spoofing, in quanto si può impersonare un certo nodo della LAN e quindi eventualmente ricevere traffico che non sarebbe destinato all’attaccante.
La tipologia di attacco definita ARP poisoning attack consiste nel generare diversi pacchetti spoofati di ARP request in modo da andare a riempire la tabella di cache di informazioni non corrette causando disservizi e rallentamenti nelle comunicazioni tra le LAN.

Il protocollo ARP (Address Resolution Protocol) connette il livello rete con il livello dati convertendo un indirizzo IP in un indirizzo MAC. Un pacchetto IP indirizzato da una certa sorgente a una certa destinazione deve essere instradato verso la corretta sottorete e, infine, alla macchina che ha una scheda di rete identificata dal particolare MAC. Il meccanismo di associazione IP-MAC viene garantito dal fatto che ogni nodo (non solo gli host ma anche gli switch!) mantiene una tabella, detta ARP cache, in cui sono contenute tutte le associazioni IP-MAC già note. Il protocollo ARP viene utilizzato facendo viaggiare nella rete loca lei diversi pacchetti. Quando si vuole conoscere il MAC della scheda di rete che risponde a un particolare indirizzo IP si invia in broadcast un messaggio di ARP reply, ricevuto da tutti gli host connessi alla sottorete. Quando l’host con quel particolare indirizzo IP vede che quella richiesta è diretta a lui deve rispondere in unicast con un ARP reply ad indicare Sì sono io l’host che ha quel particolare IP e il MAC address della mia scheda di rete è foo. L’host richiedente memorizza quindi la nuova associazione nella sua ARP cache.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Descrivere in cosa consiste IP spoofing, e in dettaglio attacchi che fanno uso di tale tecnica.

A

IP spoofing è un tipo di attacco in cui un client malevolo modifica un pacchetto andando a inserire un altro indirizzo IP rispetto al prossimo, con lo scopo di ingannare una vittima e fare il man in the middle in una determinata comunicazione, oppure può causare un denial of service in quanto può interrompere una connessione o causarne il congestionamento inviando diversi pacchetti.
Esistono due tipologie di IP spoofing: non-blind, cioè che l’attaccante cerca di farsi passare per un host della sua stessa LAN, oppure blind, in cui l’attaccante cerca di farsi passare per un host di una qualsiasi sottorete.
Gli attacchi di IP spoofing cercano di predire il sequence number del target per potersi frapporre nella comunicazione, dopodiché si cerca di instaurare un three-way handshake per recuperare informazioni o anche solo causare denial of service.

Un IP spoofing consiste nella creazione, da parte di un attaccante, di un pacchetto IP con informazioni modificate per nascondere la propria identità o per fingersi un client legittimo. Questo tipo di tecnica viene utilizzata per attacchi di denial of service, in cui posso inviare diverse richieste a un server per causarne down, oppure con attacchi di man in the middle, in cui posso fingermi un server e dirottare le richieste di un client verso un’infrastruttura malevola.
Esempi di attacchi in cui vengono utilizzate tecniche di IP spoofing sono gli amplification attack, che consistono nell’inviare richieste spoofate a server per far ricevere a un client legittimo molto più traffico di quanto ne potrebbe ricevere, oppure i reflection attacks, in cui l’attaccante utilizza, tramite spoofing, un terzo client fingendosi esso per rendere difficile risalire alla fonte dell’attacco.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

IP Spoofing Descrivere gli attacchi basati su, (blind and not blind NON SPIEGATO ONLINE) 3 volte.

A

Spoofing: impersonare un altro host nella rete mediante la modifica del campo Ip Source. BLIND nella rete non facente parte della sottorete a cui si appartiene. NON BLIND della stessa rete. Molti degli attacchi Man in the middle si basano su NonBlind.
Blind: posso inviare comandi fingendomi un altro host (il cui indirizzo per esempio è autorizzato ad accedere dal firewall) ma non posso vedere le risposte che arrivano dal server che saranno recapitate all’host che ho spoofato.
Non Blind: essendo l’host spoofato appartenente alla stessa subnet posso sniffare le risposte. Spoofare un indirizzo è molto semplice ma non sufficiente per inserirsi in una comunicazione TCP in quanto i pacchetti di risposta, posto di essere riusciti a indovinare il SN, saranno cmq recapitati a reale titolare dell’IP spoofato.
Tra i vari attacchi possibili BGP subverted router, DNS attacco kaminsky, Syn Flood. E’ possibile ad esempio usare questa tecnica per portare un DoS attack di tipo Reflection: se il mio gol è rendere inservibile un Host posso spoofare il suo IP inviare richieste a Server che espongono servizi come DNS, NTP o ICMP con il suo IP come source, migliorando l’efficacia con tecniche di amplification attack dove una query di pochi byte ottiene come riposta maggiorata nel payload fino a 100X.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Descrivere le problematiche di sicurezza relative al protocollo TCP/IP e le caratteristiche di IPSEC

A

Lo stack di protocolli TCP/IP si occupa del trasporto di dati tra una sorgente e una destinazione: IP è un protocollo layer 3 che invia pacchetti tra un IP src e un IP dst in modo best effort, cioè non garantisce controlli di affidabilità, mentre TCP è un protocollo layer 4 che invece introduce anche la garanzia che tutti i pacchetti arrivino a destinazione e che l’informazione non arrivata, venga ritrasmessa.
Questi protocolli non introducono sicurezza, in quanto erano nati semplicemente per funzionare al meglio agli albori di internet, quindi non è presente autenticazione, né integrità, se non mimina.
Questi protocolli sono suscettibili ad attacchi di spoofing: un attaccante può ingannare una vittima, creando pacchetti falsi con sorgente diversa per poter aprire una comunicazione three-way handshake (nel caso di TCP) e attaccare servizi esposti su determinate porte.
Nel caso di IP questo attacco viene principalmente utilizzato per causare denial of service, dirottando traffico in un black hole della rete, da cui non esce, oppure per fare sniffing.
Nel caso di TCP viene anche sfruttato il sequence number dei pacchetti (per ricezione in ordine e invio di pacchetti non arrivati) per mettersi in mezzo in una comunicazione, cioè attacco di man in the middle.
IPSEC viene introdotto per aggiungere authentication, integrity e confidenziality a una comunicazione TCP/IP, in quanto vengono utilizzate chiavi per crittare il traffico (IKE), viene introdotta autenticazione end-to-end per mitigare lo spoofing (AH) e c’è un controllo di integrità per evitare che il traffico che passa da internet venga modificato da nodi malevoli (ESP).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Descrivere in cosa consiste un attacco SYN flood e discutere le contromisure

A

Il SYN flood è un attacco di tipo denial of service che va a colpire il protocollo TCP, sfruttando vulnerabilità legate alla negoziazione di una comunicazione tra client e server durante il three-way handshake.
Per farlo l’attaccante si basa sul fatto che il server ha una coda di connessioni in attesa, che va a riempire per ogni pacchetto SYN che riceve, così che possa gestirle tutte: l’attaccante quindi crea delle richieste SYN spoofate, fingendosi altre sorgenti e andando quindi a saturare il cosiddetto Transmission control block (TCB) con richieste false, impedendo quindi di stabilire connessioni legittime.
Esistono alcune contromisure che vanno a mitigare questo attacco: prima di tutto si va a ampliare la memoria del TCB per poter ricevere più richieste. Inoltre si possono ridurre i timer prima che una richiesta SYN venga cancellata dalla memoria, oppure si possono utilizzare i cookie per le sessioni SYN.

Sfrutta il meccanismo di handshaking di una connessione TCP client server con l’intento di causare un DoS della macchina vittima. In dettaglio avviene che in risposta ad Syn dell’attaccante il server vittima invia una 12 Syn-Ack mantiene una sessione half open in attesa ( per un tempo considerevole) che l’attaccante trasmetta al server l’ack per stabilire la connessione. Inoltre la coda half session (backlog) ha dimensioni limitate e può essere saturata rendendo cosi impossibile per il server accettare ulteriori sessioni provocando il DoS . Questo caso si puo mitigare sovrascrivendo il backlog, ma questa tecnica è inefficace in caso di attacco distribuito ad esempio attraverso botnet. L’attacco essere portato in dimensioni piu attraverso tecniche di spoofing e mediante l’uso di botnet per amplificarne l’entità. Una adeguata mitigazione si ottiene attraverso SynCoockies: il server tiene traccia delle sessioni di handshake completate in un coockie e puo cosi liberare il backlog per le sole sessione half-open.
SYN Cookies 1. Il client invia una richiesta al server con pacchetto SYNC; 2. il server risponde con SYNS-ACKS con associato il valore del cookie (funzione hash su source addr, source prot, dest addr, dest port, coarse time, server secret); 3. Il client risponde con un ACKC con cookie associato; 4. Il server ricostruendo il cookie, lo compara con quello ricevuto dal client e capisce se la richiesta di connessione è valida o no e di conseguenza salva lo stato o meno.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

In cosa consiste un session hijacking?

A

Un session hijacking è un attacco di man in the middle che va a colpire il protocollo TCP durante la comunicazione tra client e server.
Poiché il protocollo TCP non dispone di misure di sicurezza, un client malevolo può riuscire a recuperare il sequence number utilizzato per l’invio e la ricezione di pacchetti e mettersi in mezzo nella comunicazione con il server, sfruttando pacchetti spoofati, spacciandosi per il client legittimo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Ack storm

A

Gli attacchi ACK storm si basano sul fatto che se si riceve un pacchetto con un ACK più grande di quello che ci si aspetta di ricevere allora deve scartare il pacchetto e richiedere il reinvio dello stesso. L’attacco base - Two Packets Ack Storm, consiste in: 1. preleva un pacchetto da una connessione TCP tra un client e server 2. Genera due pacchetti, ciascuno indirizzato a una parte con l’indirizzo del mittente dall’altra parte al server (cioè contraffatto dove il l’ack è più alto di quello che le parti in comunicazione si aspettano, quindi con ack sbagliati); a. i pacchetti devono essere all’interno delle finestre TCP in entrambi i lati(server e client); b. i pacchetti dovrebbero almeno avere un byte di dati. 3. Nel momento in cui i pacchetti vengono scartati a causa degli ack sballati, le due parti inviano nuovamente il pacchetto con gli stessi valori di ack. Sia A che B quindi inviano nuovamente il loro pacchetto ma con valori ancora sbagliati e si desincronizzano perchè la connessione entrerà in un ciclo infinito di invio di pacchetti ack avanti e indietro tra entrambe le parti. Quindi l’attacco consiste in un’iniezione di pacchetti in una sessione attiva. I pacchetti falsificati inviati devono essere ricevuti sia dal client che dal server, rientrando nella finestra di congestione TCP di entrambi. ● Quando la connessione tra il client e il server è inattiva, i numeri di sequenza rimangono gli stessi: i browser web più comuni, come Explorer e Firefox, mantengono aperte le sessioni TCP al termine del download della pagina web quindi è più facile per l’attaccante iniziare l’ack storm. ● Quando si trasferiscono file di grandi dimensioni su TCP il numero di sequenza diventa grande. L’attaccante deve conoscere l’IP esterno e la porta che il NAT assegna al computer interno quando accede a Internet. Contromisure Per prevenire attacchi Ack Storm, è necessaria una piccola modifica nell’implementazione (o standard) TCP. Quando si riceve un pacchetto contenente un campo Ack superiore al numero di sequenza del destinatario il pacchetto deve essere scartato e non deve essere inviata alcuna risposta. L’utilizzo di una rete wireless crittografata come standard ridurrà in modo significativo le capacità di intercettazione. Il filtraggio degli Ack duplicati TCP può neutralizzare i due pacchetti. Un attacco ACK storm ha la capacità di causare una grande quantità di traffico.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
  1. Discutere le versioni sicure dei protocolli TCP/IP
A

IPSEC è una suite di protocolli introdotta per aggiungere authentication, integrity e confidenziality a una comunicazione TCP/IP.
IPSEC può lavorare in due modalità: tunnel mode, in cui il contenuto di un pacchetto IP viene cifrato e incapsulato in un altro pacchetto IP, e transport mode, in cui viene aggiunto un header al pacchetto IP originale, cifrando poi il tutto.
Le principali caratteristiche di IPSEC sono IKE (Internet Key Exchange), utilizzato per lo scambio di chiavi per crittare il traffico, AH (authentication header) un protocollo per l’autenticazione end-to-end per mitigare lo spoofing e ESP (encapsulating security payload) che introduce un controllo di integrità per evitare che il traffico che passa da internet venga modificato da nodi malevoli.
Secure Sockets Layer (SSL) e Transport Layer Security (TLS) sono lo stesso tipo di protocolli con algoritmi crittografici diversi. De facto standard per la sicurezza di Internet.
L’obiettivo principale del protocollo TLS è quello di fornire privacy e integrità dei dati tra due applicazioni che comunicano. Comunicazioni end-to-end sicure in presenza di un attaccante che non può vedere i dati scambiati.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

A cosa serve IPSEC?
Quali sono le differenze fra Tunnel mode e Transport mode?
c. Cosa indicano AH e ESP?

A

IPSEC è un protocollo di sicurezza a livello network che garantisce la comunicazione tra una certa sorgente e una certa destinazione, andando a mitigare vulnerabilità che possono essere sfruttate da attacchi di spoofing (impedisce che il pacchetto venga modificato durante il percorso).
IPSec nasce per sopperire alla mancanza di: 1. autenticazione ed integrità 2. non ripudio 3. confidenzialità nel protocollo IP e sfrutta queste 3 proprietà per raggiungere i seguenti obiettivi: 1. Non è possibile mandare un datagramma IP con ip mascherato senza che il destinatario ne sia a conoscenza 2. Non è possibile modificare il datagramma ip senza che il destinatario se ne accorga 3. non è possibile eseguire attacchi di reply senza che il ricevente se ne accorga.

Quando si utilizza IPSEC, il pacchetto IP originale deve essere modificato per aggiungere le opzioni di sicurezza necessarie. Per farlo esistono due modalità:
- Nella Tunnel mode il contenuto di un pacchetto IP viene cifrato e incapsulato in un nuovo pacchetto IP
- Nella Transport mode viene aggiunto un header al pacchetto IP originale, che quindi non viene modificato (viene aggiunta solo un’estensione)
- Metodi di funzionamento:
- Trasport Mode Nella modalità di funzionamento Transport Mode IPSec viene utilizzato per mantenere confidenzialità ed integrità nella comunicazione end-to-end. Il funzionamento, dunque, è rilegato all’utilizzo di un header IPSec tale per cui in caso fosse usata la cifratura, questa avviene solo sul payload.
- Tunnel Mode Nella modalità di funzionamento Tunnel Mode, IPSec viene utilizzato per la comunicazione Gateway-to-Gateway ed applica un incapsulamento completo tale per cui viene creato un nuovo pacchetto con un nuovo IP Header, un nuovo IPSec Header a cui viene incluso il pacchetto IP originario. Nel caso in cui venisse usata la cifratura, questa verrà applicata sull’intero pacchetto originario rendendo però tutto più pesante.

AH indica Authentication Header ed è un protocollo di IPSEC che si occupa di autenticare e rendere sicuri i dati.
ESP sta per Encapsulating Security Payload ed è un protocollo di IPSEC che cifra, autentica e rende sicuri i dati, oltre a fornire anche supporto per la confidenzialità.
L’intero funzionamento di IPSec è correlato al funzionamento di due differenti protocolli di trasferimento che sono l’Authentication Header (AH) e l’Encapsulating Security Payload (ESP), all’utilizzo di due differenti database che sono il Security Association Database (SAD) ed il Security Policy Database (SPD) ed infine ad un sistema di gestione del processo di crittografica che si appoggia ai protocolli ISAKMP ed IKE.
Il protocollo AH fornisce i metodi di autenticazione e controllo dell’integrità del pacchetto proteggendoci da reply attack in quanto l’autenticità del mittente viene garantita mediante l’utilizzo di funzioni di hash a chiave simmetrica la quale verrà utilizzata per confrontare la checksum del pacchetto inviato.
Il protocollo ESP invece aggiunge anche la confidenzialità, applicando uno strato di crittografia all’intero pacchetto originale.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

A cosa serve IPSEC e quali sono le sue caratteristiche?

A

IPSEC è una suite di protocolli introdotta per aggiungere authentication, integrity e confidenziality a una comunicazione TCP/IP.
IPSEC può lavorare in due modalità: tunnel mode, in cui il contenuto di un pacchetto IP viene cifrato e incapsulato in un altro pacchetto IP, e transport mode, in cui viene aggiunto un header al pacchetto IP originale, cifrando poi il tutto.
Le principali caratteristiche di IPSEC sono IKE (Internet Key Exchange), utilizzato per lo scambio di chiavi per crittare il traffico, AH (authentication header) un protocollo per l’autenticazione end-to-end per mitigare lo spoofing e ESP (encapsulating security payload) che introduce un controllo di integrità per evitare che il traffico che passa da internet venga modificato da nodi malevoli.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Descrivere FTP bounce scan

A

FTP bounce scan è un tipo di attacco che utilizza spoofing per generare pacchetti fasulli per poter ottenere informazioni sullo stato di determinate porte. L’attacco consiste nell’utilizzare il server FTP come tramite per comunicare con la vittima.
L’attaccante invia al server FTP un comando PORT utilizzando l’indirizzo IP della vittima tramite un pacchetto spoofato. Se la porta del server è chiusa, quest’ultimo risponderà con un pacchetto RST alla richiesta proveniente dal server FTP, mentre verrà eseguita una three-way handshake nel caso invece la porta fosse aperta.
Questo tipo di attacco è stealth, in quanto l’attaccante utilizza un intermediario per ottenere informazioni sulle porte aperte di una certa vittima.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Descrivere i possibili approcci alla scansione.

A

La scansione all’interno di una rete viene eseguita per recuperare informazioni su determinati host o server e non necessariamente è un attacco malizioso.
Esistono diversi strumenti e software che permettono di avere una scansione di una rete e l’obiettivo principale è ottenere informazioni sulle porte utilizzate (TCP\UDP), cioè quali porte sono aperte e in ascolto su determinati nodi, oltre che determinare quale sistema operativo è presente e se esistono sistemi di filtraggio o firewall in una determinata rete.
Lo scanning può essere attivo o passivo con la differenza principale che nel primo caso si immette traffico nella rete per recuperare informazioni, mentre nel secondo si fa semplice sniffing senza intervenire attivamente in una o più comunicazioni.
Lo scanning può avere diversi approcci: verticale, cioè un host che fa scanning di più target, orizzontale, cioè molti host che fanno scanning su un singolo target in maniera distribuita e infine un mix tra i due, detto ibrido.
Il target infine può essere singolo, cioè una macchina, o multiplo, cioè anche una porzione di rete, se non tutta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Si descriva il funzionamento dell’IDLE SCAN e si faccia un esempio pratico indicando numericamente gli ID e i messaggi di risposta ricevuti nei diversi casi di porte testate (chiusa, aperta o filtrata)

A

Nel IDLE SCAN abbiamo un attaccante, una vittima e uno zombie, vale a dire un terzo attore che verrà sfruttato dall’attaccante per colpire la vittima indirettamente e capire se una determinata porta è aperta, oppure no, utilizzando pacchetti TCP.
L’attaccante manda un pacchetto TCP di tipo SYN\ACK allo zombie. Quest’ultimo non si aspetta questo messaggio, perciò risponde con un pacchetto RST e un IPID, vale a dire l’identificativo del frame (es. 12345).
L’attaccante invia un pacchetto SYN (con la porta da scansionare) spoofato, utilizzando come mittente l’indirizzo IP dello zombie, alla vittima: in questo caso, se la porta è in ascolto, la vittima risponderà allo zombie con un pacchetto SYN\ACK e un IPID incrementato (es. 12346), a cui lo zombie risponde con un pacchetto RST, in quanto non si aspetta questo genere di comunicazione.
Infine, l’attaccante invia un altro pacchetto di SYN\ACK allo zombie, che gli risponde con un RST e un IPID incrementato (es. 12347): confrontando i valori di IPID, l’attaccante capisce che la porta è aperta.
Se invece la porta fosse chiusa o filtrata, il valore di IPID sarebbe stato incrementato una sola volta, in quanto la vittima risponderebbe rispettivamente con un RST o non risponderebbe affatto al pacchetto spoofato inviato dall’attaccante, fingendosi lo zombie. Con il secondo SYN\ACK allo zombie, ci sarebbe quindi solo questo incremento di IPID.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Descrivere quali sono le condizioni rilevabili di una porta come risultato di uno scanning e cosa indicano ad un potenziale avversario.
Per ciascuno stato fare un esempio di un tipo di scan che produca quel tipo di stato.

A

Una porta può essere aperta, quindi un servizio è in ascolto su di essa, chiusa, quindi non c’è nulla in ascolto su di essa, oppure filtrata, cioè che è presente un firewall che permette l’accesso solo a determinate sorgenti (in quest’ultimo caso non è possibile definire se è aperta o chiusa)

Per testare lo stato di una porta, si può fare un TCP SYN scan che consiste nell’inviare un pacchetto TCP di tipo SYN + la porta da scansionare, simulando un three-way handshake: se la porta restituisce un pacchetto SYN/ACK, allora la porta è aperta, mentre se restituisco un RST, allora è chiusa. Nel caso di una porta filtrata, il comportamento dipende dal firewall.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

b. Si supponga che 12345 sia l’ultimo IP ID testato sulla macchina Zombie.
Con Nmap(*) si testano le porte da 20 a 23 e alla fine si rileva che l’IP ID dello Zombie è 12346: Cosa si può dedurre sullo stato delle porte testate?

A

Poiché il IP ID è aumentato solo di una volta, allora si può dedurre che le porte da 20 a 23 o sono chiuse, quindi non è presente nessun servizio in ascolto su di esse, oppure sono filtrate, cioè che è presente un firewall che controlla il traffico in transito e droppa i pacchetti che non provengono da determinate sorgenti. In quest’ultimo caso non è possibile definire se la porta sia aperta o chiusa.

17
Q

Descrivere le problematiche di sicurezza relative al servizio DHCP

A

Il servizio DHCP si occupa di fornire un indirizzo IP dinamico all’interno di una LAN.
Il protocollo funziona con uno scambio di messaggi in broadcast tra il client e il DHCP server: il client manda il suo MAC address facendo una richiesta di IP (DHCP discover), il server risponde con un messaggio contenente IP e altre informazioni (come nome ed indirizzo del DNS server, indirizzo del router più vicino al client, maschera di rete) (DHCP offer), il client risponde accettando i parametri del server (DHCP request) e il server risponde con un ack (DHCP ack).
Proprio per la natura di questo protocollo, che invia messaggi in broadcast e che utilizza i MAC address all’interno di una LAN, un attaccante può impersonare un DHCP server (DHCP rogue server) e intercettare le richieste dai client, fornendo parametri non corretti per causare denial of service isolando i client, oppure per dirottare il traffico su altri server malevoli.

Un altro attacco è chiamato DHCP starvation e consiste nell’invio di numerose richieste DHCP da parte di un attaccante, sfruttando MAC address spoofati e quindi generati casualmente, riempiendo il pool DHCP e quindi impedendo a client legittimi di ottenere un indirizzo IP.

Il protocollo DHCP viene utilizzato per fornire a un client un indirizzo IP dinamico, più altre informazioni quali ad esempio il DNS server.
Il protocollo si basa su messaggi inviati in broadcast sia dal client che ha bisogno di un indirizzo IP, sia dal DHCP server che risponderà a questa richiesta.
Proprio per la natura broadcast dei messaggi e per la mancanza di controlli di sicurezza, un client malevolo può attaccare la LAN fingendosi un DHCP server (rogue server) e rispondendo alle richieste dei client per dirottare il traffico su server malevoli, oppure per causare denial of service o per fare sniffing dei pacchetti.
Un altro tipo di attacco consiste nel creare pacchetti spoofati, cioè modificati dal client malevolo, per inviare numerose richieste DHCP al server che, non facendo controlli avanzati, semplicemente risponde a tutti fino a riempire il proprio pool di indirizzi IP dinamici: questo attacco è chiamato DHCP starvation e causa denial of service, in quanto eventuali client legittimi non riusciranno a ottenere un indirizzo IP dinamico, avendo perciò l’impossibilità di comunicare all’interno della rete.

18
Q

scopo e contromisure all’attacco di Kaminsky

A

L’attacco è un’evoluzione insidiosa della cache poisoning. L’idea è pressoché la stessa solo che l’attacco da poco probabile diventa molto probabile. La differenza sostanziale è che la richiesta che fa partire il meccanismo di risoluzione del nome dominio parte dalla macchina attaccante. Generare 65K valori è difficile ma siccome questa volta è l’attaccante che genera le richieste, può generare tanti nomi casuali da risolvere e di conseguenza tantissime query una dietro l’altra: 123.esempio.com 1234.esempio.com 12345.esempio.com ecc.. ma tutti diversi per non essere memorizzati nelle cache Quindi siccome il processo di risoluzione è ripetuto tantissime volte, diventa probabile indovinare l’ID. Per esempio, se riesce a fare solo 50 risposte finte prima di essere superato dal vero server autoritativo, può ripetere questo tentativo tante volte con nomi diversi. In questo esempio la probabilità di riuscita è: ma con 10000 tentativi, la probabilità di 50/65536, quindi il successo è di 99.9% Ovviamente in questo esempio abbiamo sottointeso che solo il query ID fosse random. Una difesa sarebbe quella di randomizzare anche la porta UDP, aumentando così il range di possibili valori.
Per mitigare gli attacchi a vulnerabilità DNS, come quello di Kaminsky, si può introdurre autenticazione e crittografia nelle comunicazioni (DNSec), in modo che le richieste vengano accettate solo se si può dimostrare la propria identità al DNS server.

19
Q

Discutere BGP e i relativi problemi di sicurezza.

A

Il BGP è un protocollo che permette il routung tra due differenti autonomous system (cioè un gruppo di reti sotto il controllo di un certo internet service provider). Gli autonomous systems comunicano fra di loro e aggiornano le rispettive tabelle di routing per instradare il traffico fra loro.
Il metodo con cui inoltrano il traffico è basato, oltre alle tabelle di routing, anche sulla grandezza del campo rete di un certo indirizzo IP: a parità di indirizzo IP, si sceglie quello con il campo di rete più alto, cioè che ha i bit legati agli host più basso (es. tra 1.2.3.4/27 e 1.2.3.4/28, instraderà il traffico sul secondo).
Questo protocollo e suscettibile di attacchi legati a denial of service, ad attacchi legati a integrità o confidenzialità, dato che BGP non offre autenticazione, oppure a dirottamento dei pacchetti per sniffing: si può per esempio dirottare il traffico in porzioni di rete da cui non può più uscire, andando a far terminare il TTL di un pacchetto, oppure far passare il traffico da determinati nodi per poter controllare il contenuto dei vari pacchetti o modificarli a proprio piacimento.
Il fatto che BGP lavora con AS che spesso sono gestiti da ISP in concorrenza fra loro rende difficile mettersi d’accordo per modificare il protocollo per aggiungere authentication e altri controlli, tuttavia si può verificare il TTL di un pacchetto per controllare che non abbia viaggiato troppo a lungo all’interno del web perché magari è stato dirottato.

Oppure:
BGP (Border Gateway Protocol) è un protocollo di routing utilizzato per l’instradamento di pacchetti tra Autonomous Systems (AS) diversi. Ogni router BGP mantiene una tabella dei prefissi di rete dei vari AS con informazioni aggiornate periodicamente sulla raggiungibilità degli stessi, portando ogni router a comunicare con i vicini per poter integrare le proprie tabelle. BGP è un protocollo di tipo path vector, in cui l’instradamento avviene sulla conoscenza dei percorsi più vantaggiosi verso una rete di destinazione. Come altri protocolli di livello 3 e 4, BGP non prevede autenticazione, controllo di integrità dei messaggi, ownership delle informazioni, informazioni sulla topologia, perciò è possibile effettuare una serie di attacchi:
* Prefix hijacking: con cui l’attaccante si attribuisce i prefissi di rete di un AS che non controlla, al fine di ricevere tutto il traffico di rete destinato ad esso.
* Prefix de-aggregation: con cui l’attaccante propone delle rotte più specifiche, e quindi più convenienti, ad altri router BGP, in modo da ricevere tutto il traffico di rete destinato ad esse.
* Flapping attack: l’attaccante sfrutta le caratteristiche di flapping dei router, con la quale un particolare collegamento può essere disattivato e poi riattivato causando instabilità nella rete. L’attacco prevede di annunciare una particolare rotta come instabile, in modo da renderla inaccessibile da parte di altri router BGP.
Alcune contromisure per evitare attacchi di questo tipo sono:
* Applicare filtri di tipo ingress ed egress sui path relativi ad ogni AS, in modo che un router BGP accetti solo i path configurati.
* Utilizzare versioni sicure del protocollo basate su infrastruttura a chiave pubblica, o su IPSec, come S-BGP o Secure Origin BGP di CISCO.

20
Q

Discutere le problematiche di sicurezza causate da buffer overflow.

A

Un attacco legato a buffer overflow si concretizza nello sfruttamento, da parte dell’attaccante, di vulnerabilità legate al flusso di un determinato applicativo: l’attaccante fa in modo che l’inserimento di dati vada oltre lo spazio di memoria che ci si aspetta e che viene allocato, andando a sovrascrivere altre celle di memoria e causando danni ad altri applicativi o al sistema operativo, oppure facendo in modo che si possano lanciare altre porzioni di codice malevolo da quel punto.

21
Q

buffer overflow Descrivere i problemi creati da un buffer overflow ed in particolare il caso HeartBeat

A

Un buffer overflow è una condizione in cui un software per un bug di progettazione in fase di runtime satura tutta la porzione di memoria a lui assegnata ( che sia il buffer o lo heap) oppure accede a porzioni di memoria per le quali non dovrebbe essere autorizzato. Tenendo presente che alcuni software hanno la possibilità di accedere direttamente ai blocchi di memoria ( si pensi al C per esempio) un attaccante sfruttando questo bug puo provocare un DoS dell’host o può scrivere in porzioni di memoria e fare eseguire codice malevolo con permessi di root. HeartBeat è un’estensione di OpenSSL pensata per monitorare le connessioni OpenSsl attive di un host attraverso uno scambio di messaggio dal payload molto limitate. Una sorta di keepalive. Dietro questo meccanismo è stata scoperta una vulnerabilità per la quale OpenSsl è in grado di accedere in porzioni di memoria non permesse permettendo cosi ad un attaccante di estorcere informazioni confidenziali quali chiavi, password etc. Le moderne versioni di OpenSsl sono patchate per Heartbleed oppure è possibile disabilitare la funzionalità Heartbeat. Va però tenuto presente che è necessario eliminare e ricreare tutte le coppie chiave\certificato anche dopo il patching.

22
Q

Discutere l’utilizzo delle canary

A

L’utilizzo delle canary serve per accorgersi se si sta subendo un attacco di buffer overflow: nello stack di memoria allocata, viene inserito un campo con un determinato valore casuale. Questo valore viene controllato in fase di return di una certa funzione: se si è stati attaccati con la tecnica di buffer overflow, il valore di canary sarà diverso, perciò si può intervenire bloccando l’esecuzione del programma.

23
Q

Discutere i problemi di sicurezza con DNS e l’approccio DNSSEC

A

ll protocollo DNS viene utilizzato per risolvere i nomi di dominio in indirizzi IP.
E’ un servizio critico per il corretto funzionamento dell’intera infrastruttura di Internet ed è un elemento molto importante nella catena di trust delle operazioni effettuate da un utente umano, che difficilmente usa direttamente gli indirizzi IP.
Nonostante DNS sia un protocollo efficiente e robusto (ricordiamo la sua natura pubblica e distribuita) è privo di autenticazione e non garantisce integrità dei dati.
Queste mancanze rendono DNS vulnerabile rispetto ad alcuni attacchi, il più famoso dei quali è DNS cache poisoning.
L’obiettivo di un attaccante è quello di alterare la cache di un server DNS ricorsivo con delle associazioni scorrette, così che una query DNS restituisca risultati falsi.
In questo modo l’attaccante può ridirigere il traffico verso reti o servizi sotto il proprio controllo per fini malevoli.
Perchè un attacco di tipo DNS cache poisoning funzioni è necessario che l’attaccante riesca ad ottenere tali informazioni:

  1. La porta UDP sorgente utilizzata dal server DNS ricorsivo
  2. La sezione Question del pacchetto
  3. Il Query ID utilizzato dal server DNS ricorsivo
    Nell’implementazione standard di DNS la porta UDP sorgente è sempre la stessa, mentre il query ID è un semplice contatore incrementato ad ogni interrogazione.
    Con le informazioni ottenute un attaccante può:
  4. Interrogare il server DNS ricorsivo scelto come vittima
  5. Forgiare una risposta con le informazioni di cui sopra per usarla quando il server DNS ricorsivo interroga i server DNS autorevoli di zona.
    Una possibile contromisura ad un attacco DNS cache poisoning è l’utilizzo di query ID randomici di 16 bit, costringendo l’attaccante ad indovinarne il valore prima che il server autorevole risponda alla query. Un’altra difesa può essere l’impiego di protocolli sicuri, come DNSSEC.
    DNSSEC è uno standard retrocompatibile con DNS che aggiunge autenticazione e controllo di integrità alle query DNS.
    Le risposte dei server DNS autoritativi infatti vengono firmate digitalmente con la chiave pubblica del server responsabile della zona.
    La distribuzione delle chiavi è gerarchica: la chiave pubblica di una zona viene
    distribuita dalla zona o dal server gerarchicamente superiore.
    Nonostante le funzionalità di sicurezza aggiuntive, la diffusione di DNSSEC è stata parziale.
    Il mantenimento dell’infrastruttura necessaria per generare le chiavi pubbliche è molto oneroso; al tempo stesso il protocollo non offre confidenzialità, dato che i pacchetti non sono cifrati ma solo firmati, rendendo DNSSEC, secondo alcuni, mal progettato.