Argomenti Cyber [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

1) Concetti principali sicurezza Quando si gestisce la sicurezza di un’organizzazione bisogna proteggerla da minacce esterne e proteggere le organizzazioni esterne da minacce che possono provenire dall’organizzazione che si difende. I concetti fondamentali sono: dominio di sicurezza, che è l’insieme di entità/risorse da gestire come una singola area di amministrazione in accordo a una politica di sicurezza comune, perimetro di sicurezza, che è il confine protetto tra il lato esterno e quello interno di un dominio di sicurezza, e superficie di attacco che è la somma dei diversi punti in cui un’entità non autorizzata può tentare di inserire o estrarre dati o svolgere qualsiasi tipo di attività non autorizzata o ostile. 2) Gradi di affidabilità Ad ogni dominio di sicurezza è assegnato un grado di affidabilità (trust degree) che ne definisce le regole di visibilità rispetto agli altri. Un dominio con un grado di affidabilità maggiore può avere piena visibilità di quelli con grado inferiore, viceversa, la visibilità è bloccata a meno di specifiche eccezioni. In una comune architettura di rete abbiamo almeno tre domini: Outside, che corrisponde al mondo Internet esterno ed ha un grado di trust pari a 0, Inside, che corrisponde all’organizzazione interna da proteggere e nascondere ed ha un grado di trust pari a 100, ed infine DMZ(zona demilitarizzata), che corrisponde all’insieme delle macchine interne che offrono servizi all’esterno ed ha un gradi di trust compreso tra 0 e 100. 3) Sniffing Uno sniffer è un'applicazione software che è in grado di acquisire i pacchetti a livello datalink. E’ in grado di interpretare informazioni in chiaro riferite agli header di livello 2, 3 e 4 dei pacchetti nonché a protocolli di livello di applicazione quali FTP, HTTP. Lo sniffer è localizzato all’interno di una rete ma ha una interfaccia verso l’esterno. L’operazione di sniffing è effettuata mettendo l’interfaccia in un modo particolare oppure attraverso strumenti hardware che ci permettono di andare ad ispezionare i pacchetti. I controlli di sicurezza per proteggere la nostra organizzazione non devono essere concentrati solo in un unico punto (punto di confine). Pertanto una delle regole generali è la seguente: il punto di controllo va messo sempre il più vicino possibile all’entità da proteggere. 4) Osservazione del flusso di traffico Il modo più semplice è utilizzare un computer con una scheda di rete che lavora in modalità promiscua, cioè non vengono controllati solo i pacchetti destinati ad un solo indirizzo MAC, ma vengono controllati tutti i pacchetti che vi transitano. I dati uscenti dal controllo vengono successivamente passati ad un’applicazione che ha il compito di analizzare e interpretare i dati. Le informazioni uscenti permettono di osservare il traffico in grande dettaglio. Lo sniffing permette: l’analisi automatica della rete alla ricerca di specifici pattern, l’analisi delle anomalie per scoprire eventuali problemi all'interno delle reti, l’analisi delle prestazioni, rilevazione delle intrusioni di rete e registrazione del traffico di rete (log). 5) Intercettazione dei pacchetti L’intercettazione dei pacchetti dipende da come si organizza fisicamente l’intercettazione. Tipicamente lo sniffing viene effettuato su reti switched, dove il traffico viene instradato secondo l'associazione MAC address + Porta, escludendo i terminali non interessati al traffico. Pertanto uno sniffer è solo in grado di intercettare il traffico destinato alla macchina che lo ospita e quello broadcast. L’alternativa è configurare la porta dello switch cui è connesso lo sniffer in modalita’ mirroring, che permette di replicare tutto il traffico ricevuto da specifiche porte sulla porta dello sniffer. Una configurazione del mirroring può essere tipicamente: porta per porta, insieme di porte su una porta, un’intera VLAN su una porta. Non tutti gli switch, però, permettono di effettuare il port mirroring. Per ovviare al problema degli switch che non consentono il port mirroring abbiamo diverse strategie. Utilizzo di un reapeter che effettua una copia del traffico sulle interfacce sorgenti a cui è connesso sull’interfaccia connessa allo sniffer. Lo svantaggio di questa soluzione è che ha una banda limitata. Inoltre si potrebbero utilizzare sonde HW dedicate TAP oppure realizzare un ARP poisoning attack. 6) Sonde HW dedicate TAP (Traffic Access Port) Questo dispositivo fa una copia del traffico su una tratta e permette di avere una grande visibilità del traffico di rete oltre a verificare se ci sono degli errori sulla tratta di interesse. Lo sniffer è posto subito dopo il TAP, cioè riceve i dati dal TAP. A differenza dei TAP, le tradizionali interfacce di rete/schede di rete NIC scartano dei frame se sono malformati, nascondendo quindi eventuali attività malevoli. Quindi con una NIC agendo al livello 2 non si può vedere tutto il traffico di rete, invece con un TAP, che agisce al livello fisico, si ha una visione di tutto, anche degli errori. Quando si effettua il tapping bisogna fare in modo che chi è intercettato non se ne accorga. Un tapping può essere rilevato mediante tecniche riflettometriche, utilizzate soprattutto nei cavi in fibra ottica.

7) ARP poisoning attack (oppure ARP Spoofing) Veicola forzatamente il traffico di rete ottenendo lo stesso effetto del port mirroring. L’attacco sfrutta la vulnerabilità del protocollo ARP che è stateless, quindi non memorizza le richieste effettuate in precedenza ed ogni richiesta è indipendente dalle altre. Le risposte sono memorizzate nella ARP CACHE, per limitare il traffico sulla rete il cui contenuto viene aggiornato ogni determinato intervallo di tempo. Per realizzare l’attacco ARP poisoning l’attacker invia delle ARP reply opportunamente costruite/modificate: all’host A invia una reply ARP che ha come IP quello del’host B, ma come MAC address il proprio e all’host B invia una reply ARP che ha come indirizzo IP quello dell’host A e come MAC address il proprio. Per effettuare l’attacco è necessario inviare delle ARP reply allo scadere di un intervallo di tempo poiché la cache viene aggiornata allo scadere di un timeout. Quando i due host instaureranno una comunicazione tra loro, crederanno di comunicare reciprocamente, ma in realtà comunicano con l’attacker il quale, per mostrare trasparenza e regolarità nella comunicazione tra i due host e continuare a sniffare il relativo traffico, inoltrerà il traffico proveniente da host A verso host B (e viceversa), realizzando così un attacco man-in-the-middle e ottenendo lo stesso effetto del port mirroring. 8) Network Monitoring Il network monitoring permette di controllare ciò che accade sulla rete per garantire sia la sicurezza dell’infrastruttura sia la sicurezza dei sistemi che ne fanno parte. Le architetture per il network monitoring sono strutturate in accordo a un modello Manager-Agent. La funzione di management è l’interfaccia principale dell’applicazione. L’agente di management interfaccia l’oggetto da monitorare mentre un agente di monitoraggio può aggregare più funzioni agente associate a oggetti multipli. La funzione di management cerca di raccogliere o interrogare i dati provenienti dall’oggetto monitorato, per poterli poi presentare o graficare all’utente. L’agent invece preleva i dati e li passa alla funzione di management. La comunicazione è standardizzata e avviene tramite il protocollo udp-based SNMP (Simple Network Management Protocol). Anche le informazioni sono standardizzate, i dati degli oggetti monitorati vengono raccolti in un MIB ( Management Information Base). Quando la funzione di management richiede dei particolari dati agli agent, questi accedono al MIB, prelevano i dati richiesti e li passano all’applicazione di monitoraggio. 9) Comunicazione Network Monitoring La comunicazione può avvenire tramite due tecniche: • Polling: è un’interazione request-response tra Manager e agent. Il Manager effettua delle interrogazioni periodiche di ogni agent con richiesta dei valori degli elementi di interesse e ogni agent risponde con le informazioni presenti nel proprio MIB. • Event reporting: l’agent genera dei report in autonomia e li presenta al Manager. E’ più efficiente del polling per monitorare oggetti il cui stato cambia poco di frequente. 10) Netflow NetFlow permette di conservare la coerenza dell’evento osservato in termini di flusso di traffico da un’origine a una destinazione e viene utilizzato specialmente quando le dimensioni del flusso di traffico sono molto elevate (ordine dei 100GB/PB). Tutti i dati di traffico possono essere raccolti ed inviati periodicamente da ciascun router a un apposito data-collector per successive analisi. Con l’analisi dei flussi di traffico riusciamo a capire chi sta utilizzando le risorse di rete e come. Abbiamo un dispositivo di rete che genera dei flussi sulle interfacce di monitoraggio. Il protocollo Netflow permette di inviare i dati sui flussi a dei dispositivi di monitoraggio dei flussi. Questi dispositivi catturano i flussi ed esportano le informazioni verso i sistemi di raccolta e analisi dei flussi. L’agente Netflow salva le informazioni sui flussi in una cache e periodicamente le esporta verso un analizzatore. _______________________________________________________________________________________ 1) Border Router È uno dei primi elementi su cui effettuare controlli sul traffico in quanto rappresenta un primo sbarramento di una rete ed è un punto di controllo strategico e non può essere aggirato dall’end-user. I controlli di base che possono essere effettuati sul router di frontiera riguardano il traffico ammissibile ed è fondamentale la sua protezione, in quanto una sua compromissione può aprire l’accesso alla LAN ed esporla ad attacchi. Eccedere nei controlli però potrebbe essere controproducente, infatti avere un eccesso di politiche di controllo su un dispositivo che non ha abbastanza capacità prestazionale può portare a colli di bottiglia. Tipicamente un router o uno switch di livello 3 mettono a disposizione dei meccanismi di controllo che però sono stateless e sono limitati al controllo di indirizzi IP e porte TCP/UDP. Man mano che i controlli diventano sempre più complessi, si verifica un certo aggravio prestazionale a carico della CPU nell’attività di forwarding, quindi, questi controlli andrebbero effettuati soltanto se il dispositivo scelto implementa questi controlli in hardware. Intervenire sul router è comodo perché partiziona i domini di sicurezza in maniera naturale. Il meccanismo principale di protezione è basato su ACL statiche ed ha il vantaggio di garantire

buone prestazioni e trasparenza a basso costo. Al contrario molti protocolli non sono gestibili e non viene effettuato nessun controllo sui dati (payload) e lo stato delle sessioni. 2) Firewall È il principale componente passivo di difesa perimetrale. Per passivo si intende che esso non ha una reazione proattiva nei confronti di un attacco ma si comporta passivamente bloccando l’attacco. Svolge compiti di security enforcing con lo scopo di controllare il traffico fra due o più reti permettendo solo quello autorizzato dalla politica di sicurezza, rilevando e segnalando eventuali tentativi di violazione della politica di sicurezza. 3) Vantaggi e svantaggi firewall Il principale vantaggio del firewall è che è in grado di percepire il concetto di flusso e di sessione operando in maniera statefull. Un altro vantaggio consiste nel fatto che un firewall può centralizzare le politiche di sicurezza e può ispezionare il traffico fino al livello di applicazione. La centralizzazione delle politiche di sicurezza potrebbe però portare al problema del single-point-of-failure. Infine è dotato di un sistema specializzato in grado di ottimizzare le operazioni di filtraggio del traffico tramite HW opportuno. Un firewall utilizza protocolli artificiosi e complessi, quindi il principale svantaggio è in ambito prestazionale. Un altro problema è come un utente percepisce il firewall stesso, infatti se le politiche applicate sono eccessive, l’utente potrebbe percepirle come una violazione della privacy. Un altro possibile svantaggio è la complessità insita nella configurazione di un firewall, infine, nel caso di firewall che devono controllare un throughput di molti gigabit, si ha a che fare con apparati molto costosi. 4) Funzionalità firewall Il firewall è un dispositivo di rete con minimo due interfacce di rete, dove ogni interfaccia individua un dominio di sicurezza distinto su un segmento diverso, quindi può essere visto come un separatore di domini di sicurezza. Inoltre può implementare diverse funzionalità: può effettuare remapping indirizzi (NAT), filtrare traffico fra i diverse domini tramite regole predefinite, può mediare l’accesso a specifiche applicazioni a scopo di controllo ed ispezione (Proxy, Content filtering, Deep packet Inspection e analisi del traffico, limitazione in banda). 5) NAT su router e Firewall Quando un router implementa un NAT crea una NAT table per tenere traccia delle connessioni instaurate. Un router però è molto limitato in quanto è dotato di processori non abbastanza performanti e di capacità di memoria molto limitate. Un attacco DOS effettuato su un NAT implementato da un router andrebbe a riempire velocemente la NAT table saturando così la memoria a disposizione. In questa situazione il router opera liberandosi delle vecchie entry nella tabella per fare spazio alle nuove tramite un meccanismo di scansione. Questa scansione richiede molta CPU per essere effettuata, quindi il router passerà molto più tempo a gestire la NAT table trascurando le tradizionali operazioni di routing. Nei firewall invece questi processi sono realizzati via hardware, quindi sono molto più performanti, inoltre dispone di molta più memoria per gestire queste situazioni. 6) Tipi di Firewall Esistono due tipi di firewall: • firewall hardware: è un componente passivo che opera una difesa perimetrale basandosi su specifici dispositivi di inspection e filtraggio. Il vantaggio di questa tipologia riguarda la rigidità operativa, mentre uno svantaggio riguarda la limitata flessibilità. • firewall software, invece, è un software che viene installato direttamente su hardware general purpose e offre prestazioni drasticamente inferiori rispetto ai firewall hardware. ma è estremamente flessibile e facile da configurare. 7) Modalità operative Firewall Un firewall può lavorare essenzialmente in due modalità: in modalità di livello 3 o routed, oppure in modalità di livello 2 o trasparente. Un firewall che lavora in modalità routed si presenta come un dispositivo di livello 3, segmenta reti diverse su base indirizzi IP e ha bisogno di un indirizzo IP su ogni interfaccia instradando il traffico da un netblock all’altro, effettuando gli opportuni controlli di sicurezza. Un oggetto del genere è visibile sull’intera rete poiché ha un indirizzo su ciascuna interfaccia. In un firewall che lavora in modalità trasparente invece, la segmentazione avviene su MAC address. Il firewall si comporta come un bridge e la sua presenza non è percepibile. Quando lavoriamo in modalità trasparente, router e macchine devono essere sulla stessa subnet, inoltre l’IP del firewall non deve essere configurato come un default gateway per i dispositivi connessi che a loro volta devono puntare al router che sta avanti al firewall (attraversamento trasparente). I vantaggi di un firewall trasparente sono la flessibilità e la facilità di gestione (non è necessario un reindirizzamento a livello IP e non si possono verificare problemi d’instradamento), totale invisibilità dall’esterno e maggiore robustezza. Tuttavia in questa tipologia di firewall le seguenti

funzionalità non possono essere implementate in quanto non supportate: NAT, Protocolli di routing, IP/IPv6, DHCP, Multicast, Terminazione VPN. 8) Filtraggio Il filtraggio deve essere fatto in ingresso e in uscita sull’interfaccia su cui arrivano ed escono i pacchetti. Il filtraggio in ingresso permette di caratterizzare il traffico che arriva da altri domini di sicurezza, mentre in uscita viene caratterizzato il traffico generato localmente. I parametri tipici di filtraggio possono riguardare l’header IP che contiene informazioni riguardanti il mittente, il destinatario, il protocollo utilizzato, flags, opzioni (source routing, frammentazioni), oppure l’Header TCP/UDP che contiene informazioni riguardanti la porta mittente, la porta destinataria e flags TCP. 9) Filtraggio stateless e statefull Quando si effettua il filtraggio su un router, il filtraggio è completamente stateless, ciò significa che ogni pacchetto è filtrato indipendentemente dagli altri e non si ha alcuna percezione del flusso dei pacchetti che fanno parte di una connessione. Questo tipo di filtraggio non permette di rilevare eventuali operazioni dannose, come ad esempio lo spoofing. Per queste motivazioni il filtraggio stateless è molto limitato. Lavorando, invece, in modalità statefull quando viene stabilita una connessione, se le regole di filtraggio non la bloccano, allora le informazioni relative ad essa diventano entry di una tabella di stato. I successivi pacchetti in ingresso saranno valutati in base all’appartenenza ad una delle connessioni presenti nella tabella (session filtering). Quando la connessione è conclusa, la entry nella tabella sarà cancellata, per evitare che questa si riempia completamente. Ogni decisione (permit o deny) viene presa separatamente per ciascun pacchetto, ma nel contesto di una connessione. Se è relativo a una nuova connessione, ne va verificata l’ammissibilità sulla base delle politiche di sicurezza configurate. Se viceversa è parte di una connessione esistente, la stessa va cercata nella tabella delle connessioni, aggiornandone lo stato, se necessario. 10) Politiche di filtraggio La politica di filtraggio di base è negare tutto ciò che non è consentito. Un firewall (o un router) può operare in due modalità diametralmente opposte : • Deny All: Tutto ciò che non è specificatamente permesso è negato. E’ una politica maggiormente conservativa in termini di protezione e garantisce un’elevata sicurezza, ma limita il numero di scelte disponibili all’utente. • Allow All: Tutto ciò che non è specificatamente negato è permesso. Inoltra tutto il traffico e ciascun servizio dannoso deve essere chiuso caso per caso. L’amministratore di rete ha difficoltà sempre maggiore nel garantire la sicurezza man mano che la rete cresce. 11) Filtraggio selettivo e Content Filtering Il filtraggio selettivo specializza le due policy appena viste e permette di filtrare selettivamente i servizi tendenzialmente pericolosi. Permette l’accesso ad un numero estremamente limitato di servizi erogati da hosts specifici ed eventualmente controllati. Il Content filtering è una modalità di filtraggio più sofisticata, che può essere implementata tramite firewall o proxy, che effettua il filtraggio dei contenuti considerati indesiderati, discutibili e dannosi attraverso l'ispezione delle URL. 12) Architetture AAA Per poter riconoscere un utente è necessario ricorrere alle architetture AAA (Autentication, Authorization, Accounting) che sono delle architetture che dividono il controllo degli accessi in tre fasi: Authentication, identifica l’utente in modo certo, Authorization, definisce a quali risorse l’utente ha accesso, Accounting, tiene traccia delle operazioni effettuate. 13) Model Access Control Il modello di rifermento è quello di Lampson mediante il quale si può controllare e proteggere un insieme di risorse e realizzare una politica degli accessi. Il concetto di protezione e controllo è rappresentato da una tripla M = (S,O,A) dove S è l’insieme di soggetti (entità attive ad esempio user, indirizzi IP, processi, dispositivi), O è l’insieme di oggetti (entità passive ad esempio file, interfacce da attraversare, memoria) ed A è l’insieme di regole che specificano i modi in cui i soggetti possono avere accesso agli oggetti. Il controllo quindi viene modellato tramite una matrice di controllo degli accessi (matrice di Lampson) che ha sulle righe i soggetti, sulle colonne gli oggetti e le entry sono le regole e i permessi che il soggetto può fare su un oggetto. La matrice è sparsa e gli elementi possono essere vuoti, il che la rende abbastanza inefficiente. 14) Implementazione Access Control Ci sono due possibilità per implementare l’access control: • Access control list, che sono delle liste di controllo degli accessi. • Capability lists: ogni utente ottiene un “ticket” o diritto di accesso per ogni risorsa. Devono essere gestite a livello OS e possono essere passate da un utente o processo a un altro. Il Reference monitor

