# Spoofing

Lo spoofing è un tipo di attacco informatico che impiega in varie maniere la falsificazione dell'identità (spoof). Lo spoofing può avvenire a qualunque livello della pila ISO/OSI e può riguardare anche la falsificazione delle informazioni applicative.

## Descrizione
### Utilizzo

Questa tecnica di attacco può essere utilizzata per falsificare diverse informazioni, come ad esempio l'identità di un host all'interno di una rete o il mittente di un messaggio. Una volta che un attaccante riesce ad impersonare qualcun altro all'interno di una rete gli è possibile intercettare informazioni riservate, diffondere informazioni false e tendenziose o effettuare qualsiasi tipo di attacco. Risulta particolarmente efficace combinata a tecniche di social engineering per ottenere l'accesso ad informazioni "riservate" e credenziali degli utenti. Social media scammers o phishers possono usare questa tecnica ad esempio per convincere un utente a connettersi ad un server malevolo intercettando così le sue credenziali.

### Contromisure

Ci sono diverse tecniche per tutelare una rete da accessi indesiderati. Esempi significativi di queste tecniche sono l'adozione dello standard IEEE 802.1x per l'autenticazione o l'utilizzo di NAC (Network Access Control) che prevede oltre all'autenticazione gestita ad alto livello, una serie di controlli sul dispositivo, come la presenza di software incompatibile con l'architettura di rete. Tuttavia la vulnerabilità più grande a cui una rete rimane esposta è l'utente. Molti attacchi infatti, a reti che non hanno particolari bug tecnologici da sfruttare, avvengono puntando sul fattore umano, sulle vulnerabilità comportamentali di una persona. Lo spoofing ad alto livello sfrutta spesso tecniche di ingegneria sociale e può essere utilizzato sia per colpire l'utente finale rubando credenziali di social o di conti correnti, sia per utilizzare l'utente finale per entrare in reti a cui normalmente non si sarebbe autorizzati ad accedere. Oltre all'adozione di tecniche come SPF, filtri sui contenuti o Greylisting la consapevolezza dell'utente finale è una fondamentale contromisura a questo tipo attacco.

## Tipologie di spoofing

Esistono diversi tipi di attacchi spoofing a diversi livelli del modello a strati TCP/IP. Si tratta di spoofing ogni qualvolta si fa credere all'interno di una rete di essere qualcosa di diverso rispetto a quello che si è effettivamente: un hostname, un indirizzo ethernet o un server "pirata".

### Spoofing a livello 2 (Network Access Layer)

Questo livello dello stack TCP/IP incapsula i livelli fisico a data link (1 e 2) del modello ISO/OSI.

#### MAC Spoofing

Consiste nella falsificazione dell'indirizzo MAC di un dispositivo.

##### Esempi di utilizzo

* MAC Flooding: un attaccante manda continuamente pacchetti in rete con un MAC non suo. Questo attacco satura il forwarding database dello switch causandone malfunzionamenti cioè forzando il successivo broadcast in tutta la rete.
* Port Stealing: l'uso da parte di un attaccante di un MAC Address di un host vittima è finalizzato al furto della porta dello switch dedicata all'host vittima.

#### ARP Spoofing

È una tecnica utilizzabile da un attaccante che prevede l'invio di messaggi ARP su una rete locale generalmente al fine di associare il proprio indirizzo MAC all'IP di un altro host (ad esempio il gateway predefinito) intercettando quindi tutto il traffico ad esso destinato.
Un tool per prevenire e bloccare questo attacco è ArpON "ARP handler inspection". ArpON è un demone portabile che rende il protocollo ARP sicuro contro attacchi Man in The Middle (MITM) attraverso tecniche ARP Spoofing, ARP Cache Poisoning, ARP Poison Routing (APR).

### Spoofing a livello 3 (Internet Layer)

Questo livello dello stack TCP/IP coincide con il livello di rete (3) della pila ISO/OSI.

#### IP Spoofing

Consiste nella creazione di un pacchetto IP nel quale viene falsificato l'indirizzo IP del mittente. In generale è semplice falsificare un indirizzo in quanto il protocollo non implementa alcun sistema di sicurezza. In questo caso abbiamo routing asimmetrico perché un eventuale pacchetto di risposta viene inviato al vero IP. Gli ISP possono attivare diversi sistemi di sicurezza per impedire l'IP spoofing. Uno di questi consiste nell'impedire che da una interfaccia (di un router/firewall) siano inviati pacchetti in cui l'IP sorgente non è quello che ci si aspetta. Un altro metodo consiste nell'uso delle tabelle di routing. Se l'interfaccia di provenienza per un pacchetto non è la stessa che verrebbe scelta dal router per l'inoltro del pacchetto di risposta allora questo pacchetto è scartato. Questa tecnica si chiama uRPF (unicast Reverse Path Forwarding).

### Spoofing a livello 4 (Transport Layer)

Questo livello dello stack TCP/IP coincide con il livello di trasporto (4) nella pila ISO/OSI. Non è rilevante in fase di autenticazione, quindi non si parla di UDP/TCP spoofing, ma di attacco di IP-spoofing portato verso uno di questi due protocolli.

#### Spoofing UDP

È analogo al caso IP. Essendo UDP un protocollo connectionless la falsificazione di un datagram UDP consiste nell'immettere le informazioni desiderate e falsificare l'header.

#### Spoofing TCP

