Quando si parla di sicurezza informatica in rete si tende per lo più ad affrontare quegli aspetti che permettono di rafforzare le difese nei confronti di attacchi provenienti dall’esterno. Benché questo tipo di protezione perimetrale sia estremamente importante, le statistiche dimostrano che la maggior parte degli attacchi a sistemi e reti LAN aziendali vengono eseguiti dall’interno della rete stessa. I responsabili di tali azioni sono solitamente dipendenti curiosi o malintenzionati che agiscono a danno di altri colleghi e dei sistemi presenti sulla rete locale.
Questo tipo di attacco è spesso facilitato da vari fattori:
- gli amministratori di rete tengono in maggiore considerazione i pericoli esterni rispetto a quelli interni. Questo porta a proteggere in modo meno efficace le macchine e le risorse della LAN rispetto a quelle direttamente esposte su Internet.
- la possibilità di agire dall'interno incrementa la pericolosità degli attacchi a causa di intrinseche debolezze di alcuni protocolli usati in rete locale.
- sono disponibili liberamente su internet programmi che non richiedono specifiche competenze tecniche per compiere tali atti di pirateria.
Le vulnerabilità riscontrabili in una rete locale possono essere varie e molte possono esserne le cause. In questo articolo si è
dato risalto ad una particolare categoria di attacchi basati sulla manipolazione dei dati a livello del
protocollo ethernet. Attraverso queste tecniche è possibile intercettare il traffico diretto ad altri PC della LAN (sniffing), provocare attacchi DoS, falsificare la propria identità
per dirottare una connessione (hijacking), intromettersi nella
comunicazione tra due PC (man in the middle attack) e modificare il contenuto dei pacchetti in transito.
È evidente che quelle nominate sono azioni molto pericolose: viene messa in pericolo la privacy, la confidenzialità delle informazioni e la segretezza delle password non criptate che passano sulla rete; le stesse informazioni provenienti dal nostro pc possono essere modificate prima di arrivare a destinazione.
In questo primo articolo sugli attacchi in rete LAN si illustreranno i principi fondamentali su cui si basa il funzionamento delle reti ethernet; parleremo di reti hubbed, reti switched e impareremo alcune semplici tecniche di intercettazione. Nella prossima puntata analizzeremo in dettaglio come vengono portati a termine attacchi più sofisticati basati sulla manipolazione dei dati attraverso il protocollo ARP.
Il protocollo Ethernet
Ethernet si occupa di far comunicare tra di loro i sistemi informatici nella maggior parte delle reti LAN. In questa sezione si illustreranno i concetti fondamentali del protocollo necessari per capire le tecniche di attacco descritte più avanti.
Ogni sistema può inviare e ricevere dati grazie ad una scheda di rete (NIC – Network interface card) e ad un apposito cavo che collega le macchine tra di loro. Ogni scheda di rete possiede un indirizzo univoco, denominato MAC address, impostato in fabbrica dalla casa costruttrice. Non esistono due schede al mondo con MAC uguali tra loro.
Il MAC è composto da 6 byte (48 bit) espressi in notazione esadecimale e separati da un trattino (ad esempio: 00-E0-18-FF-59-7F
)
Dal punto di vista prettamente funzionale, prescindendo dalla particolare topologia
di rete adottata, una rete ethernet classica può essere schematizzata come un unico cavo su cui si affacciano tutti i sistemi tra loro
comunicanti. Poiché il cavo risulta condiviso ogni messaggio spedito arriverà contemporaneamente a tutte le macchine presenti sulla rete,
indipendentemente dall'effettivo destinatario. L’insieme di queste macchine viene definito dominio di collisione.
Ogni messaggio ethernet inviato sulla rete (detto anche trama o frame) porterà l’indicazione del MAC del sistema che lo ha spedito e di quello a cui è destinato.
Quando una scheda di rete riceve una trama controlla immediatamente l’indirizzo MAC del destinatario del messaggio e lo confronta con il proprio. Se coincidono i dati vengono passati al sistema per la decodifica dei protocolli di livello superiore; se sono diversi il messaggio viene ignorato poiché evidentemente risulta destinato ad un'altra macchina.
Quello che viene implementato quindi è un filtro hardware basato sui MAC address.
Reti hubbed e sniffing in modalità promiscua
Le più recenti reti locali di tipo ethernet presentano sempre una topologia a stella. Con questo si intende dire che ogni cavo proveniente da una scheda di rete confluisce in un apparato chiamato concentratore. Il concentratore è il centro della stella, i PC collegati ne rappresentano i vertici.
Nel caso più semplice il nostro concentratore è costituito da un dispositivo chiamato hub. L'hub non è altro che un ripetitore elettrico: non appena riceve
una trama su una delle sue porte provvede automaticamente a replicare il segnale su tutti gli altri rami. Questo
meccanismo permette di realizzare il concetto di dominio di collisione
in una rete con topologia a stella.
In condizioni normali abbiamo visto che solo i messaggi destinati ad un particolare sistema possono essere effettivamente letti dalla relativa scheda di rete. A scopo diagnostico è possibile però impostare la scheda nella cosiddetta modalità promiscua. In questa modalità
viene disabilitato il filtro hardware in modo da permettere all'interfaccia di decodificare tutte le trame e non solo quelle a lei destinate. Questa possibilità da origine al primo grave pericolo tipico di questo genere di rete.
È facile comprendere come appositi programmi, chiamati sniffer, associati ad una interfaccia impostata in modalità promiscua possano ricostruire il traffico dell'intero dominio di collisione. Sarà possibile leggere i dati in transito tra due macchine
della LAN ma anche intercettare eventuali dati diretti dalla rete interna verso Internet. In quest'ultimo caso sarà sufficiente monitorare attraverso lo sniffer le trame dirette
al sistema della rete locale che fa da gateway per l'esterno.
Tra i link presenti in fondo all'articolo sono forniti due riferimenti che
spiegano alcune tecniche utilizzabili per individuare sulla LAN un eventuale
sniffer che usa una scheda di rete in modalità promiscua.
Reti switched
Gli switch sono tipi di concentratori più evoluti rispetto agli hub. Il presupposto su cui si basa il loro funzionamento è quello che la maggior parte del traffico presente sulle reti hubbed risulta superfluo. Dal punto di vista della sicurezza e delle prestazioni globali
infatti sarebbe molto meglio che il concentratore smistasse i dati inviando ad ogni macchina il solo traffico a lei destinato invece che replicare passivamente le informazioni su tutti i rami della stella.
Gli switch adottano questa filosofia memorizzando in una tabella le associazioni tra le porte, cioè i connettori su cui sono collegati i rami della stella, e gli indirizzi MAC dei sistemi presenti su tali porte. La memoria interna contenente tali corrispondenze è denominata CAM table (Content Addressable Memory).
Quando un messaggio arriva sullo switch viene letto il MAC di destinazione presente nella trama ethernet, viene cercata una corrispondenza MAC-porta nella CAM e, se viene trovata, il pacchetto viene indirizzato unicamente verso la porta su cui risulta presente il destinatario.
Solo se il MAC non viene trovato nella memoria interna i dati vengono spediti su tutte le porte, esattamente come farebbe un hub.
I dati presenti nella CAM table sono solitamente aggiornati dinamicamente.
Quando una trama arriva sullo switch viene analizzato l'indirizzo MAC del mittente. Se questo non è presente nella memoria interna si provvede ad aggiornare la CAM creando un'associazione tra l'indirizzo e la porta su cui è arrivato il
messaggio.
Se per un certo lasso di tempo un indirizzo MAC presente nella memoria dello switch non risulta in nessun pacchetto in transito, si provvede a rimuovere la relativa voce dalla tabella per non occupare spazio inutilmente.
Attraverso uno switch è quindi possibile spezzare il dominio di collisione della rete garantendo al contempo che il flusso di dati raggiunga correttamente il destinatario.
In questo caso si dice che la rete risulta segmentata poiché esiste un
distinto dominio di collisione per ogni ramo.
In questa configurazione risulta ovviamente impossibile effettuare sniffing in modalità promiscua poiché ogni macchina riceve solo i dati per lei strettamente necessari. Altro grande beneficio ottenibile con tale apparato è il minore traffico di rete che consente trasmissioni globalmente più efficienti.
CAM table flooding
Contrariamente a quello che è emerso nel precedente paragrafo anche le reti switched risultano vulnerabili allo sniffing. La tecnica qui indicata risulta un po' più complicata rispetto a quella descritta per le reti hubbed ma è comunque di facile realizzazione.
Il problema consiste nel fatto che la CAM table è una risorsa finita. Se per qualche malaugurata ipotesi
lo spazio libero
terminasse (overflow) e se il MAC di destinazione di una trama non fosse presente in memoria, sarebbe comunque auspicabile che i dati arrivassero a destinazione. Quello che succede in molti switch commerciali è che in caso di esaurimento delle risorse interne il dispositivo provvede a distribuire i dati su tutte le sue porte comportandosi quindi come un hub (fail open). In una tale situazione sarebbe nuovamente possibile intercettare il traffico tramite uno sniffer e una scheda di rete configurata in modalità promiscua.
In precedenza si è affermato che il MAC è univoco ed è memorizzato all'interno della scheda di rete; in realtà è possibile
manipolare opportunamente i pacchetti in uscita in modo che contengano un indirizzo fittizio a nostra scelta
(spoofing).
Esaurire le risorse di uno switch risulta a questo punto molto semplice. È sufficiente spedire in rapida successione un gran numero di pacchetti aventi
l'indirizzo MAC del mittente fasullo. Se i MAC inviati sono tutti diversi tra loro lo switch li memorizzerà
un dopo l'altro e noi in breve tempo otterremo il nostro scopo. Questo genere di attacco viene chiamato CAM table flooding o CAM table overflow.
In una situazione di overflow della CAM alcuni switch si comportano in maniera opposta
a quella descritta precedentemente cioè chiudono tutte le loro uscite (fail close) bloccando qualsiasi tipo di traffico. In questo caso l'esaurimento delle risorse produrrà la paralisi di tutta la rete generando un vero e proprio attacco DoS (Denial of Service).
Gli switch più sofisticati permettono una gestione più intelligente di questa situazione consentendo la chiusura selettiva delle porte o una assegnazione statica delle voci presenti nella CAM
in modo da impedire l'esaurimento della memoria.
Riferimenti e documenti di approfondimento
- Come funziona una rete ethernet
- Ethernet repeaters and hubs
- Ethernet bridges and switches
- Sniffers e metodi per individuarli
- Come scoprire uno sniffer attivo nella propria rete (si veda la relativa sezione)
Nelle parti precedenti si sono illustrati i principi di funzionamento delle reti ethernet.
Sono state inoltre descritte alcune semplici tecniche di intercettazione dei dati
(sniffing) attuabili sia in reti di tipo hubbed che in reti segmentate da uno switch.
In questa seconda parte analizzeremo attacchi più sofisticati, introdurremo
il protocollo ARP e tratteremo una serie di tecniche di intercettazione basate
su alcune sue debolezze.
Switch port stealing
Questo tipo di attacco è ancora una volta basato sul concetto di MAC spoofing,
cioè sulla possibilità per un sistema di inviare trame ethernet aventi
l'indirizzo MAC mittente diverso da quello memorizzato nella propria scheda
ethernet.
Lo scopo dell'operazione è quello di dirottare sulla porta dello switch
dell'attaccante il traffico destinato al sistema vittima. Da questo
fatto discende il nome della tecnica: switch port stealing cioè furto di una porta
dello switch.
Per semplicità nella descrizione che segue indicheremo con A il sistema
attaccante e con B l'obiettivo dell'attacco.
Ricordiamo che, all'arrivo di una trama ethernet, la CAM table dello switch viene
aggiornata dinamicamente sulla base del MAC mittente e della porta di provenienza.
Per compiere il furto della porta l'attaccante A invia in rete un messaggio in cui:
- il MAC mittente è falsificato con quello del sistema B
- il MAC destinatario è il proprio
Questo fa si che lo switch memorizzi erroneamente nella sua memoria una nuova
associazione tra il MAC del sistema vittima e la porta dell'attaccante perché da
tale porta è arrivato il pacchetto. Poiché il MAC destinatario è quello di A,
nessun altro sulla rete, a parte lo switch, vedrà questo pacchetto contraffatto.
In questa situazione quindi qualsiasi dato destinato a B verrà in realtà indirizzato
dallo switch sulla porta in cui è presente A. Se quest'ultimo ha predisposto la sua
scheda di rete in modalità promiscua potrà tranquillamente leggere i messaggi in arrivo.
L'operazione non è comunque esente da problemi: se a questo punto B tenta di
inviare dei dati sulla rete, lo switch ristabilirà la corretta associazione tra
MAC e porta interrompendo l'azione dell'attaccante. Una possibile soluzione
è quella di inondare B di pacchetti fino al punto di provocare nei suoi
confronti un attacco DoS. Se B rimane paralizzato non riuscirà a mandare molti
pacchetti sulla rete. In ogni caso A continuerà l'attacco di port stealing nei
confronti dello switch in modo da assicurarsi il successo dell'operazione.
Una delle possibili applicazioni della tecnica descritta è il furto di
identità. In questo
caso l'attaccante potrebbe tentare di rispondere al mittente del messaggio
facendogli credere di essere realmente il sistema B e instaurando con esso una
intera sessione di comunicazione.
Il protocollo ARP
Fino a questo momento ci siamo occupati di attacchi confinati al livello del
protocollo ethernet. La tecnica del MAC spoofing, congiuntamente all'uso della
modalità promiscua, è tutto quello di cui abbiamo avuto bisogno per portare a
termine gli attacchi descritti. In realtà le possibilità non si esauriscono qui.
È noto che per comunicare a più alto livello i sistemi utilizzano il
protocollo TCP/IP. Quando un pc deve inviare un messaggio si richiede in genere
che sia noto l'indirizzo IP del destinatario piuttosto che il suo MAC address.
Questo succede perché il protocollo IP, indispensabile per la comunicazione tra
una rete e l'altra (internetworking), è adoperato per comodità anche
all'interno delle singole reti LAN.
Tra tutti i MAC address ne esiste uno particolare, denominato indirizzo di
broadcast, che non è assegnato a nessuna specifica scheda di rete
ed è contraddistinto dal valore FF-FF-FF-FF-FF-FF
.
Una trama ethernet avente tale indirizzo come MAC destinazione è
indirizzata a tutti i sistemi presenti sulla LAN (pacchetto broadcast).
Questo significa che uno switch
deve distribuire le trame broadcast su tutte le sue porte e i filtri hardware di
tutte le schede di rete devono decodificare e leggere tali pacchetti.
Come fa un sistema che conosce il solo indirizzo IP del destinatario a
completare la trama ethernet con il corrispondente MAC? A questo
scopo è stato creato il protocollo ARP (Address Resolution Protocol).
Ogni messaggio ARP, sia esso una richiesta o una risposta, contiene i seguenti
quattro campi:
- IP e MAC del mittente del messaggio
- IP e MAC del destinatario
Per individuare il MAC incognito si invierà sulla rete un pacchetto
broadcast che incapsula al suo interno una apposita richiesta ARP (ARP request).
Nei campi relativi agli indirizzi del destinatario sarà indicato solo l'IP in quanto
il MAC risulta ancora sconosciuto.
Ogni sistema sulla rete locale riceverà e decodificherà il pacchetto,
confronterà l'IP del destinatario con il proprio e, nel caso coincidano, provvederà a
spedire al richiedente una risposta (ARP reply)
in cui è stato riempito il campo relativo al proprio MAC addresss.
Dopo aver ricevuto la risposta il sistema provvede a memorizzare
l'associazione MAC-IP in una propria memoria cache per velocizzare eventuali
richieste future. In questo modo se un IP risulta già presente nella cache non è necessario
inviare nessuna richiesta sulla rete. È possibile visualizzare la cache ARP da riga di comando tramite:
arp -a
Per minimizzare il traffico di rete il protocollo ARP si avvantaggia delle
richieste eseguite in broadcast per consentire a tutti i sistemi che ricevono
un pacchetto ARP di aggiornare la propria cache.
Le regole applicate sono riassunte nei seguenti due punti e sono valide
indipendentemente dal fatto che il pacchetto ricevuto sia una richiesta
o una risposta:
- Se la cache contiene già una voce relativa all'IP mittente del pacchetto ARP,
si provvede ad aggiornare la sua associazione IP-MAC. - Se la cache non contiene una associazione relativa all'IP del mittente,
si provvede a crearla solo se l'IP destinatario del messaggio è il proprio.
Da ciò si desume che i sistemi in rete possano aggiornare la propria cache
gratuitamente, senza fare esplicite richieste, semplicemente analizzando
il traffico ARP generato da altri (principalmente il traffico broadcast).
Link utili:
Modello OSI e gerarchia dei protocolli di rete:
http://it.wikipedia.org/wiki/OSI
http://www.nwi.it/showPage.php?template=rubriche&id=1017
http://it.wikipedia.org/wiki/Protocollo_di_rete
A TCP/IP tutorial. (TCP/IP, ARP, Ethernet: capire come funziona la rete)
ftp://ftp.rfc-editor.org/in-notes/rfc1180.txt
Protocollo ARP:
http://it.wikipedia.org/wiki/ARP
http://www.geocities.com/SiliconValley/Vista/8672/network/arp.html
ftp://ftp.rfc-editor.org/in-notes/rfc826.txt
ARP spoofing e ARP cache poisoning
I tipi di attacchi descritti in seguito si basano su
alcune debolezze del protocollo ARP che possono essere ricondotte ai
seguenti aspetti.
Il MAC mittente presente nel pacchetto ethernet e il MAC mittente presente
nella richiesta ARP incapsulata possono essere diversi tra loro. Nessuna
verifica di correttezza viene fatta a riguardo. Il protocollo ARP opera solo con
i dati presenti all'interno del proprio messaggio ed ignora gli indirizzi della trama ethernet.
Questi ultimi servono unicamente ad instradare il pacchetto verso un determinato sistema.
Bisogna inoltre tener presente che la possibilità di memorizzare nella cache ARP dati
non espressamente richiesti non da nessuna garanzia sulla legittimità e sulla correttezza
di tali informazioni. Proprio quest'ultima osservazione costituisce la base della tecnica
di attacco denominata ARP spoofing.
L'ARP spoofing consiste nell'inviare richieste o risposte ARP contenti dati falsi. Siano per esempio
i tre sistemi A, B e C. Cosa succede se un attaccante A inonda il sistema B di risposte ARP
di questo tipo?
Trama ethernet mittente: A destinazione: B Messaggio ARP reply: IP mittente: C MAC mittente: A IP destinazione: B MAC destinazione: B
Si nota facilmente che l'IP mittente è stato falsificato con quello di C.
L'effetto sarà la memorizzazione di una associazione fasulla MAC(A)-IP(C) nella cache di B.
Quello che abbiamo ottenuto è un attacco chiamato
ARP cache posionig cioè avvelenamento della cache ARP.
Risulta abbastanza chiaro come con tecniche di ARP spoofing sia quindi possibile la manipolazione
diretta delle voci ARP presenti in ogni singolo computer.
Le potenzialità di una tale azione sono enormi. In questo caso tutti i dati che B dovrebbe mandare
al sistema C verranno invece incapsulati in una trama ethernet avente l'indirizzo MAC di A. Ancora una
volta siamo riusciti a deviare a nostro piacimento il traffico della rete locale.
Questa tecnica base è un elemento indispensabile per compiere attacchi più complessi. Avvelenando
contemporaneamente la cache di B e C è possibile intercettare una intera comunicazione intercorrente tra i due
sistemi. In questo caso ci posizioniamo nel mezzo della comunicazione. B e C non si accorgeranno di nulla.
È addirittura possibile intercettare connessioni criptate intervenendo attivamente nella fase iniziale di
scambio dei certificati di protezione. Questo genere di attacco viene denominato Man in the middle (MITM) ovvero
"uomo nel mezzo"
Tecniche di difesa
A livello di protocollo di rete gli attacchi descritti agiscono a basso livello e sono
pertanto relativamente complessi. La presenza su internet di numerosi tool che si occupano in modo trasparente
della gran parte del lavoro permette l'attuazione di tali attacchi anche a persone non particolarmente esperte.
Le tecniche di difesa consistono per lo più nella ricerca sulla LAN di pacchetti anomali imputabili ad attacchi noti.
A questo scopo si rivelano utili alcuni degli stessi strumenti di sniffing spesso usati dagli attaccanti (
Ettercap,
DSNiff, Snort ad esempio)
Altri strumenti di monitoraggio delle intrusioni permettono il controllo di modifiche effettuate alla cache ARP e
la rilevazione di eventuali schede di rete impostate
in modalità promiscua.
Per reti relativamente piccole si segnala poi la possibilità di impostare staticamente sia le voci delle cache ARP sia
le associazioni tra MAC e porte negli switch. In questo modo nessuna modifica dinamica sarà possibile.
Link utili
http://www.sans.org/rr/whitepapers/threats/474.php