controlla i ticket, quindi non occorre conoscere l’identità di un utente o processo. Questa modalità non è più implementata. 15) ACL L’insieme di tutte le ACL costituisce la politica di controllo degli accessi. Solitamente i diritti di accesso vengono associati ad un indirizzo IP (ACL standard), se volessimo però associare dei diritti ad un utente è necessario effettuare un passaggio preliminare a un sistema AAA, dove in fase di autenticazione viene costruita dinamicamente un ACL che mappa l’identità dell’utente con il proprio indirizzo IP e quindi i diritti associati all’indirizzo IP vengono associati anche all’utente. Le ACL possono essere implementate a livello di collegamento, rete, e trasporto, quindi si può effettuare un controllo su base MAC, IP o PORTA (ACL estese). Le politiche della ACL possono essere anche implementate a livello di data e orario (esempio: una organizzazione di notte decide di chiudere tutto il traffico in uscita). Una sola ACL può essere applicata a un’interfaccia in ciascuna specifica direzione (ingresso/uscita). 16) Funzionamento ACL Il funzionamento dell’ACL è il seguente: 1. Quando il pacchetto attraversa l’interfaccia, innanzitutto bisogna capire a quale livello gestire il pacchetto. Se il pacchetto risulta corrotto o ad esempio presenta una checksum sbagliata, viene cestinato in un Packet Discard Bucket. 2. Successivamente viene individuata l’interfaccia di destinazione del pacchetto tramite router table nel caso di livello 3, o MAC table nel caso di livello 2. Se tramite le table non è possibile individuare l’interfaccia di destinazione il pacchetto viene scartato. 3. Infine, viene verificato se l’interfaccia di destinazione è all’interno dell’ACL. Se non è presente il pacchetto viene fatto passare. Viceversa, viene effettuato un Test Access List Statements dove viene verificato se l’interfaccia di destinazione matcha con permit o deny. Nel primo caso il pacchetto passa, nel secondo il pacchetto viene scartato e viene inviata (opzionale) una notifica al mittente. Le ACL vengono elaborate dal router/firewall in maniera sequenziale in base all’ordine in cui sono state inserite le varie clausole. Appena un pacchetto soddisfa una delle condizioni, la valutazione si interrompe e il resto delle ACL non viene preso in considerazione. Se il pacchetto non soddisfa nessuna delle condizioni viene scartato (si considera che alla fine di un ACL non vuota ci sia implicitamente l’istruzione deny all). 17) Posizionamento ACL Le ACL vanno predisposte quanto più possibile prossime all’obiettivo da proteggere. Ciò permette di restringere le dimensioni del dominio di sicurezza in modo da incrementare l’efficacia delle politiche di filtraggio implementate e rendere la soluzione più scalabile. Una caratteristica importante delle ACL è la ricerca lunga, dove la ricerca viene effettuata finché non c’è un matching o finché la lista non è terminata. L’efficienza della ricerca dipende dall’ordine, infatti è buona norma inserire l’element di matching più frequente come il primo nella lista. 18) Iptables Le ACL possono essere implementati anche su dispositivi Linux-based tramite iptables. Iptables è usato per impostare, mantenere e ispezionare le regole di filtraggio dei pacchetti IPv4 o IPv6. È possibile definire diverse tabelle: • Filter: tabella predefinita che contiene diverse chains integrate quali: ◦ INPUT (per i pacchetti provenienti dall’esterno destinati all’host) ◦ FORWARD (per i pacchetti ricevuti dall’esterno e instradati all’esterno) ◦ OUTPUT (per i pacchetti generati localmente e diretti all’esterno) • Nat: gestisce la trasformazione dell'indirizzo (NAT) prima dell’instradamento, affinché l'indirizzo IP di destinazione sia compatibile con la tabella di routing locale. • Mangle: Modifica dell'intestazione TCP o modifica della QoS prima del routing • Raw: viene utilizzato principalmente per la configurazione di eccezioni rispetto al tracciamento delle connessioni 19) Filtraggio a livello 2 Le operazioni di filtraggio possono essere effettuate anche a livello 2. In questo caso, ovviamente, verranno create delle access list che contengono dei MAC address. In questo caso bloccare un host può risultare utile quando viene rilevata una macchina che effettua spoofing. Risulterebbe difficile effettuare questa operazione a livello 3 perché le macchine cambiano facilmente e spesso indirizzo IP, viceversa è molto più complicato cambiare l’indirizzo Mac. 20) Spoofing dell’indirizzo IP I controlli sullo spoofing degli indirizzi spetta all’amministratore di sicurezza, infatti essendo il proprietario del dominio, conosce quali sono i suoi indirizzi e quindi nell’ottica di applicare una politica anti-spoofing,

dovrebbe bloccare gli indirizzi IP uscenti dalla propria rete che non appartengono al suo intervallo di IP noti applicando una semplice ACL. Questa politica di filtraggio permette di proteggere il mondo esterno da eventuali attacchi spoofing provenienti dalla propria rete. Il modo più semplice di proteggersi dallo spoofing in ingresso è quello di scartare tutto il traffico in ingresso con indirizzi sorgente inammissibili rispetto alla provenienza (indirizzi riservati o indirizzi della rete interna che chiaramente non possono provenire dall’esterno). Per prevenire inoltre spoofing, volontari o involontari, dall’interno della propria rete verso l’esterno, analoghe misure di filtraggio vanno applicate in uscita. 21) Strategie per il controllo accessi Esistono dei template architetturali di base che ci possono dare una guida su come strutturare la rete in modo da garantire un buon controllo e un buon grado di sicurezza e si basano su concetti di tipo strategico. Privilegio minimo (least privilege) si basa sul principio del “need to know” in cui ad ogni oggetto da controllare vanno garantiti solo i privilegi necessari e sufficienti per compiere uno specifico task. Difesa in profondità (defense in depth) la strategia di base è di non dipendere da un solo meccanismo di sicurezza. Per quanto questo possa essere solido, non possiamo affidare la sicurezza di un’infrastruttura semplicemente ad un dispositivo di security enforcement (SPOF). Bisogna quindi introdurre il concetto di ridondanza attraverso un aumento dei punti di controllo, come ad esempio con l’introduzione di più firewall o più router, creando diversi livelli di protezione. Se un livello viene compromesso, i rimanenti continueranno a garantire la protezione dell’asset interessato, inoltre questa stratificazione crea una catena di molteplici punti di difesa che si coordinano per prevenire gli attacchi. Punto di strozzatura (choke point) dove la logica è quella di forzare gli attaccanti ad utilizzare uno specifico canale di accesso sufficientemente facile da controllare, allo scopo di minimizzare la superficie di attacco, portandola ad un solo punto di controllo. Utilizzare questa strategia ha sicuramente dei vantaggi di tipo gestionale, perché si ha un solo punto di controllo su cui focalizzarsi, ma lo svantaggio è che se il choke point si guasta allora l’infrastruttura è completamente compromessa. L’anello più debole (weakest link) dove la logica è che in presenza di multipli punti di security enforcement che lavorano in logica annidata bisogna ricordarsi che “la catena è forte quanto il suo anello più debole”, per cui assume notevole importanza l’individuazione ed il rafforzamento dell’anello più debole della catena. 22) SPOF I SPOF sono gli anelli deboli della catena della sicurezza e possono portare a gravi compromissioni o interruzioni di servizio. È quindi necessario identificare tutti i single point of failure e ridondarli se la sua funzione è critica in modo che la politica di sicurezza non si basi su un singolo elemento. La ridondanza può essere implementata tramite protocolli FHRP (First Hop Redundancy Protocols). I FHRP forniscono funzionalità di gateway predefinita ridondante trasparente per gli host finali basati sull’assegnazione di un indirizzo IP virtuale e di un corrispondente indirizzo MAC virtuale. Azioni come il failover (interruzione anomala) e il bilanciamento del carico rimangono completamente trasparenti per gli host. 23) Architetture per il controllo accessi I modelli di architettura per il controllo degli accessi che si dividono in due grandi categorie categorie: • Gli schemi single-box, basati sulla strategia del choke point. Questi schemi prevedono due architetture: dual-homed host e screening router. • Gli schemi multi-box, basati sulla strategia di difesa in profondità. Questi schemi prevedono due architetture: screened host e screened subnet. 24) Dual-homed host È realizzata attraverso una macchina dotata di due schede di rete che si collegano a segmenti di rete differenti. La comunicazione tra dominio interno e dominio esterno avviene solo ed esclusivamente attraverso la mediazione di questo host dual-homed. Questo aspetto garantisce un livello di controllo estremamente alto, che però si ripercuote in maniera non banale dal punto di vista prestazionale. Un’altra caratteristica importante è che la comunicazione tra rete interna e rete esterna può essere controllata a pieno, anche se diventa difficile fare in modo che utenti che sono su due domini distinti possano cooperare, a meno che non venga utilizzata un’applicazione comune messa sul dual-homed host stesso. Per fornire i servizi desiderati all’interno è necessario permettere agli utenti di collegarsi alla macchina, che è altamente sconsigliato per motivi di sicurezza o far ricorso al proxying che non è sempre possibile. Inoltre, se si vogliono fornire dei servizi all’esterno devono girare localmente sul dual homed host. Non essendoci un contatto diretto tra due domini di rete differenti, è necessaria la presenza di un proxy che è presente su entrambi i domini e fa da mediation device, Il proxy ha vantaggi non banali, infatti ci permette di loggare molto efficientemente le transazioni che passano. Il proxy, però, introduce un delay non banale e dà una visione pressappochista della sicurezza, in quanto un server che opera in modalità proxy non è in grado di proteggere il dominio di sicurezza interna da eventuali debolezze presenti a livello protocollare.

25) Screening router È possibile utilizzare un router oppure un firewall che fa da screening al posto dell’host. Questa soluzione, anche se è del tipo single box, ci garantisce l’instradamento di pacchetti da una rete all’altra. Questo tipo di soluzione è quella più economica e comune possibile ed è utile adoperarla quando la rete da proteggere ha già un buon grado di sicurezza. Uno dei maggiori problemi è che in architetture di questo tipo abbiamo un solo oggetto su cui realizzare i controlli (choke point), quindi una volta che lo screening firewall o router viene compromesso, la sicurezza di tutto il dominio è messa in pericolo. 26) Screened host L’architettura screened host si colloca in posizione intermedia tra lo screening router e il dual-homed host. In questa architettura lo screening router permette agli host esterni ed interni di comunicare solo con uno specifico host della rete interna che è reso particolarmente sicuro tale da poter essere esposto chiamato bastion host. Tutto l’enforcement delle politiche di sicurezza è affidato alla combinazione efficiente di bastion host e di screening router. Il ruolo del bastion host è strategico, infatti esso è l’unico nodo della rete interna in grado di fare traffico verso la rete esterna e ricevere traffico dalla rete esterna. Gli host interni vedono la rete esterna solo attraverso i servizi proxy offerti dal bastion host. In questo tipo di architettura abbiamo due single point of failure, che sarebbero entrambi i security enforcement devices. L’architettura Screened Host diventa appropriata quando le macchine interne sono sicure e le connessioni dall’esterno che devono interessare il bastion host sono poche. Un’architettura screened host, in termini di vulnerabilità, presenta degli elementi critici, il più critico dei quali è il bastion host perché diventa la macchina più vulnerabile ed esposta ad attacchi. Il problema principale di questa architettura è che in architetture di questo tipo fra il bastion host e la rete interna non ci sono difese, quindi se si riesce ad attaccare il bastion host si riesce ad entrare nelle rete interna, rendendo necessario aumentare i punti di controllo e filtraggio. 27) Screened Subnet Aggiunge un livello extra di sicurezza all’architettura screened host creando una rete perimetrale che avrà la funzione di isolare il dominio inside dal dominio outside e può essere considerata come una specie di DMZ. Questo tipo di architettura risolve completamente i problemi legati al fatto che possa essere compromesso o il bastion host o lo screening router esterno. Si hanno, dunque, due screening router, uno situato tra la rete perimetrale e la rete interna, mentre l’altro è situato tra la rete perimetrale e la rete esterna (per compromettere il dominio vanno compromessi entrambi i router). Questo modello architetturale può essere specializzato, potrei avere più reti interne dove ognuna di queste avrà uno screening router indipendente che la protegge isolandole dall’esterno e che le fa affacciare a una rete perimetrale unica che funge da dorsale. Le cose si complicano a livello di configurazione perché abbiamo due punti di enforcement delle politiche di sicurezza. 28) Network Access Control (NAC) È un approccio che tende ad un unificare, su un’unica piattaforma di controllo accessi, tecnologie di sicurezza operanti a livello di endpoin, meccanismi di autenticazione a livello utente o sistema e meccanismi tradizionali per il controllo della sicurezza della rete. L’obiettivo è quello di controllare la sicurezza degli endpoint facendo in modo che sulla rete ci siano solamente le macchine che sono compatibili con la politica di sicurezza prestabilita, in modo tale che gli endpoint siano sufficientemente sicuri da essere proiettati in una rete. I dispositivi che non sono conformi ai criteri di sicurezza stabiliti dall’amministratore vengono rilevati dalla rete in varie fasi e non vengono ammessi al suo interno. Tipicamente vengono messi in una situazione di quarantena, in modo tale da non avere accesso alla rete o avere accesso ad una parte ristretta della rete per rimediare a queste vulnerabilità rilevate ad esempio scaricando ed applicando aggiornamenti. Tutte le macchine che non rispettano le politiche di sicurezza stabilite rappresentano una minaccia e diventano un fattore di rischio per la rete che va eliminato. Un NAC permette efficientemente di mitigare gli attacchi noti riconoscendoli, ma per attacchi zero-day questo concetto non vale poichè si trattano di minaccia sconosciute ed il NAC non è in grado di riconoscerli. 29) Modalità operative NAC Un NAC può operare in logica pre-ammissione e post-ammissione. Nel caso della pre-ammissione i dispositivi prima di avere l’accesso completo alla rete vengono ispezionati e solo se consentito vengono autorizzati ad accedere alla rete. Viceversa, in logica post-ammissione, vengono prese delle decisioni sulla base delle azioni dell’utente portando il NAC a decidere se bloccarne l’accesso alla rete e/o inserirlo in quarantena. La macchina, infatti, potrebbe essere completamente configurata in maniera ottimale per quanto riguarda le politiche di sicurezza, ma l’uso che se ne fa è scorretto oppure la macchina inizialmente è pulita e successivamente viene infettata.

30) Acquisizione informazioni sugli endpoint La raccolta di informazioni può essere fatta in maniera collaborativa (agent-based) o non collaborativa (agentless). In maniera collaborativa la macchina, volontariamente, per poter accedere alla rete installa un agente di controllo che analizza il suo stato e riporta le informazioni al NAC controller, sulla base di queste informazioni il NAC prende le opportune decisioni. Possono esserci dei casi in cui la macchina non è collaborativa, cioè essa non vuole o non può installare il proprio agent (come dispositivi caratterizzati da un firmware poco flessibile). In questo caso vengono utilizzate delle tecniche esterne di scansione e network inventory management per mutuare da remoto le caratteristiche di sicurezza del dispositivo. 31) Operatività Inline e Offline Inline significa che abbiamo un singolo dispositivo NAC che è in grado di effettuare l’enforcing delle politiche di controllo degli accessi. Viceversa, nella modalità di lavoro offline gli agent che abbiamo sui dispositivi riportano le informazioni ad una console di management e controllo del NAC, che a sua volta si interfaccia con gli switch ed i firewall pilotando l’enforcement delle politiche. 32) Remediation Quando ci si accorge che una macchina non è adeguata a poter acceder alla rete possiamo decidere due strategie diverse di remediation: la prima è di inserire la macchina in quarantena oppure dare l’accesso alla macchina subordinato all’utilizzo di un captive portals. Nel caso in cui si ricorre al meccanismo della quarantena viene consentito di accedere ad una rete ad accesso limitato che gli permette di accedere solo ad alcuni servizi. L’altra opzione è quella di restringere l’accesso alla rete subordinato ad un captive portal, che potrebbe restringere l’utente a una pagina Web di accesso dove lo stesso dovrà procedere all’autenticazione prima di ottenere l'accesso completo. 33) Funzionamento NAC Un NAC è costituito da un punto di enforcement delle politiche di sicurezza, che può essere un NAC controller e da un punto decisionale che si può agganciare ad una base dati di autenticazione e che provvede al riconoscimento degli utenti. Appena una macchina decide di fare accesso alla rete, tale accesso viene inizialmente bloccato e parte una procedura di singe-sign-on oppure un web-login in cui il NAC provvede a verificare il dispositivo e le credenziali utente. Dopo queste verifiche, se la macchina non è conforme oppure l’utente non è stato riconosciuto (l’autenticazione avviene tramite Architetture AAA) si verifica una negazione dell’accesso ed un eventuale inserimento in quarantena. Viceversa, se il dispositivo è conforme allora viene inserito in una lista dei dispositivi certificati e da questo momento in poi l’accesso viene regolarmente consentito. 34) Componenti NAC I componenti di base di un’architettura NAC sono tre: la componente che richiede l’accesso Access Requestors, i dispositivi che effettuano l’enforcement delle politiche di controllo degli accessi Policy Enforcement Point e che attuano le politiche sulla base delle decisioni che vengono prese dal Policy Decision Point. Un access requestors deve essere composto da almento tre componenti: Posture Collectors (PCS), che corrisponde all’agent che raccoglie informazioni sullo stato della sicurezza della macchina, il Client Broker (CB), che prende le varie informazione che i vari PCS ricavano e le trasmette al Network Access Requestor, e il Network Access Requestor (NAR) che ha la funzione di connettere i clients alla rete, di gestire l’autenticazione a livello utente. Nel caso in cui si lavora in modalità agentless i posture collectors possono essere componenti esterne che non sono situate sulle macchine, ma potrebbero essere localizzate, ad esempio, sulla console del NAC. Il posture agent (PA) funge da unico punto di contatto sull'host per aggregare le credenziali da tutti i plug-in di controllo e comunicare con la rete. Il policy enforcement points (PEP) comprende vari Network Enforcement Point che garantiscono e controllano l’accesso alla rete. Il policy decision points (PDP) è composto da: multipli Posture Validator, che ricevono le informazioni dai corrispondenti posture collector e le validano rispetto alle policy da applicare, Broker (Server Broker), che raccoglie e consolida tutte le informazioni ricevute dai posture validators per poter determinare le decisioni di accesso ed invia tali decisioni al Network Access Authority, Network Access Authority (NAA) che valida le informazioni di autenticazione e di posture e passa il risultato di tali decisioni al PEP, che sarà quello che fisicamente non consentirà o consentirà al dispositivo di accedere alla rete. 35) Meccanismo NAC 1. I PCS raccolgono informazioni sullo stato della sicurezza dell'endpoint. 2. Il CB consolida i dati dell'endpoint ricevuti dai PCS e li passa al NAR. 3. Il NAR ottenuti tali dati di valutazione della sicurezza li invia al PEP. 4. Il PEP riceve tali dati e li invia al PDP. 5. La NAA riceve i dati dal AR tramite il PEP. Se è coinvolta l'autenticazione, la NAA verifica su un DB di autenticazione se l'utente ha credenziali valide. 6. Ogni PVS controlla le informazioni dal corrispondente PCS e trasmette il verdetto al SB. 7. Il SB consolida l'input del PVS in un'unica policy response. 8. La NAA invia la risposta e le istruzioni corrispondenti al PEP.

