Attacchi al Firewall


Nei laboratori del dipartimento di informatica dell'università di Salerno si è sperimentata una serie di attacchi ad una macchina vittima su cui è stato configurato un firewall IPCHAINS, la piccola rete era come mostrato in figura.

 

Gli attacchi che sono stati sprerimentati sono :

Ping

Spoofing

Trojan Horse

Dos (Denial of Service)

Chiusura delle Porte


Ping

Questo non è un vero e proprio attacco ma è semplicemente un ping eseguito sulla macchina protetta dal firewall prima e dopo la protezione, al fine di capire meglio come funziona il firewall. Si supponga di fare un ping da bettega su collovati, con il comando:

home/user1> ping 193.205.161.189

o anche direttamente

home/user1> ping collovati

Per qualsiasi configurazione di firewall è inizialmente consigliabile porre a deny le regole di default nelle catene di INPUT, FORWARD e OUTPUT per poi aggiungere le regole di accesso in ordine prioritario. In questo modo il controllo delle impostazioni del firewall risulta più leggibile per l'amministratore della rete.
La schermata seguente mostra come sia inizialmente configurato il firewall su collovati.

Successivamente cancelliamo la regola che accetta i pacchetti ICMP in INPUT da bettega destinati a chiunque lasciando solo la regola che accetta pacchetti ICMP in OUTPUT da collovati destinati a chiunque.


A questo punto collovati non riceverà la ping request da bettega il quale non otterrà risposta.

Reintroduciamo ora su collovati la regola di accettazione dei pacchetti di tipo ICMP in INPUT

Chiaramente ora bettega otterra' risposta ai pacchetti ICMP che collovati prima non replicava.

Nell'esempio, al termine del ping da bettega, notiamo come ipchains su collovati abbia bloccato i pacchetti ICMP senza far pervenire alcuna risposta alla fonte. I pacchetti intercettati dal firewall non vengono rifiutati (REJECT) bensì totalmente ignorati (DENY). Infatti, come evidenziato dal report finale del ping, bettega ha inviato 32 pacchetti ICMP dei quali solo 19 hanno avuto risposta mentre il 40% dei pacchetti sono andati perduti.


Spoofing

Questo esempio si base su una rete diversa da quella precedente con indirizzi di host pari a 192.168.0.x

Lo spoofing degli IP e' un attacco secondo il quale un host invia dei pacchetti che dichiarano di provenire da un altro host. Siccome il filtro dei pacchetti prende le decisioni in base all'indirizzo di provenienza, lo spoofing degli IP serve a far saltare i filtri sui pacchetti. E' anche utilizzato per mascherare l'identità di chi sferra l'attacco, utilizzando gli attacchi SYN, Teardrop, Ping of Death (ping della morte) e altri simili.


Ecco un esempio di attacco spoofing:

Il firewall prende decisioni in base agli indirizzi di provenienza del pacchetto, è facile quindi per il malintenzionato spacciare il proprio pacchetto maligno per un pacchetto appartenente a qualcuno di fiducia per la vittima.

IPCHAINS CONTRO SPOOFING

Si chiede al firewall di bloccare tutti i pacchetti con indirizzo sorgente 192.168.*.* nel caso non provengano dall'interfaccia di loopback (la sola da cui è normale che arrivino) tramite la regola:

ipchains -A input --interface ! lo -s 192.168.0.0/28 -j DENY


In questo modo però blocchiamo tutti gli accessi dalla rete 193.168.*.*, chiudere le porte a tutti indistintamente spesso non è la soluzione ideale. È bene quindi accertarsi della legittima provenienza di un pacchetto con altri metodi quali autenticazioni o uso di password. Normalmente il pacchetto lo si accetta comunque e lo si esamina prima di usarlo.


Trojan Horse

Un trojan, da non confondere con il virus che è un'altra cosa, e' un programma viene allegato ad un altro programma: quando si esegue questo programma 'portatore' si esegue senza accorgersene anche il trojan. Oltre al Back Orifice, rientrano in questa categoria anche programmi come NetBus e TeleCommando. Il nome ovviamente deriva dal mitico Cavallo di Troia, che dentro l'apparenza di un dono di pace celava gli uomini che avrebbero distrutto la citta' stessa.

Come indicato in figura, il Trojan Horse si pone in ascolto su una porta libera in attesa. Chi attacca può arrivare a prendere in accesso remoto la vittima, oppure limitarsi a sniffing. Alcuni Trojan sono in grado di inviare di nascosto e-mail di report contenenti informazioni sulle password del sistema i servizi attivi e tutte ciò che è ritenuto utile ai fini dell'attacco. Si vede ora come difenderci da un attacco tanto efficace.

ipchains -A input -p tcp -y -d 0/0 1024:65535 -j DENY

Con questa regola si bloccano quindi tutti i pacchetti TCP entranti verso le porte da 1024 a 65535 con flag SYN attivo(-y). Ciò significa evitare che un processo che non possiede i permessi di root possa mettersi in ascolto su una porta TCP.


