Progetto del corso di SICUREZZA DELLE RETI E DEI SISTEMI SOFTWARE Studenti: Alessandro Esposito 399/92 Luciano Ocone 399/96 Luigi Pino 399/88 Docente: Prof. Corrado Aaron Visaggio Collaboratore: Ing. Antonio Pirozzi
Presentazione del tool 2
1. Introduzione Il tool s2ipt, realizzato nel Maggio del 2016 e distribuito sotto licenza GNU, permette di effettuare la traduzione delle regole Snort in regole Iptables, dal contenuto semantico equivalente (ambienti Linux based). Unico tool simile esistente: FWSNORT SNORT ▪È un Intrusion Detection System (IDS) open-source (GNU GPLv2) ▪Permette l’analisi del traffico di una determinata rete IP e l’individuazione di potenziali minacce ed intrusioni provenienti dall’esterno ▪Firewall a livello applicativo ▪3 modalità di funzionamento: sniffer, packet logger e network intrusion detection ▪Basato su regole snort IPTABLES ▪Programma utente delle distribuzioni Linux, che permette di configurare opportunamente NetFilter, un componente del kernel (firewall a livello kernel) ▪Organizzato in catene (chain): input, output, forward ▪Basato su regole iptables 3
2. Obiettivo del tool S2ipt permette di configurare iptables in modo da funzionare sia come IDS che IPS: ▪IDS (Intrusion detection system): sistema utilizzato per monitorare il traffico di rete al fine di individuare e segnalare eventuali attività malevoli. ▪IPS (Intrusion prevention system): sistema utilizzato per monitorare il traffico di rete al fine di individuare e segnalare eventuali attività malevoli, cercando di fermarle. Tool sviluppato in Python, leggero e a basso impatto: ▪Sistemi embedded e low-cost (es. Raspberry pi) ▪Internet of things 4 4
3. Caratteristiche e vantaggi di s2ipt Semplice Configurazione firewall dall’elevata robustezza a “costo zero” Sempre aggiornato Protezione verso le più recenti e diffuse minacce grazie alle Snort community rules Non invasivo Impatta il meno possibile sull’ambiente: ▪livello prestazionale (RAM) ▪trasparente 5 Veloce Operando a livello kernel è in grado di abbattere tutto l’overhead presente in soluzioni che operano a livello applicativo Traduzione “best-effort” Traduzione delle regole Snort al massimo della sintassi consentita da iptables Efficiente Risolve il classico problema della frammentazione dei pacchetti presente a livello applicativo (preprocessore frag3)
6 4. Impatto sul sistema s2ipt ha impatta il meno possibile sull’ambiente, lasciando invariato lo stato del firewall catena separata (IDS/IPS) Aggiunta di due regole Per le default chain iptables -A DEFAULT_CHAIN –j CUSTOM_CHAIN Per la custom chain iptables -A CUSTOM_CHAIN –j RETURN
5. FUNZIONALITÀ OFFERTE ▪Specifica dell’interfaccia di rete: tramite l’opzione --iface è possibile specificare l’interfaccia di rete sulla quale applicare le regole Iptables. ▪Log mode: tramite l’opzione --log è possibile specificare la possibilità di aggiungere alle regole tradotte in Iptables l’opzione –j LOG (chain IDS) ▪Drop mode: tramite l’opzione --drop è possibile specificare la possibilità di aggiungere alle regole tradotte in Iptables l’opzione –j DROP (chain IPS) ▪Reject mode: tramite l’opzione --reject è possibile specificare la possibilità di aggiungere alle regole tradotte in Iptables l’opzione –j REJECT (chain IPS) ▪Revert mode: tramite l’opzione --revert è possibile ripristinare le regole Iptables presenti nel backup effettuato dal s2ipt. 7 S2ipt permette di specificare le seguenti opzioni da riga di comando:
Implementazione del tool Architettura e algoritmo di traduzione 8
6.1 Approccio utilizzato 9 Keyword_1:value_1 (options) Approccio best-effort: mancanza di mapping 1:1 tra regole Snort e Iptables Regola Snort Action Protocol Source IP, port Destination IP, port Operator Header Keyword_n:value_n …
6.2 Approccio utilizzato 10 iptables [-t ] \ \ Regola Iptables In generale, al fine di creare una qualsiasi regola Iptables valida, è necessario fissare almeno i tre aspetti chiave: Packet type – il tipo di pacchetto da filtrare/monitorare. Packet source/destination – il tipo di pacchetti da filtrare sulla base dei campi di origine e destinazione. Target – che tipo di azione eseguire quando la regola in questione viene matchata.
7. Algoritmo di traduzione 11 s2ipt Regole Iptables Pre-processing Header-translation Option-translation Synthesis Snort community rules
7.1 Algoritmo di traduzione 12 Mapping 1:1 S2ipt traduce i seguenti campi: Best-effort Action Protocol Source/destination IP e port Content Uricontent TTL Tos Ip_proto Depth Flow Pcre Offset
8.Architettura 13 Package: domain_classes engine
Utilizzo del tool 14
9. File install Nella distribuzione rilasciata è presente un file install.sh che consente di installare il tool nell’ambiente ospitante: 1.Controllo versioni e servizi dell’ambiente 2.Creazione gerarchia directory 3.Copia dei file in opt/s2ipt 4.Creazione link simbolico 5.Configurazione del demone 6.Download community rules 15 install –d ▪Python ▪Kernel-linux Deployment ▪Test connettività ▪Download ▪Estrazione regole
10. s2ipt_daemon S2ipt configura l’esecuzione di uno script bash che agisce come una sorta di demone: ▪Controlla regolarmente se è un certo intervallo di tempo x (default 30 giorni dall’ultimo update) Last_update + x = today? ▪Aggiorna data ultimo update 16 L’esecuzione del demone viene definita in fase di installazione (crontab): ▪Ogni giorno alle 00:00 ▪Ogni riavvio dell’ambiente
11.1 Esempi di traduzione Prendiamo in considerazione la seguente regola Snort: alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"MALWARE-BACKDOOR Infector.1.x"; flow:established,to_client; content:"WHATISIT"; metadata:ruleset community; reference:nessus,11157; classtype:misc-activity; sid:117; rev:16;) 17 S2ipt produce la seguente regola iptables: iptables -I CUSTOM_CHAIN 1 –i IFACE –p tcp –m state --state ESTABLISHED –m string -- string “WHATISIT” --algo bm -m comment --comment "MALWARE-BACKDOOR Infector.1.x" –j LOG --log-prefix [IDS-117]
11.2 Esempi di traduzione Prendiamo in considerazione la seguente regola Snort: alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"FTP SITE CHOWN overflowattempt"; flow:to_server,established; content:"SITE";nocase; content:"CHOWN"; distance:0; nocase; isdataat:100,relative; pcre:"/^SITE\s+CHOWN\s[^\n]{100}/smi"; reference:bugtraq,2120; reference:cve, ; classtype:attempted-admin; sid:1562; rev:11;) 18 S2ipt produce la seguente regola iptables: ▪ iptables -I CUSTOM_CHAIN 1 –i IFACE -p tcp -m state -–state ESTABLISHED -m string -- string "SITE" --algo bm -m string --string "CHOWN" --algo bm -m comment --comment "FTP SITE CHOWN overflowattempt" -m length --length 140: -j LOG --log-prefix [IDS-1562]
19 File kern.log
12. Risultati ottenuti 20 Traduzione delle Snort community rules (16/06/2016) ▪Regole tradotte: 83.65% (FWSNORT 60%) ▪Best effort: 66,34% (79,25% di quelle tradotte)
Testing del tool 21
13. Testing Obiettivo: verificare la bontà e l’accuratezza della traduzione di s2ipt Strategia: confrontare il comportamento di Snort e quello di iptables a valle dell’utilizzo di s2ipt. Due scenari: Traffico malevolo - Analisi in presenza di traffico generato sulla base delle regole Snort Traffico normale - Analisi in presenza di traffico “normale” (valutazione dei falsi positivi) Problema: mancanza di framework per il testing di sistemi IDS/IPS, limitazioni iptables per trattamento RAW_SOCKET Il comportamento di Snort costituisce l’oracolo su cui basare l’analisi dei risultati di iptables. 22
14.1 Testing Snort Test traffico malevolo ▪Dati di test: 2181 pacchetti generati a partire dalle 2860 regole Snort Strumenti ▪Rule2alert: tool in grado di generare file.pcap a partire da regole Snort Ambiente ▪Configurazione stand-alone su una sola macchina (Snort agisce a livello applicativo) Risultati del test: ▪Snort allerta 1617 alert sui 2181 pacchetti inviati – Oracolo 23
14.2 Testing Snort Test traffico normale ▪Dati di test: pattern di traffico (normal usage) di diversi protocolli Strumenti ▪Snort: funzionalità dell’IDS in grado di valutare particolari file.pcap Ambiente ▪Configurazione stand-alone su una sola macchina (Snort agisce a livello applicativo) 24 Risultati del test PROTOCOLALERTPACKETS BITTORENT153 HTTP043 LDAP013 MYSQL457 SIP & RTP332 SNMP3089 PPPOE028 TELNET092
15.1 Testing iptables Test traffico malevolo ▪Dati di test: 2181 pacchetti generati a partire dalle 2860 regole Snort ▪Rilassamento regole (tavola RAW, catena PREROUTING, no porte e no stato connessione) Strumenti ▪Rule2alert: tool in grado di generare file.pcap a partire da regole Snort ▪Tcpreplay: suite di tool in grado di modificare e riprodurre pacchetti di traffico Ambiente ▪Configurazione con due macchine fisiche connesse alla stessa LAN (1 macchina «attacker» e 1 macchina configurata con iptables) Risultati del test: ▪Iptables logga 883 alert sui 2181 pacchetti inviati 25
15.2 Testing Iptables Test traffico normale ▪Dati di test: pattern di traffico (normal usage) di diversi protocolli Strumenti ▪Tcpreplay: suite di tool in grado di modificare e riprodurre pacchetti di traffico Ambiente ▪Configurazione con due macchine fisiche connesse alla stessa LAN (1 macchina «attacker» e 1 macchina iptables) 26 Risultati del test PROTOCOLALERTPACKETS BITTORENT4653 HTTP6843 LDAP13 MYSQL2957 SIP & RTP632 SNMP1689 PPPOE028 TELNET4192
PROTOCOLSNORTIPTABLES BITTORENT146 HTTP068 LDAP013 MYSQL429 SIP & RTP36 SNMP3013 PPPOE00 TELNET Risultati del Testing 27 Traffico normale
17. Conclusioni S2ipt è un tool che consente di configurare in maniera semplice e trasparente un firewall Iptables sulla base delle regole Snort della relativa community. ▪Potenza sintassi Snort ▪Supporto della community Snort ▪Efficienza kernel Linux ▪Semplicità comandi iptables Possibili sviluppi futuri (s2ipt 2.0): ▪Ulteriore separazione dei flussi (chain aggiuntive INPUT e OUTPUT) ▪Traduzione basata su sid (opzione aggiuntiva) ▪Raffinamento del processo di traduzione ▪Supporto traduzione per altri IDS 28
18. Riferimenti Per ulteriori informazioni: Any question?