1) Limiti Firewall tradizionali Con l’evoluzione delle reti e soprattutto con il diffondersi della connettività mobile, stanno cambiando i concetti di domini di sicurezza, di perimetri di difesa e di superfici di attacco. In particolare il perimetro di sicurezza sta diventando sempre più poroso/fluido e quindi viene meno il concetto di logica di demarcazione. Questo aspetto ha conseguenze devastanti sulla gestione della sicurezza delle reti, perché la superficie di attacco diventa infinita e diventa sempre più complicato creare delle barriere perimetrali. Da questo scenario vengono fuori tutte le debolezze di un tradizionale firewall. Un firewall tradizionale infatti non protegge da attacchi interni, non protegge da virus e trojan, da attacchi nuovi, da connessioni che non lo attraversano, da cattive o inesistenti policy, da attacchi fisici per cui non può fungere da unico punto di difesa. Sparisce, quindi, il concetto di “modello fortezza” fondato su screening firewall posti sul bordo esterno della rete e le ACL diventano poco flessibili per definire le politiche di sicurezza. 2) Nuovo approccio per garantire la sicurezza Per garantire la sicurezza è necessario orientare la sicurezza verso un approccio olistico e collaborativo. I problemi quindi non verranno gestiti dalle singole componenti, ma in modo condiviso attraverso la cooperazione di tutti i componenti che ne fanno parte. Un sistema di sicurezza di questo tipo deve avere le seguenti proprietà: consapevolezza dei rischi e delle minacce, integrazione fra i sistemi di sicurezza, condivisione delle informazioni per migliorare la visione e cooperazione per permettere un’azione coordinata più efficace. Quindi il nostro ecosistema di protezione deve comprendere: Firewall tradizionali, Intrusion Detection/Prevention, Content Filtering e Web Reputation (tramite il blocco accesso a URL dannosi o contenuti non consentiti) , Integrity Monitoring (per l’individuazione in tempo reale di cambiamenti sospetti), Log Inspection (per permettere l’automazione dell’analisi dei Log e la generazione degli alert), Antimalware (per la protezione in tempo reale dei dispositivi), Application Control (per la gestione e il controllo delle applicazioni). 3) Next Generation Firewall Un next-generation firewall conserva tutte le caratteristiche di un firewall tradizionale integrandole con quelle di intrusion detection, inoltre è in grado di applicare delle policy più sofisticate che devono riconoscere i protocolli tramite deep packet inspection e riconoscere la semantica di determinati attacchi. Garantisce una visibilità full stack, cioè mentre un firewall tradizionale si ferma al livello di trasporto, i nuovi arrivano fino al livello di applicazione ed oltre. Un firewall di nuova generazione deve anche integrarsi con sistemi di monitoraggio esterni, con sistemi di autenticazione utenti, e con sistemi che siano in grado di monitorare il traffico ed individuare eventuali minacce. 4) Funzionalità Next Generation Firewall Tra le funzionalità fondamentali troviamo l’individuazione delle risorse più a rischio, la reazione tempestiva agli attacchi grazie all’automazione intelligente della sicurezza, la rilevazione efficace delle attività evasive o sospette tramite la correlazione degli eventi, protezione della rete in tutte le fasi dell’attacco, blocco delle minacce in tempo reale, creazione di un perimetro logico proteggendo uniformemente tutti gli utenti, identificazione delle applicazioni e degli utenti. 5) Classificazione del traffico L’elemento caratterizzante dei firewall di nuova generazione è quella di classificare il traffico per poter riconoscere a livello protocollare specifiche applicazioni. L’obiettivo principale della classificazione è quello di individuare e riconoscere i vari flows nella rete a scopo di implementare politiche di filtraggio o Quality of Service. Il Cisco NBAR (Network Based Application Recognition) è un motore di classificazione del traffico e permette di analizzare in tempo reale, tramite deep packet inspection e payload analysis, il traffico che fluisce lungo la rete in modo da poter riconoscere i protocolli che transitano. 6) Intrusion Detection/Prevention Sono strumenti di rilevazione automatica delle intrusioni. Gli Intrusion detection si occupano di identificare e segnalare un attività di intrusione mentre l’Intrusion prevention estendono i meccanismi di detection attraverso funzioni di controllo accessi avanzato per proteggere i target in tempo reale. I sistemi di intrusion detection, solitamente, lavorano offline (non è attraversato da traffico, ma lavora in logica sniffer). Attraverso un punto di intercettazione ricevono il flusso di traffico e sulla base di ciò che ricevono, possono individuare degli eventi per poi generare degli alert. Un IDS, quindi, ha bisogno di una singola interfaccia che lavora in promiscous mode. Inoltre non rallenta il traffico di rete e consente comunque il transito e l’attività del traffico dannoso. Un IPS si basa sulla tecnologia di un IDS per eseguire l’attività di rilevamento, ma in più è in grado di affrontare immediatamente la minaccia, in quanto il traffico deve attraversarlo (opera in modalità inline). Il monitoraggio del traffico viene effettuato partendo dal livello di data link fino a livello di applicazione, inoltre esso è in grado anche di impedire ai pacchetti di raggiungere un sistema target (cosa che un IDS non può fare).

7) Vantaggi e Svantaggi IDS/IPS Un IDS non ha nessun impatto sulla rete in termini di prestazioni e in caso di guasto del sensore, ma le reazioni non possono bloccare i pacchetti ostili ed è vulnerabile a tecniche di network evasion. Un IPS blocca i pacchetti di attacco, ma ha qualche impatto sulle prestazioni di rete ed eventuali guasti o sovraccarichi all’IPS influiscono sulla funzionalità della rete. 8) Componenti architetturali IDS/IPS I componenti architetturali sono: motore di packet inspection, audit data processor, knowledge base, motore decisionale, sistemi di alarm generation e response management. Si parte da un motore di packet inspection che, mediante una tecnica di packet capture, estrae i record di audit. L’audit data processor estrae le caratteristiche che vengono date in input al motore di detection che le matcha con i modelli che conosce. Sulla base di questi matching vengono fuori degli allarmi che si traducono in opportune azioni o opportuni report di allarme. Le caratteristiche delle componenti architetturali sono gli elementi descrittivi del traffico che permettono di capire come esso si comporta e possono essere: la lunghezza dei pacchetti, i tempi di interarrivo, e le rate di invio. 9) Approcci IDS/IPS I due possibili approcci, che caratterizzano le implementazioni di sistemi di intrusion detection e prevention, sono quelli basati su: • Misuse detection system, che usano pattern di attacchi ben conosciuti o di punti deboli del sistema per identificare le intrusioni • Anomaly detection system, che opera sulla base di variazioni statistiche delle caratteristiche matchate. 10) Approccio Misuse Detection L’approccio misuse detection è basato sulla costruzione di un database di conoscenza detto signature DB che viene utilizzato dal detection engine che farà pattern matching sequenziali sulla base della sua conoscenza. Il vantaggio è che sono molto accurati, ma lo svantaggio è che queste soluzioni non sono in grado di riconoscere attacchi zero-day. Ogni signature è caratterizzata da almeno tre attributi distinti: il tipo, il trigger (allarme) ed una eventuale action. Per quanto riguarda il tipo, le signature possono appartenere a due categorie: le signature atomiche, rilevabili analizzando un singolo pacchetto, e le signature composte definite anche come signature stateful, identificano, su un periodo di tempo, una sequenza più complessa di operazioni distribuite su più host. Il periodo di tempo è un parametro significativo noto come orizzonte degli eventi, cioè la durata dell’intervallo di tempo in cui va conservato lo stato del flusso della connessione per poter effettuare il matching della specifica signature. L’orizzonte degli eventi viene configurato in maniera specifica per ogni signature e non deve essere di dimensioni troppo ampie, perché un IDS o un IPS non può conservare informazioni di stato indefinitamente. I trigger, invece sono gli allarmi generati quando si verifica il match di una signature. Le action sono le azioni di risposta. Man mano che vengono identificate nuove minacce, è necessario creare e caricare nuove signatures nella base di conoscenza di un IDS/IPS. Alle signature è possibile associare degli specifici livelli di allarme, che sono relativi a livello di severità individuato (Basso, Medio, Alto, Informativo). Quando vengono utilizzate signature basate sul matching esatto di pattern specifici, si è in grado di individuare attacchi con un comportamento codificato da tali signature, cioè estremamente regolare. 11) Approccio anomaly based In presenza di attacchi di tipo polimorfo, si potrebbero avere comportamenti che non si è in grado di riconoscere. La soluzione a questo sono gli approcci anomaly based. Gli approcci anomaly based, a differenza degli approcci misuse detection, non necessitano di un database di conoscenza costituito da un insieme di signature, ma si comportano in maniera totalmente adattativa, cioè sono in grado di riconoscere eventuali fenomeni e, di conseguenza, generare degli opportuni modelli. Il motore in questo caso utilizza una cosiddetta logica di outlayer detection, ovvero, è in grado di riconoscere anche attacchi zero-day in forma di variazioni rispetto ad un modello di normalità precedentemente noto. Un altro aspetto interessante è che garantiscono la situational-awareness, cioè una reattività basata sul singolo scenario che vanno a trattare. Il sistema è, quindi, in grado di imparare rispetto allo specifico fenomeno che sta osservando ed è in grado di costruire conoscenza su di esso. 12) Categorie approcci anomaly based Gli approcci anomaly based si dividono in due categorie: • Specification based che definisce un profilo che descrive un comportamento di “normalità” del fenomeno in osservazione, va quindi a rilevare le possibili deviazioni rispetto ad esso. Questo tipo di approccio non è detto che sia sempre preciso: potrebbe avere un significativo numero di falsi positivi

e potrebbero essere riconosciuti come eventi anomali delle attività normali non ancora note al modello, inoltre, potrebbero verificarsi dei guasti fisici interpretati dal sistema come eventi anomali. • Behaviour based devono essere in grado di adeguare il modello di comportamento del traffico “normale” al processo di evoluzione della rete in osservazione, ricostruendo il profilo comportamentale e ridefinendo la stessa definizione di “normalità” del sistema e di anomalia. 13) Implementazioni IDS/IPS Le implementazioni si distinguono per essere basate su un approccio orientato all’analisi del traffico di rete (network based) o all’analisi dell’attività dei singoli processi sulle singole macchine coinvolte (host based). Le implementazioni host-based effettuano il monitoraggio a livello di sistema operativo per riconoscere delle specifiche attività ostili di intrusione generate. Questi sistemi richiedono informazioni molto accurate per poter fare una detection efficace, inoltre incorrono in alcune problematiche come la forte dipendenza dall’intervento umano e la possibilità di modificare l’IDS (al fine di truccare i log) se la macchina viene violata. La visione degli attacchi è esclusivamente locale. Le implementazioni network-based analizzano il traffico di rete per identificare intrusioni, permettendo quindi di monitorare non solo un singolo host ma una rete completa. Queste implementazioni sono basate su punti di osservazione multipli, localizzati in punti strategici della rete. Questi sistemi sono in grado di fare deep packet inspection sul traffico di rete e sono in grado di riconoscere tracce di attacchi generando eventuali allarmi in presenza di intrusioni/violazioni. 14) Sandbox È un sistema che mette a disposizione un ambiente virtuale isolato per l’identificazione dinamica di malware. Il potenziale malware viene catturato ed eseguito su una VM isolata nel sistema di sandboxing. Successivamente la VM viene analizzata attraverso scansioni. Per capire se ciò che è stato catturato è realmente un malware, vengono esaminati tramite tecniche di ML memoria, chiamate di sistema, connessioni di rete e accessi al file system. Il sandbox funziona nel seguente modo: Il FW comunica con il sistema di sadboxing. Quando il FW individua una possibile minaccia, questa viene bloccata e mandata al sistema di sandboxing. Il sistema lancia il possibile malware in un ambiente isolato e ne analizza i comportamenti. Se non vengono rilevati malware allora ciò che è stato bloccato viene fatto passare dal FW. Nel caso invece fosse rilevato un malware, rimane nello stato di blocco e il sistema di sandboxing invia un report ad un malware analyst. 15) Sistemi di Log Management È un sistema di raccolta remoto dei log da sistemi multipli. Permette di notare eventuali comportamenti insoliti che potrebbero rivelarsi potenziali pericoli ed effettua l’analisi dei problemi emersi nel sistema. Il sistema evita la perdita dei log anche a seguito di guasti hardware o software o di risalire alle criticità che hanno generato l’evento. 16) SIEM ( Security information and event management) È un'evoluzione più sofisticata dei sistemi di Log Management. È un sistema che combina le funzioni di Security Information Management (SIM) e Security Event Management (SEM). SEM gestisce il monitoraggio Realtime, la correlazione di eventi e il threat intelligence e visualizzazione dei dati. SIM invece tratta la raccolta e la memorizzazione a lungo termine dei logs eventi ed effettua l'analisi e il reporting dei dati di logging. L'attivita di un SIEM è articolata in 5 fasi consecutive: • Prima fase - Raccolta e aggregazione dei dati di logging. • Seconda fase - Correlazione degli eventi. In questa fase vengono collegati e correlati gli eventi per identificare gli attacchi. • Terza fase – Generazione alert e tracciamento incidenti. Una volta identificato un problema, in questa fase viene prima individuato la gravità del problema (severity) e successivamente l’alert viene notificato agli amministratori di sicurezza (SOC). • Quarta fase – Generazione Security e Compliance Reports. Questa fase permette di monitorare graficamente la situazione del sistema, aiutando l’amministratore del sistema nella scelta di soluzioni per risolvere eventuali minacce. • Quinta fase – Archiviazione logs per forensics analysis. I dati vengono raccolti per future indagini forensi. Possono essere solo conservati i dati relativi a problemi di sicurezza. L’archiviazione consente la conservazione di legge e facilita l’analisi e la ricostruzione della timeline degli eventi

a) Attacchi attivi e passivi Gli attacchi attivi sono degli attacchi percepibili e rilevabili tramite attività di sniffing o IDS. Si suddividono a sua volta in benigni e maligni. I primi riguardano delle attività di scansione del target per acquisire informazioni circa la struttura della rete, le macchine presenti e i servizi offerti. I maligni invece riguardano sono orientati a creare dei danni ad una potenziale vittima. Gli attacchi passivi invece mirano ad intercettare una comunicazione tra due host ed è caratterizzato da una terza figura chiamata man-in-the-middle. Durante l’intercettazione non viene alterato il contenuto dei pacchetti, ma ne viene solo compromessa la privacy. b) Network Scanning È la prima fase di un attacco e consiste nello scansionare la rete in modo da avere una mappatura delle macchine presenti. Una volta individuate le macchine viene effettuato un vulnerability scan per scoprire eventuali debolezze. Lo scanning può essere passivo o attivo. Il primo si basa sull’analisi del traffico tramite sniffing, mentre quello attivo utilizza strumenti attivi per sondare indirizzi IP e porte. c) UDP e ICMP Network Mapping UDP Network Mapping sfrutta il fatto che l’invio di pacchetti UDP sulla porta 6 di qualsiasi macchina genera una risposta a ritroso. Analogamente l’ICMP Network Mapping sfrutta il fatto che le macchine sono abilitate di default a rispondere a dei ping, a meno che la risposta non sia bloccata da un firewall. I messaggi a ritroso permettono all’attaccante di costruire una mappatura della rete. d) ICMP traceroute Network Mapping Sfruttando il meccanismo su cui si basa il traceroute è possibile effettuare una scansione della rete, in particolare utilizzando i messaggi ICMP “destinazione non raggiungibile” o “tempo scaduto” non solo si riesce ad ottenere una mappatura degli host nella rete, ma si riescono a percepire anche i router anteposti alle macchine, andando a ricostruire tutta l’infrastruttura di rete. Questo attacco è facilmente percepibile rilevando una grande quantità di pacchetti UDP mandati su porte effimere. Effettuando un deep packet inspection è possibile notare che questi pacchetti vengono inviati alla stessa destinazione con TTL che variano continuamente. Inoltre se l’attacco ha successo inizieranno ad arrivare a ritroso i messaggi ICMP “tempo scaduto”. e) TCP Stealth Network Mapping È una tecnica che sfrutta il comportamento del protocollo TCP che è meno evidente rispetto ai precedenti. Per bypassare la clausola ESTABLISHED l’attaccante potrebbe agire in questo modo: invia un pacchetto SYN all’host vittima che risponderà con un pacchetto SIN+ACK a ritroso. L’attaccante non invierà l’ACK del SYN+ACK e la connessione viene chiusa. L’attaccante potrebbe agire anche in un altro modo: invece di inviare un pacchetto SYN invia direttamente alla vittima un pacchetto SYN+ACK effettuando un three-way handshake malformato. In questa condizione il protocollo prevede che l’host vittima risponda con un pacchetto RST. Questa tecnica può essere rilevata con un IDS che riesce a rilevare gli ACK fuori sequenza. f) Port Scanning È una tecnica che permette di capire quali sono i servizi offerti da un host in rete tramite la scansione delle porte, individuando eventuali debolezze. Il risultato della scansione può essere: accepted (vi è un servizio attivo su quella porta), denied (le connessioni su quella porta sono rifiutate) o bloccata/filtrata (non c’è stata nessuna risposta dall’host e quindi è probabile la presenza di un firewall o un ostacolo di rete che blocca l’accesso alla porta. g) UDP port scanning Questa tecnica sfrutta il fatto che le porte che non hanno nessun servizio attivo rispondono alle richieste con un messaggio di errore ICMP “porta non raggiungibile”. Se non si riceve alcuna risposta è plausibile che sulla porta ci sia un servizio in ascolto e che la risposta sia bloccata ad esempio da un firewall. h) TCP port scanning Aprendo una connessione mediante un three-way handshake è possibile effettuare una scansione per rilevare i servizi offerti a livello TCP. Se vi è una porta aperta all’invio di un pacchetto SYN la macchina risponderà con un pacchetto SYN+ACK. In questo caso l’attaccante invia l’ACK del SYN+ACK, completando la connessione che successivamente viene subito chiusa. Quando una connessione viene stabilita viene generato un file di log, quindi vengono lasciate delle tracce che sono facilmente individuabili da sistemi IDS. Se invece su quella porta non vi è alcun servizio la macchina risponde con un pacchetto RST. Per evitare che la sessione venga loggata l’attaccante cercherà di abortire la connessione prima che venga instaurata. In questo caso l’attaccante invece di inviare l’ACK del pacchetto SYN+ACK invierà un pacchetto RST che chiuderà la connessione. Per bloccare queste scansioni basta un’ACL con la clausola ESTABLISHED.

