ARP Poisoning
Autor: Vinicius B. | Publicado: 2011-04-01T11:00:00-07:00

O ataque do tipo ARP-Poisoning (ou ARP-Spoofing) é o meio mais eficiente de executar o ataque conhecido por Man-In-The-Middle, que permite que o atacante intercepte informações confidenciais posicionando-se no meio de uma conexão entre duas ou mais máquinas.
Para executar esse tipo de ataque é necessário que o ARP-Poisoning seja realizado inicialmente. A técnica de ARP-Poisoning é aplicada apenas em redes Ethernet. Basicamente, um sistema conectado a um IP ou LAN Ethernet tem dois endereços. O primeiro endereço é o MAC, que é atribuído à placa de rede (NIC1) possuída pelo usuário. Os endereços MAC são (ou supõe-se ser) únicos e utilizando esse endereço o protocolo Ethernet envia os dados. O protocolo Ethernet constrói frames de dados que consistem de blocos de 1500 bytes. Um frame Ethernet consiste do cabeçalho Ethernet, contendo o endereço MAC do computador origem e do computador destino.
O segundo endereço é o IP. O IP é um protocolo utilizado por aplicações, independente da tecnologia com que opera. Todo computador em uma rede deve possuir um endereço IP único para a comunicação. Os endereços IPs são virtuais e atribuídos pelo software. IP e Ethernet devem trabalhar juntos. O IP comunica-se construindo pacotes que são diferentes da estrutura de frames. Esses pacotes são entregues pela camada de rede (Ethernet), que divide os pacotes em frames, adiciona um cabeçalho Ethernet e envia-os para um componente da rede. Este então decide a porta pela qual o frame deve ser enviado através da comparação do endereço destino do frame com uma tabela interna que mapeia os números das portas de um endereço MAC.
Como mencionado antes, um frame Ethernet é construídos a partir de um pacote IP, mas para a construção de um frame Ethernet, a rede precisa do endereço MAC do computador destino. Aqui, a Ethernet sabe apenas o endereço IP da máquina destino. Daí, para descobrir o endereço MAC do computador destino a partir de seu endereço IP, o protocolo ARP é utilizado.
Conceitos Básico sobre ARP (Address Resolution Protocol)2O Address Resolution Protocol (ARP) é um protocolo para mapear um endereço IP de um endereço de uma máquina física (MAC) 3 que é reconhecida na rede local. Por exemplo, um IP versão 4 (IPv4), o tipo de IP mais comumente usado hoje em dia, um endereço IP tem 32 bits de tamanho. Em uma rede local Ethernet, entretanto, os endereços de dispositivos conectados possuem 48 bits de tamanho. Para aumentar a eficiência da rede e não engargalar a conexão realizando o broadcast do ARP, cada computador mantém uma tabela de endereços IP e endereços Ethernet na memória. Isto é chamado de cache ARP. Antes de enviar um broadcat para toda a rede, o computador transmissor verificará se a informação existe em seu cache ARP. Se existir, ele completará os dados Ethernet sem enviar um broadcast ARP e evitando de engargalar a conexão.
Cada entrada dura normalmente 20 minutos (mas depende do sistema operacional). A RFC 1122 especifica que é possível configurar o valor do tempo de expiração do cache ARP no host. Para examinar o cache em um computador com Windows, UNIX ou Linux, digite arp -a no console ou prompt de comando. O ARP provê as regras do protocolo realizando esta correlação e possibilitando a conversão de endereços em ambas as direções. 
Como o ARP FuncionaQuando um pacote destinado a uma máquina de uma rede local particular chega no gateway, o gateway solicita ao programa ARP que encontre um host físico ou endereço MAC que esteja de acordo com o endereço IP. O programa ARP olha no ARP cache e, se encontra o endereço, retorna o mesmo e assim o pacote pode ser convertido ao formato e tamanho corretos e enviado à máquina. Se nenhuma entrada é encontrada para o endereço IP, o ARP faz um broadcast de um pacote de requisição especial para todas as máquinas na rede para ver se uma das máquinas sabe qual delas tem o IP associado. Uma máquina reconheça o endereço IP como o seu, retorna uma resposta indicando isso. 
Assim, o ARP atualiza seu cache para futura referência e então envia o pacote de dados para o endereço MAC que respondeu. Aqui está um exemplo simples de comunicação por ARP. Uma recepcionista de uma empresa, solicita ao editor de texto de seu computador que imprima a lista de contatos atualizada da companhia. Esta é sua primeira impressão de arquivo hoje. Seu computador (endereço IP 192.168.0.16) quer encontrar o serviço de impressão da impressora HP LaserJet do escritório (endereço IP 192.168.0.45). Desse modo, o computador da recepcionista faz o broadcast de uma requisição ARP para toda a rede local perguntando: Quem tem o endereço IP 192.168.0.45?, como visto na figura 1. Todos os dispositivos da rede ignoram esta requisição ARP (ARP Request), exceto a impressora HP LaserJet. A impressora reconhece seu próprio IP na requisição e envia uma resposta (ARP Reply):
Oi, meu endereço IP é 192.168.0.45. Aqui está meu endereço MAC: 00:90:7F:12:DE:7F como na figura 2. Agora o computador da recepcionista sabe o endereço MAC da impressora. Ele envia o pedido de impressão para o dispositivo correto, e também associa o endereço MAC da impressora 00:90:7F:12:DE:7F com o endereço IP da mesma 192.168.0.45 em sua tabela ARP. Figura 1 Funcionamento do ARP
Figura 2 Funcionamento do ARP Este é o caso quando o host receptor está na mesma rede. Se o host receptor está em outra rede, computador transmissor passará por sua tabela de roteamento e determinará o roteador correto ( um roteador deve estar entre duas ou mais redes) para enviar os dados e substituirá o endereço Ethernet pelo do roteador no cabeçalho ethernet. O endereço IP encapsulado deve ainda possuir o endereço IP que receberá o pacote de dados. Quando o roteador recebe a mensagem, ele procura nas informações do IP para dizer para onde enviar os dados no próximo passo. Se o receptor está na rede onde o roteador está conectado, ele irá realizar a resolução de endereço do ARP, ou utilizando o buffer de cache ARP ou realizando um broadcasting.
Definição de ARP-PoisoningARP-Poisoning ou ARP Spoofing é um tipo de ataque no qual uma falsa resposta ARP é enviada à uma requisição ARP original. Enviando uma resposta falsa, o roteador pode ser convencido a enviar dados destinados ao computador 1 para o computador 2, e o computador por último redireciona os dados para o computador 1. Se o envenenamento ocorre, o computador 1 não tem idéia do redirecionamento das informações. A atualização do cache do computador alvo (computador 1) com uma entrada falsa é chamado de Poisoning (envenenamento).
Sistemas Operacionais vulneráveis ao ARP-PoisoningUm sistema operacional é considerado vulnerável ao ARP-Poisoning quando o sistema com o sistema operacional correspondente pode ser envenenado por outro sistema, que seja capaz de sobrescrever as entradas existentes, ou adicionar uma entrada, se não existir nenhuma, com uma resposta falsa. Isso é ARP Poisoning
S.O. vulneráveis ao ARP-Poisoning
1. Windows NT 2. Windows XP
3. Windows 95/98/2000 4. Linux
5. Netgear 6. AIX 4.3
S.O. não-vulneráveis ao ARP-Poisoning
Sun Solaris Systems 
Ataques ARPSniffing
Os switches determinam quais dados vão para qual porta através da comparação do endereço MAC nos dados com uma tabela. Esta tabela consiste de uma lista de porta e endereços MAC relativos a elas. A tabela é construída quando o switch é ligado, examinando o MAC origem dos primeiros dados enviados a cada porta. Placas de rede podem entrar em um estado chamado de Modo Promíscuo onde é permitido examinar dados destinados a endereços MAC outros que não o seu. Em redes com switch isso não é permitido, pois o switch faz o direcionamento dos dados baseado na tabela descrita acima. Isso previne contra o sniffing dos dados de outras máquina. Entretanto, utilizando o ARP Poisoning há muitas formas através das quais o sniffing pode ser realizado em uma rede com switch.
Man in the Middle (MITM)
Este ataque é um dos métodos de sniffing. É um dos ataques no qual uma terceira pessoa está inserida entre o caminho de comunicação de dois computadores. Não há qualquer interrupção do tráfego de ambos os computadores, pois a terceira pessoa redireciona os pacotes de dados ao computador destino.
Considere um exemplo. Na figura abaixo o atacante, host C, envia uma resposta ARP para dizer à B que o IP de A pertence ao endereço MAC de C, e outra resposta é enviada à A, dizendo que o IP de B pertence ao endereço MAC de C. Já que o protocolo ARP não é volátil (stateless), os hosts A e B assumem que enviaram uma requisição ARP em algum ponto no passado e atualizaram seus caches ARP com esta nova informação. Figura 3 Organização de um ataque MITM
Figura 4 Organização de um ataque MITM Agora, quando A tenta enviar dados para B, ele vai para C, ao invés de B. O host C pode usar esta posição única para direcionar os dados para o host correto e monitorá-los ou modificá-los a medida que eles passam por C (figura 4). Man-in-The-Middle também pode ser realizado entre um computador e o roteador de uma rede através do envenenamento (poisoning) do roteador.
MAC Flooding
Este é outro método de sniffing. O MAC Flooding é uma técnica de ARP-Poisoning voltada para switchs de rede. Quando alguns switchs são sobrecarregados eles frequentemente passam a funcionar no modo hub. No modo hub, o switch está ocupado demais para reforçar a segurança de suas portas e apenas faz o broadcast do tráfego de toda a rede para cada um dos computadores em sua rede. Através da sobrecarga (flooding) da tabela ARP do switch com toneladas de respostas ARP falsas, um hacker pode sobre carregar muitos switchs usados atualmente e então sniffar os pacotes da rede enquanto o switch funciona no modo hub.
Denial of Service
Um hacker pode facilmente associar um endereço IP operacional a um endereço MAC falso. Para tanto, um hackr pode enviar uma resposta ARP associando o endereço IP do roteador da rede com um endereço MAC que não existe. Então, os computadores acreditam que sabem onde o gateway padrão está, mas na realidade todos os pacotes que estão enviando para aquele destino não vão para a rede local, mas sim para um grande buraco negro. Com pouco trabalho, o hacker conseguiu separar a rede da Internet. Hijacking
Para seqestrar (hijack) uma conexão de rede de uma máquina alvo, temos que ser capazes de direcionar o fluxo de tráfego da rede a partir da máquina alvo para nossa máquina. O passo seguinte é redirecionar os pacotes de dados em nível de kernel. Essa mudança de controle pode resultar na transferência de qualquer tipo de sessão do Sistema Operacional. Para tanto, um atacante poderia tomar o controle de uma sessão telnet após uma máquina alvo ter logado em um computador remoto como administrador. Cloning
O endereço MAC foi criado para ser um identificador único no mundo inteiro para cada interface de rede produzida. Podemos alterar o endereço MAC utilizando softwares disponíveis e também usando hardware, que é bem mais trabalhoso e tedioso. Usuários de Linux pode alterar seu MAC sem utilizar softwares de Poisoning e Spoofing, usando apenas um parâmetro do comando ifconfig, que configura a interface de rede no S.O.. Um atacante por realizar um ataque DoS4 à um computador alvo, e então atribuir a si mesmo o IP e MAC desse computador, recebendo todos os dados enviados para tal computador. 
Ferramentas e Utilitários ARPSegue abaixo uma lista de várias ferramentas para realizar ARP-Poisoning, que estão disponíveis na Internet:
Dsniff
Dsniff é uma coleção de ferramentas UNIX desenvolvidas para realizar auditoria em redes, assim como testes de invasão. Foi testada no OpenBSD e Solaris. Cada uma das ferramentas incluídas na distribuição Dsniff possuem funções únicas, mas falham na funcionalidade em conjunto. Em geral, as ferramentas dsniff, filesnarf, mailsnarf, msgsnarf, urlsnarf e webspy são utilizadas para monitorar passivamente uma rede compartilhada vulnerável (tal como uma rede local onde o sniffer está localizado além de qualquer firewall externo), buscando por conteúdos de interesse do atacante. ARPoison
É uma ferramenta de linha de comando para UNIX que cria respostas ARP envenenadas. O usuário pode especificar a origem e o destino do endereço IP/MAC. Ettercap
Ettercap é um sniffer/interceptador/logger5 multiuso para Lans com switch. Ele possibilita a análise ativa e passiva de muitos protocolos diferentes (mesmo os criptografados) e inclui muitas características para análise de redes e hosts. Ele pode realizar os seguintes procedimentos automaticamente: 1.Injeção de caracteres em uma conexão estabelecida
2.Coletar senhas de TELNET, FTP, POP, RLOGIN, SSH1, ICQ, SMB, MySQL 3.Filtragem/descarte de pacotes de dados
4.Terminar conexões Parasite
Parasite permite realizar sniffing em uma rede com switch através da técnica Man-In-The-Middle com o ARP-Poisoning. Seleção de alvos, DoS e várias outras características estão presentes nesse programa. O Parasite não realiza uma limpeza apropriada quando termina seu funcionamento. Isto resulta num DoS de todos os computadores envenenados pois seus caches ARP estão apontando para um endereço MAC que não está mais direcionando seus dados. 
Defesa contra ARP-Poisoning e sua DetecçãoA melhor defesa contra o ARP-Poisoning é habilitar o MAC binding no switch.
Esta é uma característica encontrada em switchs de qualidade que não permite que os endereços MAC associados com uma porta sejam alterados depois de configurados. Mudanças legítimas de MAC podem ser realizadas pelo administrador da rede. Outra defesa é o uso de caminhos estáticos. O cache ARP pode ter entradas estáticas (não alteráveis), assim respostas ARP falsas seriam ignoradas. Essa abordagem não é prática a não ser em pequenas redes caseiras, consequentemente onde não há muitos riscos do ARP Poisoning ocorrer. É importante também saber como se comporta o roteamento estático no Windows. Alguns testes descobriram que o Windows ainda aceita respostas ARP falsas e usa o roteamento dinâmico ao invés do estático, tornando nulo qualquer efeito da utilização do roteamento estático no Windows.
Além desses dois métodos, a única outra defesa disponível é a detecção. Arpwatch é uma das formas de detecção. Arpwatch é uma ferramenta para detectar ataques ARP. Esta ferramenta monitora atividade ethernet e mantém uma base de dados dos pareamentos Ethernet/IP. Ela também reporta certas alterações via e-mail. Arpwatch utiliza a libcap, uma interface independente que utiliza um método de captura de pacotes no nível de usuário para detecção de ataques ARP. O Arpwatch mantém o administrador informado quando uma nova máquina adquire um endereço da rede. Ele envia por e-mail o endereço IP e o MAC da nova máquina na rede. Ele também informa se o endereço MAC mudou de IP. Além de informar se alguém está bagunçando com a configuração da rede e alterando seu seu IP para o de um gateway ou servidor. A clonagem de MAC pode ser detectada utilizando o RARP (Reverse ARP). O RARP solicita o endereço IP de um endereço MAC conhecido. Enviando uma solicitação RARP para todos os endereços MAC existentes em uma rede, pode determinar se algum computador esta realizando clonagem, e se múltiplas respostas são recebidas por um único endereço MAC.
Muitos métodos existem para detectar máquinas em modo promíscuo. É importante lembrar que sistemas operacionais possuem suas próprias pilhas de TCP/IP e placas ethernet possuem seus próprios drives, cada um com seus próprios subterfúgios. Mesmo dierentes versões de um mesmo sistema operacional tem variações de comportamento. O Solaris, por exemplo, é único em sua forma de tratar pacotes ARP. Solaris aceita apenas alterações de ARP após um determinado período de expiração. Para envenenar o cache de um sistema Solaris, um atacante precisaria utilizar um ataque DoS contra uma segunda máquina alvo para evitar uma race condition6 após o período de expiração. Este DoS pode ser detectado se a rede possuir um Sistema de Detecção de Instrusão (IDS) rodando. A rede pode também estar protegida contra Spoofing/Poisoning e Sniffing através de configurações de firewall e criptografia de dados ao longo da rede., mas estes dois métodos não são empregados.