
Opensvp è uno strumento di sicurezza che implementa "attacchi" per poter testare la resistenza dei firewall agli attacchi a livello di protocollo.
Opensvp è uno strumento di sicurezza che implementa "attacchi" per poter testare la resistenza di un firewall ad attacchi a livello di protocollo. Implementa attacchi classici e alcuni nuovi tipi di attacco contro i gateway a livello applicativo (chiamati helper nel mondo Netfilter).
Per esempio, opensvp è in grado, in alcune condizioni (vedi spiegazione sotto per i dettagli), di aprire un pin hole in un firewall che protegge un server ftp: anche se la politica di filtraggio garantisce che solo la porta 21 sia aperta verso il server, puoi aprire una porta 'qualsiasi' sul server usando opensvp.
Supponiamo che 192.168.2.3 sia un server che esegue ftp, posizionato dietro un firewall. Se l'utente, come root, esegue::
opensvp --attacker -t 192.168.2.3 --helper ftp --port 23 -v -i eth0
Avrà quindi un accesso temporaneo sulla porta 23 del server, indipendentemente dalle regole del firewall.
Il documento "Secure use of iptables and connection tracking helpers" https://home.regit.org/netfilter-en/secure-use-of-helpers/ descrive il metodo di protezione contro questo tipo di attacco.
Vedi il capitolo seguente per una descrizione precisa dell'attacco implementato.
Trovandosi su una rete direttamente connessa al firewall tramite l'interfaccia eth0, l'attaccante può eseguire il seguente comando ::
opensvp --attacker -t 192.168.2.3 --helper ftp --port 23 -v -i eth0
192.168.2.3 è l'indirizzo del server FTP e 23 è la porta che si vuole aprire sul server.
È quindi possibile connettersi a 192.168.2.3 sulla porta 23 dopo un attacco riuscito.
È possibile che un client invii un messaggio di comando contraffatto che viene interpretato come possibile apertura di connessione dinamica da parte dei firewall.
È possibile usare un server standard per inviare l'attacco, ma con un server personalizzato si conoscerà la trasformazione operata dall'eventuale gateway NAT.
Una sessione tipica è la seguente. Sul server che ha indirizzo IP 1.2.3.4, puoi eseguire ::
$ opensvp --server --helper irc -v
Sul client, puoi quindi eseguire ::
$ opensvp --client -t 1.2.3.4 --helper irc --port 23 -v 2.3.4.5:23 should be opened from outside
Sul server viene visualizzato il seguente messaggio ::
You should be able to connect to 2.3.4.5:23
Qui 2.3.4.5 è l'indirizzo pubblico del client.
Sull'attaccante, devi avviare opensvp e indicare quale coda Netfilter viene usata e quale interfaccia di output ::
Devi quindi usare iptables per inviare nello spazio utente il traffico che vuoi nascondere al meccanismo di riconoscimento dei protocolli ::
iptables -I INPUT -p tcp --sport 443 -j NFQUEUE iptables -I OUTPUT -p tcp --dport 443 -j NFQUEUE
Quando hai finito, premi CTRL+C per interrompere il processo di attacco.
Alcuni protocolli di rete usano connessioni multiple per lo scambio tra un client e un server. L'esempio più noto è ftp, dove i comandi passano attraverso una connessione sulla porta 21 e dove lo scambio di dati avviene con due modalità diverse (connessione dalla porta 20 o connessione dinamica).
Alcune implementazioni di firewall implementano gateway a livello applicativo (ALG) per essere in grado di rilevare questa connessione parallela e autorizzarla dinamicamente. Altre soluzioni consistono nell'usare un relay applicativo (proxy trasparente) o nell'aprire tutti i flussi possibili (leggere quasi tutto).
L'ALG analizza il traffico, rileva e analizza i comandi inviati tra i peer per dichiarare i parametri delle connessioni parallele. Una volta fatto, aprono temporaneamente dei pin hole nel firewall per far passare il traffico probabile.
L'idea di questo attacco è di forgiare questo tipo di messaggi per aprire pin hole nel firewall, ma pin hole che non avrebbero dovuto essere aperti.
Condizione:
La sequenza è la seguente:
Uno sniffer sulla rete dell'attaccante cattura un pacchetto dal flusso del protocollo
Il pacchetto contraffatto viene inviato sull'interfaccia connessa al firewall
Il firewall trasmette il pacchetto al client e ora si aspetta un pacchetto con caratteristiche basate sull'input dell'attaccante
Questo attacco è un'applicazione diretta del principio descritto. Una volta ricevuto il pacchetto dati, l'attaccante invia un comando DCC contraffatto.
In questo attacco, la connessione del client viene aperta dall'attaccante. Egli si connette al server ftp dietro un firewall e avvia una connessione reale. Una volta stabilita la sessione, lancia l'attacco inviando un comando 227 contraffatto.
Se viene usato IPv6, lo stesso attacco viene eseguito con un comando 229 contraffatto.
Possibile bersaglio
Il vincolo principale di questi attacchi è che l'attaccante deve trovarsi su una rete
direttamente connessa al firewall.
Quindi, le possibilità principali sono:
* Attacco da una LAN di un utente
* Attacco in una server farm
Entrambi i casi possono portare a una grave esposizione di informazioni, dando all'attaccante accesso a
servizi non protetti.
Linux
~~~~~
Questo attacco è noto per funzionare sui firewall Netfilter IPv4 se rp_filter è impostato a
0 (si spera che non sia il valore predefinito).
Attualmente non esiste un'implementazione del reverse path filtering per IPv6, il firewall
quindi non è protetto e la protezione deve essere configurata nelle regole del firewall (vedi
prossimo capitolo).
Alcuni software firewall sono noti per essere vulnerabili:
* fwbuilder: deve essere impostata una politica specifica
* shorewall: le versioni recenti risolvono il problema
* edenwall: vulnerabile
L'attacco funziona sia per i firewall gateway che per quelli locali. Su un firewall locale, il filtraggio
FORWARD deve essere attivato e una regola ESTABLISHED ACCEPT deve essere impostata su
questa catena. Questo potrebbe essere il caso di sistemi che eseguono macchine virtuali.
Difesa dall'attacco
===================
Linux
-----
Vedi il seguente documento dedicato all'argomento: https://home.regit.org/netfilter-en/secure-use-of-helpers/
Altri sistemi operativi e dispositivi
-------------------------------------
Il requisito di base è attivare un rigoroso anti-spoofing e controllare il caricamento delle ALG, se possibile.