i) Non SYN-ACK-RST scannings Sono degli scannings che si basano sull’invio di pacchetti fuori sequenza che non prevedono l’utilizzo dei flag TCP SYN, ACK e RST in modo da bypassare filtri con la clausola ESTABLISHED. Tra i vari tipi abbiamo: • FIN scan: vengono inviati dei pacchetti FIN direttamente su una porta. Se la porta è aperta il pacchetto viene ignorato, altrimenti se è chiusa si riceve un RST • Xmas Tree: prevede l’invio di un pacchetto con i flag URG, FIN e PUSH attivati alla porta target. Il target risponde con RST per tutte le porte chiuse • NULL scan: vengono inviati pacchetti con tutti i flag disattivati. Il target risponde con RST per tutte le porte chiuse. Queste scansioni sono rilevabili tramite filtri TCPdump individuando le posizioni dei flag TCP. l) TCP Decoy scan La reale provenienza della scansione viene mascherata attraverso l’invio di un’enorme numero di altri pacchetti di scansione inviati da indirizzi spoofati. Il target risponderà a tutti non avendo nessun modo per rilevare l’origine. m) NMAP È un software che implementa tutte le tecniche di scansione conosciute. Ha le seguenti caratteristiche: host discovery, port scanning, version detection dei servizi per individuare debolezze, OS detection (fingerprinting). 1) Cos’è un DoS? Un DoS è un attacco attivo maligno che ha lo scopo di sospendere temporaneamente o indefinitivamente i servizi offerti da un host o di un’infrastruttura in rete. Un DoS è scalabile in ottica distribuita, in questo caso parleremo di DDoS dove l’attacco viene effettuato coordinando più sorgenti di attacco situati in posizioni geografiche differenti verso una macchina vittima. 2) Quali sono i requisiti per effettuare un DoS? Un attaccante deve avere, rispetto al target, maggiore potenza di calcolo e larghezza di banda, controllare un gran numero di computer e gestirli come gruppo unico, sfruttare una proprietà del sistema operativo o delle applicazioni sul sistema vittima, o di una rete terza parte che consente a un attacco di consumare molte più risorse della vittima rispetto all'attaccante. 3) Quali sono le fasi di un DDoS? 1. Scansione di decine di migliaia di hosts per l’individuazione di vulnerabilità note 2. Exploit delle vulnerabilità a scopo di compromissione degli host conquistandone l’accesso 3. Installazione dei tools per la realizzazione del DDoS 4. Sfruttamento degli hosts conquistati come base di partenza per ulteriori scansioni e compromissioni 5. Una volta installati i DDoS tools su un numero sufficiente di hosts si procede all’avvio dell’attacco attivando handlers e agents a partire da un client remoto 4) Suddivisione DDoS I DDoS vengono suddivisi un due grandi tipologie: Bandwith Saturation e Resource Starvation. I Bandwith Saturation hanno lo scopo di saturare la banda di rete della vittima negandone le risorse principali. In questa categoria rientrano i Flood Attack e gli Amplification Attack. I primi consistono nell’invio spropositato di pacchetti UDP o ICMP verso l’host vittima in modo da saturarne le risorse e possono essere diretti (il flusso viene generato direttamente verso la vittima) o riflessi (Reflection Attack) dove l’attaccante sfrutto un host vittima terzo per perpetrare l’attacco. Gli Amplification Attack invece amplificano la potenza dell’attacco sfruttando delle configurazioni errate degli elementi della rete. In questa categoria rientrano i Broadcast Amplification Attack e i DNS Amplification Attack. Gli attacchi Resource Starvation invece si basano sul generare flussi di dimensioni limitate che non sono facilmente percepibili da un sistema automatico di rilevamento. Questi flussi sono realizzati in maniera tale da saturare la capacità delle risorse di un server in modo tale da sfruttare delle vulnerabilità di livello protocollare o generare pacchetti malformati da mandare poi al sistema target. 5) Strategie di mitigazione statica Bandwith Saturation Per mitigare in maniera statica questo attacco possono essere utilizzati Firewall, router e sistemi IDS/IPS. Questi devono essere utilizzati dall’infrastruttura che offre i servizi al target. Una strategia di mitigazione statica permette di contrastare l’attacco utilizzando policy fissate staticamente (ACL). Per attacchi di capacità limitata può essere utile utilizzare un firewall tradizionale. Quando il traffico è dell’ordine dei Gb è ideale utilizzare un router, mentre per livelli di traffico ancora più alti è necessario utilizzare IPS o firewall di ultima generazione. 6) Strategie di mitigazione dinamica Bandwith Saturation

Una strategia di mitigazione dinamica oltre a fare affidamento su Firewall, router e IDS/IPS, fa affidamento sull’intera rete che, in modo coordinato, cerca di effettuare una reazione cooperativa in accordo ad una politica comune, in questo caso parleremo di reazione network-centrica. Gli IDS/IPS vengono utilizzati per il rilevamento e l’alerting. La logica di threat intelligence correla le segnalazioni degli IPS/IDS, riconosce la minaccia, ne individua le contromisure da attivare e infine configura routers e firewalls. I router vengono utilizzati ad esempio per pilotare il traffico verso black holes o centri di cleaning e per reinstradare il traffico bonificato, oltre ad applicare le classiche misure di filtraggio come i firewall. I meccanismi principali utilizzati sono Blackholing e Sinkholing e i Cleaning Center. 7) Blackholing e Sinkholing Blackholing e Sinkholing sono dei meccanismi che prevedono il dirottamento del traffico offensivo verso un black hole che provvederà a scartarlo. Il Blackholing funziona solo su indirizzi di destinazione, lavorando a livello fisico su processori ASIC di inoltro che sono progettati per funzionare nel caso di routing verso una specifica interfaccia fittizia Null0, in modo da eliminare il pacchetto con un impatto minimo o nullo sulle prestazioni. Quando arrivano i pacchetti viene consultata una FIB (Forwarding Infomation Base) che in base alla destinazione sceglie l’interfaccia su cui va mappato il traffico. Se il traffico contiene dei prefissi che vanno instradati verso Null0 blocca il traffico. Una Sinkholing è una rete che viene configurata appositamente per rilevare traffico ostile. Quando un host rileva dei flussi DDoS da dei provider esterni annuncia gli indirizzi da instradare verso la rete di Sinkhole. A questo punto l'attacco viene reinstradato verso il sinkhole liberando l’infrastruttura target e il suo router di aggregazione. Presso la sinkhole network è possibile applicare filtra via ACL, analizzare i flussi di traffico, effettuare tracciamento a ritroso, ecc. 8) Fasi reazione coordinata 1. Fase di detection: vengono rilevati gli attacchi DDoS mediante le piattaforme di anomaly detection. 2. Fase di diversione del traffico: vengono avviate delle procedure per l’instradamento del traffico verso centri di analisi e filtraggio per poter ripulire il traffico anomalo. 3. Fase di cleaning/filtraggio: vengono applicati dei filtri al traffico per poter eliminare la parte ostile e far passare il traffico legittimo. 4. Fase di reinstradamento: il traffico ripulito viene reinstradato verso il target. 9) Come avviene il processo di Cleaning? Il processo di cleaning parte da filtraggi statici dei pacchetti sulla base di regole predefinite statiche. Successivamente viene fatto un controllo anti-spoofing. Poi viene effettuata un’ispezione statistica tramite meccanismi di Anomaly Recognition che analizzano il traffico e lo confrontano con una baseline. Sulla base di queste informazioni possono essere inseriti anche dei filtri dinamici subito dopo la fase di filtraggio statico. Infine se è rimasto qualcosa non filtrabile viene limitato in banda. 10) Ruolo del BGP Il BGP ricopre un ruolo fondamentale nella mitigazione di un attacco DDoS in quanto applica delle politiche di reinstradamento del traffico. Ragionando in ottica Blackholing, quando un host rileva l’attacco, per evitare di saturare il collegamento e quindi rendere irraggiungibile l’intera rete, effettua un annuncio BGP contenente l’indirizzo della macchina vittima e un messaggio che indica una blackhole community, per bloccare il traffico verso l’indirizzo specificato. Tramite questo annuncio, nella tabella FIB di provider e punti di peering verrà inserita una entry contenente l’indirizzo del target interfacciata con Null0. In questo modo si riesce a non saturare il collegamento, ma l’host vittima risulterà irraggiungibile fino a quando l’attacco non sarà concluso. Esiste un altro meccanismo chiamato BGP Flowspec che permette di caratterizzare il traffico e di specificarne determinate azioni da eseguire per poi comunicare le informazioni via BGP. Supponiamo ad esempio un attacco DDoS TCP SYN, bloccando i pacchetti TCP con il flag SYN alzato che superano un determinato rate, poiché i DDoS hanno rate molto elevati, riusciamo a filtrare il traffico lecito da quello ostile. Il three-way handshake infatti è caratterizzato da rate bassi, quindi i pacchetti legittimi non verranno bloccati e le connessioni stabilite. 11) Botnets Una botnet è un insieme elevato di macchine compromesse da un attaccante su cui è stato installato un agent chiamato bot. Il bot consente all’attaccante di gestire e coordinare tutta la rete tramite un meccanismo di Command&Control. Tipicamente viene utilizzato il modello Agent-Handler dove il bot master è nascosto da una serie di macchine intermedie chiamate handler che interrompono dal punto di vista dell’identificazione la catena di command & control in modo che non sia direttamente il bot master a connettersi ai bot per dare ordini. Le comunicazioni possono avvenire in maniera cifrata in modo che se si riesce a compromettere la comunicazione deve essere difficile risalire all’ideatore dell’attacco. Questi attacchi possono essere mitigati tramite l’applicazione di filtri (in genere anti-spoofing) in ingresso e in uscita sulle macchine intermedie che

forniscono servizi al target oppure nel caso non sia possibile filtrare è possibile limitare in banda i flussi che superano una determinata frequenza di interarrivo, in questo modo un attacco non riesce a saturare le risorse. 12) Altri modelli per Botnets Modello IRC-Based: anziché usare degli handler intermedi che schermano l’attaccante dalla legione di bot, si utilizza un canale IRC. Quando sul canale viene scritta una determinata keyword i vari bot si attivano ed innescano una specifica azione. Questi attacchi oggi sono in disuso perché è difficile rilevare l’attaccante ma è facile rilevare il canale IRC utilizzato per portare le informazioni. Il canale IRC utilizzato come catena di command & control diventa, in questo caso un single point of failure. Modello Web-Based: dove gli handler sono normali web-server. Gli agent in attesa di comandi si connettono periodicamente ad uno o più server legittimi e solo quando trovano una keyword specifica effettuano l’attacco. Anche in questo caso l’attaccante è ben nascosto dietro a dei server apparentemente legittimi. Modello P2P-Based: l’attaccante e tutti i bot fanno parte della stessa rete P2P con ruoli diversi. L’attaccante è l’unico che può pubblicare un determinato contenuto che viene usato dai singoli bot per individuare una logica di azione. In questo modello non è necessaria la presenza di handler intermedi in quanto tutti fanno parte della stessa logica P2P. Per rilevare il bot master, che utilizza un indirizzo spoofato, occorre identificare le decina di migliaia di host connessi alla rete. Quindi la rete P2P stessa è una botnet in cui le macchine compromesse comunicano con l’attaccante. Questo tipo di attacco è l’ultima frontiera ed è il più difficile da contrastare perché andrebbe rimossa completamente l’intera rete P2P. 13) ICMP flooding L’ICMP flooding prevede il congestionamento di linee e il sovraccarico elaborativo di routers ed host attraverso l’invio indiscriminato di messaggi ICMP (in genere HOST- UNREACHABLE o NETWORKUNREACHABLE perché questi di solito non vengono filtrati). Esso si riconosce sniffando il traffico ed individuando un numero enorme di pacchetti ICMP sia in ingresso e sia a ritroso, che saturano il canale bidirezionalmente. Una delle contromisure più efficaci contro l’ICMP flooding è la limitazione in banda dei flussi di traffico ICMP ostili tramite la logica “Committed Access Rate” (CAR) che permette di applicare limitazioni in banda a specifici flussi di traffico individuati da ACLs. Questo attacco può essere mitigato anche tramite il Generic Traffic Shaping (GTS) che è un meccanismo di packet filtering di tipo token-bucket (meccanismo di controllo del flusso che determina quando e quanto traffico può essere trasmesso in base alla presenza di token in un contenitore astratto che detiene il traffico di rete da trasmettere chiamato bucket) che permette di imporre a un flusso di traffico IP un throughput massimo inferiore a quello nominale relativo all’interfaccia del router attraverso cui avviene la trasmissione. GTS modella il traffico ritardando il traffico in eccesso utilizzando un buffer, o meccanismo di accodamento, per contenere i pacchetti e modellare il flusso quando la velocità dei dati dell'origine è superiore alle aspettative. 14) Attacchi Flood: Reflection Attack Un attacco di riflessione consiste nell’invio di pacchetti da parte dei bot, con indirizzo spoofato del target, ad host terzi che sono obbligati, a livello protocollare, a comportarsi in un certo modo. Tramite il coinvolgimento di host terzi, viene aggiunto un altro livello alla gerarchia dell’attacco e ciò rende quasi impossibile risalire all’attaccante. Un tipo di attacco basato sulla riflessione è il Fraggle. che invia flussi di traffico broadcast verso il servizio, ormai deprecato, chargen generator di una macchina attribuendosi come indirizzo sorgente quello della vittima. La macchina risponderà con pacchetti UDP verso la vittima, la quale si ritroverà inondata di un flusso UDP (si può bloccare questo attacco bloccando tutte le porte UDP inferiori a 20 con una semplice ACL). 15) Broadcast Amplification Attack. Questi attacchi sfruttano la riflessione per ottenere un meccanismo di amplificazione della potenza di fuoco del bot. L’attaccante invia pacchetti ad un indirizzo di broadcast di una rete. Ricevuto questo pacchetto, il router della rete in questione effettua la propagazione diretta del broadcast che innesca una risposta da parte di tutte le macchine della rete. Quindi con un solo pacchetto inviato si ottiene la riflessione da parte di tutte le macchine della rete. La potenza di fuoco dell’agent viene dunque amplificata di un fattore di amplificazione pari alla dimensione della rete target utilizzata. Un tipo di attacco basato sulla broadcast amplification è lo Smurfing che tipicamente utilizza dei pacchetti ICMP. Per bloccare lo smurfing occorre bloccare i broadcast che provengono da reti esterne. 16) DNS Amplification Attack. È un altro attacco che sfrutta la riflessione. Il bot invia una query DNS, con indirizzo sorgente spoofato con quello della vittima, al server DNS che consente query ricorsive. Supponiamo che la query inviata sia una query particolare che prevede la possibilità di ottenere informazioni per una intera zona. In questo caso vengono inviati pacchetti al server DNS con dimensioni molto piccole (60 byte), ottenendo una risposta di

