# Smurf

Lo Smurf è un tipo di attacco su rete Internet volto a causare un denial of service, sovraccaricando il computer vittima con numerosi messaggi provenienti da molti altri nodi della rete, in risposta a false richieste che vengono spacciate per richieste della vittima stessa.
Il nome deriva dal nome inglese dei Puffi e si riferisce al fatto che molti piccoli agenti insieme possono ottenere un grosso risultato.

## Funzionamento

Ad ogni nodo connesso in rete è associato un Indirizzo IP univoco. La struttura del protocollo IP non impedisce lo spoofing degli indirizzi IP, questo permette a un qualsiasi nodo di generare un pacchetto con indirizzo IP mittente arbitrario. Di conseguenza è possibile l'invio di un pacchetto IP dal proprio nodo, usando l'indirizzo IP di una seconda macchina presente in rete. Una tipologia di richiesta d'informazione del protocollo di diagnostica ICMP (Internet Control Message Protocol) consente l'invio di richieste di eco (ECHO_REQUEST) al fine di:
* Stabilire se è possibile la comunicazione a livello IP tra due nodi
* Verificare l'esistenza di un nodo in una rete
* Calcolare in termini di tempo la distanza che intercorre tra due nodi
L'attacco Smurf consente l'invio pacchetti ICMP ECHO_REQUEST (tipo 8), generalmente denominati ping, con indirizzo mittente "spoofato" e corrispondente all'indirizzo IP del "computer vittima" (target), a una serie di gateway.
Il gateway malconfigurato riceve il ping e lo instrada a tutti i nodi connessi alla propria sottorete, i quali invieranno un pacchetto di risposta ECHO_REPLY (tipo 0) all'indirizzo IP mittente. In una rete broadcast a multiaccesso (come ad esempio reti di provider) centinaia di macchine connesse potrebbero rispondere ad ogni pacchetto.
Gli indirizzi destinati al gateway generalmente sono quelli con la porzione dedicata all'host con i bit tutti ad 1. Ad esempio, l'indirizzo IP di broadcast della rete 10.0.0.0 è 10.255.255.255.
Generalmente l'attacco smurf risulta efficace utilizzando numerosi gateway. I fautori dell'attacco necessitano quindi di broadcast list (smurf amplifier), generalmente file di testo contenenti una lista di indirizzi IP corrispondenti a gateway malconfigurati presenti in rete. Questo attacco, a causa del fatto che "amplifica" la quantità di dati usati dall'attaccante, fa parte dei cosiddetti amplification attack.
Tale tecnica consente di generare molto traffico, soprattutto considerando che i messaggi ICMP sono incapsulati in un datagram IP, che consente l'inserimento di dati opzionali, e nel caso di richieste eco (ECHO_REQUEST), tali dati saranno replicati nei messaggi di risposta.
Il nodo vittima (target) riceverà un flood di pacchetti ICMP da numerosi indirizzi IP. Gli effetti di questo attacco si verificano in:
* Saturazione della banda disponibile e quindi disconnessione delle connessioni TCP
* Disconnessione dalla rete in connessioni analogiche
* Crash dei firewall software
* Crash di sistemi operativi obsoleti

## Storia

L'attacco Smurf si diffonde in rete intorno alla fine degli anni 90. Gli attackers generalmente miravano al flood di servers IRC e di numerosi utenti ad essi connessi, spesso al fine di ottenere il possesso di un canale IRC (take over); questo perché i demoni IRC più usati non consentivano l'opzione di masking degli indirizzi IP degli utenti connessi, lasciando tali indirizzi di fatto visibili all'utenza stessa. Altri fenomeni di cybercrime tramite smurf si verificavano al fine di portare in downtime un server (anche server destinati all'hosting di siti web, shell provider.. etc.), in modo da rendere tale server irraggiungibile in rete.
Ad oggi, l'attacco smurf è ancora possibile, nonostante siano diminuiti drasticamente i gateway malconfigurati, questo anche grazie a numerose società produttrici di routers che hanno disabilitato di default il broadcasting dei pacchetti ICMP sui propri prodotti di rete.

## Diffusione
### Diffusione su Microsoft Windows

