09 Sistemi di rilevamento delle intrusioni

Un sistema di rilevamento delle intrusioni (IDS: Intrusion detection system) è la seconda linea di difesa rispetto un attaccante.

La prima linea di difesa consiste nelle misure atte a prevenire gli attacchi. Ad esempio: antivirus, configurazione del sistema per renderlo più resistente a determinate tipologie di attacco, monitoraggio per la scoperta di vulnerabilità e loro fix.

Un IDS ha lo scopo rilevare e lanciare l’allarme se un attacco supera le misure di sicurezza preventiva messe in atto.

Il rilevamento può avvenire:

  • in un host, in tal caso si parla di host based IDS (HIDS);

  • in rete, ovvero con Network IDS (NIDS).

I sistemi host based IDS possono

  • rilevare Trojan horse;

  • monitorare il comportamento e lo stato di un sistema.

Invece i Network IDS leggono i pacchetti in ingresso per identificare attacchi dei tipi:

  • port scanning

  • denial of service.

Architettura di sistemi IDS

Una architettura molto diffusa è l’architettura centralizzata.

È adottata dalla maggior parte dei sistemi IDS avanzati. Consiste nell’inviare i dati da osservare nei sistemi monitorati, verso un singolo server centrale che effettua l’attività di analisi dei dati ricevuti.

Questo tipo di architettura pone problemi di:

  • scalabilità,

  • tolleranza ai guasti,

  • sicurezza.

Infatti attacchi, o guasti, all’unità centrale di analisi possono compromettere il monitoraggio di tutti i sistemi in osservazione.

Inoltre incrementando la quantità di sensori che inoltrano dati verso l’unità centrale 1 si può avere perdita di informazioni o incrementare il tempo di reazione del sistema di monitoraggio.

In alternativa è possibile adottare una architettura a strati (layered architecture).

In questa architettura i dati sono processati localmente, e gli eventi che denotano un possibile attacco sono inoltrati ad un sistema a livello superiore.

Questo tipo di architettura cerca di gestirre il concetto di scalabilità. Però rimane il problema che i nodi prossimi alla radice della gerarchia possano essere lo stesso sovraccaricati. E possono rappresentare un single point of failure o di vulnerabilità.

Infine, osserviamo l’architettura peer-to-peer

In questo caso non vi sono unità centralizzate. Lo scambio dei dati tra i diversi sistemi in osservazione avviene solo per effettuare correlazioni.

In questo caso non abbiamo i problemi di scalabilità, singoli punti di guasto o vulnerabilità. D’altro canto vi è lo svantaggio della complessità d’implementazione.

Altre caratteristiche di un IDS

L’efficacia di un IDS si misura in termini di:

  • efficienza del rilevamento;

  • frequenza (rateo) di falsi allarmi.

Vi sono tre algoritmi fondamentali, utilizzati nello sviluppo degli IDS:

  • basati sul cattivo uso (misuse based);

  • basati sulle anomalie (anomaly based);

  • basati sulle specifiche (specification based).

Misuse based IDS

Questi IDS sono in grado di rilevare attacchi di tipo conosciuto.

Il rilevamento avviene controllando se nei dati in osservazione sono presenti firme di intrusioni.

Il loro punto di forza consiste nell’avere un rateo per falsi allarmi molto basso.

Per contro, non rilevano vulnerabilità sconosciute e hanno problemi di scalabilità. Per comprendere la gravità del problema, si consideri il fatto che ogni giorno in media vi sono cinque nuovi tipi di attacchi.

Esempi di misuse IDS sono: Snort, l’IDS di Cisco, AVG Antivirus.

Questo tipo di sistemi hanno necessità di utilizzare un linguaggio per definire le firme; si usano:

  • le espressioni regolari;

  • linguaggi basati su regole.

Ad esempio, Snort, ora acquisito da Cisco, utilizza regole per definire gli eventi da catturare e come gestirli. Un esempio di regola Snort è la seguente:

alert tcp $EXTERNAL_NET any -> $HTTP_SERVER $HTTP_PORTS
    (msg:"WEB-CGI finger acces";
     flow:to_server, established;
     uricontent:"/finger"; nocase;
     reference:arachnids,221;
     reference:cve,1999-0612;
     reference:nessus,10071;
     classtype:attempted-recon;
     sid:839; rev:7;)