4320 byte ottenendo un fattore di amplificazione di 73. Per mitigare quest’attacco bisogna bloccare solo certi tipi di query, consentendo query ricorsive solo a specifici host fidati. 17) NTP Amplification. Un altro tipo di attacco è basato sull’uso del protocollo NTP (usato per sincronizzare il tempo delle macchine con dei time server mondiali). Inviando un pacchetto, con indirizzo di origine spoofato con quello del target, verso uno di questi server con una richiesta “get monlist”, veniva generata una risposta con una lista di altri server agganciati. L’effetto è che una piccola richiesta (anche di 0.5 Mb) comportava 15 Mb di risposte, raggiungendo un fattore di amplificazione teorico di 30 Mb. La prima opzione per mitigare quest’attacco è correggere i server NTP disabilitando il comando monlist. La seconda opzione prevede di specificare delle ACL per bloccare il servizio UDP porta 123 in ingresso, facendo in modo che solo i server fidati all’interno della nostra rete possano sincronizzarsi con server esterni. 18) Memcache Amplification Attack. L’attacco sfrutta il Memcached, un sistema di caching distribuito che consente il caching di oggetti in rete. Il server Memcached usa le porte TCP o UDP 11211. L’agent invia una richiesta di servizio al server con un paylod di 15 byte che risponde con un messaggio UDP di 750 Kb. In questo caso il fattore di amplificazione è di 51200. Come possiamo difenderci? Lato utente andrebbe disabilitato UDP se non è strettamente necessario e favorirne l’utilizzo solo in logica TCP. Lato rete invece andrebbero introdotti dei blocchi o dei rate-limiting UDP sula porta sorgente 11211. 19) Resource starvation DDoS Gli attacchi di resource starvation hanno lo scopo di saturare, ad esempio a livello di CPU o di memoria, facendo diventare i sistemi vittima inutilizzabili. In questa tipologia di attacco, l’attaccante ha accesso lecito in parte o totale ad una risorsa di sistema. È un attacco di tipo low-rate e non è facilmente percepibile da sistemi IDS/IPS. Un esempio di attacco di questo tipo è il Deeply Nested XML, in cui un web server riceve richieste che utilizzano tag XML profondamente annidati, in modo tale che il parser richieda molta più CPU. Il fatto che la CPU salga al suo massimo può avere un altro effetto collaterale in quanto comporta un aumento smisurato dei costi di alimentazione quando si ha a che fare con sistemi molto grandi. 20) Esempi di attacchi Resource Starvation Slowloris: è un tipo di attacco che cerca di mantenere le connessioni aperte verso un server web il più a lungo possibile, facendo in modo che queste connessioni saturino la capacità della macchina, rendendogli impossibile la gestione di connessioni simultanee. Slowloris invia periodicamente richieste HTTP GET in cui vengono aggiunti tag incompleti senza terminare la richiesta. Rudy(R-U-Dead-Yet?): è un attacco simile al precedente con la differenza che utilizza il metodo POST. Per utilizzarlo basta una form HTTP che non controlla la taglia delle richieste inviate su di essa. L’attaccante invia una richiesta POST di dimensione decisamente grande, il server si aspetterà una richiesta egualmente grande, a questo punto l’attaccante invierà la risposta un byte alla volta a intervalli di tempo costante calcolati in modo tale da non innescare il timeout. L’unico modo per evitare questo attacco è configurare sul server web il timeout a un valore minore di quello che l’applicazione usa per mandare i pacchetti, oppure controllare le form affinché la taglia della richiesta venga limitata esclusivamente alla dimensione massima attesa. SSL/TLS Handshake attack: sfrutta la differenza, in termini di peso computazionale, tra le operazioni di cifratura e decifratura in ambito RSA. La velocità di cifratura, infatti, è dieci volte più veloce quella di decifratura. In questo modo un singolo client può saturare decine di server. L’unica opzione per difendersi da questo tipo di attacco è effettuare il provisioning del server che fornisce al server la capacità necessaria per smaltire le richieste. Landing: si basa sull’attivare dei three-way handshake caratterizzati da indirizzo e porta sorgente falsificati e impostati in maniera identica a indirizzo e porta di destinazione. La macchina che riceve il pacchetto, e che non ha corretto un bug di questo tipo, comincia a rispondere a sé stessa causando il blocco totale della connettività. Tipicamente, un attacco del genere porta la macchina al totale crash. Individuare un tale attacco è abbastanza semplice perché basta bloccare i pacchetti che arrivano e partono dallo stesso host tramite un filtro tcpdump. Ping of death: è un attacco che sfrutta la frammentazione dei pacchetti IP. In questo attacco un pacchetto viene frammentato sbagliando volutamente l’offset di alcuni dei frammenti in modo da superare la dimensione massima del pacchetto una volta riassemblato, portando così al crash dello stack IP e bloccando completamente la macchina. Nei sistemi di ultima generazione quest’attacco non è una preoccupazione in quanto i frammenti che porterebbero la dimensione del pacchetto oltre quella consentita vengono scartati.

Teardrop: sfrutta sempre il concetto della frammentazione, ma costruisce i pacchetti frammentati in maniera tale che le informazioni di costruzione, siano sbagliate così che una volta ricevuti e ricostruiti i pacchetti ci siano degli overlap tra i frammenti individuati, questi overlap mandano in difficoltà la macchina. La soluzione è individuare un primo pacchetto con fragment-offset a zero ed un secondo pacchetto con offset minore della taglia del pacchetto precedente e scartarli. 21) SYN Flooding L’attacco di SYN flooding invia un numero elevatissimo di pacchetti SYN, con indirizzi falsificati, verso un target che, per ogni SYN, avvierà l’apertura di una connessione con il three-way handshake andando rapidamente a saturare la coda di connessione. L’origine dell’attacco viene fatto corrispondere a un indirizzo inesistente in modo che la vittima non riceverà mai a ritroso gli ACK dei SYN + ACK da essa generati a fronte dei SYN. Il SYN Flood può essere combinato anche con la logica della riflessione, dove viene effettuato l’attacco usando come indirizzo sorgente spoofato quella della vittima. In questo modo tutti i messaggi SYN+ACK di ritorno, da un numero elevato di macchine inconsapevoli saranno diretti tutti verso il target. La soluzione migliore per proteggersi da questo attacco è il filtraggio in banda in cui devono essere bloccate tutte le sessioni SYN lasciando passare solo quelle established. Ciò però potrebbe non bastare. Una soluzione che limita l’effetto di questi attacchi è basata su una rete di proxy in logica reverse che fanno da intermediari per stabilire le connessioni TCP e per inviare al sito solo le connessioni che passano in stato established. Un’altra soluzione consiste nell’abilitazione dei SYN Cookies che permettono di generare opportunamente i TCP sequence number lato server durante l'handshake iniziale in modo che possano essere utilizzati per ricostruire i sequence number iniziali dei client che si connettono legittimamente. Ciò consente al server di riutilizzare le risorse della backlog queue, per creare una connessione dopo aver ricevuto un SYN da un client. Poiché il server non sa se il client risponderà mai con un ACK al suo SYN+ACK rimuove l’entry corrispondente nella backlog queue. Se il server riceve un ACK di risposta dal client, è capace di ricostruire l’entry precedentemente liberata nella coda SYN, grazie alle informazioni codificate nei sequence number TCP. 22) Hijacking L’Hijacking indica una categoria di attacchi che hanno l’obiettivo di compromettere un canale di comunicazione tra due host inserendosi in logica man-in-the-middle, modificando l’integrità dei pacchetti inviati con lo scopo di trarne dei vantaggi. 23)DHCP Hijacking Questi attacchi sfruttano le debolezze a livello di sicurezza del protocollo DHCP che non prevede nessuna autenticazione ed è completamente stateless. Se l’attaccante riesce ad intercettare una macchina che invia una richiesta DHCP (broadcast) e riesce a rispondere a questa macchina prima del vero server, allora potrebbe inviargli delle informazioni fraudolente in modo da modificare alcuni parametri di rete. Ad esempio potrebbe configurarsi come Default Gateway in modo da intercettare tutto il traffico che invierà la macchina vittima, oppure potrebbe assegnarle il proprio indirizzo IP come DNS realizzando un attacco di DNS spoofing. 24) IRDP Hijacking IRDP è un protocollo che entra in gioco nel momento in cui un host non ha un proprio Default Gateway o ne ha configurato uno errato. Questo protocollo prevede un messaggio “router advertisements” che indica la volontà di un router di candidarsi come default gateway. Tali advertisements vengono spediti periodicamente in rete e contengono due parametri “livello di preferenza” e lifetime, quindi un host che riceverà più messaggi di questo tipo sceglierà quello con il livello di preferenza più alto. L’attaccante quindi potrebbe forgiare degli advertisements appositi facendo in modo che i parametri siano i più alti possibili. L’unico strumento di difesa in questo caso è disabilitare IRDP sugli hosts della LAN se il SO lo permette. 25) ICMP Redirect Hijacking Questo meccanismo viene utilizzato per informare le stazioni della rete locale circa l’uso preferenziale di un router per raggiungere determinate destinazioni. Un attaccante potrebbe spoofare un messaggio ICMP Redirect richiedendo di dirigere il traffico sulla propria macchina. L’unico modo per bloccare quest’attacco è utilizzare dei filtri ACL per bloccare gli ICMP Redirect. Ciò potrebbe causare dei cali di prestazioni in quanto i pacchetti sono costretti a fare più hop. 26) TCP Session Hijacking In attacchi di questo tipo l’attaccante deve riuscire a prevedere i sequence-number che entrano in gioco nella comunicazione tra due host. Se l’attaccante riesce a prevedere tali sequence-number si inserisce in logica proxy nella comunicazione ed è in grado di modificare a suo piacimento i dati che fluiscono all’interno della connessione. Per effettuare questo attacco l’attaccante osserva fino a un certo punto i sequence-number

scambiati tra i due host e cerca di prevedere quali saranno i prossimi. Per evitare che i sequence-number avanzino blocca una dei due host tramite un SYN flood e si sostituisce spoofando l’indirizzo della macchina bloccata con il suo. Un modo per mitigare questo attacco è fare in modo che i sequence-number non siano prevedibili andando a randomizzare la generazione. 27) DNS Hijacking Questi attacchi sfruttano una debolezza strutturale del protocollo, infatti per rendere il processo di risoluzione più efficiente vengono utilizzate delle cache locali a tutti i sistemi DNS, inoltre il protocollo è completamente stateless quindi le risposte non vengono validate. Un attaccante potrebbe iniettare all’interno di una cache DNS delle entry fraudolente (con TTL più alto possibile) in modo da falsificare le risposte referenziando un target diverso da quello legittimo. 28) Kaminsky Attack È una variazione più aggressiva del DNS response spoofing e sfrutta il fatto che è un protocollo stateless. In particolare effettua il poisoning di glue records (tipo NS) invece che di record di tipo A. L’attaccante invia continuamente query per dei sottodomini inesistenti del dominio di destinazione in modo che non vi siano entry nelle cache dei server. Successivamente falsifica una risposta DNS con un glue records fraudolento. In caso di successo è compromessa l’intera zona. Per difendersi da questi attacchi è necessario accettare risposte DNS solo da entità trusted e quindi è necessario introdurre dei meccanismi crittografici per l’identificazione. 29) Domain Name System Security Extensions (DNSSEC) È un insieme di specifiche per garantire la sicurezza e l’affidabilità delle informazioni fornite dai sistemi DNS. Introducono dei meccanismi per l’autenticazione dell’origine dei dati DNS e per l’integrità dei dati. Si basa sull’enforcing crittografico in tutte le fasi di una query DNS, in particolare le risposte DNS devono essere accompagnate da una firma digitale in modo che il destinatario possa verificare che il messaggio sia autentico. Per implementare ciò vengono introdotti tre nuovi tipi di records: KEY, che rappresenta la chiave pubblica del server DNS, SIG, che contiene la firma digitale, NXT, utilizzato per autenticare risultati negativi. DNSSEC non permette però di crittografare le query. 30) Crittografia delle query: DNS over TLS/DNS over HTTPS DNS over TLS permette di cifrare le query e le risposte DNS tramite TLS. TLS utilizza un handshake iniziale per consentire al client di identificare il server e negoziare una chiave di sessione. Questo meccanismo aumenta la privacy e previene l’intercettazione e la manomissione dei dati, ma ha un uso significativo di memoria per client che lavorano in logica ricorsiva e va utilizzato per molte query per ammortizzare il costo dell’handshake, inoltre la privacy è relativa poiché il client DNS ricorsivo vede ancora tutte le query. Un’alternativa simile alla precedente è DNS over HTTPS dove le risposte DNS vengono inviate tramite HTTPS. 31) Hijacking del BGP Lo scopo di questi attacchi è rendere la rete instabile. I meccanismi di base per attaccare il protocollo BGP sono i seguenti: • Meccanismo AS-Padding: sfrutta il fatto che il BGP prende le proprie decisioni in base alla lunghezza dell’AS-Path. Aggiungendo del padding all’AS-path, ad esempio ripetendo più volte l’AS-ID, il percorso diventa più lungo e quindi meno attrattivo. Dualmente un’altra tecnica consiste nel ridurre l’AS-Path per attirare il traffico in maniera fraudolenta. • Filtrare e/o bloccare gli annunci: tramite questo meccanismo si ottiene l’effetto di non far fluire il traffico verso determinate destinazioni • Creazione di annunci ad-hoc: permette di rigirare il flusso di traffico a proprio piacimento 32) Hijacking del BGP con SYN Flood È una attacco che viene utilizzato per fare in modo che non si sia in grado di aprire sessioni BGP. L’attacco inizia con il Probing che permette di capire quali sono gli host che offrono servizi BGP scansionando la porta 179. Una volta individuati gli host che offrono servizi BGP vengono utilizzati dei tool appositi che permettono di abbattere la sessione. In questo caso vengono generati dei pacchetti RST che s’inseriscono nella sessione in corso e la fanno cadere. 33) BGP Injection Sono i peggiori attacchi che possano verificarsi, in quanto non sono facilmente rilevabili. Inizialmente si crea una fake route e si costruisce un annuncio in maniera opportuna. Successivamente si fa un ARP Spoofing sull’IXP della connessione tra i due peer e si sniffa il traffico. Infine si inietta la fake route nella sessione spoofata. Le contromisure per mitigare questo attacco sono:

Politiche di filtraggio a livello BGP Non annunciare netblock che risultano troppo disaggregate Definire il numero massimo di prefissi accettati e distribuiti Implementare delle politiche di filtraggio mirate a specifici prefissi attesi La default route non deve mai essere accettata, a meno di casi particolari, ma va configurata staticamente sulle proprie routes • Autenticare con password le sessioni BGP (autenticazione MD5) 34) Security- BGP È un’estensione che prevede quattro elementi fondamentali: • Public Key Infrastructure (PKI): garantisce l’autorizzazione e la identificazione in termini di trusteness di tutte le entità coinvolte • Address Attestations: hanno il compito di indicare che l’ultimo AS riportato nell’update è autorizzato dal proprietario del blocco di indirizzi ad annunciare il blocco stesso • Route Attestations: autorizzano un proprio vicino ad annunciare un determinato prefisso • tunnel IPSec: che rende integra e non ripudiabile la comunicazione 35) Multi-Protocol Label Switching (MPLS) È un meccanismo di traffic engineering, che effettua la commutazione in base a dei tag attribuiti ai pacchetti in maniera tale che tutti i pacchetti taggati in un certo modo verranno instradati su un determinato path. Fa affidamento ai seguenti protocolli: • Label Edge Routers: che effettua il tag dei pacchetti • Label Switching Routers: commuta i pacchetti in base al tag • Label Distribution Protocol & Resource Reservation Protocol: sono protocolli di segnalazione per capire se eè possibile stabilire un path da origine a destinazione con certe caratteristiche di banda e latenza. Questi ultimi due protocolli possono essere esplorati da attaccanti per iniettare delle informazioni fraudolente che possono compromettere l’integrità della rete. Un esempio di attacco è il MPLS path error spoofing in cui si fa credere che non c’è più banda su un path ed il path alternativo passa per un router compromesso in cui è possibile sniffare tutto il traffico. Questi protocolli non hanno meccanismi crittografici interni, quindi per difendersi è necessario filtrare, sui router di bordo di un dominio MPLS, i pacchetti relativi all’uso del protocollo LDP o RRP in modo da evitare di forzare annunci fraudolenti dall’esterno. Per un attacco interno non c’è nulla da fare. • • • • •

1)Worm È un agent SW auto-replicante appositamente programmato per diffondersi nella rete sfruttando le vulnerabilità su servizi diffusi su vari host disponibili in rete. Una volta che arriva al massimo della sua replicazione può lanciare attacchi DoS, installare logiche di controllo implementate a livello Botnets e può compromettere l’integrità e la privacy di dati sensibili. Per insinuarsi all’interno dei computer, i worms utilizzano delle tecniche di social engineering o sfruttano errori delle configurazioni di rete o le vulnerabilità dei sistemi. 2) Differenza virus/worm/trojan horse Un virus è costituito da codice malevolo inserito all’interno di un eseguibile e non è nocivo fino a quando questo eseguibile non viene eseguito, proprio per questo non può diffondersi senza l’intervento umano. Un worm invece può essere considerato come una sottocategoria di un virus e si diffondono senza l’intevento umano, sfruttando le funzionalità di trasporto dei file o delle informazioni presenti all’interno del sistema. Inoltre un worm ha la capacità di auto-riprodursi nel sistema inviando un numero considerevole di copie. A causa della sua natura riproduttiva un worm consuma una quantità elevata di memoria compromettendo il funzionamento di server web e di rete e dei singoli host. Un trojan horse non è un virus, è un programma distruttivo che sembra essere un’applicazione autentica. Non si riproduce, ma si propagano solo attraverso l’intervento umano. In aggiunta aprono una backdoor per favorire l’accesso ad utenti o programmi nocivi. 3) Classificazione worms Possono essere classificati in Host computer worms e Network worms. I primi sono contenuti all’interno di un host e sfrutta la rete per propagarsi da un host all’altro, i secondi invece girano simultaneamente su host differenti essendo nativamente partizionati in diversi segmenti payload d’attacco. 4) Reazione ai worms Le reazioni ai worms devono essere completamente automatizzate. Per individuare il worm è necessario cercare una firma (traccia) all’interno del traffico globale che è caratterizzata da pattern ricorrenti (stringhe comuni). Questi pattern possono essere utilizzati a scopo di content filtering o sifting che setacciano il traffico per eliminarne gli elementi ostili. 5) Content Sifting Il content sifting individua i contenuti con alta prevalenza e un elevato address dispersion. L’alta prevalenza consiste nell’individuazione di un contenuto che ricorre in maniera più frequente rispetto gli alti, mentre l’address dispersion consiste nell’evidenziare che l’insieme di pacchetti contenenti il contenuto ad alta prevalenza indirizzano un numero spropositato di destinazioni distinte. 6) Indicizzazione stringhe Un contenuto con alta prevalenza e un elevato address dispersion sono delle stringhe di bit e quindi necessitano di essere indicizzate. Esistono tre tipi di approcci: indicizzare tutte le sottostringhe (possono essere molte e quindi portare ad un aggravio prestazionale), indicizzare pacchetti interi (veloce ma aggirabile), indicizzare tutte le sottostringhe contigue con almeno lunghezza S memorizzandone l’hash. 7) Strategie d’infezione worm Una prima strategia consiste nell’effettuare scansioni localizzate per acquisire informazioni circa lo spazio d’indirizzamento su cui reclutare nuove macchine da infettare, partendo dalle informazioni ottenute dalla macchina infettata (Code Red II). Un’altra strategia effettua scansioni topologiche che permettono di sfruttare le informazioni acquisite dagli hosts compromessi per individuare nuove vittime (Morris Worm) Generalmente i worm diffusi via mail sfruttano questa tecnica. Un’altra strategia consiste nell’effettuare scansioni basate su hit list che utilizzano una raccolta di 10/50 mila hosts potenzialmente vulnerabili. Per generare queste hit list si effettuano dei processi di analisi delle reti vicine oppure tramite l’osservazione del traffico. Infine un’ultima strategia consiste nelle scansioni basate su permutazioni dove tutti i worm condividono una permutazione pseudocasuale dello spazio d’indirizzamento in modo da assicurarsi che gli stessi indirizzi non siano oggetto di probing ripetuti. 8) Modelli di diffusione dei worms: Modello Suscettibili/infettati (SI) È un modello matematico che descrive come il worm si evolverà nel tempo. Questo modello considera le seguenti variabili: taglia specifica della popolazione, numero di macchine suscettibili all’infezione in un certo tempo, un numero di macchine infettate in un certo tempo ed il rate con cui una macchina è in grado di interfacciarsi con altre macchine. Le dinamiche di evoluzione della popolazione di hosts infettati sono descritte da un sistema di equazioni differenziali dove la soluzione del sistema è la frazione di hosts infettati tra quelli vulnerabili. Un evoluzione di questo modello è il suscettibili/infetti recovered che tiene conto anche di eventuali macchine che hanno rimosso il payload infetto ritornando immuni. 9) Modelli di diffusione dei worms: Analytical Active Worm Propagation (AAWP)