Lo spoofing di una sessione TCP è decisamente più complesso del caso UDP. TCP è infatti un protocollo connection oriented che richiede di stabilire una sessione tramite il three way handshake. Se è forgiato un pacchetto SYN con l'indirizzo IP falsificato e questo è inviato ad un server, prima che sia possibile inviare i dati il server cercherà di portare a termine l'handshake rispondendo con un pacchetto SYN/ACK. Questo pacchetto riporterà l'indirizzo IP falsificato, quindi non sarà rinviato all'attaccante che non potrà rispondere con il terzo e ultimo pacchetto (il pacchetto ACK). Per portare a termine questo attacco è necessario inviare un pacchetto ACK al server che non solo riporti nuovamente l'indirizzo IP falsificato, ma anche il sequence number che il server ha inserito nel pacchetto SYN/ACK. Per scegliere questo numero l'attaccante deve sapere come il server li sceglie. Siccome l'attaccante invia il primo e il terzo pacchetto senza vedere il secondo, questo attacco si chiama blind spoofing. Una trattazione approfondita sulla predizione dei numeri di sequenza è fatta da lcamtuf in e in.

### Spoofing a livello 7 (Application Layer)

In questo livello rientrano le tecniche di spoofing destinate a colpire i protocolli dei livelli di sessione, presentazione o applicazione (rispettivamente 5, 6 e 7) della pila ISO/OSI o le applicazioni stesse.

#### Email Spoofing

Consiste nella falsificazione dell'indirizzo del mittente in una email. Utilizzato per la diffusione di Email spam, Malware e come base per il Phishing.

#### WEB Spoofing

Quando lo spoofing coinvolge il web (server applicativo, host server o protocolli web) si parla di web spoofing. Nell'accezione più comune il web spoofing riguarda la falsificazione di un server web per far credere ad un utente di essere connesso ad un certo server mentre è connesso ad un server malevolo.
Descriviamo la tecnica nel caso in chiaro (non TLS). La prima azione che deve effettuare un attaccante per redirigere un client verso un server falso (anche chiamato shadow server o server ombra) è di falsificare l'associazione tra l'indirizzo web e l'indirizzo IP. Questa operazione è effettuata tramite un attacco di dns poisoning. A questo punto l'attaccante ha fatto credere al client che l'indirizzo del server vero sia quello del server falso. L'attaccante ha costruito in precedenza un server falso che può
* contenere una copia del server vero (ogni pagina è stata copiata in locale sul server ombra)
* rigirare pagina per pagina le connessioni del client verso il server vero
In entrambi questi casi quello che ottiene l'attaccante è di fingersi il server vero, catturando per esempio credenziali di accesso. La creazione dello shadow server è uguale a ciò che si fa nel phishing, ma in questo caso c'è stato un preventivo attacco diretto al client.
Nel caso TLS la cosa si complica: bisogna violare il sistema crittografico di TLS. Siccome gli algoritmi sono difficilmente violabili, un attaccante opera un attacco a metà tra l'informatica e il social engineering. L'attacco si svolge in tutto e per tutto come il caso senza TLS, ma l'opzione scelta è quella di rigirare le connessioni verso il server vero. Quando il client riceve il certificato del server esso dovrebbe verificarne l'autenticità. L'attaccante quindi genera un certificato server falso, totalmente uguale al certificato vero, ma non firmato dalla stessa CA. L'utente quindi riceve un certificato valido a prima vista, e solo un'analisi approfondita rivela la sua falsità. L'attaccante potrebbe rendere ancora più ardua l'identificazione usando una CA falsa, uguale a quella vera (cioè con stessi nomi, identificativi, ecc.). Se l'utente non è sufficientemente a conoscenza del problema può cliccare per accettare anche se la prova crittografica non è completa. A questo punto il server dell'attaccante fa una connessione al server vero agendo da proxy e intercettando le comunicazioni. Questo è l'attacco man in the middle. Alcuni tool che offrono la possibilità di compiere questo attacco sono dsniff ed ettercap mentre un tool per prevenirlo e bloccarlo è ArpON "ARP handler inspection". ArpON è un demone portabile che rende il protocollo ARP sicuro contro attacchi Man in The Middle (MITM) attraverso tecniche ARP Spoofing, ARP Cache Poisoning, ARP Poison Routing (APR).

#### DNS Spoofing

Il DNS Spoofing è un attacco informatico che prevede l'intercettazione di query dirette al server DNS e l'invio di una risposta fasulla, diversa da quella che avrebbe dato il vero server DNS, tipicamente al fine di deviare il traffico verso server malevoli. Un risultato di questo tipo si può ottenere anche con un attacco di tipo DNS cache poisoning, senza impersonificare esplicitamente il server DNS della rete.

#### Referer Spoofing

Consiste nella falsificazione del referer in una richiesta HTTP, al fine di evitare che un sito ottenga informazioni precise sulla pagina web visitata in precedenza dall'utente. Questa tecnica risulta utile in caso di siti che rendano possibile l'accesso alle loro pagine solo da determinate pagine di provenienza.

#### Caller ID Spoofing

Consiste nella falsificazione dell'identificativo del chiamante in una chiamata VoIP. Molti siti offrono servizi di questo tipo. Le chiamate contraffatte possono provenire da altri paesi. Questo limita l'efficacia delle leggi contro l'uso di questa tipologia di spoofing per promuovere una truffa, in quanto le leggi del paese del ricevente potrebbero non essere applicabili al chiamante. In alcuni casi, vi è la possibilità di ricevere chiamate dal proprio numero di telefono o che malintenzionati chiamino altre persone utilizzando il numero di telefono di un utente. L'intenzione è quella di sottrarre dati e informazioni sensibili attraverso l'impiego di tecniche di ingegneria sociale.