cerca
Sicurezza nelle Reti - Prova scritta - Novembre 2008
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Sicurezza nelle Reti - Prova scritta - Novembre 2008

 :: Sicurezza nelle Reti - Prova scritta - Novembre 2008 ::

Esercizio 1

Spiegare in sintesi ma con precisione la vulnerabilità FTP Bounce Attack e la modalità di risoluzione appropriata.

La FTP Bounce Attack è una vulnerabilità di FTP che si può verificare nel seguente scenario:

  • è possibile, dall'esterno, connettersi all'FTP interno
  • è possibile, dall'esterno, connettersi al Web Server interno, il quale ha anche attivo un server Telnet

Quando il client chiede il trasferimento di dati, invia al server FTP il comando PORT, il quale ha la seguente sintassi:

PORT h1,h2,h3,h4,p1,p2

dove:

  • h1...h4 sono i 4 ottetti dell'indirizzo IP a cui il server FTP deve connettersi per la connessione dati
  • p1 e p2 si compongono così: p1*256 + p2, e compongono la porta a cui il server FTP deve connettersi

Se il client invia un comando PORT così:

PORT indirizzo,del,server,telnet,0,23

il server FTP aprirà una connessione dati verso l'host indicato con indirizzo,del,server,telnet alla porta 0*256 + 23 = 23, che è la porta di default di telnet.
A questo punto il client invia il comando RETR, che causa l'apertura di una connessione dal server FTP al server telnet indicato con PORT. In questo modo ci si connette tranquillamente al server telnet.

Un firewall stateful non sarebbe in grado di riconoscere ciò, perché una tale connessione non ha niente di sospetto. Da più di 10 anni i server FTP sono configurati in modo da non permettere PORT a host che non siano quelli da cui proviene la connessione. Inoltre, un Proxy messo tra il server e il mondo esterno potrebbe ispezionare i pacchetti e determinare un uso improprio della connessione FTP.

Esercizio 3

Descrivere il significato dei parametri presenti nella seguente regola di Snort e il tipo di evento anomalo rilevato.

alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS 
(msg:"..."; 
flow:to_server,established;
uricontent:"/complete/search?";
uricontent:"output=desktop";
content:"User-Agent|3A|";
nocase;
content:"Google";
distance:0;
nocase;
content:"Desktop";
distance:0;
nocase;
pcre:"/User-Agent\x3A[^\n\r^]+google[^\n\r]+Desktop/smi";
classtype:policy-violation;
sid:7860;
rev:1;)

Uuuuh quanta bella roba;)
Innanzitutto, la prima riga alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS è l'header della firma, e contiene:

  • alert è l'azione da intraprendere, che vuol dire compiere l'azione di alert definita nella configurazione e loggare il tutto
  • tcp è il protocollo da analizzare
  • $HOME_NET any è l'indirizzo di partenza del pacchetto
  • $EXTERNAL_NET $HTTP_PORTS è l'indirizzo di destinazione del pacchetto

Le scritte con un $ davanti sono variabili, definite nella configurazione di SNORT.

Il resto è il body della firma, e i suoi parametri sono:

  • msg:"..."; : è il messaggio da inviare con l'alert
  • flow:to_server,established; : questo parametro implica che il plugin Stream4 (quello che permette analisi stateful) sia attivato, e dice di controllare i pacchetti che vengono inviati AL SERVER e appartenenti ad una CONNESSIONE già esistente
  • uricontent:"..."; ': si cerca la stringa contenuta tra virgolette nell'URI, il quale viene normalizzato per evitare cose strane con slash etc.
  • content:"..."; : si cerca la stringa tra virgolette nel contenuto del payload
  • distance:0; : questo parametri dice quanti byte aspettare, DOPO che è stata matchata la regola precedente, per iniziare a controllare se la regola attuale matchi
  • nocase; : la ricerca nella stringa non è case sensitive
  • pcre:"..."; : si cerca nel payload il testo che matcha l'espressione regolare qui indicata
  • classtype:policy-violation; : dice di che tipo è questo evento
  • sid:7860; : è l'ID di Snort del tipo di violazione
  • rev:1; : è la revisione della definizione della firma

Torna alla pagina di SnR