Questo modello, conoscendo lo stato dell’infezione in un singolo istante riesce a prevedere lo stato dell’infezione, in termini di macchine infette, all’istante di tempo successivo. Questo modello considera le seguenti variabili: dimensione dello spazio d’indirizzamento, numero di hosts vulnerabili in questo spazio, numero di scansioni in un certo tempo e numero di macchine infette in un certo tempo. Per rendere più realistico il modello si possono introdurre anche un rate di disconnessione ed un rate di patching. 10) Differenze tra i due modelli La prima differenza consiste nel fatto che il modello SI è continuo mentre AAWP è discreto. SI è meno accurato di AAWP poiché una macchina può infettarne altre prima di essere completamente infetta. Il SI inoltre assume un tempo d’infezione pari a zero che non è realistico e non consente di modellare i ritardi dovuti a congestioni e distanza sorgente destinazione. Infine il SI non tiene conto di eventuali attività di patching a livello di sistema operativo che rende la macchina immune. In conclusione l’unica contromisura contro i worms sono il patching sistematico di applicazioni e sistema operativo e tenere continuamente aggiornati gli antivirus. 11) Botnets Il payload del worm installato sull’host da compromettere è un bot che fornisce all’attaccante un meccanismo di controllo remoto dell’host. Questa tecnica viene utilizzata per creare reti di host compromessi comandate da un’infrastruttura di command & control. Il bot è caratterizzato dai seguenti elementi: meccanismo di controllo remoto che impiega per collocarsi in logica C&C, implementazione dei comandi eseguibili e il meccanismo di propagazione. Il bot parte da una logica di scansione e segue con l’individuazione di host vulnerabili e il deposito del payload dannoso. A questo punto si ricomincia. Le strategie di attacco sono orientate al reclutamento di nuovi agent. 12) Architettura Botnet È composta da tre componenti architetturali: il botmaster che è il controllore della botnet e che invia i comandi a tutti i terminali infetti, i server intermedi che sono una gerarchia di server che schermano il botmaster e ricevono i comandi da poi inviare alla legione di bot, ed infine i bot che sono i computer infetti che eseguiranno i comandi trasmessi. 13) Meccanismi di controllo remoto Molti host utilizzano meccanismi di C&C basati su IRC, in cui vi è un server IRC sotto il controllo del botmaster che funge da C&C server. I bot si collegano ad uno specifico IRC channel sul server ed interpretano i messaggi che vengono inviati come comandi da eseguire. Questo meccanismo ha il vantaggio di essere centralizzato e facile da gestire, ma può diventare un SPF. Alcuni bot utilizzano meccanismi di C&C basati su http, dove il botmaster ha il controllo dei server di C&C che espongono risorse web. I bot effettuano delle richieste get al server http ed in base alle risposte ricevute eseguono dei comandi. Anche in questo caso la struttura è centralizzata e facile da gestire ma può diventare un SPF. Un altro meccanismo di controllo è il Covert Channels dove vengono creati dei canali invisibili basati o su versioni modificate del protocollo IRC, o su tunneling DNS o su tecniche steganografiche. Un esempio di canale utilizzabile è quello che sfrutta il back scattering. Anche in questo caso abbiamo una struttura centralizzata. Un ulteriore vantaggio consiste nella difficoltà d’individuazione di questa tecnica. Infine il più utilizzato è il meccanismo P2P dove i comandi vengono distribuiti in logica p2p a tutti i bot che entrano nell’overlay di comunicazione. La struttura è completamente centralizzata ed è impossibile distruggere il canale di comunicazione, ma è molto difficile da controllare. 14) Meccanismi di propagazione Questi meccanismi si basano sulla scansione della rete e sulla logica del Drive-by-Download, cioè una campagna di spam in cui è necessario premere su un file per entrare nella botnet, oppure si possono propagare payload ostili attraverso shares NetBIOS. Una delle tecniche più utilizzate è fast-flux che è basata su DNS ed è usata dalle botnet per nascondere e proteggere siti di malware e/o phishing dietro una rete di host compromessi che fungono da proxy. Utilizzando TTL configurati su DNS molto piccoli, i proxy vanno a rimapparsi continuamente in modo da nascondere la reale identità della macchina. 15) Esempi di Botnet La botnet Waledac era finalizzata a campagne di spam e la comunicazione era basata su http ma con un utilizzo di un modello P2P per cifrare e inviare le informazioni agli host della botnet. La struttura si basava su fast-flux. Un’altra botnet nota è Zeus, che parte da un agent operante in logica trojan horse chiamato Zbot, nato e specializzato per il furto di credenziali dopo l’installazione di oppurtuni payload con funzione di keystroke logging. Un’altra botnet famosa è Mirai che è stata la prima a reclutare host dalla IoT. Una volta reclutati questi milioni di host ha portato un attacco coordinato verso un Dynamic DNS che offre servizi ad Amazon, Twitter e Spotify. 16) Contromisure Botnet

L’unico modo per prevenire le operazioni di una botnet è individuare il server di C&C e distruggerlo. Per individuare questi server vanno combinate le tecniche di rilevazione tradizionali con quelle che supportano AI basate sull’anomaly detection. Gli antivirus dovrebbero essere in grado di individuare attività ostili dei bot e bloccarne l’installazione, oppure se il bot è già installato potrebbe essere rilevato tramite l’aggiornamento dell’antivirus. Anche i sistemi IDS/IPS aiutano nella rilevazione delle botnet perché se le tecniche di diffusione delle botnet sono note, è possibile creare delle signature da inserire nella base di conoscenza di questi sistemi. Altri strumenti utili sono gli Honeypot o gli Honeyfarm, il primo mette a disposizione un ambiente isolato vulnerabile su cui il bot viene eseguito ed analizzato, i secondi sono un insieme di honeypot strutturate come un network telescope. Analizzando il traffico uscente dalle honeyfarm si riescono a costruire delle signature dei worms che possono essere inserite nella base di conoscenza di IDS/IPS. Possono essere utilizzati anche firewall e router per applicare politiche basate su deep packet inspection, oppure nel caso del firewall utilizzare il meccanismo di scan suppression che bloccano il traffico da hosts che generano un numero troppo alto di tentativi di connessione verso altri host. 17) Tecniche di rilevamento Il rilevamento network based rileva specifici pattern di configurazione che caratterizzano la botnet e tipicamente viene tracciato il traffico IRC e HTTP. Un altro modo è fare rilevamento tramite deep packet inspection sul contenuto delle query HTTP per cercare contenuti anomali, infatti i bot devono utilizzare delle query DNS per localizzare i server C&C, quindi tracciando le query è possibile individuare il server C&C. Altre importanti rilevazioni riguardano i frequenti cambi di indirizzo IP, le variazioni di traffico rispetto alla normalità e l’asimmetria dei pacchetti SYN ed ACK. Il rilevamento host based invece rileva la presenza di botnet in base ai comportamenti osservabili sui singoli host. Un bot si comporta come un virus quindi è possibile rilevare le attività dell’agent. Un ulteriore rilevamente è quello anomaly based che si basa principalmente sulle anomalie del traffico come ad esempio un incremento della latenza o un traffico effettuato su porte non comuni. I rilevamenti host based ed anomaly based non sono esclusivi ma complementari.

1) Anonimato in rete Consiste in uno stato di non identificabilità di uno specifico soggetto o un insieme di utenti con la finalità di nascondere la reale origine di un attacco o di una specifica azione effettuata attraverso la rete e garantire la privacy. Accedendo ad internet vengono rilasciate una gran quantità di evidenze digitali che permettono di profilare l’utente. Le attuali tecniche utilizzate come TLS o HTTPS garantiscono l’integrità e la non ripudiabilità delle comunicazioni ma non l’anonimato. 2) Proxy anonimizzatori Permettono di anonimizzare l’accesso in rete, in particolare per quanto riguarda il traffico che viaggia dal proxy alla destinazione la sorgente rimane sconosciuta. Il problema è che se un attaccante riesce a compromettere il proxy viene persa qualsiasi forma di anonimato. In questo contesto possono essere utilizzate dei proxy in cascata a catena casuale, basati sulla logica mix network, in modo che ogni proxy lungo il cammino conosca solamente il nodo precedente ed il successivo, con l’ultimo nodo che ha una visione in chiaro del messaggio inviato ma non ha alcuna visione del mittente. 3) Onion Routing È una tecnica di tunneling del traffico basata su una struttura in logica overlay che crea circuiti virtuali cifrati. I pacchetti vengono incapsulati in logica telescopica in strutture dati opportunamente cifrate. L’instradamento avviene passando attraverso un certo numero di nodi della rete ognuno dei quali rimuove o aggiunge un layer di cifratura specifico. È una tecnica a bassa latenza ed è resistente anche alle tecniche più sofisticate di analisi del traffico. Il circuito virtuale viene incrementato un hop per volta in accordo ad uno schema di cifratura a cipolla. L’origine sceglie un cammino da una lista fornita da una directory node e negozia una chiave con ogni nodo intermedio. I dati sono cifrati in origine e lungo il cammino in modo che ogni nodo conosca solo il suo successore e predecessore. Il messaggio sarà visto solo dal nodo in uscita ma non saprà da dove proviene. 4) The Onion Router (TOR) È una rete che fa multihop relay basata su onion routing. TOR garantisce l’anonimato e gli hidden services, ovvero la possibilità di erogare servizi in modo anonimo. Supporta la Perfect Forward Secrecy, TLS per la comunicazione tra nodi, garantisce l’integrità dei dati ed implementa meccanismi di controllo della congestione. Poiché basato su OR permette di scegliere i tre nodi selezionandoli sulla base della capacità di banda di cui si ha bisogno. I nodi principali di questa rete sono l’entry node che garantisce l’accesso all’overlay e l’exit node che garantisce l’accesso alla global internet. 5) Nodi TOR Esistono quattro tipi di nodi: il nodo Client, dove TOR gestisce unicamente le connessioni dell’utente permettendogli di collegarsi alla rete TOR, il nodo Middle Man Router, che gestisce il traffico da e per la rete TOR senza collegarsi all’esterno, il nodo Exit Router, che gestisce il traffico da e per la rete TOR verso l’esterno e il nodo Bridge Router che sono dei nodi sperimentali studiati per permettere di collegarsi alla rete TOR anche in zone con forti filtraggi contro TOR (Cina e Iran). 6) Numero di nodi TOR TOR permette di scegliere liberamente il numero di relay, ma tipicamente se ne scelgono 3, poiché sceglierne di più è inutile dal punto di vista della sicurezza e riduce le prestazioni aumentando la latenza. Inoltre, dato che i relay sono noti, è possibile che alcuni siano compromessi, quindi minore è il numero di nodi e minore è la probabilità di avere una compromissione dell’anonimato. 7) Comunicazione su TOR Ogni nodo che compone la rete prende il nome di Onion Router(OR), mentre ogni host che usufruisce di tale rete prende il nome di Onion Proxy(OP). Inizialmente il client OP si connette al directory server per ottenere la lista degli OR disponibili e le chiavi d’identificazione di questi. Quando OP si connette ad un nodo OR, il nodo si autentica inviando due certificati, il primo contiene una chiave di connessione temporanea e il secondo certificato autofirmato contenente la chiave d’identificazione. Il client, tramite i certificati, può verificare la validità della chiave d’identificazione con quella presente nella lista scaricata dal directory server e rifiutare la connessione se dovesse risultare non valida. Due nodi OR invece eseguono tra di loro un mutua autenticazione simile alla precedente e se la chiave d’identificazione dovesse risultare invalida devono annullarla. Una volta stabilita la connessione TLS tra le due entità vengono scambiati i dati in celle da 512 byte inviate sequenzialmente in modo da non permettere attacchi di correlazione. La comunicazione non è permanente ed una delle due parti può interrompere la comunicazione se non circolano dati per un tempo pari al Keep AlivePeriod che di default vale 5 minuti.

8) Tipi di celle Ogni cella è composta da due campi che hanno funzioni di controllo e dal payload che contiene i dati da trasmettere. Abbiamo due tipi di celle, la RELAY utilizzata per il trasporto dati end-to-end e la RELAY EXTEND utilizzata per l’apertura e chiusura dello stream e per l’estensione di circuiti. La prima è composta da tre campi: CircID (2 byte), che serve ad indicare a quale circuito virtuale è associata la cella, Command (1 byte), che contiene il valore del relativo al comando e Payload (509 byte) che contiene i dati da trasmettere. La seconda cella invece contiene delle informazioni aggiuntive quali Relay (1 byte), StreamID (2 byte), Digest (6 byte e Len (2 byte), in questo caso la lunghezza del Payload scende a 498 byte. Oltre alla RELAY abbiamo anche altre celle di controllo quali CREATE, per la creazione del circuito, CREATED, riscontro creazione circuito e DESTROY, per la rimozione del circuito. 9) Perfect Forward Secrecy È un meccanismo che protegge dall’eventuale compromissione di una chiave. Garantisce che che se una chiave di cifratura viene compromessa, allora tutte le chiavi di sessione generate a partire da quella chiave di cifratura rimangano riservate. TOR realizza lo scambio di coppie di chiavi con ogni relay, ma tali chiavi sono usate solo per verificare l’autenticità dei messaggi, non per cifrarli. Quindi un attaccante che è in grado di ottenere una chiave privata, sarà in grado di decifrare il traffico futuro, ma quello che ha catturato in precedenza non sarà più negoziabile. Se TOR si accorge di un host compromesso procede con un cambio di chiavi. 10) Meccanismo di negoziazione delle chiavi TOR Il meccanismo si basa sullo scambio di chiavi DH e garantisce a TOR la PFS. Le fasi sono le seguenti: 1. La prima fase consiste nello stabilire un circuito tra il client ed il primo nodo di Tor. Un nodo client deve creare un circuito virtuale, quindi invia una cella CREATE al primo nodo della rete Tor contenente una informazione gx1 cifrata con la chiave pubblica del nodo1. Il nodo1 decifra con la sua chiave privata la cella CREATE, calcola g x1y1 e deriva k1, cioè la chiave di sessione che serve per cifrare i dati che fluiranno tra client e il nodo1. Quindi invia al client la cella CREATED che contiene gy1 e l’hash H(gx1y1) della chiave che ha costruito. Il client, infine, calcola g x1y1 ed è quindi in grado di derivare k1 utilizzando H(k1). A questo punto entrambi dispongono della chiave k 1 che sarà utilizzata per cifrare le informazioni che fluiranno tra i due. 2. Una volta stabilita una sessione con il nodo1, il client deve estendere il circuito in avanti. Il client chiede al nodo1 di estendere il circuito verso il nodo2, inviando al nodo1 una cella RELAY EXTEND cifrata con k1 , contenente gx2 cifrata con la chiave pubblica del nodo2. Il nodo1 decifra cella con la chiave k1 e legge l’indirizzo del prossimo nodo. Infine il nodo1 estrae il payload della cella e lo inserisce in una nuova cella CREATE inviandola al nodo2. 3. Il nodo2 decifra la cella, calcola g x2y2 e deriva la chiave k 2 . Poi invia la cella CREATED contenente gy2 e l’hash della chiave H(k 2) al nodo1. A sua volta nodo1 estrae il payload dalla cella e lo mette in una cella RELAY EXTENDED cifrandola con k1 . 4. Il nodo1 invia la cella appena creata al client, che a sua volta la decifra con k 1 , poi calcola gx2y2 e deriva la chiave k2 . Il circuito virtuale tra il client e il nodo1 è stato creato e si userà l’AES con chiave k2 . 5. La stessa operazione viene reiterata in avanti/effettuata tra il nodo 2 ed il nodo di uscita (nodo3). 11) Hidden Services È una funzionalità che garantisce che l’identità in rete dell’host ospitante il servizio non venga rivelata. Il funzionamento è il seguente: 1. L’hidden services sceglie un certo numero di relay, chiamati introduction point, e fornisce loro la sua chiave pubblica per identificare il servizio. A questo punto gli introduction point sanno come arrivare all’hidden services ma non sanno la sua identità. Il percorso sarà composto sempre da tre relay: l’entry point TOR, il relay intermedio ed infine l’introduction point. 2. Per far conoscere al mondo le informazioni che servono per accedere all’hidden service, deve costruire un blocco dati, detto service descriptor, contenente la chiave pubblica del servizio e un summary che contiene le informazioni degli introduction point. Tale descrittore viene firmato con la chiave privata del servizio ed inviato ad un server di Lookup usando sempre TOR. 3. Un client per poter usufruire del servizio deve effettuare una query al server di lookup per ricevere il descrittore. Una volta ottenuto può avviare la connessione con l’hidden service. Se anche il client vuole restare anonimo allora deve negoziare con gli introduction point tramite un altro circuito TOR, aprendo tale circuito verso un altro nodo (rendezvous point) che fungerà da relay e presso il quale si realizzerà il punto d’incontro.

