Address Resolution Protocol
In telecomunicazioni l'Address Resolution Protocol (ARP), come specificato da RFC 826, è un protocollo di rete appartenente alla suite del protocollo internet (IP) versione 4, il cui compito è fornire la "mappatura" tra l'indirizzo IP a 32bit (4byte) e l'indirizzo MAC (MAC address) corrispondente di un terminale in una rete locale ethernet. Il suo analogo in IPv6 è Neighbor Discovery Protocol o NDP. Il protocollo inverso che mappa da indirizzo MAC a Indirizzo IP all'atto della configurazione del PC in Rete è detto RARP.
per avere cydia nel proprio iDevice bisoggnare applicare il cosidetto jailbreak.
Funzionamento
L'host che vuole conoscere il MAC address di un altro host, di cui conosce l'indirizzo IP, invia in broadcast una richiesta ARP (pacchetto di ARP Request) contenente il proprio indirizzo MAC e l'indirizzo IP del destinatario di cui si vuole conoscere il MAC Address. Tutti i calcolatori della sottorete ricevono la richiesta: in ciascuno di essi il protocollo ARP verifica, confrontando l'IP proprio con quello inviato, se viene richiesto il proprio indirizzo MAC. L'host di destinazione che riconoscerà il proprio indirizzo IP nel pacchetto di ARP-request, provvederà ad inviare una risposta (ARP Reply) contenente il proprio MAC in unicast all'indirizzo MAC del richiedente.
In questo modo, ogni host può scoprire l'indirizzo fisico degli altri host sulla stessa sottorete. Questo è particolarmente importante nel caso si voglia conoscere i dispositivi di rete quali gateway, router, ecc. per verificare eventuali malfunzionamenti di un nodo della rete stessa.
Si noti che l'arrivo dell'ARP-request ad un nodo aggiorna completamente la tabella ARP presente nella cache a lei dedicata dal protocollo, senza rispetto per le voci preesistenti nella tabella di Routing.
Ogni scambio di pacchetti ARP avviene tramite incapsulamento di questi all'interno di frame di livello datalink (ad es. frame Ethernet).
ARP request/reply
Sono incapsulati all'interno di un frame Ethernet.
L'Ethernet destination address è settato a ff:ff:ff:ff:ff:ff (broadcast per indirizzi ARP) se viene effettuata un'ARP Request.
Il campo type è settato al valore 0x0806 (mentre per il RARP 0x8035).
I 28 byte per l'ARP Request/Reply sono strutturati in questo modo:
- hardware type: specifica il tipo di interfaccia hw su cui l'utente cerca una risposta per l'Ethernet si setta il campo ad 1.
- protocol type: indica il tipo di indirizzo ad alto livello che il mittente ha fornito, per l'IP si setta a 0x0800.
- hardware len e protocol len: consentono di usare ARP su reti arbitrarie perché specificano la lunghezza dell'indirizzo hardware (MAC) e dell'indirizzo del protocollo di alto livello (IP).
- ARP operation: specifica se si tratta di una richiesta ARP (valore 1), risposta ARP (valore 2), richiesta RARP (valore 3) oppure una risposta RARP (valore 4).
Utilizzo
Il comando per visualizzare la tabella arp immagazzinata nella cache locale nei sistemi Windows, Mac e GNU/Linux è arp -a.
Per esempio il comando eseguito su Windows restituirà un risultato simile da questo:
C:\>arp -a Interfaccia: 10.10.22.156 --- 0x10004 Indirizzo Internet Indirizzo fisico Tipo 10.10.22.1 00-0d-b4-01-ab-b2 dinamico 10.10.22.155 00-1b-77-24-74-89 dinamico
Bisogna osservare che il protocollo ARP viene usato tutte le volte che un host collegato ad una LAN deve inviare un messaggio ad un host sulla stessa LAN di cui conosce unicamente l'indirizzo di livello rete (IP), quindi lavora solo in subnet locali (non può oltrepassare router e raggiungere così una sottorete differente da quella dove si è originata la richiesta).
Il procedimento inverso è svolto dal protocollo Reverse Address Resolution Protocol (RARP).
È anche possibile impostare manualmente degli indirizzi IP definiti statici nella tabella ARP, tramite il comando arp -s [IP address] [indirizzo fisico]
Sicurezza
Il protocollo ARP non prevede meccanismi per autenticare le risposte ricevute, quindi l'host che invia una richiesta "si fida" che la risposta arrivi dal "legittimo" proprietario dell'indirizzo IP richiesto, e identifica quell'indirizzo IP con il mac address che ha ricevuto. Questo crea le premesse per numerose vulnerabilità.
IP Spoofing
È molto facile configurare abusivamente un indirizzo IP su un host, purché questo sia collegato alla sottorete giusta, e l'indirizzo sia inutilizzato, oppure il legittimo proprietario sia spento.
Di conseguenza, il fatto che un host risponda ad un certo indirizzo IP non ci autorizza a "fidarci" di quell'host. Significa soltanto che è fisicamente collegato alla rete locale giusta (oppure che anche il routing è stato compromesso).
Nonostante questo, molte applicazioni usano dei criteri di sicurezza basati su filtri (ip filtering) di indirizzi ip utilizzandoli nel meccanismo di autenticazione. Solo certi host che hanno uno specifico indirizzo IP contenuto in un file di filtro possono accedere ai servizi.
ARP Spoofing
La costruzione ad arte di un pacchetto ARP ingannevole è semplice sia su Linux che su Windows, e infatti questa è una tra le maggiori vulnerabilità delle reti locali. Inviando ad un host un ARP REPLY opportunamente contraffatto possiamo modificare la sua cache ARP, ottenendo ad esempio la possibilità di intercettare dati destinati ad altri host.
Questa tecnica è detta ARP Spoofing o ARP cache Poisoning (in inglese, avvelenamento della cache ARP).
Tra le contromisure una soluzione open source è 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). Blocca anche attacchi derivati quali Sniffing, Hijacking, Injection, Filtering come ad esempio: DNS Spoofing, WEB Spoofing, Session Hijacking e SSL/TLS Hijacking & co attacks.
Voci correlate
Collegamenti esterni
- (EN) Formato del pacchetto ARP
- (EN) RFC 826 - An Ethernet Address Resolution Protocol -- or -- Converting Network Protocol Addresses - novembre 1982 - modificata da RFC 5227 e RFC 5994
- (EN) RFC 5227 - IPv4 Address Conflict Detection - luglio 2008
- (EN) RFC 5994 - IANA Allocation Guidelines for the Address Resolution Protocol (ARP) - aprile 2009
- (EN) ArpON home page