Originariamente il programma che permetteva l'attacco smurf era un software opensource scritto in C per sistemi operativi unix-like (Posix standard), come Linux o BSD. In un secondo momento seguendo lo schema di costruzione del pacchetto ICMP e l'algoritmo utilizzato per l'attacco, furono creati diversi software, tali da consentire attacchi smurf anche a partire dal sistema operativo Microsoft Windows.
Numerosi software che consentivano l'attacco smurf, furono inseriti nei database degli antivirus più noti in commercio, al fine di limitare la diffusione degli attacchi e di scoraggiare gli attackers stessi.
L'attacco è stato possibile sui sistemi operativi Microsoft fino al rilascio della Service Pack 2 per Windows XP, la cui patch disabilitava di fatto, la possibilità di creare RAW Sockets, e di conseguenza di manipolare i pacchetti IP. Da quel momento non fu più possibile gestire lo spoofing dei messaggi ICMP e chi avesse voluto provare ad utilizzare ugualmente lo smurf sarebbe rimasto vittima del suo stesso attacco.

### Diffusione su Linux

Il primo vero smurfer per Linux è considerato il Papasmurf, programma scritto nel linguaggio C, pubblicato il 28 luglio 1998 come software open source, creato dall'hacker TFreak membro del gruppo rootshell e promosso dal portale di sicurezza informatica PacketStorm Security. Ad oggi Papasmurf risulta ancora funzionante sui sistemi operativi GNU/Linux.
Questo programma fu oggetto di abuso da parte di lamer e script kiddie.

## Broadcast list

Durante l'evoluzione di Internet si sono susseguiti diversi siti e team che riportavano liste di reti malconfigurate, ovvero reti i cui gateway permettevano il broadcasting dei pacchetti ICMP. Il più famoso è l'ormai inattivo Netscan.org che forniva liste in numerosi formati testuali. Ancora attiva invece è la norvegese Powertech, provider e società di consulenza informatica, che scansiona la rete al fine di trovare bug nei network e fornisce informazioni sulle liste broadcast mettendo a disposizione un database SAR (Smurf Amplifiers Registry).

## Contromisure
### Smurf Amplifiers
#### Client

Singoli computer appartenenti ad una rete possono essere protetti dal diventare amplificatori di attacchi smurf, semplicemente impostando il blocking dei pacchetti ICMP in ingresso, di conseguenza non risponderanno più ad alcun Ping.
Numerosi firewall software (tra cui quello in bundle con Windows) incorporano già questa funzionalità di default.

#### Router

Configurare il router in modo da non redirigere i pacchetti via broadcast. Dal 1999 lo standard relativo al broadcast sui router fu cambiato affinché i pacchetti non fossero più instradati a tutti i nodi di rete È possibile limitare la banda da destinare al servizio ICMP tale da diminuire l'amplificazione attivando la funzione di CAR (Committed Access Rate) presente su IOS a partire dalla versione 11.1CE.
Al fine di non essere utilizzati da terzi per l'amplificazione di un attacco smurf nei vecchi routers Cisco il comando da applicare che evita l'instradamento su broadcast dei pacchetti è:
Nelle versioni più recenti di IOS tale funzione è attivata di default.
Una possibile soluzione per la sottorete alla quale appartiene il nodo dell'attacker potrebbe essere quella di filtrare i pacchetti al fine di verificare l'appartenenza alla sottorete.

#### Linux

Per impedire a un sistema operativo basato su GNU/Linux di rispondere alle richieste broadcast di ECHO, è possibile attivare il firewall a livello di kernel utilizzando il comando:
Una valida protezione è ottenuta installando il modulo kernel AngeL (che impedisce la generazione di pacchetti di numerosi attacchi DoS) ad opera del team Sikurezza.org

#### Unix

Nei sistemi operativi basati su Unix è necessario disattivare inserendo un # prima del nome:
nel path:

### Vittima

Generalmente un firewall risulta comunque inutile durante un flood: nonostante i pacchetti in eccesso siano tralasciati, la banda a disposizione è ugualmente saturata. È virtualmente possibile con la collaborazione dell'ISP di una rete dalla quale provengono gli attacchi procedere ad una investigazione "al contrario", passando per gli ISP dei vari gateway di passaggio al fine di individuare la rete iniziale da cui sono partiti i pacchetti e l'indirizzo fisico (MAC) dei pacchetti iniziali.

## Nomi alternativi

* Papasmurf
* VorteX
* WSmurf
* NSA (Network Saturation Attack)
* Smurf2K
* Winsmurf

## Variante UDP

È diffusa anche una variante dello smurf che utilizza come protocollo UDP (User Datagram Protocol) al posto di ICMP, nota con il nome Fraggle. Gli attacchi che utilizzano il protocollo UDP sono usati in quanto generano molto traffico sulla rete.
Ad esempio creando delle richieste DNS a diversi server si può ottenere una moltiplicazione del traffico generato.