4. Una volta stabilito il circuito il client invierà al rendezvous point un one-time secret. A questo punto il client crea un introduction message, cifrato con la chiave pubblica del servizio, da mandare ad un introduction point per indicargli l’indirizzo del rendezvous point e il one-time secret negoziato con questo, chiedendo che i dati vengano consegnati all’hidden service. 5. Il messaggio viene girato all’hidden service che lo decifra e crea il circuito verso il rendezvous point inviandogli il one-time secret in un rendezvous message. 6. Infine il rendezvous point notifica al client che la connessione è stata stabilita con successo. 12) Attacchi per correlazione dei pattern di traffico I principali punti deboli della rete TOR sono gli exit nodes e il non anonimato dal livello 3 in su. Un modo sistematico per attaccare TOR consiste nell’osservare il traffico su un punto di uscita ed avere dei punti di osservazione su server compromessi (guard node) che vedono l’identità di chi sta contattando la destinazione. Mettendo insieme queste intercettazioni è possibile compromettere l’anonimato effettuando delle correlazioni tra i pattern di traffico. Si possono effettuare due tipi di correlazioni: correlazione temporale, che sfrutta le informazioni sui pacchetti e i tempi di invio/interarrivo, e correlazione sulla dimensione dei pacchetti, dove l’attaccante prende in considerazione i dati relativi al numero e alla dimensione dei pacchetti scambiati. 13) Altri attacchi alla rete TOR Un attacco alla rete TOR si basa sul monitoraggio DNS e sfrutta il fatto che molti software effettuano delle query DNS in modo diretto senza usare proxy TOR, in questo modo viene rilevato all’osservatore le query effettuate e le destinazioni finali delle connessioni. Un altro attacco si basa sull’estrazione del comportamento e sfrutta il fatto che TOR è altamente configurabile , quindi un attaccante potrebbe riconoscere l’identità di un utente da come effettua richieste a TOR (tempi di rotazione dei circuiti o scelta dei nodi in base alla larghezza di banda). Un altro attacco è basato sul fingerprinting dove un attaccante ha a disposizione dei set di dati riguardanti tipi di browser, taglia dei file e pattern d’accesso ad alcuni siti e confrontandoli con il traffico generato da un nodo client è in grado di correlare l’ingresso con l’uscita se la generazione del traffico combacia con i pattern noti. 14) Offuscamento L’uso dei bridge potrebbe essere non sufficiente per superare politiche massive di filtraggio della rete TOR in quanto l’attaccante potrebbe effettuare deep packet inspection e classificare il traffico riconoscendo il pattern protocollare della rete TOR. In questo caso l’unica arma da usare è utilizzare tecniche di offuscamento che permettono di incapsulare TOR in un altro tipo di traffico. Esistono diverse modalità di offuscatori (obfs2 e 3) che trasformano il traffico TOR in modo che appaia come un altro protocollo in modo da non poter essere filtrato. 15) Freenet È un servizio di pubblicazione anonima che consente di evitare che si possa risalire a chi pubblica, memorizza, distribuisce e richiede contenuti. In Freenet i gestori dei nodi della rete offrono un servizio pubblico, ma non sanno in nessun modo qual è il contenuto che viene distribuito. Nel momento in cui un contenuto viene reso disponibile non è più cancellabile, ma scompare solo se per un certo tempo nessuno accede a tale contenuto. Il contenuto infatti non scomparirà anche se il nodo verrà distrutto, perché i contenuti di maggiore interesse vengono replicati tra i nodi. Opera come un’architettura P2P dove ogni utente è indipendente da tutti gli altri e non esiste una directory centrale, inoltre i nodi si scambiano informazioni in una logica query/response. 16) Comunicazione su Freenet La comunicazione avviene in maniera autenticata e cifrata, i nodi comunicano con un protocollo connectionoriented basato su TCP chiamato Freenet Network Protocol. I nodi non vedono l’intera rete ma comunicano tra di loro basandosi su una conoscenza locale e dinamica dei nodi limitrofi. L’instradamento è basato sulla chiave del contenuto stesso ed ogni nodo costruisce una routing table che contiene gli indirizzi che sono associati ai nodi vicini e le chiavi che posseggono. I contenuti sono suddivisi in atomi chiamati chiavi e possono essere: SSK, che sono basate su cifratura simmetrica e servono per firmare un documento in modo che chiunque abbia la chiave possa verificarne l’integrità, KSK, permettono di cifrare i contenuti e renderli intelligibili a chi non è autorizzato, CHK, è un hash del file da depositare ed MSK che sono associate all’aggiornamento di contenuti che non possono essere cancellati. 17) Funzionamento Freenet Per collegarsi ad un node della rete Freenet è necessario agganciarsi ad un altro nodo tramite un metodo outof-band e conoscere l’indirizzo del nodo. Per l’aggancio viene generato un random seed che viene inviato ad un nodo scelto a caso. Il nodo ricevente crea un altro random seed facendo XOR con l’hash ricevuto e creando un nuovo hash. Il nuovo nodo viene aggiunto nella routing table e può iniziare ad effettuare richieste

di contenuto. La richiesta non è sempre diretta, ma può passare attraverso un certo numero di nodi differenti utilizzando un percorso chiamato random walk. La richiesta viene inoltrata ai nodi vicini per verificare se possiedono il contenuto, se non possiedono il contenuto la richiesta viene smistata verso i nodi vicini che hanno maggiori possibilità di possedere il contenuto. Questa operazione procede finché viene raggiunto il nodo con l’informazione richiesta. In media, in pochissimi hop si raggiunge un hub aggregatore dove la probabilità che abbia l’informazione richiesta è molto elevata. Esiste un caso peggiore dove è possibile che scatti un timeout prima che la richiesta arrivi al nodo che possiede il contenuto richiesto, in questo caso la richiesta viene rieffettuata. 18) Convergenza veloce della richiesta La convergenza veloce della richiesta è garantita poiché i nodi in transito fanno un caching dei contenuti quando la risposta arriva, ciò significa che i nodi hub costruiscono una cache molto grande che gli permette di rispondere a qualsiasi richiesta. La profondità della ricerca è data dall’hops to live che viene decrementata ogni volta che la richiesta transita per un nodo. Una volta arrivati a 0 la query si arresta. Ogni nodo memorizza le chiavi alla rinfusa in un datastore e quando arriva una chiave/file che farebbe superare la dimensione del datastore, vengono rimosse le chiavi/file meno recentemente usate in ordine fin quando non si libera lo spazio. 19) Email Anonime L’anonimato nelle email consiste nell’inviare mail senza che esse contengano informazioni nei propri header in modo da identificare il mittente. L’idea alla base è quella d’instaurare una rete ad-hoc per anonimizzare la catena d’invio delle mail e deve lavorare sulla parte debole del protocollo, ovvero gli header che viaggiano in chiaro da origine a destinazione. L’anonimizzazione degli header avviene tramite un remailer che va a modificare tutte le informazioni presenti nell’header. Il remailer non è altro che un proxy per le mail, quindi se un malintenzionato riesce a compromettere il proxy viene meno l’anonimato. Per questo motivo si usano le remailer chains 20) Architetture Remailer Esistono diverse architetture di remailer. Un remailer di tipo 0 (Penet) ricevono posta opportunamente formattata e tolgono le informazioni relative al mittente, ma sono facilmente attaccabili violando il server o tramite tecniche di analisi temporale del traffico. Un remailer di tipo 1 (Cyberpunk) invece utilizza catene di remailer di almeno tre elementi e crittografa i messaggi da un remailer all’altro per evitare intercettazioni. Anche questo tipo è attaccabile con tecniche di analisi temporale del traffico. In un remailer di tipo 2 (Mixmaster) i messaggi vengono standardizzati frammentandoli in pacchetti, della stessa dimensione, che vengono inviati con ritardi casuali e mandati in una coda che viene svuotata fuori ordine. Utilizza SMTP e una rete separata per la distribuzione delle chiavi crittografiche. L’unica vulnerabilità è che essendo gli elementi della catena noti è possibile applicare blocchi o un DoS massivo verso questi remailer. Infine un remailer di tipo 4 (mixminion) utilizza uno specifico protocollo basato su connessioni SSL fra vari server e per accettare i messaggi degli utenti. 21) Risposte ad un mittente anonimo La soluzione per rispondere ad un mittente anonimo è utilizzare uno pseudonimo, cioè un indirizzo fittizio non riconducibile ad un indirizzo reale, tramite cui si possono far giungere messaggi al destinatario senza conoscere l’identità. Uno pseudonimo garantisce l’anonimato anche all’indietro, quindi mittente e destinatario possono scambiarsi messaggi in modo totalmente anonimo. Remailing Newnym permette ad un utente di creare un indirizzo fittizio usando metodi di crittografia ed offre anche la funzionalità di reply block, che consiste in sequenze di istruzioni crittografiche su come far pervenire il messaggio all’indirizzo reale tramite una serie di remailer. Un’altra soluzione è lo Pseudonym server che consente all’utente di registrare un proprio alias che viene associato ad una cartella di posta elettronica. Né il nym né la casella di posta sono direttamente riconducibili all’utente stesso. Ciò è possibile perché i messaggi che transitano in entrata e in uscita per il nym server, passano prima attraverso una serie concatenata di anonymous remailer. 22) VPN Sono nate per garantire un servizio di network extension realizzando un canale di comunicazione end-to-end su rete pubblica. Le VPN non sono un servizio di anonimizzazione, ma permettono l’accesso remoto ad una LAN privata attraverso internet, permette connessioni tra reti private tramite internet e permette la connessione fra computer attraverso una Intranet. La connessione remota ad una LAN privata prende il nome di LAN Extension e permette di bypassare qualsiasi meccanismo di sicurezza previa autenticazione. Tutto ciò avviene tramite la tecnica del tunneling che prevede d’incapsulare un protocollo all’interno del payload di un altro protocollo. Le VPN vengono utilizzate per la loro economicità, scalabilità e sicurezza (garantisce confidenzialità, integrità, mutua autenticazione e non ripudio.

23) Differenze tra VPN e TOR Nessuno dei meccanismi di VPN è in grado di garantire l’anonimato, ma garantisce solo l’estensione della rete in sicurezza. Dal punto di vista dell’identificazione tramite indirizzo siamo anonimi, ma in realtà non siamo completamente anonimi (esempio pay TV pirata, la polizia appropriandosi dei file di log della VPN può risalire all’identità di chi si è connesso al sito pirata). L’anonimato prevede la non identificazione anche se si verifica la compromissione di un componente dedicato alla sicurezza/anonimato. TOR garantisce un completo anonimato. Il primo nodo della rete TOR sa chi l’ha contattato ma non sa assolutamente che cosa è transitato, viceversa il nodo VPN vede in chiaro tutto il nostro traffico e quindi andando ad intercettare e/o compromettere quel nodo VPN allora l’anonimato viene compromesso, mentre nel caso di TOR l’anonimato viene compromesso solo se vengono compromessi tutti e tre i nodi scelti. Inoltre l’ultimo nodo della rete TOR può vedere in chiaro il traffico, ma non sa chi è l’origine del traffico. Una VPN è utile anche per aggirare certe censure da parte di molti governi anche se l’utilizzo della VPN può essere rilevato e bloccato. TOR introduce meccanismi di mixing-offuscamento, mentre molti protocolli utilizzati sulle VPN no.

1) Vulnerabilità SMTP Le funzioni di relay SMTP sono svolte da un daemon che aspetta connessioni sulla porta 25 per inviare la posta in uscita o ricevere quella in ingresso. Quindi collegandosi sulla porta 25 ed eseguendo il protocollo per l’invio delle mail è possibile inviare un messaggio con falso mittente (mail spoofing). È possibile anche effettuare una sorte di attacco DoS sfruttando il programma listerv, che viene di solito utilizzato per l’invio di newsletter ad una lista. Listerv è anche utilizzato er l’invio di file di grandi dimensioni via mail, che vengono frammentati ed inviati in modo che la quota della casella elettronica della vittima si saturi, impedendo la ricezione di email. 2) Rilevazione del mittente Per la rilevazione del mittente è possibile analizzare l’header del messaggio ricevuto. I tag to, subject e from sono inaffidabili e non hanno peso sull’analisi poiché sono stati modificati dall’utente. Ogni header contiene i relay su cui è transitato il messaggio prima di giungere a destinazione. L’unico modo per capire qualcosa del mittente è analizzare questi relay che possono essere affidabili (il messaggio è transitato per provider noti) o non affidabili che non devono essere considerati. Se il relay è affidabile, viene inserito nell’header un message-id, da chi è stato ricevuto e quando. Quindi in maniera collaborativa è possibile chiedere al relay se effettivamente quel messaggio è transitato sui loro server in modo da avere conferma della non alterazione del campo relativo al transito sul relay e quindi fidarsi del campo from per capire da chi ha ricevuto il messaggio. Facendo questo ragionamento a ritroso è possibile ricostruire il percorso del messaggio giungendo al mittente. Se non si riesce a risalire al mittente è possibile effettuare dei controlli incrociati su date e nazioni di provenienza per ricavare dati importanti. 3) Tipi di email Possiamo avere diverse tipologie di emali: Spam, che sono mail che gli utenti non hanno interesse a ricevere, UCE, email commerciali non sollecitate, UBE, email di massa non sollecitate, Ham, email buone, falsi positivi, mail di tipo ham che vengono classificate come spam e falsi negativi, mail di tipo spam classificate come ham. 4) Controlli spam I controlli possono essere Client-side (MUA) che garantisce buoni risultati se l’utente configura bene il filtro, ma può creare problemi quando l’utente usa client diversi, inoltre i sistemi statistici alla base dei riconoscitori di spam non hanno a disposizione tante email per poter allenare un buon modello, e Server-side (MTA) dove l’amministratore della casella di posta gestisce il filtro anti-spam e poiché ha a disposizione una grande mole di email il modello anti-spam può essere addestrato meglio. 5) 3rd party relay Consiste nell’utilizzo, da parte degli spammer, di un server di un terzo soggetto come come propagatore di un messaggio SMTP. Quindi il mittente reale del messaggio si avvale di un relay che risulta aperto per far partire email di spam. Questo è possibile perché il protocollo SMTP non prevede una autenticazione per poter inviare dei messaggi. Per impedire l’invio tramite il proprio sistema è necessario far autenticare gli utenti prima di permettere l’invio. 6) Tecniche antispam: Black&White-listing e RBL Sono controlli che vengono fatti sull’header dei messaggi. Ogni volta che riceve una mail il server consulta una lista d’indirizzi contenente mittenti validi (white) e mittenti non sicuri (black) e sulla base di questo match decidere se accettare il messaggio o meno. È possibile affidarsi a società terze che offrono un servizio di realtime blocking list (RBL) gestendo un DB aggiornato con tutti i cattivi mittenti. Le RBL sono consultabili tramite query DNS. Il problema è che le RBL sono aggirabili utilizzando open realys oppure computer compromessi, inoltre gli spam utilizzano indirizzi IP per pochi secondi prima di cambiarlo e quindi prima del tempo necessario ad una RBL per identificarli. Esiste anche una RBL avanzata chiamata SURBL (Spam URI realtime blocklist) che oltre gli header controlla anche il body del messaggio alla ricerca di url che riconducano a domini spammer. 7) Tecniche antispam: Filtri di contenuti Il sistema di posta prima di consegnare la stessa agli utenti applica vari algoritmi di analisi dei messaggi e tramite delle metriche riesce ad assegnare un fattore di confidenza che classificano l’email come spam o ham. Ovviamente è richiesto un traning del sistema per allenarlo al riconoscimento di posta spam. Uno dei principali problemi è che la posta elettronica può essere inviata tramite botnet senza passare per un relay, in questo caso sono necessari dei filtri antispam, all’interno di qualsiasi dominio, fra le varie ACL di protezione perimetrale. Vengono aggiunte delle clausole le quali affermano che la posta elettronica è gestibile solo attraverso il relay ufficiale del dominio, il problema è che fa questo enforcing sulle ACL. In questo momento, nell’impossibilità di risolvere il problema dello spam sono necessari dei meccanismi a livello di

mail exchanger che siano in grado di ispezionare il contenuto dei messaggi e di classificarlo in spam o mail legittima, attribuendole un punteggio. In questo caso possono essere usati filtri bayesiani o ibridi. 8) Filtri Bayesiani Sono filtri che si basano sull’analisi probabilistica e permettono di realizzare dei meccanismi di riconoscimento e classificazione dei messaggi. Quando viene ricevuto un messaggio, viene fatta un’analisi delle parole, dei simboli e delle loro occorrenze. Questi dati vengono raccolti in un database per costruire una base di conoscenza costituita dalle informazioni derivanti sia da messaggi legittimi che spam. In base agli elementi individuati nel messaggio viene assegnata una probabilità basata su un calcolo che indica quanto frequentemente una parola ricorre nei messaggi di spam piuttosto che nei messaggi ham. I filtri bayesiani sono difficili da aggirare, infatti anche spezzare le parole non serve perché non viene fatto un pattern matching ma si va a riconoscere l’occorrenza frequente di un token all’interno di un messaggio. I filtri vanno continuamente alimentati e riaddestrati, ciò viene fatto arricchendo il database ham e il database spam. 9) Filtri ibridi Combinano la logica statistica con delle euristiche per poter aumentare la capacità di identificazione del filtro. Inoltre possono essere combinati meccanismi di preclassificazione con meccanismi che considerano la progressione dei token. 10) Sender Policy Framework (SPF) Cerca di impedire lo spam prima ancora che il messaggio venga inviato. SPF protegge dalle impersonificazioni obbligando gli spammer a mandare le email dal proprio dominio in modo da essere meglio identificati. L’idea alla base è di pubblicare record DNS corrispondenti ai server che possono inviare posta per un particolare dominio, in modo da permettere all’utente di controllare se il server mittente risulta pubblicato sul DNS secondo le regole SPF e quindi decidere se accettare la posta o meno. Quindi l’obiettivo è quello di bloccare l’impersonificazione e non lo spam ed è pensato per identificare solo il nome di dominio. I vantaggi sono che è una soluzione permanente e non necessita di manutenzione o update dei filtri ed è progettato per proteggere il return path. Introduce però due problemi: forwarding e email generate dal web non funzionano più. Per ovviare a ciò è possibile ricorrere ai Server Rewriting Scheme (SRS) che sono schemi che permettono di ricostruire il server. 11) DomaniKeys Identified Mail (DKIM) È un metodo di autenticazione delle mail, realizzato per prevenire lo spoofing. Consente a chi riceve una email di verificare la provenienza del messaggio in modo da accertare l’autenticità del mittente. DKIM consente a un dominio di associare il proprio nome a un’email mediante una firma digitale. La firma viene verificata utilizzando la chiave pubblica del firmatario pubblicata nel DNS del dominio. DKIM differisce dalla crittografia end-to-end perché di solito le firme non sono visibili agli utenti poiché sono poste nell’header e vengono verificate dai service provider attraverso i mail server. 12) Vouch by reference VBR È un protocollo utilizzato per la certificazione del mittente da parte di soggetti terzi. Providers indipendenti possono garantire per la reputazione dei mittenti verificando il nome del dominio che è associato con il relativo indirizzo. Tipicamente queste informazioni le può usare sia un MTA per vedere se un server è affidabile, oppure un client di posta elettronica (MUA). L’utente che fa certificazioni email VBR firma i suoi messaggi utilizzando DKIM e inserisce un campo VBR-info nell’intestazione firmata. L’header VBR info contiene il nome del dominio che sta certificando, il tipo di contenuto del messaggio e un elenco di uno o più servizi di vouching. 13) Grey Listing Nasce dal presupposto che la maggior parte del software creato per inviare spam non sia in grado di gestire i deferrals (errori SMTP). Per ogni incoming email viene composta la tripla . Se questa risulta sconosciuta, viene aggiunta a una greylist e il mittente riceve un errore, con l’assunzione che questi riproverà l’invio più tardi. Quando la stessa tripla si presenta successivamente, la email viene accettata e la tripla rimossa dalla greylist e inserita nella whitelist. Questo meccanismo è molto leggero, perché rispondere con un errore è immediato e non occupa risorse né di banda né di CPU. Controindicazioni: è compito del sistema mittente scegliere quando rimandare la posta, e può capitare che il ritardo sia eccessivo (molte ore) e ciò può causare false segnalazioni e perdite di posta, inoltre deve operare quasi sempre come unico sistema antispam 14) Vipul’s Razor È una rete distribuita, collaborativa per identificare lo spam. Razor mantiene un DB di spam in propagazione che i client possono consultare per filtrare lo spam. Razor calcola poi la probabilità che un mail sia spam. L’input degli utenti viene pesato in base alla reputazione degli utenti e la reputazione è costruita sul consenso nel riportare o revocare gli spam. Riportare spam o revocare spam aumenta il punteggio dell’utente.