Questa regola definisce:

  • alert - un allarme;

  • tcp - che analizza pacchetti TCP;

  • $EXTERNAL_NET - proveniente da indirizzi IP esterni alla rete;

  • any - e con ogni numero di porta;

  • -> - diretti verso …;

  • $HTTP_SERVER - il server HTTP;

  • $HTTP_PORTS - alle porte servite dal server HTTP;

  • (…) - ed infine una serie di opzioni accessorie.

Astraendo dai dettagli di un particolre attacco, è possibile rilevare sue eventuali variazioni o attacchi che utilizzano meccanismi simili.

Anomaly based IDS

Questi sistemi partono dal presupposo che gli attacchi causano deviazioni al normale comportamento dei computer da analizzare.

La rilevazione avviene comparando le atività correnti con i comportamenti corretti conosciuti,

A favore: questo tipo di IDS sono in grado di rilevare vulnerabilità sconosciute.

Contro: il rateo di fasi positivi è elevato.

Gli IDS anomaly based possono utilizzare vari tipi di osservazioni:

  • possono basarsi su statistiche;

  • possono utilizzare tecniche di AI, quali:

    • reti neuronali;

    • profilazione degli utenti (ad es. per le carte di credito);

Specification based IDS

Questi sistemi si possono basare:

  • sulla definizione di macchine a stati;

  • sulla definizione di macchine tramite linear temporal logic 2.

Nel caso di uso di macchine a stati, si utilizza un automa per definire le traccie di sistema attese, ovvero per un sistema che lavora in modo corretto.

Un automa permette di costruire tutte le possibili sequenza di messaggi permesse in un sistema: \(m_{1} \; m_{2} \dots m_{i} \; m_{i+1} \dots\) dove vale \(t(m_{i}) \geq t(m_{j}), \quad \text{con} \, i>j\).

È possibile utilizzare un automa a livello globale, descrivente i passaggi tra stati di tutti i componenti del sistema 3, ma questo richiede l’uso di un sistema centrale, con le limitazioni già esposte.

Per superare questo aspetto, si può pensare di avere un automa locale ad ogni componente del sistema. Ognuno di questi automi è la base per costruire un filtro che monitorizza il componente in cui risiede. L’insieme dei filtri implementati nelle diverse macchine costituisce un IDS distribuito e autoprotettivo, logicamente equivalente ad un IDS sviluppato in modo centralizzato.

Evoluzione degli IDS

Attualmente si è orientati allo studio di sistemi IDS ibridi, che combinano insieme diverse tecniche.

Un settore dove i sistemi IDS sono molto utilizzati è quello dei device mobili, quali tablet, e cellulari.

Un’altra area di studio consiste nella protezione dei sistemi IDS, che possono essere a loro volta oggetto di attacco.

Così come sono oggetto di studio i tempi di reazione e la limitazione dei falsi positivi.

La valutazione di diversi sistemi IDS è stata controllata facendo riferimento a data set standard, generati artificialmente (es. DARPA 98/99 dataset, o KDD99). Attualmente vi sono critiche riguardo l’uso di questi dataset, e si richiede l’utilizzo di dataset più aggiornati 4, derivati da scenari di attacchi reali.

Alcuni riferimenti si possono trovare nelle seguenti pubblicazioni: [INMO2005], [INMN2006] e [MONA2008]


1

Qui stiamo analizzando possibili problemi di scalabilità.

2

Per linear temporal logic (LTL) si intende una logica temporale modale. Per modale, si intende: qualificare la frase indicando in che modo interpretarla. Ad esempio, in «Lucia è usualmente felice», la parola usualmente indica come interpretare l’affermazione.

LTL in pratica è un sottoinsieme della logica del primo ordine, che introduce gli operatori temporali modali:

  • neXt

  • e Until

Si veda [WIKI2019c] per approfondimenti.

3

Si veda (tra i tanti):

4

Usualmente si considera un sistema distribuito: composto da più sistemi che interagiscono. E lo IDS deve monitorare tutti i componenti del sistema distribuito.