DoS ( Denial of Service )

Gli attacchi di DoS si manifestano andando ad esaurire risorse hardware della vittima, quali lo spazio su disco, la memoria e la CPU: ciò è ottenibile spedendo pochi pacchetti malformati che mandano in crash il sistema remoto. Il più noto tra le utility utilizzato per questo genere di attacco è nuke e il più popolare WinNuke, che manda in crash il famoso OS della casa di Redmond (WinNuke è ancora in grado di mandare in crash molte macchine desktop Win95 e server NT se non hanno applicato le opportune patch).

Il primo (e il più abusato) prodotto di DoS (Denial of Services) che ha acquisito notorietà è stato lo smurfing attack che tutt'oggi è in grado di paralizzare reti con tecnologie non aggiornate (generalmente piccole/medie aziende e ISP locali). The LowDown, conosciuto anche come Network Saturation Attack o Bandwidth Consumption Attack, è una tipologia di attacco DoS in grado di inondare un network di un numero impressionante di pacchetti. I router e server che subiscono l'attacco, nel tentativo di gestire correttamente il traffico compiono un eccessivo lavoro che li mette in crisi. Ovviamente l'eccesso di traffico ostile rende impossibile anche il traffico lecito (posta, web, ecc.) bloccando quindi in pochi minuti intere reti.

Il cugino dell'attacco "smurfing" si chiama "fraggle", usa i pacchetti echo UDP nella stessa maniera dei pacchetti echo ICMP; è una semplice riscrittura dello "smurfing".

La generazione successiva (quella attuale) è quella dei Distributed Denial of Service (DDoS) attack. Spingendo all'eccesso l'idea del network saturation attack, il DDoS ripete lo stesso approccio utilizzando però diversi punti d'ingresso contemporanei: in questo modo un hacker è in grado di mettere in ginocchio sistemi più grandi che sarebbero indifferenti ad un singolo flood (ovvero che non risultano saturabili da un attacco perpetrato da una singola postazione). Per effettuare questo genere di operazione si deve poter installare un proprio agente sui sistemi da cui si vuole scatenare l'attacco stesso. È quindi una tecnica che necessita di una fase di preparazione, attrezzandosi con un pool di macchine compromesse da poter scagliare contro il sistema vittima.

In pratica l'attacco perpetrato utilizzando la tecnica Distributed Denial of Services attack (DDoS) prevede che vengano attivate un numero elevatissimo di false richieste da più macchine allo stesso server consumando in tal modo le risorse di sistema e di rete del fornitore del servizio. In seguito a un attacco DDoS il provider affoga letteralmente sotto le richieste e non è più in grado di erogare i propri servizi, risultando quindi irraggiungibile. Per dare un'idea del livello di traffico generabile da un attacco DDoS, si consideri che alcuni dei network provider coinvolti nell'attacco sono stati letteralmente sommersi da oltre 1 Gb al secondo di traffico.

Una volta che ci si è procurati tutte le pach e gli aggiornamenti per il sistema operativo in rete, la difesa da attacchi di questa portata può essere efficacemente apportata da regole antismurf aggiunte alle catene del firewall.

Per l'esempio indicato in figura, perpetuiamo un attacco DoS con bombardamenti di pacchetti echo broadcast a sorgente falsa su tutte le macchine della rete.

ipfw può essere usato da linux per bloccare gli echo broadcast, qualunque sistema con ipfw può essere protetto aggiungendo regole come:

ipfwadm -I -a deny -P icmp -D 192.168.0.0 -S 0/0 0 8
ipfwadm -I -a deny -P icmp -D 192.168.0.255 -S 0/0 0 8

dove sostituiremo 192.168.0.0 e 192.168.0.255 rispettivamente con proprio il numero di rete e indirizzo broadcast. I valori 0 e 8 indicano rispettivamente tipi di pacchetti ICMP usati dal ping: Echo Request e Echo Reply.


Chiusura delle porte

Terminiamo con una dimostrazione effettuata nei laboratori del dipartimento di Informatica ed applicazioni dell'Università di Salerno. Nell'esempio riportato procediamo con uno scanning port da bettega su collovati con nmap V. 2.53. Come mostrato in figura l'nmap riporta lo stato delle porte su cui sono attivi i servizi, oltre al numero di porte scannerizzate (1508).
L'intento di collovati è quello di bloccare l'accesso alla porta 21 standard del servizio FTP a bettega.

Evidenziamo qui lo stato di ipchains su collovati: inizialmente tutte le porte sono aperte per bettega; aggiungiamo quindi la regola per bloccare l'accesso di bettega alla porta 21 dell'FTP.

ipchains -I input -p TCP -y -s bettega -d 0/0 21:21 -j REJECT

Ipchains nasconde così ad un nuovo portscanning con nmap da bettega la porta 21 come evidenziato in figura. Notiamo a conferma di ciò come numero di porte scannerizzate è ovviamente diminuito di un'unità