15) Pyzor È un sistema collaborativo, distribuito per rivelare e bloccare spam usando estratti dei messaggi. I client possono confrontare i messaggi tra di loro creando delle firme digitali del body, poi chiedono al server se altri hanno riportato quella firma come spam. 16) Tarpits Quando un server riceve posta con una velocità elevata può applicare una politica di tarpits, ovvero intenzionalmente introduce un delay nel tempo di servizio. Abbiamo addirittura honeypot che limitano i worms che inviano spam, tipicamente infatti questi worms sono alla ricerca di relay aperti, quindi si creano honeypot con relay aperti, in modo che quando lo spammer si collega, viene rallentato con tarpits l’invio dello spam, e poi informa i DB dinamici a riguardo dello spammer.

1) Web Security La web security ha il compito di mettere in sicurezza web browser e web application. Un web browser (front-end) può essere attaccato da qualsiasi sito visitato e gli attacchi implicano l’installazione di malware, come ad esempio keyloggers e botnets, il furto di documenti e la perdita di dati privati. Le web application (back end), invece, girano lato web server e possono presentare potenziali bugs quali XSS, SQL injection,XRSF. 2) SSL/TLS Transport Layer Security (TLS) e il suo predecessore Secure Sockets Layer (SSL) sono dei protocolli crittografici di presentazione che permettono una comunicazione sicura dalla sorgente al destinatario su reti TCP/IP fornendo autenticazione, integrità dei dati e confidenzialità operando al di sopra del livello di trasporto. Nell'utilizzo tipico di un browser da parte di un utente finale, l'autenticazione TLS è unilaterale, infatti è il solo server ad autenticarsi presso il client. 3) Funzionamento TLS Il funzionamento può suddividersi in tre fasi. Nella prima fase viene negoziata, fra le parti, l'algoritmo da utilizzare. La seconda fase prevede lo scambio delle chiavi (Diffie-Hellman) e l’autenticazione (RSA, DSA). Infine la terza fase prevede la cifratura simmetrica (DES, AES), l’autenticazion e il controllo dell’integrità dei messaggi (SHA, HMAC). Supponiamo che un client/browser e un server vogliano comunicare. Il server deve acquisire un certificato da parte di una certification authority che firma tale certificato e gli fornisce una chiave privata ed una chiave pubblica. A questo punto il server può essere raggiunto dai client che possono verificare il server con la chiave pubblica del server stesso che è nota. Quindi il browser valida il certificato del server controllando che la firma digitale dei certificati del server sia valida e riconosciuta da una certificate authority conosciuta utilizzando una cifratura a chiave pubblica. Questa autenticazione, però, non è sufficiente per garantire che il sito con cui ci si è collegati sia quello richiesto. 4) Verifica dei certificati Per essere sicuri che il sito a cui un client/browser si connette è legittimo è necessario analizzare il contenuto del certificato e controllarne la catena di certificazione, infatti potrebbe verificarsi che il certificato digitale non corrisponda con l’identità con cui stiamo interagendo. Nella verifica di un certificato non è sufficiente controllare solo che un certificato sia valido ma bisogna verificare anche altri aspetti come il nome dell’organizzazione e il common name. 5) Autenticazione server-side In un’autenticazione server-side il client invia un messaggio di client-hello al server che a sua volta risponde con un messaggio server-hello contenente il proprio certificato identificandosi. Successivamente avviene uno scambio di chiavi tra client e server e viene generata una chiave comune in modo da poter comunicare in maniera sicura cifrando la comunicazione con un apposito algoritmo di cifratura. La sola autenticazione lato server può creare varie complicazioni. La prima nasce dall’utilizzo di web proxy, in questo caso il certificato server deve passare attraverso il proxy e questa situazione può essere fonte di attacco soprattutto se il proxy viene compromesso. Un’altra complicazione si verifica quando la macchina che fa da server utilizza il virtual hosting e può ospitare diversi siti web aventi lo stesso indirizzo IP. In questo caso il server dovrebbe avere un certificato per ogni sito che gestisce ed è una complicazione. 6) Buffer Overflow È una condizione di errore che si verifica a runtime quando in un buffer di una determinata dimensione vengono scritti dati di dimensioni maggiori, ciò comporta un overflow che va a sovrascrivere porzioni di memoria destinate ad altre istruzioni. Se l’attaccante ha una buona conoscenza del programma in questione, del SO e il tipo di computer su cui gira, si può precalcolare una serie di dati malevoli che inviati per provocare un buffer overflow consenta ad un malintenzionato di prendere il controllo del programma. Il contesto fondamentale per il verificarsi di un BOF è la chiamata ad una funzione. Consideriamo uno scenario dove abbiamo una architettura Intelx86 a 32 bit. I registri salvati nello stack e che coinvolgono il BOF sono Base Pointer (4 bytes) che è il puntatore alla base della porzione dello stack, e l’Instruction Pointer (4 bytes) che è il puntatore all’istruzione successiva. La variabile locale che sta ad indicare la dimensione del buffer viene inserita nello stack subito dopo questi due registri, quindi causando un BOF andremo a sovrascrivere questi registri. In questo contesto un attaccante potrebbe effettuare una chiamata a funzione C gets, che legge dallo standard input e copia il contenuto nella variabile locale del buffer senza effettuare nessuno controllo sulla dimensione, per sovrascrivere i registri BP e IP salvati sullo stack, alterando così il normale flusso di esecuzione del programma. Inserendo degli indirizzi validi nella parte che eccede gli 8 byte del buffer verrà eseguito del codice arbitrario dal programma con la possibilità di ottenere il controllo del sistema (code injection attack).

7) Set Instruction Randomization È una contromisura ai code injection attack. Per ogni processo, attraverso, una chiave di codifica, viene creato un insieme unico di istruzioni randomizzate che vanno a sostituire il codice sorgente del programma originale. Verrà creato un ambiente di esecuzione unico per il running process così che l’attaccante non conosca il “linguaggio” usato in modo da non poter intervenire a livello macchina (non conosce la key di randomizzazione). Esistono due possibili approcci alternativi nell’uso della chiave per la codifica/decodifica: XOR bit a bit tra istruzione e chiave, e trasposizione randomizzata dei bit. L’esecuzione di un generico programma avviene nel seguente modo: 1. Il codice di ciascun processo è caricato dal rispettivo file eseguibile memorizzato su disco. L’eseguibile contiene all’interno dell’header la chiave di decodifica del processo caricato in memoria. 2. Il sistema operativo estrae la chiave di decodifica dall’header dell’eseguibile e la memorizza nel rispettivo Process Control Block del processo 3. Quando la CPU eseguirà il processo, la chiave di decodifica sarà presa dal PCB e copiata in un speciale registro del processore. Ciò avviene attraverso un’istruzione privilegiata GAVL che permette un accesso in sola scrittura nel speciale registro di CPU. Per quei programmi che non sono stati randomizzati, viene fornita una speciale chiave (chiave nulla), che quando caricata attraverso l’istruzione GAVL, disabilita il processo di decodifica. L’esecuzione delle randomization instructions, necessita della scelta tra due possibili soluzioni: l’utilizzo di una apposita categoria di processori programmabili e l’introduzione di un ambiente di esecuzione protetto che emuli una CPU convenzionale (sandboxing environment). Tra i vantaggi di ISR vi è la possibilità di ri-randomizzare periodicamente i programmi in modo da minimizzare il rischio di attacchi persistenti. Tra gli svantaggi troviamo il fatto che bisogna utilizzare delle CPU programmabili per il supporto di istruzioni randomizzate (l’alternativa è l’emulatore). 8) SQL Injection Un attacco SQL Injection è un code injection attack verso un DB, orientato verso script che creano dinamicamente query SQL. Sfrutta l’inefficienza dei controlli sui dati ricevuti in input ed inserisce codice maligno all’interno di una query SQL con l’obiettivo di carpire/modificare/inserire informazioni verso un DB interfacciato da una web application. 9) Implementazioni e tecniche Questi attacchi possono sfruttare: 1. Caratteri di escape non filtrati correttamente. Si verifica quando non viene filtrato l'input dell'utente dai caratteri di escape e quindi vengono passati all'interno di uno statement. Questo può provocare la manipolazione degli statements eseguiti sul database dagli utenti finali dell'applicazione. Per esempio, impostando la variabile “userName” con l’espressione ‘or 1=1;’ risulta sempre vera (shortcircuit evaluation) ed aggiungendo l’uso del commento ‘--’ oppure ‘/*’ non fa eseguire il resto della query. 2. Un campo fornito dall'utente non è fortemente tipizzato o non vengono controllati i vincoli sul tipo. Viene utilizzato un campo numerico in uno statement SQL, ma il programmatore non fa controlli per verificare che l'input immesso dall'utente sia effettivamente numerico. Un eventuale utente maligno inserendo nel campo username la stringa ‘1;DROP TABLE users’ causa la generazione di una query che avrebbe come immediata conseguenza la cancellazione della tabella ‘users’. Per fronteggiare questi attacchi è necessario filtrare i messaggi di errore o limitare la lunghezza dei campi, oppure utilizzare costrutti safe. 10) PHP escaping È una tecnica di prevenzione che utilizza funzioni PHP per evitare caratteri che hanno un significato speciale in SQL. In PHP di solito si evitano i caratteri speciali nei parametri utilizzando la funzione mysqli_real_escape_string(). La funzione addslashes(string $str) serve ad evitare i caratteri speciali, ed è usata in particolare per fare query a database che non hanno funzioni di escape in PHP, essa ritorna una stringa con dei backslash prima dei caratteri che hanno bisogno di essere tra apici. Fare sempre l'escape delle stringhe SQL è una pratica soggetta ad errori perché è facile dimenticare di fare l'escape di una determinata stringa. Creare un livello trasparente per rendere sicuro l'input può ridurre gli errori o eliminarli totalmente. 11) SQL parametrizzato Permette di costruire una query SQL con escaping di argomenti fatto a priori. In PHP esiste una funzione simile detta bound parameters.

12) SQL Randomization Sfrutta le tecniche e i principi derivati dall’ ISR. Con l’SQL randomization si introducee un proxy che permette la de-randomizzazione delle query prodotte lato client, in modo che le query saranno comprensibili dall’interprete SQL del DB. Il proxy lavora esclusivamente a livello sintattico effettuando anche il filtraggio dei messaggi di errore provenienti dal DB, trasformandola in una query ripulita da mandare al DB. 13) Cross-site scripting (XSS) È una vulnerabilità che affligge siti web dinamici con un insufficiente controllo dell'input nei form. XSS è basato sull’iniezione di un contenuto malevolo a partire da un sito compromesso considerato attendibile. Se al contenuto da un sito viene concessa l'autorizzazione di accedere alle risorse di un sistema, allora qualsiasi contenuto da quel sito condividerà queste autorizzazioni (same origin policy). Trovando il modo di iniettare script malevoli su un sito attendibile, l'utente malintenzionato può eseguire script dannosi nel browser Web di un client, inserire tag, rubare informazioni sulla sessione Web e cookie di autenticazione ed accedere al computer client. 14) Vulnerabilità XSS di tipo Reflected (non persistente) È possibile sfruttarle quando i dati forniti dall'utente sono usati immediatamente dallo script lato server per costruire le pagine risultanti senza controllare la correttezza della richiesta. Se tutti i dati forniti dall'utente non validati sono inclusi nella pagina risultante senza un'adeguata codifica HTML, questo può portare a iniezione di codice di markup . Un esempio classico di un potenziale vettore è il motore di ricerca del sito: se si cerca una stringa, in genere questa verrà visualizzata di nuovo nella pagina dei risultati per indicare cosa si è cercato. Se questa risposta non evita o rigetta i caratteri di controllo HTML si consegue che è vulnerabile ad attacchi XSS. Un attacco non persistente è tipicamente inviato via mail o da un sito web neutrale. L'esca è un URL dall'aspetto innocente, che punta a un sito attendibile ma che contiene un vettore XSS. Il click sul link può causare l'esecuzione di script iniettato nel browser della vittima. Un malicious link spesso ha l’obiettivo di ridirezionare il contenuto del cookie dell’utente verso il server dell’attaccante, permettendogli così di rubare i cookie di sessione, in modo di impersonare la vittima presso il servizio che ha registrato il cookie nel browser. La prima linea di difesa è fornita dalla Same Origin Policy, che isola in lettura e scrittura contenuti web forniti da servizi “scorrelati” fra loro, però non è sufficiente per impedire il furto dei cookie di sessione. 15) Vulnerabilità XSS di tipo persistente Si verifica quando i dati forniti dall'attaccante vengono salvati sul server, e quindi visualizzati in modo permanente sulle pagine normalmente fornite agli utenti durante la normale navigazione, senza aver eliminato dai messaggi visualizzati dagli altri utenti la formattazione HTML. Lo script dannoso dell'attaccante è fornito automaticamente senza la necessità di indirizzare la vittima o attirarla nel sito di terze parti. Un esempio di XSS persistente è un malicious link in un commento all’interno della sezione commenti di un sito di News per esempio. 16) Contromisure XSS • Validare tutti gli headers, cookies, query strings, campi forms e campi nascosti (praticamente tutti i parametri) in accordo a una specifica rigorosa di cosa è consentito e cosa no. • Adottare una politica di sicurezza a base ‘positiva’ che specifica tutto quanto è permesso far passare. • Validazione e filtraggio dei dati di input • Codifica/filtraggio dati di output • Utilizzare attributi di sessione. Due attributi sono assegnabili ai cookie per richiedere al browser garanzie di sicurezza aggiuntive sul loro utilizzo: HttpOnly (se un cookie è marcato HttpOnly, esso diventa inaccessibile da ogni script) e Secure (forza il browser ad allegare tali cookie solo a richieste HTTPS e non HTTP) _______________________________________________________________________________________ 1) Tracciamento a ritroso Consiste nell’analisi delle tracce digitali lasciate da un attacco per individuarne le reali origini. Il tracciamento include l’identificazione delle fonti, l’estrazione dei dati d’interesse, la documentazione e l’interpretazione delle evidenze. 2) Tipi di analisi Possono essere effettuate due tipi di analisi: “post mortem”, che è lo studio a posteriori delle evidenze in tempi differiti rispetto a quelli del’attacco come ad esempio le evidenze storiche ottenute da logs o files di traccia, e “Live” che è lo studio in tempo reale del traffico come fluisce attraverso la rete

3) Validazione indirizzo sorgente Per validare un indirizzo IP va validato l’hop count, e questa validazione consiste di 3 step: 1. dai pacchetti conservati per effettuare una analisi live oppure post morten, si devono osservare gli header nei pacchetti IP ed andare a vedere il campo Time To Live (TTL), da cui si deduce il numero di hop che tale pacchetto ha attraversato 2. si effettua un traceroute verso l’IP di interesse ottenendo un valore “attuale” dell’hop count 3. se questo valore differisce sostanzialmente da quello ottenuto al passo 1. allora l’IP potrebbe essere oggetto di “spoofing” 4) Validazione routes Oltre a validare l’hop count vi è anche la necessità di validare le routes, cioè va determinato se esiste realmente una root valida di accesso relativo al netblock dell’indirizzo da tracciare. Per effettuare ciò è possibile utilizzare un looking glass che permette di visualizzare la routing table. Inoltre va verificato a ritroso il dominio associato all’indirizzo IP effettuando una operazione di reverse query resolution (IP --> nome dominio). 5) Segnalazioni Per le segnalazioni è necessario rivolgersi ad un Regional Internet Registry (RIR), che è un'organizzazione che sovrintende all'assegnamento e alla registrazione delle risorse numeriche di Internet in una specifica area geografica. Grazie ai regional registriers è possibile effettuare operazioni di consultazione dei loro database di assegnazione ottenendo informazioni su localizzazione e contatti. 6) Computer Security Incident Response Team (CSIRT) Il CSIRT è un gruppo di esperti di sicurezza IT che ha il compito di reagire in caso di incidente di sicurezza, al fine di limitarne le conseguenze e assistere gli utenti nel recupero delle funzionalità e gli amministratori nel ripristino dei sistemi. Lo CSIRT deve coordinare le attivita’ di Incident Response e fornire supporto, gestire eventuali strumenti centralizzati, interagire con l’operation management degli ISP ed infine interagire con altri CSIRT e contribuire alle attività coordinate. 7) Struttura CSIRT Il CSIRT ha una struttura gerarchica, gli utenti finali effettuano delle segnalazioni al proprio CSIRT che a loro volta si interfaccia in maniera gerarchica con il proprio National Coordinator Center nel contesto della National Cyber-Security Network. Le segnalazioni degli CSIRT devono avvenire in logica trusted e devono essere firmate perché potrebbero esserci false segnalazioni per falsi incidenti a scopi malevoli, ad esempio si potrebbe creare una falsa segnalazione circa un falso attacco proveniente da una organizzazione e chiederne il blocco degli indirizzi creaando un DOS. Tra i vari CSIRT vengono stretti accordi formali di cooperazione e di non disclosure su dati di indagine. A sua volta il centro di coordinamento nazionale dei CSIRT si interfaccerà con un ente CSIRT di livello superiore, e così via. 8) CERT Effettuano delle attività di ricerca e sviluppo che consiste in un monitoraggio costante dei sistemi informatici, dei programmi applicativi e della rete, allo scopo di analizzare il loro stato di sicurezza e il loro livello di sensibilità a potenziali attacchi. Sulla base delle informazioni ottenute il CERT attua piani di realizzazione e implementazione di tecnologie utili a correggere le vulnerabilità, a resistere agli attacchi e a prevenire minacce future.